taxcalc 4.5.0__py3-none-any.whl → 4.6.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/calcfunctions.py +2 -6
- taxcalc/calculator.py +15 -15
- taxcalc/cli/tc.py +192 -109
- taxcalc/policy.py +3 -12
- taxcalc/policy_current_law.json +3 -3
- taxcalc/reforms/ext.json +5 -2
- taxcalc/taxcalcio.py +285 -298
- taxcalc/tests/test_4package.py +1 -0
- taxcalc/tests/test_calculator.py +2 -2
- taxcalc/tests/test_reforms.py +1 -1
- taxcalc/tests/test_taxcalcio.py +86 -107
- taxcalc/utils.py +4 -10
- {taxcalc-4.5.0.dist-info → taxcalc-4.6.0.dist-info}/METADATA +3 -2
- {taxcalc-4.5.0.dist-info → taxcalc-4.6.0.dist-info}/RECORD +19 -19
- {taxcalc-4.5.0.dist-info → taxcalc-4.6.0.dist-info}/WHEEL +1 -1
- {taxcalc-4.5.0.dist-info → taxcalc-4.6.0.dist-info}/entry_points.txt +0 -0
- {taxcalc-4.5.0.dist-info → taxcalc-4.6.0.dist-info/licenses}/LICENSE +0 -0
- {taxcalc-4.5.0.dist-info → taxcalc-4.6.0.dist-info}/top_level.txt +0 -0
taxcalc/tests/test_4package.py
CHANGED
taxcalc/tests/test_calculator.py
CHANGED
@@ -808,10 +808,10 @@ def test_itemded_component_amounts(year, cvname, hcname, puf_fullsample):
|
|
808
808
|
policy2.implement_reform(reform2)
|
809
809
|
assert not policy2.parameter_errors
|
810
810
|
# compute tax liability in specified year
|
811
|
-
calc1 = Calculator(policy=policy1, records=recs, verbose=
|
811
|
+
calc1 = Calculator(policy=policy1, records=recs, verbose=True)
|
812
812
|
calc1.advance_to_year(year)
|
813
813
|
calc1.calc_all()
|
814
|
-
calc2 = Calculator(policy=policy2, records=recs, verbose=
|
814
|
+
calc2 = Calculator(policy=policy2, records=recs, verbose=True)
|
815
815
|
calc2.advance_to_year(year)
|
816
816
|
calc2.calc_all()
|
817
817
|
# confirm that nobody is taking the standard deduction
|
taxcalc/tests/test_reforms.py
CHANGED
@@ -386,4 +386,4 @@ def test_ext_reform(tests_path):
|
|
386
386
|
iitax_ext = calc_ext.array('iitax')
|
387
387
|
rdiff = iitax_ext - iitax_end
|
388
388
|
weighted_sum_rdiff = (rdiff * calc_end.array('s006')).sum() * 1.0e-9
|
389
|
-
assert np.allclose([weighted_sum_rdiff], [-
|
389
|
+
assert np.allclose([weighted_sum_rdiff], [-205.769], rtol=0.0, atol=0.01)
|
taxcalc/tests/test_taxcalcio.py
CHANGED
@@ -243,20 +243,19 @@ def fixture_assumpfile2():
|
|
243
243
|
pass # sometimes we can't remove a generated temporary file
|
244
244
|
|
245
245
|
|
246
|
-
@pytest.mark.parametrize('input_data, baseline, reform, assump
|
246
|
+
@pytest.mark.parametrize('input_data, baseline, reform, assump', [
|
247
247
|
('no-dot-csv-filename', 'no-dot-json-filename',
|
248
248
|
'no-dot-json-filename',
|
249
|
-
'no-dot-json-filename'
|
250
|
-
([], [], [], [],
|
251
|
-
('no-exist.csv', 'no-exist.json', 'no-exist.json', 'no-exist.json'
|
249
|
+
'no-dot-json-filename'),
|
250
|
+
([], [], [], [],),
|
251
|
+
('no-exist.csv', 'no-exist.json', 'no-exist.json', 'no-exist.json'),
|
252
252
|
])
|
253
|
-
def test_ctor_errors(input_data, baseline, reform, assump
|
253
|
+
def test_ctor_errors(input_data, baseline, reform, assump):
|
254
254
|
"""
|
255
255
|
Ensure error messages are generated by TaxCalcIO.__init__.
|
256
256
|
"""
|
257
257
|
tcio = TaxCalcIO(input_data=input_data, tax_year=2013,
|
258
|
-
baseline=baseline, reform=reform, assump=assump
|
259
|
-
outdir=outdir)
|
258
|
+
baseline=baseline, reform=reform, assump=assump)
|
260
259
|
assert tcio.errmsg
|
261
260
|
|
262
261
|
|
@@ -316,7 +315,8 @@ def test_creation_with_aging(reformfile0):
|
|
316
315
|
tax_year=taxyear,
|
317
316
|
baseline=None,
|
318
317
|
reform=reformfile0.name,
|
319
|
-
assump=None
|
318
|
+
assump=None,
|
319
|
+
silent=False)
|
320
320
|
assert not tcio.errmsg
|
321
321
|
tcio.init(input_data=pd.read_csv(StringIO(RAWINPUT)),
|
322
322
|
tax_year=taxyear,
|
@@ -371,18 +371,18 @@ def test_ctor_init_with_cps_files():
|
|
371
371
|
MARS;iitax payrolltax|combined,
|
372
372
|
c00100
|
373
373
|
surtax
|
374
|
-
""", True,
|
374
|
+
""", True, 6), # these 6 parameters minus MARS plus RECID
|
375
375
|
|
376
376
|
("""
|
377
377
|
MARS;iitax payrolltax|kombined,c00100
|
378
378
|
surtax
|
379
379
|
RECID
|
380
380
|
FLPDYR
|
381
|
-
""", False,
|
381
|
+
""", False, 0)
|
382
382
|
])
|
383
|
-
def
|
383
|
+
def test_dump_variables(dumpvar_str, str_valid, num_vars):
|
384
384
|
"""
|
385
|
-
Test TaxCalcIO
|
385
|
+
Test TaxCalcIO dump_variables method.
|
386
386
|
"""
|
387
387
|
recdict = {'RECID': 1, 'MARS': 1, 'e00300': 100000, 's006': 1e8}
|
388
388
|
recdf = pd.DataFrame(data=recdict, index=[0])
|
@@ -395,17 +395,17 @@ def test_custom_dump_variables(dumpvar_str, str_valid, num_vars):
|
|
395
395
|
aging_input_data=False,
|
396
396
|
exact_calculations=False)
|
397
397
|
assert not tcio.errmsg
|
398
|
-
|
399
|
-
assert isinstance(
|
398
|
+
varlist = tcio.dump_variables(dumpvar_str)
|
399
|
+
assert isinstance(varlist, list)
|
400
400
|
valid = len(tcio.errmsg) == 0
|
401
401
|
assert valid == str_valid
|
402
402
|
if valid:
|
403
|
-
assert len(
|
403
|
+
assert len(varlist) == num_vars
|
404
404
|
|
405
405
|
|
406
|
-
def
|
406
|
+
def test_output_options_min(reformfile1, assumpfile1):
|
407
407
|
"""
|
408
|
-
Test TaxCalcIO output_dump options
|
408
|
+
Test TaxCalcIO output_dump options with minimal dump variables.
|
409
409
|
"""
|
410
410
|
taxyear = 2021
|
411
411
|
tcio = TaxCalcIO(input_data=pd.read_csv(StringIO(RAWINPUT)),
|
@@ -422,114 +422,93 @@ def test_output_options(reformfile1, assumpfile1):
|
|
422
422
|
aging_input_data=False,
|
423
423
|
exact_calculations=False)
|
424
424
|
assert not tcio.errmsg
|
425
|
-
|
426
|
-
# minimal
|
427
|
-
|
428
|
-
tcio.analyze(writing_output_file=True, output_dump=False)
|
429
|
-
except Exception: # pylint: disable=broad-except
|
430
|
-
if os.path.isfile(outfilepath):
|
431
|
-
try:
|
432
|
-
os.remove(outfilepath)
|
433
|
-
except OSError:
|
434
|
-
pass # sometimes we can't remove a generated temporary file
|
435
|
-
assert False, 'TaxCalcIO.analyze(minimal_output) failed'
|
436
|
-
# --dump output with full dump
|
437
|
-
try:
|
438
|
-
tcio.analyze(writing_output_file=True, output_dump=True)
|
439
|
-
except Exception: # pylint: disable=broad-except
|
440
|
-
if os.path.isfile(outfilepath):
|
441
|
-
try:
|
442
|
-
os.remove(outfilepath)
|
443
|
-
except OSError:
|
444
|
-
pass # sometimes we can't remove a generated temporary file
|
445
|
-
assert False, 'TaxCalcIO.analyze(full_dump_output) failed'
|
446
|
-
# --dump output with partial dump
|
425
|
+
dumppath = tcio.output_filepath().replace('.xxx', '.db')
|
426
|
+
# minimal dump output
|
427
|
+
dumpvars = TaxCalcIO.MINIMAL_DUMPVARS
|
447
428
|
try:
|
448
|
-
tcio.analyze(
|
449
|
-
dump_varset=set(['RECID', 'combined']),
|
450
|
-
output_dump=True)
|
429
|
+
tcio.analyze(output_dump=True, dump_varlist=dumpvars)
|
451
430
|
except Exception: # pylint: disable=broad-except
|
452
|
-
if os.path.isfile(
|
431
|
+
if os.path.isfile(dumppath):
|
453
432
|
try:
|
454
|
-
os.remove(
|
433
|
+
os.remove(dumppath)
|
455
434
|
except OSError:
|
456
435
|
pass # sometimes we can't remove a generated temporary file
|
457
|
-
assert False, 'TaxCalcIO.analyze(
|
458
|
-
|
459
|
-
|
460
|
-
if os.path.isfile(docfilepath):
|
461
|
-
os.remove(docfilepath)
|
462
|
-
if os.path.isfile(outfilepath):
|
463
|
-
os.remove(outfilepath)
|
436
|
+
assert False, 'TaxCalcIO.analyze(minimal_dump_output) failed'
|
437
|
+
if os.path.isfile(dumppath):
|
438
|
+
os.remove(dumppath)
|
464
439
|
|
465
440
|
|
466
|
-
def
|
441
|
+
def test_output_options_mtr(reformfile1, assumpfile1):
|
467
442
|
"""
|
468
|
-
Test
|
443
|
+
Test TaxCalcIO output_dump options with mtr_* dump variables.
|
469
444
|
"""
|
470
445
|
taxyear = 2021
|
471
|
-
compound_reform = f'{reformfile1.name}+{reformfile1.name}'
|
472
446
|
tcio = TaxCalcIO(input_data=pd.read_csv(StringIO(RAWINPUT)),
|
473
447
|
tax_year=taxyear,
|
474
448
|
baseline=None,
|
475
|
-
reform=
|
449
|
+
reform=reformfile1.name,
|
476
450
|
assump=assumpfile1.name)
|
477
451
|
assert not tcio.errmsg
|
478
452
|
tcio.init(input_data=pd.read_csv(StringIO(RAWINPUT)),
|
479
453
|
tax_year=taxyear,
|
480
454
|
baseline=None,
|
481
|
-
reform=
|
455
|
+
reform=reformfile1.name,
|
482
456
|
assump=assumpfile1.name,
|
483
457
|
aging_input_data=False,
|
484
458
|
exact_calculations=False)
|
485
459
|
assert not tcio.errmsg
|
486
|
-
tcio.
|
487
|
-
|
488
|
-
|
489
|
-
|
490
|
-
|
460
|
+
dumppath = tcio.output_filepath().replace('.xxx', '.db')
|
461
|
+
# minimal+mtr_* dump output
|
462
|
+
dumpvars = TaxCalcIO.MINIMAL_DUMPVARS
|
463
|
+
for var in TaxCalcIO.MTR_DUMPVARS:
|
464
|
+
dumpvars.append(var)
|
465
|
+
try:
|
466
|
+
tcio.analyze(output_dump=True, dump_varlist=dumpvars)
|
467
|
+
except Exception: # pylint: disable=broad-except
|
468
|
+
if os.path.isfile(dumppath):
|
469
|
+
try:
|
470
|
+
os.remove(dumppath)
|
471
|
+
except OSError:
|
472
|
+
pass # sometimes we can't remove a generated temporary file
|
473
|
+
assert False, 'TaxCalcIO.analyze(minimal_dump_output) failed'
|
474
|
+
if os.path.isfile(dumppath):
|
475
|
+
os.remove(dumppath)
|
491
476
|
|
492
477
|
|
493
|
-
def
|
478
|
+
def test_write_policy_param_files(reformfile1):
|
494
479
|
"""
|
495
|
-
Test
|
480
|
+
Test write_policy_params_files with compound reform.
|
496
481
|
"""
|
497
482
|
taxyear = 2021
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
|
483
|
+
compound_reform = f'{reformfile1.name}+{reformfile1.name}'
|
484
|
+
tcio = TaxCalcIO(
|
485
|
+
input_data=pd.read_csv(StringIO(RAWINPUT)),
|
486
|
+
tax_year=taxyear,
|
487
|
+
baseline=None,
|
488
|
+
reform=compound_reform,
|
489
|
+
assump=None,
|
490
|
+
)
|
503
491
|
assert not tcio.errmsg
|
504
492
|
tcio.init(input_data=pd.read_csv(StringIO(RAWINPUT)),
|
505
493
|
tax_year=taxyear,
|
506
494
|
baseline=None,
|
507
|
-
reform=
|
508
|
-
assump=
|
495
|
+
reform=compound_reform,
|
496
|
+
assump=None,
|
509
497
|
aging_input_data=False,
|
510
498
|
exact_calculations=False)
|
511
499
|
assert not tcio.errmsg
|
500
|
+
tcio.write_policy_params_files()
|
512
501
|
outfilepath = tcio.output_filepath()
|
513
|
-
|
514
|
-
|
515
|
-
|
516
|
-
|
517
|
-
except Exception: # pylint: disable=broad-except
|
518
|
-
if os.path.isfile(dbfilepath):
|
519
|
-
try:
|
520
|
-
os.remove(dbfilepath)
|
521
|
-
except OSError:
|
522
|
-
pass # sometimes we can't remove a generated temporary file
|
523
|
-
assert False, 'ERROR: TaxCalcIO.analyze(sqldb) failed'
|
524
|
-
# if try was successful, remove the db file
|
525
|
-
if os.path.isfile(dbfilepath):
|
526
|
-
os.remove(dbfilepath)
|
502
|
+
for ext in ['-params.bas', '-params.ref']:
|
503
|
+
filepath = outfilepath.replace('.xxx', ext)
|
504
|
+
if os.path.isfile(filepath):
|
505
|
+
os.remove(filepath)
|
527
506
|
|
528
507
|
|
529
508
|
def test_no_tables_or_graphs(reformfile1):
|
530
509
|
"""
|
531
|
-
Test TaxCalcIO with
|
532
|
-
INPUT has zero weights.
|
510
|
+
Test TaxCalcIO with output_params=True and output_tables=True and
|
511
|
+
output_graphs=True but INPUT has zero weights.
|
533
512
|
"""
|
534
513
|
# create input sample that cannot output tables or graphs
|
535
514
|
nobs = 10
|
@@ -555,24 +534,24 @@ def test_no_tables_or_graphs(reformfile1):
|
|
555
534
|
aging_input_data=False,
|
556
535
|
exact_calculations=False)
|
557
536
|
assert not tcio.errmsg
|
558
|
-
# create TaxCalcIO
|
559
|
-
tcio.analyze(
|
537
|
+
# create several TaxCalcIO output files
|
538
|
+
tcio.analyze(output_params=True,
|
560
539
|
output_tables=True,
|
561
540
|
output_graphs=True)
|
562
541
|
# delete tables and graph files
|
563
542
|
output_filename = tcio.output_filepath()
|
564
|
-
|
565
|
-
|
566
|
-
|
567
|
-
|
568
|
-
|
569
|
-
|
570
|
-
|
571
|
-
|
572
|
-
|
573
|
-
|
574
|
-
|
575
|
-
|
543
|
+
extensions = [
|
544
|
+
'-params.bas',
|
545
|
+
'-params.ref',
|
546
|
+
'-tables.text',
|
547
|
+
'-atr.html',
|
548
|
+
'-mtr.html',
|
549
|
+
'-pch.html',
|
550
|
+
]
|
551
|
+
for ext in extensions:
|
552
|
+
fname = output_filename.replace('.xxx', ext)
|
553
|
+
if os.path.isfile(fname):
|
554
|
+
os.remove(fname)
|
576
555
|
|
577
556
|
|
578
557
|
def test_tables(reformfile1):
|
@@ -604,10 +583,10 @@ def test_tables(reformfile1):
|
|
604
583
|
exact_calculations=False)
|
605
584
|
assert not tcio.errmsg
|
606
585
|
# create TaxCalcIO tables file
|
607
|
-
tcio.analyze(
|
586
|
+
tcio.analyze(output_tables=True)
|
608
587
|
# delete tables file
|
609
588
|
output_filename = tcio.output_filepath()
|
610
|
-
fname = output_filename.replace('.
|
589
|
+
fname = output_filename.replace('.xxx', '-tables.text')
|
611
590
|
if os.path.isfile(fname):
|
612
591
|
os.remove(fname)
|
613
592
|
|
@@ -641,16 +620,16 @@ def test_graphs(reformfile1):
|
|
641
620
|
aging_input_data=False,
|
642
621
|
exact_calculations=False)
|
643
622
|
assert not tcio.errmsg
|
644
|
-
tcio.analyze(
|
623
|
+
tcio.analyze(output_graphs=True)
|
645
624
|
# delete graph files
|
646
625
|
output_filename = tcio.output_filepath()
|
647
|
-
fname = output_filename.replace('.
|
626
|
+
fname = output_filename.replace('.xxx', '-atr.html')
|
648
627
|
if os.path.isfile(fname):
|
649
628
|
os.remove(fname)
|
650
|
-
fname = output_filename.replace('.
|
629
|
+
fname = output_filename.replace('.xxx', '-mtr.html')
|
651
630
|
if os.path.isfile(fname):
|
652
631
|
os.remove(fname)
|
653
|
-
fname = output_filename.replace('.
|
632
|
+
fname = output_filename.replace('.xxx', '-pch.html')
|
654
633
|
if os.path.isfile(fname):
|
655
634
|
os.remove(fname)
|
656
635
|
|
@@ -694,7 +673,7 @@ def test_analyze_warnings_print(warnreformfile):
|
|
694
673
|
aging_input_data=False,
|
695
674
|
exact_calculations=False)
|
696
675
|
assert not tcio.errmsg
|
697
|
-
tcio.analyze(
|
676
|
+
tcio.analyze()
|
698
677
|
assert tcio.tax_year() == taxyear
|
699
678
|
|
700
679
|
|
taxcalc/utils.py
CHANGED
@@ -1160,7 +1160,7 @@ def xtr_graph_plot(data,
|
|
1160
1160
|
line_color='blue', line_width=3, legend_label='Baseline')
|
1161
1161
|
fig.line(lines.index, lines.reform,
|
1162
1162
|
line_color='red', line_width=3, legend_label='Reform')
|
1163
|
-
fig.
|
1163
|
+
fig.scatter(0, 0, visible=False) # force zero to be included on y axis
|
1164
1164
|
if xlabel == '':
|
1165
1165
|
xlabel = data['xlabel']
|
1166
1166
|
fig.xaxis.axis_label = xlabel
|
@@ -1295,8 +1295,8 @@ def pch_graph_plot(data,
|
|
1295
1295
|
fig.title.text_font_size = '12pt'
|
1296
1296
|
line = data['line']
|
1297
1297
|
fig.line(line.index, line.pch, line_color='blue', line_width=3)
|
1298
|
-
fig.
|
1299
|
-
zero_grid_line_range =
|
1298
|
+
fig.scatter(0, 0, visible=False) # force zero to be included on y axis
|
1299
|
+
zero_grid_line_range = line.index
|
1300
1300
|
zero_grid_line_height = [0] * len(zero_grid_line_range)
|
1301
1301
|
fig.line(zero_grid_line_range, zero_grid_line_height,
|
1302
1302
|
line_color='black', line_width=1)
|
@@ -1311,13 +1311,7 @@ def pch_graph_plot(data,
|
|
1311
1311
|
fig.yaxis.axis_label_text_font_size = '12pt'
|
1312
1312
|
fig.yaxis.axis_label_text_font_style = 'normal'
|
1313
1313
|
fig.yaxis[0].formatter = PrintfTickFormatter(format='%.1f')
|
1314
|
-
|
1315
|
-
# bokeh.core.serialization.SerializationError:
|
1316
|
-
# can't serialize <class 'range'>
|
1317
|
-
# so the "return fig" statement is replaced by Python's implicit
|
1318
|
-
# "return None" until the above logic can be made compatible with
|
1319
|
-
# modern bokeh packages
|
1320
|
-
# return fig
|
1314
|
+
return fig
|
1321
1315
|
|
1322
1316
|
|
1323
1317
|
def write_graph_file(figure, filename, title):
|
@@ -1,6 +1,6 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.4
|
2
2
|
Name: taxcalc
|
3
|
-
Version: 4.
|
3
|
+
Version: 4.6.0
|
4
4
|
Summary: Tax-Calculator
|
5
5
|
Home-page: https://github.com/PSLmodels/Tax-Calculator
|
6
6
|
Download-URL: https://github.com/PSLmodels/Tax-Calculator
|
@@ -29,6 +29,7 @@ Dynamic: description-content-type
|
|
29
29
|
Dynamic: download-url
|
30
30
|
Dynamic: home-page
|
31
31
|
Dynamic: license
|
32
|
+
Dynamic: license-file
|
32
33
|
Dynamic: requires-dist
|
33
34
|
Dynamic: summary
|
34
35
|
|
@@ -1,6 +1,6 @@
|
|
1
|
-
taxcalc/__init__.py,sha256=
|
2
|
-
taxcalc/calcfunctions.py,sha256=
|
3
|
-
taxcalc/calculator.py,sha256=
|
1
|
+
taxcalc/__init__.py,sha256=jQUxALCvW-PLnHIR91_Qjnd0_TULCiULAKJGbNrAc6c,536
|
2
|
+
taxcalc/calcfunctions.py,sha256=G62sQeW-YHJ2gvqOfidRKPBpufSHzXYIdI2PGcApOuU,148423
|
3
|
+
taxcalc/calculator.py,sha256=otaljKtkO91uWH6QqChsR17xjLXcHJ2QEvyoMnYeung,63936
|
4
4
|
taxcalc/conftest.py,sha256=nO4J7qu1sTHgjqrzhpRMvfMJUrNm6GP_IsSuuDt_MeQ,141
|
5
5
|
taxcalc/consumption.json,sha256=FBgDd72AZnviQRhGz5rPgpGpOmaOzNYfGB9GdTCeKPI,8102
|
6
6
|
taxcalc/consumption.py,sha256=pkXhFGpFqu7hW62KaTctfRSzR-pXzMB1ai8XCQRAgXk,3480
|
@@ -13,20 +13,20 @@ taxcalc/growdiff.py,sha256=Q3St-KPIUN2I_l1S0jwN0yr8O4LuzkNIU-_qbXTkrZw,2977
|
|
13
13
|
taxcalc/growfactors.csv,sha256=URIGSKApCY4McvdILkCaIm8EhCGEME2Du-ef5Q9c0uE,5134
|
14
14
|
taxcalc/growfactors.py,sha256=dW71yYKhFDbFtGpBT-kZBqY4MV7IswKcNI3_c-X_Nfg,6525
|
15
15
|
taxcalc/parameters.py,sha256=pvr3m4G-fA_d-LMqCNYdBtJDjkDcHLgOgw0kmchYhFk,33235
|
16
|
-
taxcalc/policy.py,sha256=
|
17
|
-
taxcalc/policy_current_law.json,sha256=
|
16
|
+
taxcalc/policy.py,sha256=4bY3beSYhLKk_X4CTgG7LGnVnILM0D4Invt7uCp8dlA,6725
|
17
|
+
taxcalc/policy_current_law.json,sha256=dqfeSqdYe-XUAdZOS7dccUEA48d80JqwnI34nsHbt_g,689758
|
18
18
|
taxcalc/puf_ratios.csv,sha256=USMM79UEX8PnSKY_LYLxvACER_9NHyj4ipNEk2iyykQ,3580
|
19
19
|
taxcalc/puf_weights.csv.gz,sha256=35iZhzFO0dHUI2zf4_liyk60E-3Sgr_AbxszGxw7LfM,13522484
|
20
20
|
taxcalc/records.py,sha256=K5QgP6Pm9PtEVDVzM7tpHYPu554Wio0KnrU7YTTBKgQ,18264
|
21
21
|
taxcalc/records_variables.json,sha256=_YKJiZQ1czp0VH9bkr5ZXmp9Mm1roHoHrt2XnLXAtfw,42975
|
22
|
-
taxcalc/taxcalcio.py,sha256=
|
23
|
-
taxcalc/utils.py,sha256=
|
22
|
+
taxcalc/taxcalcio.py,sha256=F-MNNkIVYdOCfFBE1nKOajoS8c2MjkSQ0aKssyDXMh4,33188
|
23
|
+
taxcalc/utils.py,sha256=noHnQ-tw0AXhEH-OgdTUiPedH8luVOJ5NdfpKI3_obw,62401
|
24
24
|
taxcalc/utilsprvt.py,sha256=iIyWp9-N3_XWjQj2jV2CWnJy7vrNlKB2_vIMwYjgbWY,1323
|
25
25
|
taxcalc/assumptions/ASSUMPTIONS.md,sha256=cFQqWn1nScaladVaQ7xNm1jDY8CsGdLmqZEzUZeRrb8,1917
|
26
26
|
taxcalc/assumptions/README.md,sha256=Ww55r2zH1neoRSl_MawrPmX-ugaztIZ7_ALrquuatdQ,809
|
27
27
|
taxcalc/assumptions/economic_assumptions_template.json,sha256=utMk38GwSQFrkOAtRrDVhMQLpfaZH3JmtTznKX7IouM,2610
|
28
28
|
taxcalc/cli/__init__.py,sha256=cyZ0tdx41j_vV_B6GAkqJmNKKG-B0wUC0ThC75lJlk4,104
|
29
|
-
taxcalc/cli/tc.py,sha256=
|
29
|
+
taxcalc/cli/tc.py,sha256=rJ5VTxyqUn7CVG3fXmTIHKdvL7lEfCFw1xHlFtRDZv8,14400
|
30
30
|
taxcalc/reforms/2017_law.json,sha256=u-xaPSvt5ubfZw1Nb-jNhTNcOPBUJeAX2kJVoEyMgC4,5860
|
31
31
|
taxcalc/reforms/2017_law.out.csv,sha256=nnNKXqY2kof8HC1nnU8srPsvNNepi6ISXQ9OJpQnT7M,473
|
32
32
|
taxcalc/reforms/ARPA.json,sha256=1H9LuJ_QitXRO9e8R3PWizajJgdioIzbGFdvdlt9FVg,3119
|
@@ -54,7 +54,7 @@ taxcalc/reforms/Trump2017.json,sha256=DZjCJQZYe98Skyss7z_Jhj8HJld_FPZeQGxwzGgQIn
|
|
54
54
|
taxcalc/reforms/Trump2017.out.csv,sha256=By1quzZONFLQGK5E76mbNNFuORZ8aCGHpD1BR5iwTS8,474
|
55
55
|
taxcalc/reforms/cases.csv,sha256=JQ0LSnNeyl6xSgW5mimGUJMr7xwCWTOpiOpfwx2ETsg,570
|
56
56
|
taxcalc/reforms/clp.out.csv,sha256=qSUdI0LoQFGG6h24eT-249pLEqmxmt7TvLrv1HX_y3Y,475
|
57
|
-
taxcalc/reforms/ext.json,sha256=
|
57
|
+
taxcalc/reforms/ext.json,sha256=578ckWd4bTbH_XnTR-smMKtE7Auu9seGn7de_hsGIos,3130
|
58
58
|
taxcalc/reforms/growfactors_ext.csv,sha256=E0szWXtgV5jcpiyvREOz1yXw_poPIBC77bBQI1rlFxM,17733
|
59
59
|
taxcalc/reforms/ptaxes0.json,sha256=QkvqCVkI23sF7FvTHqaUYNpEJYuHNChbKwH0mH7Otp4,1718
|
60
60
|
taxcalc/reforms/ptaxes0.out.csv,sha256=DKGsyNWqo-ABUnjFjEGMpqqhmT2WDRGuU6sKTgH_obc,476
|
@@ -83,10 +83,10 @@ taxcalc/tests/pufcsv_agg_expect.csv,sha256=h0r6MtsFEBa1u5zwpRT4fDx2T__ZAkdx4oeLx
|
|
83
83
|
taxcalc/tests/pufcsv_mtr_expect.txt,sha256=xGsUfafzsZ04fFQw162ys-1Mf1CDC_PQ0QZNigS07VY,4265
|
84
84
|
taxcalc/tests/reforms.json,sha256=vGJrvfKJ7h5iAWF-vV9NmY8Z9HP_iereiYiYNcfhBMo,19212
|
85
85
|
taxcalc/tests/reforms_expect.csv,sha256=6m0bSH8S6ReMYdHoQC9iWYuJAof5sZ0OONVBi7zX8JE,1464
|
86
|
-
taxcalc/tests/test_4package.py,sha256=
|
86
|
+
taxcalc/tests/test_4package.py,sha256=I9i5rWFsg-VCtTLmUWIi9dnusieTZeodrgH8ba_Fbng,3681
|
87
87
|
taxcalc/tests/test_benefits.py,sha256=oaui5mO0TuW8Ht-uxvUCBL5zM3iTENq3Whyf_gEpY1U,3392
|
88
88
|
taxcalc/tests/test_calcfunctions.py,sha256=QtMgQg_WpCU8PZM3Hs8Pml4q6LnlLWV_blCzbpGN2sw,31939
|
89
|
-
taxcalc/tests/test_calculator.py,sha256=
|
89
|
+
taxcalc/tests/test_calculator.py,sha256=dumYsleaKjW8zD1VUnmyQbuszf96QEqXAMf8dIvtelM,36087
|
90
90
|
taxcalc/tests/test_compare.py,sha256=WglH4ZJOEQnav_mAmnGjpb7dooXcQsB1m04hgQeoBUQ,10873
|
91
91
|
taxcalc/tests/test_compatible_data.py,sha256=XpfnE96HDvlgJM_8KEasgufxeiePTFfNMBBVlfzHP9Y,13477
|
92
92
|
taxcalc/tests/test_consumption.py,sha256=c6zi9GqNK54cgfzxiWmY10UxOMJZ9vd9fOTwUKU1zMk,6318
|
@@ -100,9 +100,9 @@ taxcalc/tests/test_policy.py,sha256=hJrFqqptMoUWk3abIJ2sdADQtCqvGaUeW5as1aNwhR8,
|
|
100
100
|
taxcalc/tests/test_puf_var_stats.py,sha256=TG-sQtOkR6cBOw0am7MUsMSwjPxVdkvt0Xov342oii8,7786
|
101
101
|
taxcalc/tests/test_pufcsv.py,sha256=kQPwpMcLNPwQDiO-23xvvZggtHYvRz-UYEDn6JjNfbw,16352
|
102
102
|
taxcalc/tests/test_records.py,sha256=ncswnbCY7vZgJ_h6xwql4oFw-jZG2gWOMWvEJC2_jdc,8827
|
103
|
-
taxcalc/tests/test_reforms.py,sha256=
|
103
|
+
taxcalc/tests/test_reforms.py,sha256=IGMAzVqAMJqdnDDRsMs3VZZOV9_o4gsBAyYgyPB2m2M,16047
|
104
104
|
taxcalc/tests/test_responses.py,sha256=2CkVVdaDNCSALMoUcGgweRlS2tfsK3kXogHtDkZMqJU,1663
|
105
|
-
taxcalc/tests/test_taxcalcio.py,sha256=
|
105
|
+
taxcalc/tests/test_taxcalcio.py,sha256=Ee7qfUI-Gy_lbFPElOfOaFtIZ_0NboxVXK0Wrxl9BBw,23794
|
106
106
|
taxcalc/tests/test_utils.py,sha256=aUHVNxfSMdyyLAz3w98KLQa5D872rZxXqKbPkIqwLLA,29403
|
107
107
|
taxcalc/validation/CSV_INPUT_VARS.md,sha256=MqlZZGt_a1n8JAU-nY5MjnTmjz1pMOuhtpVYIGUgl38,1433
|
108
108
|
taxcalc/validation/CSV_OUTPUT_VARS.md,sha256=wr8oyCJDXcxl4Lu0H_wMofUQYhEIyHDif6vkbas1FGE,3000
|
@@ -131,9 +131,9 @@ taxcalc/validation/taxsim35/expected_differences/b21-taxdiffs-expect.csv,sha256=
|
|
131
131
|
taxcalc/validation/taxsim35/expected_differences/c17-taxdiffs-expect.csv,sha256=YhgojbLowH3yujdYu7SGkdvBZmTgpugu4wYc1Be069M,1125
|
132
132
|
taxcalc/validation/taxsim35/expected_differences/c18-taxdiffs-expect.csv,sha256=g9J4BPbTySV-h-RcLvReJq9v1jscgiRSSZzi0taEA-k,1225
|
133
133
|
taxcalc/validation/taxsim35/expected_differences/c19-taxdiffs-expect.csv,sha256=Ceh15N_Xr3L7cpYjzGa-8NLCV3obc8PNHEhE5ZxSPhI,1238
|
134
|
-
taxcalc-4.
|
135
|
-
taxcalc-4.
|
136
|
-
taxcalc-4.
|
137
|
-
taxcalc-4.
|
138
|
-
taxcalc-4.
|
139
|
-
taxcalc-4.
|
134
|
+
taxcalc-4.6.0.dist-info/licenses/LICENSE,sha256=m5epLdB-_NXiY7NsEDgcHP4jDtJ4vOlRf5S3Jb-jraY,1299
|
135
|
+
taxcalc-4.6.0.dist-info/METADATA,sha256=3sgO2tiOEtszzhDVjXJgEqx97l3MGXWsKPUNjm1oSuY,3509
|
136
|
+
taxcalc-4.6.0.dist-info/WHEEL,sha256=ck4Vq1_RXyvS4Jt6SI0Vz6fyVs4GWg7AINwpsaGEgPE,91
|
137
|
+
taxcalc-4.6.0.dist-info/entry_points.txt,sha256=a3ZE1piRv683p27fOLdWZvVJXESkoslTOp5iXV7uVco,50
|
138
|
+
taxcalc-4.6.0.dist-info/top_level.txt,sha256=Wh8wTDHkA_cm4dn8IoUCviDyGgVQqwEQKPJnl8z6d4c,8
|
139
|
+
taxcalc-4.6.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|