taxcalc 5.3.0__py3-none-any.whl → 6.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- taxcalc/__init__.py +1 -1
- taxcalc/calculator.py +1 -1
- taxcalc/cli/tc.py +1 -8
- taxcalc/data.py +1 -2
- taxcalc/policy.py +0 -18
- taxcalc/records.py +78 -82
- taxcalc/records_variables.json +106 -106
- taxcalc/taxcalcio.py +60 -51
- taxcalc/tests/conftest.py +19 -14
- taxcalc/tests/reforms_expect.csv +54 -54
- taxcalc/tests/test_calculator.py +197 -160
- taxcalc/tests/test_cpscsv.py +0 -22
- taxcalc/tests/test_data.py +11 -3
- taxcalc/tests/test_parameters.py +42 -0
- taxcalc/tests/test_records.py +139 -8
- taxcalc/tests/test_reforms.py +4 -6
- taxcalc/tests/test_taxcalcio.py +3 -58
- {taxcalc-5.3.0.dist-info → taxcalc-6.0.0.dist-info}/METADATA +1 -1
- {taxcalc-5.3.0.dist-info → taxcalc-6.0.0.dist-info}/RECORD +23 -29
- taxcalc/puf_ratios.csv +0 -26
- taxcalc/puf_weights.csv.gz +0 -0
- taxcalc/tests/test_compare.py +0 -330
- taxcalc/tests/test_compatible_data.py +0 -334
- taxcalc/tests/test_puf_var_stats.py +0 -194
- taxcalc/tests/test_pufcsv.py +0 -328
- {taxcalc-5.3.0.dist-info → taxcalc-6.0.0.dist-info}/WHEEL +0 -0
- {taxcalc-5.3.0.dist-info → taxcalc-6.0.0.dist-info}/entry_points.txt +0 -0
- {taxcalc-5.3.0.dist-info → taxcalc-6.0.0.dist-info}/licenses/LICENSE +0 -0
- {taxcalc-5.3.0.dist-info → taxcalc-6.0.0.dist-info}/top_level.txt +0 -0
taxcalc/tests/test_cpscsv.py
CHANGED
@@ -13,8 +13,6 @@ Read Tax-Calculator/TESTING.md for details.
|
|
13
13
|
# pylint --disable=locally-disabled test_cpscsv.py
|
14
14
|
|
15
15
|
import os
|
16
|
-
import json
|
17
|
-
import pytest
|
18
16
|
import numpy as np
|
19
17
|
import pandas as pd
|
20
18
|
from taxcalc.growfactors import GrowFactors
|
@@ -28,7 +26,6 @@ START_YEAR = 2017
|
|
28
26
|
NUM_YEARS = 19
|
29
27
|
|
30
28
|
|
31
|
-
@pytest.mark.cpscsv_agg
|
32
29
|
def test_agg(tests_path, cps_fullsample):
|
33
30
|
"""
|
34
31
|
Test current-law aggregate taxes using cps.csv file.
|
@@ -103,25 +100,6 @@ def test_agg(tests_path, cps_fullsample):
|
|
103
100
|
raise ValueError(msg)
|
104
101
|
|
105
102
|
|
106
|
-
def test_cps_availability(tests_path, cps_path):
|
107
|
-
"""
|
108
|
-
Cross-check records_variables.json data with variables in cps.csv file.
|
109
|
-
"""
|
110
|
-
cpsdf = pd.read_csv(cps_path)
|
111
|
-
cpsvars = set(list(cpsdf))
|
112
|
-
# make set of variable names that are marked as cps.csv available
|
113
|
-
rvpath = os.path.join(tests_path, '..', 'records_variables.json')
|
114
|
-
with open(rvpath, 'r', encoding='utf-8') as rvfile:
|
115
|
-
rvdict = json.load(rvfile)
|
116
|
-
recvars = set()
|
117
|
-
for vname, vdict in rvdict['read'].items():
|
118
|
-
if 'taxdata_cps' in vdict.get('availability', ''):
|
119
|
-
recvars.add(vname)
|
120
|
-
# check that cpsvars and recvars sets are the same
|
121
|
-
assert (cpsvars - recvars) == set()
|
122
|
-
assert (recvars - cpsvars) == set()
|
123
|
-
|
124
|
-
|
125
103
|
def nonsmall_diffs(linelist1, linelist2, small=0.0):
|
126
104
|
"""
|
127
105
|
Return True if line lists differ significantly; otherwise return False.
|
taxcalc/tests/test_data.py
CHANGED
@@ -67,6 +67,7 @@ def test_recs_class(recs_varinfo_file, cps_subsample):
|
|
67
67
|
"""
|
68
68
|
Specify Data-derived Recs class and test it.
|
69
69
|
"""
|
70
|
+
# pylint: disable=too-many-statements
|
70
71
|
|
71
72
|
class Recs(Data):
|
72
73
|
"""
|
@@ -84,6 +85,9 @@ def test_recs_class(recs_varinfo_file, cps_subsample):
|
|
84
85
|
self, 'e00300', val * self.gfactors.factor_value('AINTS', year)
|
85
86
|
)
|
86
87
|
|
88
|
+
# create CPS weights DataFrame
|
89
|
+
wghts_path = os.path.join(GrowFactors.FILE_PATH, 'cps_weights.csv.gz')
|
90
|
+
wghts_df = pd.read_csv(wghts_path)
|
87
91
|
# test Recs class for incorrect instantiation:
|
88
92
|
with pytest.raises(ValueError):
|
89
93
|
Recs(data=[], start_year=2000,
|
@@ -100,7 +104,10 @@ def test_recs_class(recs_varinfo_file, cps_subsample):
|
|
100
104
|
with pytest.raises(ValueError):
|
101
105
|
Recs(data=cps_subsample, start_year=2000,
|
102
106
|
gfactors='', weights='')
|
103
|
-
|
107
|
+
with pytest.raises(ValueError):
|
108
|
+
Recs(data=cps_subsample, start_year=2000,
|
109
|
+
gfactors=GrowFactors(), weights=wghts_df[:10])
|
110
|
+
# test Recs class for correct instantiation without aging of data:
|
104
111
|
syr = 2014
|
105
112
|
rec = Recs(data=cps_subsample, start_year=syr,
|
106
113
|
gfactors=None, weights=None)
|
@@ -115,8 +122,6 @@ def test_recs_class(recs_varinfo_file, cps_subsample):
|
|
115
122
|
assert np.allclose([sum_e00300_in_syr], [sum_e00300_in_syr_plus_one])
|
116
123
|
del rec
|
117
124
|
# test Recs class for correct instantiation with aging of data
|
118
|
-
wghts_path = os.path.join(GrowFactors.FILE_PATH, 'cps_weights.csv.gz')
|
119
|
-
wghts_df = pd.read_csv(wghts_path)
|
120
125
|
rec = Recs(data=cps_subsample, start_year=syr,
|
121
126
|
gfactors=GrowFactors(), weights=wghts_df)
|
122
127
|
assert isinstance(rec, Recs)
|
@@ -138,3 +143,6 @@ def test_recs_class(recs_varinfo_file, cps_subsample):
|
|
138
143
|
rec._read_weights(weights=None)
|
139
144
|
with pytest.raises(ValueError):
|
140
145
|
rec._read_weights(weights=[])
|
146
|
+
incomplete_data = pd.DataFrame({'MARS': np.array([1, 2, 3])})
|
147
|
+
with pytest.raises(ValueError):
|
148
|
+
rec._read_data(data=incomplete_data)
|
taxcalc/tests/test_parameters.py
CHANGED
@@ -626,3 +626,45 @@ def test_read_json_revision_foramts(params, is_paramtools):
|
|
626
626
|
assert is_paramtools_format(result) is is_paramtools
|
627
627
|
if is_paramtools:
|
628
628
|
assert result == json.loads(params)["consumption"]
|
629
|
+
|
630
|
+
|
631
|
+
def test_compatible_data_presence():
|
632
|
+
"""
|
633
|
+
Test that every parameter in the policy_current_law.json file
|
634
|
+
has a compatible_data field that is a dictionary.
|
635
|
+
"""
|
636
|
+
compatible_data_keys_set = set(["puf", "cps"])
|
637
|
+
|
638
|
+
# nested function used only in test_compatible_data_presence test
|
639
|
+
def valid_compatible_data(compatible_data):
|
640
|
+
"""
|
641
|
+
Return True if compatible_data is a valid dictionary;
|
642
|
+
otherwise return False
|
643
|
+
"""
|
644
|
+
if not isinstance(compatible_data, dict):
|
645
|
+
return False
|
646
|
+
if set(compatible_data.keys()) != compatible_data_keys_set:
|
647
|
+
return False
|
648
|
+
for key in compatible_data:
|
649
|
+
boolean = (compatible_data[key] is True or
|
650
|
+
compatible_data[key] is False)
|
651
|
+
if not boolean:
|
652
|
+
return False
|
653
|
+
return True
|
654
|
+
|
655
|
+
# main logic of test_compatible_data_presence test
|
656
|
+
clp = Policy()
|
657
|
+
allparams = clp.metadata()
|
658
|
+
problem_pnames = []
|
659
|
+
for pname in allparams:
|
660
|
+
if "compatible_data" in allparams[pname]:
|
661
|
+
compatible_data = allparams[pname]["compatible_data"]
|
662
|
+
else:
|
663
|
+
compatible_data = None
|
664
|
+
if not valid_compatible_data(compatible_data):
|
665
|
+
problem_pnames.append(pname)
|
666
|
+
if problem_pnames:
|
667
|
+
msg = "{} has no or invalid compatible_data field"
|
668
|
+
for pname in problem_pnames:
|
669
|
+
print(msg.format(pname))
|
670
|
+
assert False, "ERROR: list of problem_pnames is above"
|
taxcalc/tests/test_records.py
CHANGED
@@ -29,10 +29,80 @@ def test_incorrect_records_instantiation(cps_subsample, cps_fullsample):
|
|
29
29
|
_ = Records(data=cps_subsample, gfactors=None, weights=None,
|
30
30
|
adjust_ratios=[])
|
31
31
|
# test error raise when num of records is greater than num of weights
|
32
|
-
|
33
|
-
|
32
|
+
cps_weights_path = os.path.join(Records.CODE_PATH, 'cps_weights.csv.gz')
|
33
|
+
weights = pd.read_csv(cps_weights_path)
|
34
|
+
some_wghts = weights[:100]
|
34
35
|
with pytest.raises(ValueError):
|
35
|
-
_ = Records(data=cps_fullsample, weights=
|
36
|
+
_ = Records(data=cps_fullsample, weights=some_wghts, start_year=2020)
|
37
|
+
|
38
|
+
|
39
|
+
def test_invalid_variable_values_1(cps_subsample):
|
40
|
+
"""Test docstring"""
|
41
|
+
dta = cps_subsample.copy()
|
42
|
+
dta['PT_SSTB_income'] = 2
|
43
|
+
with pytest.raises(ValueError):
|
44
|
+
_ = Records(data=dta, start_year=2000)
|
45
|
+
dta['e01700'] = 1000
|
46
|
+
with pytest.raises(ValueError):
|
47
|
+
_ = Records(data=dta, start_year=2000)
|
48
|
+
dta['e00650'] = 1000
|
49
|
+
with pytest.raises(ValueError):
|
50
|
+
_ = Records(data=dta, start_year=2000)
|
51
|
+
dta['k1bx14s'] = 1000
|
52
|
+
with pytest.raises(ValueError):
|
53
|
+
_ = Records(data=dta, start_year=2000)
|
54
|
+
dta['e02100'] = dta['e02100p'] + dta['e02100s'] + 1000
|
55
|
+
with pytest.raises(ValueError):
|
56
|
+
_ = Records(data=dta, start_year=2000)
|
57
|
+
dta['e00900'] = dta['e00900p'] + dta['e00900s'] + 1000
|
58
|
+
with pytest.raises(ValueError):
|
59
|
+
_ = Records(data=dta, start_year=2000)
|
60
|
+
dta['e00200'] = dta['e00200p'] + dta['e00200s'] + 1000
|
61
|
+
with pytest.raises(ValueError):
|
62
|
+
_ = Records(data=dta, start_year=2000)
|
63
|
+
dta['EIC'] = 4
|
64
|
+
with pytest.raises(ValueError):
|
65
|
+
_ = Records(data=dta, start_year=2000)
|
66
|
+
dta['MARS'] = 0
|
67
|
+
with pytest.raises(ValueError):
|
68
|
+
_ = Records(data=dta, start_year=2000)
|
69
|
+
|
70
|
+
|
71
|
+
def test_invalid_variable_values_2():
|
72
|
+
"""Test docstring"""
|
73
|
+
dta = pd.DataFrame(
|
74
|
+
{
|
75
|
+
'RECID': [1],
|
76
|
+
'MARS': [1],
|
77
|
+
'e00200p': [8e4],
|
78
|
+
'e00200s': [1e4],
|
79
|
+
'e00200': [9e4],
|
80
|
+
}
|
81
|
+
)
|
82
|
+
with pytest.raises(ValueError):
|
83
|
+
_ = Records(data=dta, start_year=2000)
|
84
|
+
dta = pd.DataFrame(
|
85
|
+
{
|
86
|
+
'RECID': [1],
|
87
|
+
'MARS': [1],
|
88
|
+
'e00900p': [8e4],
|
89
|
+
'e00900s': [1e4],
|
90
|
+
'e00900': [9e4],
|
91
|
+
}
|
92
|
+
)
|
93
|
+
with pytest.raises(ValueError):
|
94
|
+
_ = Records(data=dta, start_year=2000)
|
95
|
+
dta = pd.DataFrame(
|
96
|
+
{
|
97
|
+
'RECID': [1],
|
98
|
+
'MARS': [1],
|
99
|
+
'e02100p': [8e4],
|
100
|
+
'e02100s': [1e4],
|
101
|
+
'e02100': [9e4],
|
102
|
+
}
|
103
|
+
)
|
104
|
+
with pytest.raises(ValueError):
|
105
|
+
_ = Records(data=dta, start_year=2000)
|
36
106
|
|
37
107
|
|
38
108
|
def test_correct_records_instantiation(cps_subsample):
|
@@ -45,16 +115,15 @@ def test_correct_records_instantiation(cps_subsample):
|
|
45
115
|
rec1.increment_year()
|
46
116
|
sum_e00200_in_cps_year_plus_one = getattr(rec1, 'e00200').sum()
|
47
117
|
assert sum_e00200_in_cps_year_plus_one == sum_e00200_in_cps_year
|
48
|
-
wghts_path = os.path.join(Records.CODE_PATH,
|
118
|
+
wghts_path = os.path.join(Records.CODE_PATH, 'cps_weights.csv.gz')
|
49
119
|
wghts_df = pd.read_csv(wghts_path)
|
50
|
-
ratios_path = os.path.join(Records.CODE_PATH, Records.PUF_RATIOS_FILENAME)
|
51
|
-
ratios_df = pd.read_csv(ratios_path, index_col=0).transpose()
|
52
120
|
rec2 = Records(data=cps_subsample,
|
53
121
|
start_year=Records.CPSCSV_YEAR,
|
54
122
|
gfactors=GrowFactors(),
|
55
123
|
weights=wghts_df,
|
56
|
-
adjust_ratios=
|
57
|
-
exact_calculations=False
|
124
|
+
adjust_ratios=None,
|
125
|
+
exact_calculations=False,
|
126
|
+
weights_scale=0.01)
|
58
127
|
assert rec2
|
59
128
|
assert np.all(getattr(rec2, 'MARS') != 0)
|
60
129
|
assert getattr(rec2, 'current_year') == getattr(rec2, 'data_year')
|
@@ -249,3 +318,65 @@ def test_csv_input_vars_md_contents(tests_path):
|
|
249
318
|
for var in valid_less_civ:
|
250
319
|
msg += f'VARIABLE= {var}\n' # pylint: disable=consider-using-join
|
251
320
|
raise ValueError(msg)
|
321
|
+
|
322
|
+
|
323
|
+
def test_cps_availability(tests_path, cps_data_path):
|
324
|
+
"""
|
325
|
+
Cross-check records_variables.json data with variables in cps.csv file.
|
326
|
+
"""
|
327
|
+
# make set of variable names that are in the cps.csv file
|
328
|
+
cpsdf = pd.read_csv(cps_data_path)
|
329
|
+
cpsvars = set(sorted(list(cpsdf)))
|
330
|
+
# make set of variable names that are marked as cps available in r_v.json
|
331
|
+
rvpath = os.path.join(tests_path, '..', 'records_variables.json')
|
332
|
+
with open(rvpath, 'r', encoding='utf-8') as rvfile:
|
333
|
+
rvdict = json.load(rvfile)
|
334
|
+
recvars = set()
|
335
|
+
for vname, vdict in rvdict['read'].items():
|
336
|
+
if 'taxdata_cps' in vdict.get('availability', ''):
|
337
|
+
recvars.add(vname)
|
338
|
+
# check that cpsvars and recvars sets are the same
|
339
|
+
assert (cpsvars - recvars) == set()
|
340
|
+
assert (recvars - cpsvars) == set()
|
341
|
+
|
342
|
+
|
343
|
+
@pytest.mark.requires_puf
|
344
|
+
def test_puf_availability(tests_path, puf_data_path):
|
345
|
+
"""
|
346
|
+
Cross-check records_variables.json data with variables in puf.csv file
|
347
|
+
"""
|
348
|
+
# make set of variable names that are in the puf.csv file
|
349
|
+
pufdf = pd.read_csv(puf_data_path)
|
350
|
+
pufvars = set(sorted(list(pufdf)))
|
351
|
+
# make set of variable names that are marked as puf available in r_v.json
|
352
|
+
rvpath = os.path.join(tests_path, '..', 'records_variables.json')
|
353
|
+
with open(rvpath, 'r', encoding='utf-8') as rvfile:
|
354
|
+
rvdict = json.load(rvfile)
|
355
|
+
recvars = set()
|
356
|
+
for vname, vdict in rvdict['read'].items():
|
357
|
+
if 'taxdata_puf' in vdict.get('availability', ''):
|
358
|
+
recvars.add(vname)
|
359
|
+
# check that pufvars and recvars sets are the same
|
360
|
+
assert (pufvars - recvars) == set()
|
361
|
+
assert (recvars - pufvars) == set()
|
362
|
+
|
363
|
+
|
364
|
+
@pytest.mark.requires_tmd
|
365
|
+
def test_tmd_availability(tests_path, tmd_data_path):
|
366
|
+
"""
|
367
|
+
Cross-check records_variables.json data with variables in tmd.csv file
|
368
|
+
"""
|
369
|
+
# make set of variable names that are in the tmd.csv file
|
370
|
+
tmddf = pd.read_csv(tmd_data_path)
|
371
|
+
tmdvars = set(sorted(list(tmddf)))
|
372
|
+
# make set of variable names that are marked as tmd available in r_v.json
|
373
|
+
rvpath = os.path.join(tests_path, '..', 'records_variables.json')
|
374
|
+
with open(rvpath, 'r', encoding='utf-8') as rvfile:
|
375
|
+
rvdict = json.load(rvfile)
|
376
|
+
recvars = set()
|
377
|
+
for vname, vdict in rvdict['read'].items():
|
378
|
+
if 'taxmicrodata_tmd' in vdict.get('availability', ''):
|
379
|
+
recvars.add(vname)
|
380
|
+
# check that tmdvars and recvars sets are the same
|
381
|
+
assert (tmdvars - recvars) == set()
|
382
|
+
assert (recvars - tmdvars) == set()
|
taxcalc/tests/test_reforms.py
CHANGED
@@ -266,12 +266,12 @@ def test_reform_json_and_output(reform_file, tax_year, tests_path):
|
|
266
266
|
raise ValueError(msg)
|
267
267
|
|
268
268
|
|
269
|
-
def reform_results(rid, reform_dict,
|
269
|
+
def reform_results(rid, reform_dict, cps_data, reform_2017_law):
|
270
270
|
"""
|
271
271
|
Return actual results of the reform specified by rid and reform_dict.
|
272
272
|
"""
|
273
273
|
# pylint: disable=too-many-locals
|
274
|
-
rec = Records(data=
|
274
|
+
rec = Records.cps_constructor(data=cps_data)
|
275
275
|
# create baseline Calculator object, calc1
|
276
276
|
pol = Policy()
|
277
277
|
if reform_dict['baseline'] == '2017_law.json':
|
@@ -336,24 +336,22 @@ def fixture_reforms_dict(tests_path):
|
|
336
336
|
NUM_REFORMS = 60 # when changing this also change num_reforms in conftest.py
|
337
337
|
|
338
338
|
|
339
|
-
@pytest.mark.requires_pufcsv
|
340
339
|
@pytest.mark.parametrize('rid', list(range(1, NUM_REFORMS + 1)))
|
341
340
|
def test_reforms(rid, test_reforms_init, tests_path, baseline_2017_law,
|
342
|
-
reforms_dict,
|
341
|
+
reforms_dict, cps_subsample):
|
343
342
|
"""
|
344
343
|
Write actual reform results to files.
|
345
344
|
"""
|
346
345
|
# pylint: disable=too-many-arguments,too-many-positional-arguments
|
347
346
|
assert test_reforms_init == NUM_REFORMS
|
348
347
|
actual = reform_results(rid, reforms_dict[str(rid)],
|
349
|
-
|
348
|
+
cps_subsample, baseline_2017_law)
|
350
349
|
afile_path = os.path.join(tests_path, f'reform_actual_{rid}.csv')
|
351
350
|
with open(afile_path, 'w', encoding='utf-8') as afile:
|
352
351
|
afile.write('rid,res1,res2,res3,res4\n')
|
353
352
|
afile.write(f'{actual}\n')
|
354
353
|
|
355
354
|
|
356
|
-
@pytest.mark.cps
|
357
355
|
@pytest.mark.parametrize('reform_filename, expected_diff', [
|
358
356
|
('ext.json', 45.491),
|
359
357
|
('OBBBA.json', 0.0),
|
taxcalc/tests/test_taxcalcio.py
CHANGED
@@ -320,50 +320,10 @@ def test_init_errors(reformfile0, errorreformfile, errorassumpfile,
|
|
320
320
|
# test TaxCalcIO.init method
|
321
321
|
tcio.init(input_data=recdf, tax_year=year,
|
322
322
|
baseline=baseline, reform=reform, assump=assump,
|
323
|
-
aging_input_data=False,
|
324
323
|
exact_calculations=True)
|
325
324
|
assert tcio.errmsg
|
326
325
|
|
327
326
|
|
328
|
-
def test_creation_with_aging(reformfile0):
|
329
|
-
"""
|
330
|
-
Test TaxCalcIO instantiation with/without no policy reform and with aging.
|
331
|
-
"""
|
332
|
-
taxyear = 2021
|
333
|
-
tcio = TaxCalcIO(input_data=pd.read_csv(StringIO(RAWINPUT)),
|
334
|
-
tax_year=taxyear,
|
335
|
-
baseline=None,
|
336
|
-
reform=reformfile0.name,
|
337
|
-
assump=None,
|
338
|
-
silent=False)
|
339
|
-
assert not tcio.errmsg
|
340
|
-
tcio.init(input_data=pd.read_csv(StringIO(RAWINPUT)),
|
341
|
-
tax_year=taxyear,
|
342
|
-
baseline=None,
|
343
|
-
reform=reformfile0.name,
|
344
|
-
assump=None,
|
345
|
-
aging_input_data=True,
|
346
|
-
exact_calculations=False)
|
347
|
-
assert not tcio.errmsg
|
348
|
-
assert tcio.tax_year() == taxyear
|
349
|
-
taxyear = 2016
|
350
|
-
tcio = TaxCalcIO(input_data=pd.read_csv(StringIO(RAWINPUT)),
|
351
|
-
tax_year=taxyear,
|
352
|
-
baseline=None,
|
353
|
-
reform=None,
|
354
|
-
assump=None)
|
355
|
-
assert not tcio.errmsg
|
356
|
-
tcio.init(input_data=pd.read_csv(StringIO(RAWINPUT)),
|
357
|
-
tax_year=taxyear,
|
358
|
-
baseline=None,
|
359
|
-
reform=None,
|
360
|
-
assump=None,
|
361
|
-
aging_input_data=True,
|
362
|
-
exact_calculations=False)
|
363
|
-
assert not tcio.errmsg
|
364
|
-
assert tcio.tax_year() == taxyear
|
365
|
-
|
366
|
-
|
367
327
|
def test_ctor_init_with_cps_files():
|
368
328
|
"""
|
369
329
|
Test use of CPS input files.
|
@@ -372,23 +332,17 @@ def test_ctor_init_with_cps_files():
|
|
372
332
|
txyr = 2020
|
373
333
|
for rid in [0, 99]:
|
374
334
|
tcio = TaxCalcIO('cps.csv', txyr, None, None, None, runid=rid)
|
375
|
-
tcio.init(
|
376
|
-
'cps.csv', txyr, None, None, None,
|
377
|
-
aging_input_data=True,
|
378
|
-
exact_calculations=False,
|
379
|
-
)
|
335
|
+
tcio.init('cps.csv', txyr, None, None, None, exact_calculations=False)
|
380
336
|
assert not tcio.errmsg
|
381
337
|
assert tcio.tax_year() == txyr
|
382
338
|
# test advance_to_year method
|
383
339
|
tcio.silent = False
|
384
|
-
tcio.advance_to_year(txyr + 1
|
340
|
+
tcio.advance_to_year(txyr + 1)
|
385
341
|
assert tcio.tax_year() == txyr + 1
|
386
342
|
# specify invalid tax_year for cps.csv input data
|
387
343
|
txyr = 2013
|
388
344
|
tcio = TaxCalcIO('cps.csv', txyr, None, None, None)
|
389
|
-
tcio.init('cps.csv', txyr, None, None, None,
|
390
|
-
aging_input_data=True,
|
391
|
-
exact_calculations=False)
|
345
|
+
tcio.init('cps.csv', txyr, None, None, None, exact_calculations=False)
|
392
346
|
assert tcio.errmsg
|
393
347
|
|
394
348
|
|
@@ -424,7 +378,6 @@ def test_dump_variables(dumpvar_str, str_valid, num_vars):
|
|
424
378
|
assert not tcio.errmsg
|
425
379
|
tcio.init(input_data=recdf, tax_year=year,
|
426
380
|
baseline=None, reform=None, assump=None,
|
427
|
-
aging_input_data=False,
|
428
381
|
exact_calculations=False)
|
429
382
|
assert not tcio.errmsg
|
430
383
|
varlist = tcio.dump_variables(dumpvar_str)
|
@@ -451,7 +404,6 @@ def test_output_options_min(reformfile1, assumpfile1):
|
|
451
404
|
baseline=None,
|
452
405
|
reform=reformfile1.name,
|
453
406
|
assump=assumpfile1.name,
|
454
|
-
aging_input_data=False,
|
455
407
|
exact_calculations=False)
|
456
408
|
assert not tcio.errmsg
|
457
409
|
dumppath = tcio.output_filepath().replace('.xxx', '.dumpdb')
|
@@ -486,7 +438,6 @@ def test_output_options_mtr(reformfile1, assumpfile1):
|
|
486
438
|
baseline=None,
|
487
439
|
reform=reformfile1.name,
|
488
440
|
assump=assumpfile1.name,
|
489
|
-
aging_input_data=False,
|
490
441
|
exact_calculations=False)
|
491
442
|
assert not tcio.errmsg
|
492
443
|
dumppath = tcio.output_filepath().replace('.xxx', '.dumpdb')
|
@@ -526,7 +477,6 @@ def test_write_policy_param_files(reformfile1):
|
|
526
477
|
baseline=compound_reform,
|
527
478
|
reform=compound_reform,
|
528
479
|
assump=None,
|
529
|
-
aging_input_data=False,
|
530
480
|
exact_calculations=False)
|
531
481
|
assert not tcio.errmsg
|
532
482
|
tcio.write_policy_params_files()
|
@@ -563,7 +513,6 @@ def test_no_tables_or_graphs(reformfile1):
|
|
563
513
|
baseline=None,
|
564
514
|
reform=reformfile1.name,
|
565
515
|
assump=None,
|
566
|
-
aging_input_data=False,
|
567
516
|
exact_calculations=False)
|
568
517
|
assert not tcio.errmsg
|
569
518
|
# create several TaxCalcIO output files
|
@@ -599,7 +548,6 @@ def test_tables(reformfile1):
|
|
599
548
|
baseline=None,
|
600
549
|
reform=reformfile1.name,
|
601
550
|
assump=None,
|
602
|
-
aging_input_data=False,
|
603
551
|
exact_calculations=False)
|
604
552
|
assert not tcio.errmsg
|
605
553
|
# create TaxCalcIO tables file
|
@@ -633,7 +581,6 @@ def test_graphs(reformfile1):
|
|
633
581
|
baseline=None,
|
634
582
|
reform=reformfile1.name,
|
635
583
|
assump=None,
|
636
|
-
aging_input_data=False,
|
637
584
|
exact_calculations=False)
|
638
585
|
assert not tcio.errmsg
|
639
586
|
tcio.analyze(output_graphs=True)
|
@@ -677,7 +624,6 @@ def test_analyze_warnings_print(warnreformfile):
|
|
677
624
|
baseline=None,
|
678
625
|
reform=warnreformfile.name,
|
679
626
|
assump=None,
|
680
|
-
aging_input_data=False,
|
681
627
|
exact_calculations=False)
|
682
628
|
assert not tcio.errmsg
|
683
629
|
tcio.analyze()
|
@@ -745,7 +691,6 @@ def test_error_message_parsed_correctly(regression_reform_file):
|
|
745
691
|
baseline=regression_reform_file.name,
|
746
692
|
reform=regression_reform_file.name,
|
747
693
|
assump=None,
|
748
|
-
aging_input_data=False,
|
749
694
|
exact_calculations=False)
|
750
695
|
assert isinstance(tcio.errmsg, str) and tcio.errmsg
|
751
696
|
exp_errmsg = (
|
@@ -1,32 +1,30 @@
|
|
1
|
-
taxcalc/__init__.py,sha256=
|
1
|
+
taxcalc/__init__.py,sha256=bx1f6yo5NhIJZFyNhOBAu1hfPUE-LyHd1l2Y-fMfpAc,536
|
2
2
|
taxcalc/calcfunctions.py,sha256=8XUhXncnsRkqDL-3uqH1Ew2HIMs3p-gf97KHRKnJZJM,135517
|
3
|
-
taxcalc/calculator.py,sha256=
|
3
|
+
taxcalc/calculator.py,sha256=u7I5Wru2RTdo1G4tJ4RBGsAzrvx78VGUhZyegiIf8dg,64151
|
4
4
|
taxcalc/conftest.py,sha256=nO4J7qu1sTHgjqrzhpRMvfMJUrNm6GP_IsSuuDt_MeQ,141
|
5
5
|
taxcalc/consumption.json,sha256=FbGpsLP0W02sYc7o8N-BVz8Xw8hfk_gCr5MtHtgEBQQ,7615
|
6
6
|
taxcalc/consumption.py,sha256=pkXhFGpFqu7hW62KaTctfRSzR-pXzMB1ai8XCQRAgXk,3480
|
7
7
|
taxcalc/cps.csv.gz,sha256=SS6tSduU_Eu0EJwzpslnmqMsQQQucVMzzITfH-SeV40,9851074
|
8
8
|
taxcalc/cps_weights.csv.gz,sha256=-k31Swqss0WEGA3Zo8AoReLR_C7BRUk4PDmfh-oVVyo,13657706
|
9
|
-
taxcalc/data.py,sha256=
|
9
|
+
taxcalc/data.py,sha256=8whYnj8qRZiYi6iUjLvRQbIZrUjj9zqIxNGcEJ933jw,11676
|
10
10
|
taxcalc/decorators.py,sha256=C8H4IpdCzioI0-aTCNHVjIxWsGh-_EZWryDEox2Dt1Q,11331
|
11
11
|
taxcalc/growdiff.json,sha256=GCMuFsHv5qP2HBzqiev3CbFJy0BXnhM2ShaPT2QuNTs,14601
|
12
12
|
taxcalc/growdiff.py,sha256=Q3St-KPIUN2I_l1S0jwN0yr8O4LuzkNIU-_qbXTkrZw,2977
|
13
13
|
taxcalc/growfactors.csv,sha256=URIGSKApCY4McvdILkCaIm8EhCGEME2Du-ef5Q9c0uE,5134
|
14
14
|
taxcalc/growfactors.py,sha256=OrYmlWMQAmoMe5fhgnPJcIdvFs0aDf9JBy2aU7J0kBQ,6576
|
15
15
|
taxcalc/parameters.py,sha256=ObwQMBlPjq3tyNwiR94Nj0zouIVsNaHIho-OQK1RNKg,35966
|
16
|
-
taxcalc/policy.py,sha256=
|
16
|
+
taxcalc/policy.py,sha256=vLhqvbsOrImpb0BsRhmgdrnRCsOvPWUc_fTUSYq8yOM,8700
|
17
17
|
taxcalc/policy_current_law.json,sha256=_8OHMh4VsK4VJ7LN5aGQX_b_UbimYDqzsEt8P6NZaw4,608288
|
18
|
-
taxcalc/
|
19
|
-
taxcalc/
|
20
|
-
taxcalc/
|
21
|
-
taxcalc/records_variables.json,sha256=JQjaXOS-QyJLDMl_3K4WyCNyRmJpxho3vC_gik5g04Y,42681
|
22
|
-
taxcalc/taxcalcio.py,sha256=TR29dAdYer85Bo8HFljt9dYqsIL7AvmWx0xRe3-ZNpY,38543
|
18
|
+
taxcalc/records.py,sha256=IrUlfM3AiVq2K_rp_jBOc5X2h6PKREQf_MmfgJDjdpY,17490
|
19
|
+
taxcalc/records_variables.json,sha256=-yo5d9kVvCgVCdx8E8bOiZlC_Pu-zjznjLeYWTiT4Uw,44583
|
20
|
+
taxcalc/taxcalcio.py,sha256=CjByunQKr6Jc-bSPZjso7bjb6KW5nMNVy3CaDdBdLyo,39047
|
23
21
|
taxcalc/utils.py,sha256=R12cGWrhVNNxuWfXVVlWiu5FGoxyX9tzrO_iKsW8mjg,63666
|
24
22
|
taxcalc/utilsprvt.py,sha256=iIyWp9-N3_XWjQj2jV2CWnJy7vrNlKB2_vIMwYjgbWY,1323
|
25
23
|
taxcalc/assumptions/ASSUMPTIONS.md,sha256=cFQqWn1nScaladVaQ7xNm1jDY8CsGdLmqZEzUZeRrb8,1917
|
26
24
|
taxcalc/assumptions/README.md,sha256=Ww55r2zH1neoRSl_MawrPmX-ugaztIZ7_ALrquuatdQ,809
|
27
25
|
taxcalc/assumptions/economic_assumptions_template.json,sha256=utMk38GwSQFrkOAtRrDVhMQLpfaZH3JmtTznKX7IouM,2610
|
28
26
|
taxcalc/cli/__init__.py,sha256=cyZ0tdx41j_vV_B6GAkqJmNKKG-B0wUC0ThC75lJlk4,104
|
29
|
-
taxcalc/cli/tc.py,sha256=
|
27
|
+
taxcalc/cli/tc.py,sha256=YAtcWnGcwTgT3DJIWbwfHAtonXav8k2X_yDV5fCxf8M,18760
|
30
28
|
taxcalc/reforms/2017_law.json,sha256=4QHE3gMKueXD3M97ODqA0LjofXUfSmwVvJA1FLclaqQ,5264
|
31
29
|
taxcalc/reforms/2017_law.out.csv,sha256=nnNKXqY2kof8HC1nnU8srPsvNNepi6ISXQ9OJpQnT7M,473
|
32
30
|
taxcalc/reforms/ARPA.json,sha256=6oGn3pZ4clAhjFHvqpmm7sXcm407Ea_8mjJchSscKpc,3203
|
@@ -74,34 +72,30 @@ taxcalc/reforms/archive/TCJA_Senate_120117.json,sha256=hruGq8bVtJEMmSsOIuTcWiYON
|
|
74
72
|
taxcalc/tests/benefits_expect.csv,sha256=CFpMpg8a-5iNVSRnmCnl9dncwXx6eGn-KSnTJ2GqmS4,4833
|
75
73
|
taxcalc/tests/cmpi_cps_expect.txt,sha256=NCyG3XhgnV8qJe9TaF9l-9yUuwNfANNDvFn1HcSfZ1c,6262
|
76
74
|
taxcalc/tests/cmpi_puf_expect.txt,sha256=dtHBPDY23qttxjQsPpxhLYoUId1tnPZ4uNHx49NlZ0s,6264
|
77
|
-
taxcalc/tests/conftest.py,sha256=
|
75
|
+
taxcalc/tests/conftest.py,sha256=XCqh5cZglHXyDd_zcpttlJk7nIV95IdxKTXlEC8zbeE,5371
|
78
76
|
taxcalc/tests/cpscsv_agg_expect.csv,sha256=80Sq2GlP2oz4vKJfrarYy4qRGWNxUs7DSBYV2qxesGk,3511
|
79
77
|
taxcalc/tests/puf_var_correl_coeffs_2016.csv,sha256=lQXyUEa9wAyhUEOtYm5j0p-cnzyswmViCNJwa22hztg,57314
|
80
78
|
taxcalc/tests/puf_var_wght_means_by_year.csv,sha256=ReclabBk9MVO8p1y62h9xNDoFw9anjXe8BmKiFEr0hk,12889
|
81
79
|
taxcalc/tests/pufcsv_agg_expect.csv,sha256=H9TCOhi_EksKNVa-Sp56cMGBxpCAD57xs3CHXzQNhp0,3545
|
82
80
|
taxcalc/tests/pufcsv_mtr_expect.txt,sha256=Y5-4ulrq2QWCceGhCQc60N2ulc7YTq7w-qf11mB74Os,4265
|
83
81
|
taxcalc/tests/reforms.json,sha256=dIP28djWy-fkPRI5gn7oXHLx_-bzB8KMlS77-1x8Ccc,17193
|
84
|
-
taxcalc/tests/reforms_expect.csv,sha256=
|
82
|
+
taxcalc/tests/reforms_expect.csv,sha256=AhrIJP2fON8d1exXJ6yLwnng0bm1X4dGn0IokP5ItQA,1354
|
85
83
|
taxcalc/tests/test_4package.py,sha256=bB8aHmeOchYPTdSYrzwQD3X5Gr-FmCdyu0Ykv3SSjaA,3573
|
86
84
|
taxcalc/tests/test_benefits.py,sha256=oaui5mO0TuW8Ht-uxvUCBL5zM3iTENq3Whyf_gEpY1U,3392
|
87
85
|
taxcalc/tests/test_calcfunctions.py,sha256=7uD1EW48TgsEE6pNHIxkXNi9gvZR7dbT7il6jAqgy9s,34653
|
88
|
-
taxcalc/tests/test_calculator.py,sha256=
|
89
|
-
taxcalc/tests/test_compare.py,sha256=W7rcMaCt8l0pmL9QAXdXqnfn6ehtpEoBW2_D82WJs9U,10873
|
90
|
-
taxcalc/tests/test_compatible_data.py,sha256=MP-DZXrBJ_2ftuxHchl3EGOhPnP5pnnrSQOM9POSx0c,13224
|
86
|
+
taxcalc/tests/test_calculator.py,sha256=ZOqfg6yM93qivNnKiLZVC_OiCtdauDVN036ERPu6Wy8,35037
|
91
87
|
taxcalc/tests/test_consumption.py,sha256=CJ9xWtixcJXSpkVxyBrYC1jjQYGQHifsJ8IL1rK7BIk,6318
|
92
|
-
taxcalc/tests/test_cpscsv.py,sha256=
|
93
|
-
taxcalc/tests/test_data.py,sha256=
|
88
|
+
taxcalc/tests/test_cpscsv.py,sha256=pc-TGmAXcHL1_3g1Dyityad7Rm16Oem4YYOLMWS0t1g,7628
|
89
|
+
taxcalc/tests/test_data.py,sha256=xXbbVrBCgGJTyqxyk17LTxJbf2W1A93HOws-20G0aGk,4831
|
94
90
|
taxcalc/tests/test_decorators.py,sha256=hKM1_X_1U4YOat06UIAfsfbjr0WcDLQhuXhQfjlySr8,10309
|
95
91
|
taxcalc/tests/test_growdiff.py,sha256=-xUv33Bnzl5oB-DaIIkOqZ9375ULNCTrWam9LpvDwI8,3420
|
96
92
|
taxcalc/tests/test_growfactors.py,sha256=L-DQMR2fh_rOQa3Lx1CDVnB2Q73zXUfTYYVunt0heto,2796
|
97
|
-
taxcalc/tests/test_parameters.py,sha256=
|
93
|
+
taxcalc/tests/test_parameters.py,sha256=LqN0zNfkvovzdDlFzS7CGF-mXAF_XTZd2Wb6ylqOugA,22102
|
98
94
|
taxcalc/tests/test_policy.py,sha256=rrJlh408be_cP7v6fa-k6hfiRuVH2FAYvGzxjIZAaUE,54902
|
99
|
-
taxcalc/tests/
|
100
|
-
taxcalc/tests/
|
101
|
-
taxcalc/tests/test_records.py,sha256=gYX6kiI4WuJYYv07hDXL1zRISRnySDR3wT_EMUrR6kI,8975
|
102
|
-
taxcalc/tests/test_reforms.py,sha256=HLne537IlqQL_s5dDwkwYBNfurPIs7BhtSJczW0YpBU,15163
|
95
|
+
taxcalc/tests/test_records.py,sha256=mB0BcEDzfrq1UHWGVRNf99xW-D9yjufAKtciAlTgDMw,13467
|
96
|
+
taxcalc/tests/test_reforms.py,sha256=IWOCWvq412hV1I7u_Tduj6kQM_IsyHBztgOT6Z2A5-w,15133
|
103
97
|
taxcalc/tests/test_responses.py,sha256=2CkVVdaDNCSALMoUcGgweRlS2tfsK3kXogHtDkZMqJU,1663
|
104
|
-
taxcalc/tests/test_taxcalcio.py,sha256=
|
98
|
+
taxcalc/tests/test_taxcalcio.py,sha256=OzSkDvqINcgPWg1ANErZ5L3fl2la8IRj1dw6_9rP798,22207
|
105
99
|
taxcalc/tests/test_utils.py,sha256=hqBVxddwcSP_6dEBccb-FlPMDm68EENzTtFaVVZ8exs,29403
|
106
100
|
taxcalc/validation/CSV_INPUT_VARS.md,sha256=MqlZZGt_a1n8JAU-nY5MjnTmjz1pMOuhtpVYIGUgl38,1433
|
107
101
|
taxcalc/validation/CSV_OUTPUT_VARS.md,sha256=wr8oyCJDXcxl4Lu0H_wMofUQYhEIyHDif6vkbas1FGE,3000
|
@@ -130,9 +124,9 @@ taxcalc/validation/taxsim35/expected_differences/b21-taxdiffs-expect.csv,sha256=
|
|
130
124
|
taxcalc/validation/taxsim35/expected_differences/c17-taxdiffs-expect.csv,sha256=YhgojbLowH3yujdYu7SGkdvBZmTgpugu4wYc1Be069M,1125
|
131
125
|
taxcalc/validation/taxsim35/expected_differences/c18-taxdiffs-expect.csv,sha256=g9J4BPbTySV-h-RcLvReJq9v1jscgiRSSZzi0taEA-k,1225
|
132
126
|
taxcalc/validation/taxsim35/expected_differences/c19-taxdiffs-expect.csv,sha256=Ceh15N_Xr3L7cpYjzGa-8NLCV3obc8PNHEhE5ZxSPhI,1238
|
133
|
-
taxcalc-
|
134
|
-
taxcalc-
|
135
|
-
taxcalc-
|
136
|
-
taxcalc-
|
137
|
-
taxcalc-
|
138
|
-
taxcalc-
|
127
|
+
taxcalc-6.0.0.dist-info/licenses/LICENSE,sha256=m5epLdB-_NXiY7NsEDgcHP4jDtJ4vOlRf5S3Jb-jraY,1299
|
128
|
+
taxcalc-6.0.0.dist-info/METADATA,sha256=PGKspEXSi4R_SU2zDezHX9q8Q2iPgpk6xUU3E6WCYtk,3509
|
129
|
+
taxcalc-6.0.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
130
|
+
taxcalc-6.0.0.dist-info/entry_points.txt,sha256=a3ZE1piRv683p27fOLdWZvVJXESkoslTOp5iXV7uVco,50
|
131
|
+
taxcalc-6.0.0.dist-info/top_level.txt,sha256=Wh8wTDHkA_cm4dn8IoUCviDyGgVQqwEQKPJnl8z6d4c,8
|
132
|
+
taxcalc-6.0.0.dist-info/RECORD,,
|
taxcalc/puf_ratios.csv
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
agi_bin,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18
|
2
|
-
INT2011,1.0259,0.5597,0.9448,0.9681,0.9728,0.9464,0.8390,0.8997,0.9713,0.9239,0.9342,0.9413,0.9497,0.9510,0.9693,0.9702,0.9569,1.0123,1.7014
|
3
|
-
INT2012,0.7778,0.9454,0.8433,0.8152,0.7153,0.8101,0.7961,0.7940,0.8481,0.9063,0.9129,0.9183,1.0343,1.0435,1.0129,1.1436,1.0975,1.2339,1.3445
|
4
|
-
INT2013,1.1325,0.7670,0.7821,0.7778,0.8935,0.8699,0.9558,0.9045,0.8342,0.8595,0.9746,1.0269,1.0499,1.0505,1.0891,0.9632,1.0449,0.9690,1.1443
|
5
|
-
INT2014,0.9106,0.8669,0.8492,0.7738,0.8431,0.8802,0.9729,0.8840,0.8368,1.0109,0.8448,1.0532,1.0274,0.9291,1.0609,1.1524,1.0624,1.0728,1.0860
|
6
|
-
INT2015,0.9813,0.9511,0.9323,0.9470,0.9543,0.9246,0.9368,0.9315,0.9463,0.9698,0.9887,1.0165,0.9966,0.9906,1.0241,0.9827,1.0221,1.1437,1.1671
|
7
|
-
INT2016,0.9843,1.0086,1.0453,1.0319,1.0447,1.0342,1.0110,1.0028,1.0025,1.0174,0.9482,0.9531,0.9752,1.0131,1.0723,1.0130,1.0804,1.0810,0.9938
|
8
|
-
INT2017,0.9932,0.9174,0.8978,0.8918,0.8944,0.9131,0.9215,0.9399,0.9611,0.9788,1.0156,1.0693,1.0312,0.9881,0.9354,0.9756,0.9565,1.0484,1.1942
|
9
|
-
INT2018,0.9991,0.9744,0.9683,0.9673,0.9757,0.9725,0.9748,0.9779,0.9742,0.9969,0.9929,1.0038,1.0148,1.0067,1.0226,0.9898,1.0182,1.0909,0.9981
|
10
|
-
INT2019,0.9979,0.9771,0.9763,0.9903,0.9793,0.9805,0.9769,0.9852,0.9826,0.9937,0.9934,1.0109,1.0020,1.0074,0.9985,1.0006,1.0253,1.0283,1.0196
|
11
|
-
INT2020,1.0017,0.9799,0.9739,0.9756,0.9843,0.9849,0.9831,0.9833,0.9932,0.9965,0.9958,1.0114,1.0058,1.0047,1.0076,0.9991,1.0129,1.0113,1.0113
|
12
|
-
INT2021,0.9959,0.9797,0.9776,0.9781,0.9836,0.9898,0.9883,0.9869,0.9920,0.9978,1.0043,0.9974,1.0066,1.0119,1.0049,1.0040,1.0303,1.0085,1.0022
|
13
|
-
INT2022,1.0062,0.9815,0.9810,0.9783,0.9724,0.9820,0.9850,0.9893,0.9934,1.0049,1.0022,1.0050,1.0029,1.0042,1.0047,1.0044,1.0133,0.9990,1.0111
|
14
|
-
INT2023,0.9983,0.9812,0.9761,0.9789,0.9891,0.9893,0.9852,1.0199,0.9942,0.9956,1.0022,1.0012,1.0023,1.0073,1.0006,1.0093,1.0214,1.0020,0.9943
|
15
|
-
INT2024,1.0016,0.9843,0.9813,0.9791,0.9712,0.9789,0.9893,1.0100,0.9905,0.9984,0.9987,0.9971,1.0048,1.0077,1.0089,1.0075,1.0238,1.0148,1.0081
|
16
|
-
INT2025,1.0086,0.9934,0.9772,0.9767,0.9834,0.9817,1.0012,0.9941,0.9935,1.0008,0.9990,0.9978,1.0051,1.0074,1.0142,1.0150,1.0238,0.9941,0.9912
|
17
|
-
INT2026,1.0089,0.9843,0.9792,0.9796,0.9872,0.9904,0.9989,0.9909,0.9953,0.9939,0.9931,0.9932,1.0070,1.0142,1.0373,1.0250,1.0208,0.9992,0.9937
|
18
|
-
INT2027,1.0115,0.9888,0.9839,0.9805,0.9888,0.9905,0.9824,0.9951,0.9905,0.9944,0.9993,0.9913,1.0073,1.0184,1.0175,1.0275,1.0259,0.9935,0.9946
|
19
|
-
INT2028,1.0062,0.9977,0.9772,0.9829,0.9863,0.9878,1.0107,0.9957,0.9924,0.9954,0.9931,0.9921,1.0068,1.0177,1.0271,1.0221,1.0222,0.9960,0.9918
|
20
|
-
INT2029,1.0101,0.9939,0.9780,0.9801,0.9824,0.9852,1.0025,0.9850,0.9945,0.9933,0.9934,0.9928,1.0033,1.0285,1.0278,1.0474,1.0236,1.0013,0.9924
|
21
|
-
INT2030,1.0295,1.0010,0.9821,0.9840,0.9821,0.9917,0.9822,0.9859,0.9830,0.9890,0.9815,0.9922,1.0058,1.0359,1.0382,1.0449,1.0299,0.9947,0.9921
|
22
|
-
INT2031,1.0280,1.0214,0.9858,0.9918,0.9829,0.9886,0.9858,0.9788,0.9910,0.9938,0.9791,0.9869,0.9950,1.0446,1.0442,1.0732,1.0287,1.0061,0.9932
|
23
|
-
INT2032,1.0079,1.1009,0.9920,0.9811,0.9867,0.9849,0.9881,0.9740,0.9732,0.9791,0.9662,0.9835,0.9898,1.0786,1.0900,1.1373,1.0482,1.0099,0.9983
|
24
|
-
INT2033,0.9352,0.8346,0.9707,0.9745,0.9896,0.9850,0.9878,1.0383,1.0313,1.0351,1.1156,1.0746,1.0377,0.8505,0.8247,0.7425,0.8974,1.0567,1.0930
|
25
|
-
INT2034,1.0278,0.9998,0.9801,0.9808,0.9905,0.9879,0.9984,0.9804,0.9885,0.9931,0.9775,0.9841,1.0025,1.0381,1.0368,1.0580,1.0409,1.0028,0.9939
|
26
|
-
INT2035,1.0241,1.0200,0.9891,0.9840,0.9837,0.9859,0.9886,0.9688,0.9850,0.9882,0.9774,0.9926,1.0011,1.0428,1.0542,1.0592,1.0396,0.9982,0.9940
|
taxcalc/puf_weights.csv.gz
DELETED
Binary file
|