2025-11-26 17:28:51 +08:00

54 lines
2.5 KiB
Python

"""
非遗资产估值计算引擎包。
提供各类计算器,并通过懒加载避免循环依赖。
"""
from importlib import import_module
from typing import Any
__version__ = "1.0.0"
__author__ = "Assessment Team"
__all__ = [
"EconomicValueB1Calculator",
"BasicValueB11Calculator",
"TrafficFactorB12Calculator",
"PolicyMultiplierB13Calculator",
"CulturalValueB2Calculator",
"LivingHeritageB21Calculator",
"PatternGeneB22Calculator",
"RiskAdjustmentB3Calculator",
"MarketValueCCalculator",
"MarketBiddingC1Calculator",
"HeatCoefficientC2Calculator",
"ScarcityMultiplierC3Calculator",
"TemporalDecayC4Calculator",
"FinalValueACalculator",
]
_EXPORT_MAP = {
"EconomicValueB1Calculator": "app.utils.calculation_engine.economic_value_b1",
"BasicValueB11Calculator": "app.utils.calculation_engine.economic_value_b1.sub_formulas.basic_value_b11",
"TrafficFactorB12Calculator": "app.utils.calculation_engine.economic_value_b1.sub_formulas.traffic_factor_b12",
"PolicyMultiplierB13Calculator": "app.utils.calculation_engine.economic_value_b1.sub_formulas.policy_multiplier_b13",
"CulturalValueB2Calculator": "app.utils.calculation_engine.cultural_value_b2.cultural_value_b2",
"LivingHeritageB21Calculator": "app.utils.calculation_engine.cultural_value_b2.sub_formulas.living_heritage_b21",
"PatternGeneB22Calculator": "app.utils.calculation_engine.cultural_value_b2.sub_formulas.pattern_gene_b22",
"RiskAdjustmentB3Calculator": "app.utils.calculation_engine.risk_adjustment_b3.sub_formulas.risk_adjustment_b3",
"MarketValueCCalculator": "app.utils.calculation_engine.market_value_c.market_value_c",
"MarketBiddingC1Calculator": "app.utils.calculation_engine.market_value_c.sub_formulas.market_bidding_c1",
"HeatCoefficientC2Calculator": "app.utils.calculation_engine.market_value_c.sub_formulas.heat_coefficient_c2",
"ScarcityMultiplierC3Calculator": "app.utils.calculation_engine.market_value_c.sub_formulas.scarcity_multiplier_c3",
"TemporalDecayC4Calculator": "app.utils.calculation_engine.market_value_c.sub_formulas.temporal_decay_c4",
"FinalValueACalculator": "app.utils.calculation_engine.final_value_ab.final_value_a",
}
def __getattr__(name: str) -> Any:
module_path = _EXPORT_MAP.get(name)
if not module_path:
raise AttributeError(f"module {__name__} has no attribute {name}")
module = import_module(module_path)
attr = getattr(module, name)
globals()[name] = attr
return attr