Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/policyengine/outputs/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@
calculate_us_poverty_by_race,
calculate_us_poverty_rates,
)
from policyengine.outputs.program_statistics import ProgramStatistics

__all__ = [
"Output",
Expand All @@ -59,6 +60,7 @@
"ChangeAggregateType",
"DecileImpact",
"calculate_decile_impacts",
"ProgramStatistics",
"IntraDecileImpact",
"compute_intra_decile_impacts",
"Poverty",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
"""US-specific output templates."""
"""Shared `ProgramStatistics` for reform-impact tables (US + UK)."""

from typing import Optional

Expand Down
6 changes: 3 additions & 3 deletions src/policyengine/tax_benefit_models/uk/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@

if find_spec("policyengine_uk") is not None:
from policyengine.core import Dataset
from policyengine.outputs import ProgramStatistics

from .analysis import economic_impact_analysis
from .datasets import (
Expand All @@ -31,7 +32,6 @@
managed_microsimulation,
uk_latest,
)
from .outputs import ProgrammeStatistics

model = uk_latest
"""The pinned UK ``TaxBenefitModelVersion`` for this policyengine release."""
Expand All @@ -40,7 +40,7 @@
UKYearData.model_rebuild()
PolicyEngineUKDataset.model_rebuild()
PolicyEngineUKLatest.model_rebuild()
ProgrammeStatistics.model_rebuild()
ProgramStatistics.model_rebuild()

__all__ = [
"UKYearData",
Expand All @@ -55,7 +55,7 @@
"uk_latest",
"calculate_household",
"economic_impact_analysis",
"ProgrammeStatistics",
"ProgramStatistics",
]
else:
__all__ = []
33 changes: 16 additions & 17 deletions src/policyengine/tax_benefit_models/uk/analysis.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
from pydantic import BaseModel

from policyengine.core import OutputCollection, Simulation
from policyengine.outputs import ProgramStatistics
from policyengine.outputs.decile_impact import (
DecileImpact,
calculate_decile_impacts,
Expand All @@ -23,14 +24,12 @@
calculate_uk_poverty_rates,
)

from .outputs import ProgrammeStatistics


class PolicyReformAnalysis(BaseModel):
"""Complete policy reform analysis result."""

decile_impacts: OutputCollection[DecileImpact]
programme_statistics: OutputCollection[ProgrammeStatistics]
program_statistics: OutputCollection[ProgramStatistics]
baseline_poverty: OutputCollection[Poverty]
reform_poverty: OutputCollection[Poverty]
baseline_inequality: Inequality
Expand All @@ -57,7 +56,7 @@ def economic_impact_analysis(
reform_simulation=reform_simulation,
)

programmes = {
programs = {
"income_tax": {"is_tax": True},
"national_insurance": {"is_tax": True},
"vat": {"is_tax": True},
Expand All @@ -70,27 +69,27 @@ def economic_impact_analysis(
"child_tax_credit": {"is_tax": False},
}

programme_statistics = []
for programme_name, programme_info in programmes.items():
program_statistics = []
for program_name, program_info in programs.items():
entity = baseline_simulation.tax_benefit_model_version.get_variable(
programme_name
program_name
).entity
stats = ProgrammeStatistics(
stats = ProgramStatistics(
baseline_simulation=baseline_simulation,
reform_simulation=reform_simulation,
programme_name=programme_name,
program_name=program_name,
entity=entity,
is_tax=programme_info["is_tax"],
is_tax=program_info["is_tax"],
)
stats.run()
programme_statistics.append(stats)
program_statistics.append(stats)

programme_df = pd.DataFrame(
program_df = pd.DataFrame(
[
{
"baseline_simulation_id": p.baseline_simulation.id,
"reform_simulation_id": p.reform_simulation.id,
"programme_name": p.programme_name,
"program_name": p.program_name,
"entity": p.entity,
"is_tax": p.is_tax,
"baseline_total": p.baseline_total,
Expand All @@ -101,11 +100,11 @@ def economic_impact_analysis(
"winners": p.winners,
"losers": p.losers,
}
for p in programme_statistics
for p in program_statistics
]
)
programme_collection = OutputCollection(
outputs=programme_statistics, dataframe=programme_df
program_collection = OutputCollection(
outputs=program_statistics, dataframe=program_df
)

baseline_poverty = calculate_uk_poverty_rates(baseline_simulation)
Expand All @@ -115,7 +114,7 @@ def economic_impact_analysis(

return PolicyReformAnalysis(
decile_impacts=decile_impacts,
programme_statistics=programme_collection,
program_statistics=program_collection,
baseline_poverty=baseline_poverty,
reform_poverty=reform_poverty,
baseline_inequality=baseline_inequality,
Expand Down
105 changes: 0 additions & 105 deletions src/policyengine/tax_benefit_models/uk/outputs.py

This file was deleted.

2 changes: 1 addition & 1 deletion src/policyengine/tax_benefit_models/us/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@

if find_spec("policyengine_us") is not None:
from policyengine.core import Dataset
from policyengine.outputs import ProgramStatistics

from .analysis import economic_impact_analysis
from .datasets import (
Expand All @@ -44,7 +45,6 @@
managed_microsimulation,
us_latest,
)
from .outputs import ProgramStatistics

model = us_latest
"""The pinned US ``TaxBenefitModelVersion`` for this policyengine release."""
Expand Down
3 changes: 1 addition & 2 deletions src/policyengine/tax_benefit_models/us/analysis.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
from pydantic import BaseModel

from policyengine.core import OutputCollection, Simulation
from policyengine.outputs import ProgramStatistics
from policyengine.outputs.decile_impact import (
DecileImpact,
calculate_decile_impacts,
Expand All @@ -26,8 +27,6 @@
calculate_us_poverty_rates,
)

from .outputs import ProgramStatistics


class PolicyReformAnalysis(BaseModel):
"""Complete policy reform analysis result."""
Expand Down
Loading