2121 ParameterScale ,
2222 ParameterScaleBracket ,
2323)
24- from typing import Annotated
2524from policyengine_core .parameters import get_parameter
26- from importlib .metadata import version
2725from policyengine_core .model_api import Reform , Enum
2826from policyengine_core .periods import instant
2927import dpath
3028import math
3129from uuid import UUID , uuid4
32- import policyengine_uk
33- import policyengine_us
34- import policyengine_canada
35- import policyengine_ng
36- import policyengine_il
3730
3831
3932class PolicyEngineCountry :
@@ -44,8 +37,16 @@ def __init__(self, country_package_name: str, country_id: str):
4437 self .tax_benefit_system : TaxBenefitSystem = (
4538 self .country_package .CountryTaxBenefitSystem ()
4639 )
40+ self .policyengine_bundle = self .build_policyengine_bundle ()
4741 self .build_metadata ()
4842
43+ def build_policyengine_bundle (self ) -> dict :
44+ return {
45+ "model_version" : COUNTRY_PACKAGE_VERSIONS [self .country_id ],
46+ "data_version" : None ,
47+ "dataset" : None ,
48+ }
49+
4950 def build_metadata (self ):
5051 self .metadata = dict (
5152 status = "ok" ,
@@ -65,7 +66,7 @@ def build_metadata(self):
6566 }[self .country_id ],
6667 basicInputs = self .tax_benefit_system .basic_inputs ,
6768 modelled_policies = self .tax_benefit_system .modelled_policies ,
68- version = version ( self .country_package_name ) ,
69+ version = self .policyengine_bundle [ "model_version" ] ,
6970 ),
7071 )
7172
@@ -314,11 +315,11 @@ def calculate(
314315 system .parameters , parameter_name
315316 )
316317 node_type = type (parameter .values_list [- 1 ].value )
317- if node_type == int :
318+ if node_type is int :
318319 node_type = float
319320 try :
320321 value = float (value )
321- except :
322+ except ( TypeError , ValueError ) :
322323 pass
323324 parameter .update (
324325 start = instant (start_instant ),
@@ -373,14 +374,14 @@ def calculate(
373374 entity_index = population .get_index (entity_id )
374375 if variable .value_type == Enum :
375376 entity_result = result .decode ()[entity_index ].name
376- elif variable .value_type == float :
377+ elif variable .value_type is float :
377378 entity_result = float (str (result [entity_index ]))
378379 # Convert infinities to JSON infinities
379380 if entity_result == float ("inf" ):
380381 entity_result = "Infinity"
381382 elif entity_result == float ("-inf" ):
382383 entity_result = "-Infinity"
383- elif variable .value_type == str :
384+ elif variable .value_type is str :
384385 entity_result = str (result [entity_index ])
385386 else :
386387 entity_result = result .tolist ()[entity_index ]
@@ -459,7 +460,7 @@ def modify_parameters(parameters: ParameterNode) -> ParameterNode:
459460 for period , value in values .items ():
460461 start , end = period .split ("." )
461462 node_type = type (node .values_list [- 1 ].value )
462- if node_type == int :
463+ if node_type is int :
463464 node_type = float # '0' is of type int by default, but usually we want to cast to float.
464465 node .update (
465466 start = instant (start ),
0 commit comments