Skip to content
Merged
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
4 changes: 1 addition & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ install:

.PHONY=clean
clean:
rm -f tmd/storage/output/tmd*
rm -f tmd/storage/output/growfactors.csv
rm -f tmd/storage/output/tmd*
rm -f tmd/storage/output/cached*
rm -f tmd/storage/output/preimpute_tmd.csv.gz
rm -f tmd/storage/output/make_data_*.log
Expand Down Expand Up @@ -80,8 +80,6 @@ test: tmd_files

.PHONY=data
data: install clean format lint tmd_files test warnings
diff tmd/storage/output/growfactors.csv tmd/storage/output/old_growfactors.csv
diff tmd/storage/output/tmd_growfactors.csv tmd/storage/output/old_tmd_growfactors.csv

.PHONY=warnings
warnings:
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ see [this
folder](https://github.com/PSLmodels/Tax-Calculator/tree/master/taxcalc/cli/input_data_tests).

The **current TMD version is 2.2.0**, which was released on September
9, 2026, and is the same as the prior TMD version 2.1.4 except that
10, 2026, and is the same as the prior TMD version 2.1.4 except that
post-2022 weights are extrapolated using a CBO returns projection
(rather than using a CBO population projection as in prior versions).
See [PR
Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

setup(
name="tmd",
version="2.1.4",
version="2.2.0",
packages=find_packages(),
python_requires=">=3.12,<3.15",
install_requires=[
Expand Down
10 changes: 5 additions & 5 deletions tests/test_state_weight_results.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
# pylint: disable=redefined-outer-name # pytest fixture pattern

import io
from pathlib import Path

import numpy as np
import pandas as pd
Expand All @@ -31,6 +30,7 @@
)
from tmd.areas.prepare.constants import ALL_STATES
from tmd.imputation_assumptions import TAXYEAR
from tmd.storage import STORAGE_FOLDER, TMD_VARIABLES_PATH

# Skip entire module if weight files haven't been generated
_WEIGHT_FILES = list(STATE_WEIGHT_DIR.glob("*_tmd_weights.csv.gz"))
Expand All @@ -40,10 +40,10 @@
)

# Also need cached data files for target accuracy checks
_CACHED = Path(__file__).parent.parent / "tmd" / "storage" / "output"
_HAS_CACHED = (_CACHED / "tmd.csv.gz").exists() and (
_CACHED / "cached_c00100.npy"
).exists()
_CACHED = STORAGE_FOLDER / "output"
_HAS_CACHED = (
TMD_VARIABLES_PATH.exists() and (_CACHED / "cached_c00100.npy").exists()
)


class TestStateWeightFiles:
Expand Down
4 changes: 2 additions & 2 deletions tests/test_tmd_file_fingerprint.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,10 @@
import pytest
import taxcalc

from tmd.storage import STORAGE_FOLDER
from tmd.storage import TMD_VARIABLES_PATH
from tmd.imputation_assumptions import TAXYEAR

TMD_FILE = STORAGE_FOLDER / "output" / "tmd.csv.gz"
TMD_FILE = TMD_VARIABLES_PATH
FINGERPRINT_DIR = Path(__file__).parent / "fingerprints"
FINGERPRINT_PATH = FINGERPRINT_DIR / "tmd_file_fingerprint.json"

Expand Down
13 changes: 9 additions & 4 deletions tmd/areas/batch_weights.py
Original file line number Diff line number Diff line change
Expand Up @@ -308,16 +308,21 @@ def _time_of_newest_other_dependency():
invalidate cached area-weight files.
"""
from tmd.areas import AREAS_FOLDER
from tmd.storage import STORAGE_FOLDER
from tmd.storage import (
STORAGE_FOLDER,
TMD_VARIABLES_PATH,
TMD_WEIGHTS_PATH,
TMD_GROWFACTORS_PATH,
)
from tmd.imputation_assumptions import POPULATION_FILE, RETURNS_FILE
from tmd.utils import weight_growth

deps = [
AREAS_FOLDER / "create_area_weights.py",
Path(weight_growth.__file__),
STORAGE_FOLDER / "output" / "tmd.csv.gz",
STORAGE_FOLDER / "output" / "tmd_weights.csv.gz",
STORAGE_FOLDER / "output" / "tmd_growfactors.csv",
TMD_VARIABLES_PATH,
TMD_WEIGHTS_PATH,
TMD_GROWFACTORS_PATH,
STORAGE_FOLDER / "input" / POPULATION_FILE,
]
if RETURNS_FILE:
Expand Down
4 changes: 2 additions & 2 deletions tmd/areas/create_area_weights.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,12 +59,12 @@

from tmd.areas import AREAS_FOLDER
from tmd.imputation_assumptions import TAXYEAR
from tmd.storage import STORAGE_FOLDER
from tmd.storage import STORAGE_FOLDER, TMD_VARIABLES_PATH
from tmd.utils.weight_growth import cumulative_growth

FIRST_YEAR = TAXYEAR
LAST_YEAR = 2034
INFILE_PATH = STORAGE_FOLDER / "output" / "tmd.csv.gz"
INFILE_PATH = TMD_VARIABLES_PATH
TAXCALC_AGI_CACHE = STORAGE_FOLDER / "output" / "cached_c00100.npy"
CACHED_ALLVARS_PATH = STORAGE_FOLDER / "output" / "cached_allvars.csv"

Expand Down
4 changes: 2 additions & 2 deletions tmd/areas/quality_report.py
Original file line number Diff line number Diff line change
Expand Up @@ -789,9 +789,9 @@ def _load_report_data(areas, weight_dir):
Returns (tmd, s006, state_weights, n_loaded) or None if
no weight files found.
"""
from tmd.storage import STORAGE_FOLDER
from tmd.storage import STORAGE_FOLDER, TMD_VARIABLES_PATH

tmd_path = STORAGE_FOLDER / "output" / "tmd.csv.gz"
tmd_path = TMD_VARIABLES_PATH
tmd_cols = [
"RECID",
"s006",
Expand Down
10 changes: 5 additions & 5 deletions tmd/areas/solve_weights.py
Original file line number Diff line number Diff line change
Expand Up @@ -215,10 +215,10 @@ def _compute_exhaustion(weight_dir):

Returns (exhaustion_array, state_weights_dict).
"""
from tmd.storage import STORAGE_FOLDER
from tmd.storage import TMD_VARIABLES_PATH

s006 = pd.read_csv(
STORAGE_FOLDER / "output" / "tmd.csv.gz",
TMD_VARIABLES_PATH,
usecols=["s006"],
)["s006"].values
n = len(s006)
Expand Down Expand Up @@ -251,14 +251,14 @@ def _write_exhaustion_caps(

Returns list of affected area codes.
"""
from tmd.storage import STORAGE_FOLDER
from tmd.storage import TMD_VARIABLES_PATH

s006 = pd.read_csv(
STORAGE_FOLDER / "output" / "tmd.csv.gz",
TMD_VARIABLES_PATH,
usecols=["s006"],
)["s006"].values
nat_pop = pd.read_csv(
STORAGE_FOLDER / "output" / "tmd.csv.gz",
TMD_VARIABLES_PATH,
usecols=["s006", "XTOT"],
)
nat_pop = (nat_pop["s006"] * nat_pop["XTOT"]).sum()
Expand Down
4 changes: 2 additions & 2 deletions tmd/create_raw_growth_factors.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,15 @@
"""

import pandas as pd
from tmd.storage import STORAGE_FOLDER
from tmd.storage import STORAGE_FOLDER, POLICY_GROWFACTORS_PATH
from tmd.imputation_assumptions import TAXYEAR

INPUT_FILE = {
2021: "taxdata25_growfactors.csv",
2022: "taxdata26_growfactors.csv",
}
INFILE = STORAGE_FOLDER / "input" / INPUT_FILE[TAXYEAR]
OUTFILE = STORAGE_FOLDER / "output" / "growfactors.csv"
OUTFILE = POLICY_GROWFACTORS_PATH


def create_raw_factors_file():
Expand Down
9 changes: 6 additions & 3 deletions tmd/create_taxcalc_cached_files.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,15 @@
STORAGE_FOLDER,
CACHED_TAXCALC_VARIABLES,
POLICY_GROWFACTORS_PATH,
TMD_VARIABLES_PATH,
TMD_WEIGHTS_PATH,
TMD_GROWFACTORS_PATH,
)
from tmd.imputation_assumptions import TAXYEAR, SOI_IITAX_SPEC

INFILE_PATH = STORAGE_FOLDER / "output" / "tmd.csv.gz"
WTFILE_PATH = STORAGE_FOLDER / "output" / "tmd_weights.csv.gz"
GFFILE_PATH = STORAGE_FOLDER / "output" / "tmd_growfactors.csv"
INFILE_PATH = TMD_VARIABLES_PATH
WTFILE_PATH = TMD_WEIGHTS_PATH
GFFILE_PATH = TMD_GROWFACTORS_PATH


def create_cached_files():
Expand Down
6 changes: 3 additions & 3 deletions tmd/create_taxcalc_growth_factors.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

import pandas as pd
import numpy as np
from tmd.storage import STORAGE_FOLDER
from tmd.storage import POLICY_GROWFACTORS_PATH, TMD_GROWFACTORS_PATH
from tmd.imputation_assumptions import TAXYEAR

FIRST_YEAR = TAXYEAR
Expand All @@ -19,8 +19,8 @@
ASOCSEC_INDEX = 14
AUCOMP_INDEX = 15

INFILE = STORAGE_FOLDER / "output" / "growfactors.csv"
OUTFILE = STORAGE_FOLDER / "output" / "tmd_growfactors.csv"
INFILE = POLICY_GROWFACTORS_PATH
OUTFILE = TMD_GROWFACTORS_PATH


def create_factors_file():
Expand Down
9 changes: 6 additions & 3 deletions tmd/create_taxcalc_imputed_variables.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,14 @@
ALI_convert_zero_prob,
ALI_scale,
)
from tmd.storage import STORAGE_FOLDER
from tmd.storage import (
STORAGE_FOLDER,
TMD_VARIABLES_PATH,
TMD_GROWFACTORS_PATH,
)
from tmd.utils.mice import MICE

TMD_PATH = STORAGE_FOLDER / "output" / "tmd.csv.gz"
TMD_PATH = TMD_VARIABLES_PATH
TMD_YEAR = TAXYEAR
SIPP_PATH = STORAGE_FOLDER / "input" / "SIPP24" / "pu2024.csv.gz"
SIPP_YEAR = 2023 # 2024 SIPP data contain calandar year 2023 information
Expand All @@ -36,7 +40,6 @@
"fmli241.csv.gz",
]
CEX_YEAR = 2023
TMD_GROWFACTORS_PATH = STORAGE_FOLDER / "output" / "tmd_growfactors.csv"


def growfactor(name: str, year1: int, year2: int) -> float:
Expand Down
4 changes: 2 additions & 2 deletions tmd/create_taxcalc_input_variables.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
W2_WAGES_RATIO,
CPS_WEIGHTS_SCALE,
)
from tmd.storage import STORAGE_FOLDER
from tmd.storage import STORAGE_FOLDER, TMD_VARIABLES_PATH

DUMP_ALL_UNROUNDED_VARIABLES = False

Expand Down Expand Up @@ -59,7 +59,7 @@ def create_variable_file(write_file=True):
vdf[var] = vdf[f"{var}p"] + vdf[f"{var}s"]
# write input-variables-only dataframe to CSV-formatted file
if write_file:
fname = STORAGE_FOLDER / "output" / "tmd.csv.gz"
fname = TMD_VARIABLES_PATH
print(f"Writing PUF+CPS file... [{fname}]")
vdf.to_csv(fname, index=False, float_format="%.5f")

Expand Down
6 changes: 3 additions & 3 deletions tmd/create_taxcalc_sampling_weights.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@
"""

import pandas as pd
from tmd.storage import STORAGE_FOLDER
from tmd.storage import TMD_VARIABLES_PATH, TMD_WEIGHTS_PATH
from tmd.imputation_assumptions import TAXYEAR
from tmd.utils.weight_growth import cumulative_growth

FIRST_YEAR = TAXYEAR
LAST_YEAR = TAXYEAR + 53
VARFILE = STORAGE_FOLDER / "output" / "tmd.csv.gz"
WGTFILE = STORAGE_FOLDER / "output" / "tmd_weights.csv.gz"
VARFILE = TMD_VARIABLES_PATH
WGTFILE = TMD_WEIGHTS_PATH


def create_weights_file():
Expand Down
Loading