1515 get_database_url ,
1616 get_db_session ,
1717)
18+ from policyengine_api .runtime_versions import (
19+ resolve_runtime_model_version_from_db ,
20+ resolve_shared_runtime_model_version_from_db ,
21+ )
1822
1923# Required environment variables from each secret
2024REQUIRED_DB_VARS = ["DATABASE_URL" , "SUPABASE_URL" , "SUPABASE_KEY" ]
@@ -674,12 +678,13 @@ def simulate_economy_uk(simulation_id: str, traceparent: str | None = None) -> N
674678
675679 # Import policyengine
676680 from policyengine .core import Simulation as PESimulation
677- from policyengine .tax_benefit_models .uk import uk_latest
678681 from policyengine .tax_benefit_models .uk .datasets import (
679682 PolicyEngineUKDataset ,
680683 )
681684
682- pe_model_version = uk_latest
685+ pe_model_version = resolve_runtime_model_version_from_db (
686+ session , simulation .tax_benefit_model_version_id
687+ )
683688
684689 # Get policy and dynamic
685690 policy = _get_pe_policy_uk (
@@ -847,12 +852,13 @@ def simulate_economy_us(simulation_id: str, traceparent: str | None = None) -> N
847852
848853 # Import policyengine
849854 from policyengine .core import Simulation as PESimulation
850- from policyengine .tax_benefit_models .us import us_latest
851855 from policyengine .tax_benefit_models .us .datasets import (
852856 PolicyEngineUSDataset ,
853857 )
854858
855- pe_model_version = us_latest
859+ pe_model_version = resolve_runtime_model_version_from_db (
860+ session , simulation .tax_benefit_model_version_id
861+ )
856862
857863 # Get policy and dynamic
858864 policy = _get_pe_policy_us (
@@ -1008,7 +1014,6 @@ def economy_comparison_uk(job_id: str, traceparent: str | None = None) -> None:
10081014 ReportStatus ,
10091015 Simulation ,
10101016 SimulationStatus ,
1011- TaxBenefitModelVersion ,
10121017 )
10131018
10141019 with Session (engine ) as session :
@@ -1035,12 +1040,6 @@ def economy_comparison_uk(job_id: str, traceparent: str | None = None) -> None:
10351040 if not dataset :
10361041 raise ValueError (f"Dataset { baseline_sim .dataset_id } not found" )
10371042
1038- # Get model version (unused but keeping for reference)
1039- _ = session .get (
1040- TaxBenefitModelVersion ,
1041- baseline_sim .tax_benefit_model_version_id ,
1042- )
1043-
10441043 # Import policyengine
10451044 from policyengine .core import Simulation as PESimulation
10461045 from policyengine .outputs import DecileImpact as PEDecileImpact
@@ -1050,15 +1049,18 @@ def economy_comparison_uk(job_id: str, traceparent: str | None = None) -> None:
10501049 from policyengine .outputs .aggregate import (
10511050 AggregateType as PEAggregateType ,
10521051 )
1053- from policyengine .tax_benefit_models .uk import uk_latest
10541052 from policyengine .tax_benefit_models .uk .datasets import (
10551053 PolicyEngineUKDataset ,
10561054 )
10571055 from policyengine .tax_benefit_models .uk .outputs import (
10581056 ProgrammeStatistics as PEProgrammeStats ,
10591057 )
10601058
1061- pe_model_version = uk_latest
1059+ pe_model_version = resolve_shared_runtime_model_version_from_db (
1060+ session ,
1061+ baseline_sim .tax_benefit_model_version_id ,
1062+ reform_sim .tax_benefit_model_version_id ,
1063+ )
10621064
10631065 # Get policies
10641066 baseline_policy = _get_pe_policy_uk (
@@ -1725,15 +1727,18 @@ def economy_comparison_us(job_id: str, traceparent: str | None = None) -> None:
17251727 from policyengine .outputs .aggregate import (
17261728 AggregateType as PEAggregateType ,
17271729 )
1728- from policyengine .tax_benefit_models .us import us_latest
17291730 from policyengine .tax_benefit_models .us .datasets import (
17301731 PolicyEngineUSDataset ,
17311732 )
17321733 from policyengine .tax_benefit_models .us .outputs import (
17331734 ProgramStatistics as PEProgramStats ,
17341735 )
17351736
1736- pe_model_version = us_latest
1737+ pe_model_version = resolve_shared_runtime_model_version_from_db (
1738+ session ,
1739+ baseline_sim .tax_benefit_model_version_id ,
1740+ reform_sim .tax_benefit_model_version_id ,
1741+ )
17371742
17381743 # Get policies
17391744 baseline_policy = _get_pe_policy_us (
@@ -2631,7 +2636,6 @@ def compute_aggregate_uk(aggregate_id: str, traceparent: str | None = None) -> N
26312636 from policyengine .core import Simulation as PESimulation
26322637 from policyengine .outputs import Aggregate as PEAggregate
26332638 from policyengine .outputs import AggregateType as PEAggregateType
2634- from policyengine .tax_benefit_models .uk import uk_latest
26352639 from policyengine .tax_benefit_models .uk .datasets import (
26362640 PolicyEngineUKDataset ,
26372641 )
@@ -2692,6 +2696,10 @@ def compute_aggregate_uk(aggregate_id: str, traceparent: str | None = None) -> N
26922696 )
26932697
26942698 # Create policyengine simulation with loaded output
2699+ pe_model_version = resolve_runtime_model_version_from_db (
2700+ session , simulation .tax_benefit_model_version_id
2701+ )
2702+
26952703 with logfire .span ("load_output" ):
26962704 pe_output_dataset = PolicyEngineUKDataset (
26972705 name = output_dataset .name or "output" ,
@@ -2703,7 +2711,7 @@ def compute_aggregate_uk(aggregate_id: str, traceparent: str | None = None) -> N
27032711
27042712 pe_sim = PESimulation (
27052713 dataset = pe_output_dataset , # Use output as dataset
2706- tax_benefit_model_version = uk_latest ,
2714+ tax_benefit_model_version = pe_model_version ,
27072715 )
27082716 pe_sim .output_dataset = pe_output_dataset
27092717
@@ -2787,7 +2795,6 @@ def compute_aggregate_us(aggregate_id: str, traceparent: str | None = None) -> N
27872795 from policyengine .core import Simulation as PESimulation
27882796 from policyengine .outputs import Aggregate as PEAggregate
27892797 from policyengine .outputs import AggregateType as PEAggregateType
2790- from policyengine .tax_benefit_models .us import us_latest
27912798 from policyengine .tax_benefit_models .us .datasets import (
27922799 PolicyEngineUSDataset ,
27932800 )
@@ -2841,6 +2848,10 @@ def compute_aggregate_us(aggregate_id: str, traceparent: str | None = None) -> N
28412848 storage_bucket ,
28422849 )
28432850
2851+ pe_model_version = resolve_runtime_model_version_from_db (
2852+ session , simulation .tax_benefit_model_version_id
2853+ )
2854+
28442855 with logfire .span ("load_output" ):
28452856 pe_output_dataset = PolicyEngineUSDataset (
28462857 name = output_dataset .name or "output" ,
@@ -2852,7 +2863,7 @@ def compute_aggregate_us(aggregate_id: str, traceparent: str | None = None) -> N
28522863
28532864 pe_sim = PESimulation (
28542865 dataset = pe_output_dataset ,
2855- tax_benefit_model_version = us_latest ,
2866+ tax_benefit_model_version = pe_model_version ,
28562867 )
28572868 pe_sim .output_dataset = pe_output_dataset
28582869
0 commit comments