taxcalc 3.6.0__py3-none-any.whl → 4.1.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 CHANGED
@@ -14,4 +14,4 @@ from taxcalc.taxcalcio import *
14
14
  from taxcalc.utils import *
15
15
  from taxcalc.cli import *
16
16
 
17
- __version__ = '3.6.0'
17
+ __version__ = '4.1.0'
taxcalc/calcfunctions.py CHANGED
@@ -100,8 +100,9 @@ def BenefitPrograms(calc):
100
100
 
101
101
  @iterate_jit(nopython=True)
102
102
  def EI_PayrollTax(SS_Earnings_c, e00200p, e00200s, pencon_p, pencon_s,
103
- FICA_ss_trt, FICA_mc_trt, ALD_SelfEmploymentTax_hc,
104
- SS_Earnings_thd, SECA_Earnings_thd,
103
+ FICA_ss_trt_employer, FICA_ss_trt_employee,
104
+ FICA_mc_trt_employer, FICA_mc_trt_employee,
105
+ ALD_SelfEmploymentTax_hc, SS_Earnings_thd, SECA_Earnings_thd,
105
106
  e00900p, e00900s, e02100p, e02100s, k1bx14p,
106
107
  k1bx14s, payrolltax, ptax_was, setax, c03260, ptax_oasdi,
107
108
  sey, earned, earned_p, earned_s,
@@ -123,10 +124,14 @@ def EI_PayrollTax(SS_Earnings_c, e00200p, e00200s, pencon_p, pencon_s,
123
124
  Contributions to defined-contribution pension plans for taxpayer
124
125
  pencon_s: float
125
126
  Contributions to defined-contribution pension plans for spouse
126
- FICA_ss_trt: float
127
- Social security payroll tax rate, including both employer and employee
128
- FICA_mc_trt: float
129
- Medicare payroll tax rate, including both employer and employee
127
+ FICA_ss_trt_employer: float
128
+ Employer side social security payroll tax rate
129
+ FICA_ss_trt_employee: float
130
+ Employee side social security payroll tax rate
131
+ FICA_mc_trt_employer: float
132
+ Employer side medicare payroll tax rate
133
+ FICA_mc_trt_employee: float
134
+ Employee side medicare payroll tax rate
130
135
  ALD_SelfEmploymentTax_hc: float
131
136
  Adjustment for self-employment tax haircut
132
137
  If greater than zero, reduces the employer equivalent portion of self-employment adjustment
@@ -218,22 +223,22 @@ def EI_PayrollTax(SS_Earnings_c, e00200p, e00200s, pencon_p, pencon_s,
218
223
  txearn_was_s = min(SS_Earnings_c, gross_was_s)
219
224
 
220
225
  # compute OASDI and HI payroll taxes on wage-and-salary income, FICA
221
- ptax_ss_was_p = FICA_ss_trt * txearn_was_p
222
- ptax_ss_was_s = FICA_ss_trt * txearn_was_s
223
- ptax_mc_was_p = FICA_mc_trt * gross_was_p
224
- ptax_mc_was_s = FICA_mc_trt * gross_was_s
226
+ ptax_ss_was_p = (FICA_ss_trt_employer + FICA_ss_trt_employee) * txearn_was_p
227
+ ptax_ss_was_s = (FICA_ss_trt_employer + FICA_ss_trt_employee) * txearn_was_s
228
+ ptax_mc_was_p = (FICA_mc_trt_employer + FICA_mc_trt_employee) * gross_was_p
229
+ ptax_mc_was_s = (FICA_mc_trt_employer + FICA_mc_trt_employee) * gross_was_s
225
230
  ptax_was = ptax_ss_was_p + ptax_ss_was_s + ptax_mc_was_p + ptax_mc_was_s
226
231
 
227
232
  # compute taxable self-employment income for OASDI SECA
228
- sey_frac = 1.0 - 0.5 * (FICA_ss_trt + FICA_mc_trt)
233
+ sey_frac = 1.0 - 0.5 * (FICA_ss_trt_employer + FICA_ss_trt_employee + FICA_mc_trt_employer + FICA_mc_trt_employee)
229
234
  txearn_sey_p = min(max(0., sey_p * sey_frac), SS_Earnings_c - txearn_was_p)
230
235
  txearn_sey_s = min(max(0., sey_s * sey_frac), SS_Earnings_c - txearn_was_s)
231
236
 
232
237
  # compute self-employment tax on taxable self-employment income, SECA
233
- setax_ss_p = FICA_ss_trt * txearn_sey_p
234
- setax_ss_s = FICA_ss_trt * txearn_sey_s
235
- setax_mc_p = FICA_mc_trt * max(0., sey_p * sey_frac)
236
- setax_mc_s = FICA_mc_trt * max(0., sey_s * sey_frac)
238
+ setax_ss_p = (FICA_ss_trt_employer + FICA_ss_trt_employee) * txearn_sey_p
239
+ setax_ss_s = (FICA_ss_trt_employer + FICA_ss_trt_employee) * txearn_sey_s
240
+ setax_mc_p = (FICA_mc_trt_employer + FICA_mc_trt_employee) * max(0., sey_p * sey_frac)
241
+ setax_mc_s = (FICA_mc_trt_employer + FICA_mc_trt_employee) * max(0., sey_s * sey_frac)
237
242
  setax_p = setax_ss_p + setax_mc_p
238
243
  setax_s = setax_ss_s + setax_mc_s
239
244
  setax = setax_p + setax_s
@@ -246,13 +251,13 @@ def EI_PayrollTax(SS_Earnings_c, e00200p, e00200s, pencon_p, pencon_s,
246
251
  # compute extra OASDI payroll taxes on the portion of the sum
247
252
  # of wage-and-salary income and taxable self employment income
248
253
  # that exceeds SS_Earnings_thd
249
- sey_frac = 1.0 - 0.5 * FICA_ss_trt
254
+ sey_frac = 1.0 - 0.5 * (FICA_ss_trt_employer + FICA_ss_trt_employee)
250
255
  was_plus_sey_p = gross_was_p + max(0., sey_p * sey_frac)
251
256
  was_plus_sey_s = gross_was_s + max(0., sey_s * sey_frac)
252
257
  extra_ss_income_p = max(0., was_plus_sey_p - SS_Earnings_thd)
253
258
  extra_ss_income_s = max(0., was_plus_sey_s - SS_Earnings_thd)
254
- extra_payrolltax = (extra_ss_income_p * FICA_ss_trt +
255
- extra_ss_income_s * FICA_ss_trt)
259
+ extra_payrolltax = (extra_ss_income_p * (FICA_ss_trt_employer + FICA_ss_trt_employee) +
260
+ extra_ss_income_s * (FICA_ss_trt_employer + FICA_ss_trt_employee))
256
261
 
257
262
  # compute part of total payroll taxes for filing unit
258
263
  # (the ptax_amc part of total payroll taxes for the filing unit is
@@ -1080,7 +1085,8 @@ def ItemDed(e17500_capped, e18400_capped, e18500_capped, e19200_capped,
1080
1085
  @iterate_jit(nopython=True)
1081
1086
  def AdditionalMedicareTax(e00200, MARS,
1082
1087
  AMEDT_ec, sey, AMEDT_rt,
1083
- FICA_mc_trt, FICA_ss_trt,
1088
+ FICA_mc_trt_employer, FICA_mc_trt_employee,
1089
+ FICA_ss_trt_employer, FICA_ss_trt_employee,
1084
1090
  ptax_amc, payrolltax):
1085
1091
  """
1086
1092
  Computes Additional Medicare Tax (Form 8959) included in payroll taxes.
@@ -1093,10 +1099,14 @@ def AdditionalMedicareTax(e00200, MARS,
1093
1099
  Additional Medicare Tax earnings exclusion
1094
1100
  AMEDT_rt: float
1095
1101
  Additional Medicare Tax rate
1096
- FICA_ss_trt: float
1097
- FICA Social Security tax rate
1098
- FICA_mc_trt: float
1099
- FICA Medicare tax rate
1102
+ FICA_ss_trt_employer: float
1103
+ Employer side FICA Social Security tax rate
1104
+ FICA_ss_trt_employee: float
1105
+ Employee side FICA Social Security tax rate
1106
+ FICA_mc_trt_employer: float
1107
+ Employer side FICA Medicare tax rate
1108
+ FICA_mc_trt_employee: float
1109
+ Employee side FICA Medicare tax rate
1100
1110
  e00200: float
1101
1111
  Wages and salaries
1102
1112
  sey: float
@@ -1113,7 +1123,7 @@ def AdditionalMedicareTax(e00200, MARS,
1113
1123
  payrolltax: float
1114
1124
  payroll tax augmented by Additional Medicare Tax
1115
1125
  """
1116
- line8 = max(0., sey) * (1. - 0.5 * (FICA_mc_trt + FICA_ss_trt))
1126
+ line8 = max(0., sey) * (1. - 0.5 * (FICA_mc_trt_employer + FICA_mc_trt_employee + FICA_ss_trt_employer + FICA_ss_trt_employee))
1117
1127
  line11 = max(0., AMEDT_ec[MARS - 1] - e00200)
1118
1128
  ptax_amc = AMEDT_rt * (max(0., e00200 - AMEDT_ec[MARS - 1]) +
1119
1129
  max(0., line8 - line11))
@@ -2149,15 +2159,23 @@ def F2441(MARS, earned_p, earned_s, f2441, CDCC_c, e32800,
2149
2159
  c00100: float
2150
2160
  Adjusted Gross Income (AGI)
2151
2161
  CDCC_ps: float
2152
- Child/dependent care credit phaseout start
2162
+ Child/dependent care credit first phaseout start
2163
+ CDCC_ps2: float
2164
+ Child/dependent care credit second phaseout start
2153
2165
  CDCC_crt: float
2154
- Child/dependent care credit phaseout percentage rate ceiling
2166
+ Child/dependent care credit phaseout rate ceiling
2167
+ CDCC_frt: float
2168
+ Child/dependent care credit phaseout rate floor
2169
+ CDCC_prt: float
2170
+ Child/dependent care credit phaseout rate
2155
2171
  c05800: float
2156
2172
  Total (regular + AMT) income tax liability before credits
2157
2173
  e07300: float
2158
2174
  Foreign tax credit from Form 1116
2159
2175
  c07180: float
2160
2176
  Credit for child and dependent care expenses from Form 2441
2177
+ CDCC_refund: bool
2178
+ Indicator for whether CDCC is refundable
2161
2179
 
2162
2180
  Returns
2163
2181
  -------
@@ -2189,7 +2207,8 @@ def F2441(MARS, earned_p, earned_s, f2441, CDCC_c, e32800,
2189
2207
  if c00100 > CDCC_ps2:
2190
2208
  crate = max(0., CDCC_frt -
2191
2209
  max(((c00100 - CDCC_ps2) * CDCC_prt), 0.))
2192
- c33200 = c33000 * 0.01 * crate
2210
+
2211
+ c33200 = c33000 * crate
2193
2212
  # credit is limited by tax liability if not refundable
2194
2213
  if CDCC_refundable:
2195
2214
  c07180 = 0.
@@ -3199,7 +3218,7 @@ def C1040(c05800, c07180, c07200, c07220, c07230, c07240, c07260, c07300,
3199
3218
  def CTC_new(CTC_new_c, CTC_new_rt, CTC_new_c_under6_bonus,
3200
3219
  CTC_new_ps, CTC_new_prt, CTC_new_for_all, CTC_include17,
3201
3220
  CTC_new_refund_limited, CTC_new_refund_limit_payroll_rt,
3202
- CTC_new_refund_limited_all_payroll, payrolltax,
3221
+ CTC_new_refund_limited_all_payroll, payrolltax, exact,
3203
3222
  n24, nu06, age_head, age_spouse, nu18, c00100, MARS, ptax_oasdi,
3204
3223
  c09200, ctc_new):
3205
3224
  """
@@ -3227,6 +3246,8 @@ def CTC_new(CTC_new_c, CTC_new_rt, CTC_new_c_under6_bonus,
3227
3246
  New child tax credit refund limit applies to all FICA taxes, not just OASDI
3228
3247
  payrolltax: float
3229
3248
  Total (employee + employer) payroll tax liability
3249
+ exact: int
3250
+ Whether or not exact phase-out calculation is being done
3230
3251
  n24: int
3231
3252
  Number of children who are Child-Tax-Credit eligible, one condition for which is being under age 17
3232
3253
  nu06: int
@@ -3261,8 +3282,12 @@ def CTC_new(CTC_new_c, CTC_new_rt, CTC_new_c_under6_bonus,
3261
3282
  ctc_new = min(CTC_new_rt * posagi, ctc_new)
3262
3283
  ymax = CTC_new_ps[MARS - 1]
3263
3284
  if posagi > ymax:
3264
- ctc_new_reduced = max(0.,
3265
- ctc_new - CTC_new_prt * (posagi - ymax))
3285
+ over = posagi - ymax
3286
+ if exact == 1: # exact calculation as on tax form
3287
+ excess = math.ceil(over / 1000.) * 1000.
3288
+ else: # smoothed calculation
3289
+ excess = over
3290
+ ctc_new_reduced = max(0., ctc_new - CTC_new_prt * excess)
3266
3291
  ctc_new = min(ctc_new, ctc_new_reduced)
3267
3292
  if ctc_new > 0. and CTC_new_refund_limited:
3268
3293
  refund_new = max(0., ctc_new - c09200)
@@ -3280,7 +3305,8 @@ def CTC_new(CTC_new_c, CTC_new_rt, CTC_new_c_under6_bonus,
3280
3305
  @iterate_jit(nopython=True)
3281
3306
  def IITAX(c59660, c11070, c10960, personal_refundable_credit, ctc_new, rptc,
3282
3307
  c09200, payrolltax, CDCC_refund, recovery_rebate_credit,
3283
- eitc, c07220, odc, CTC_refundable, ODC_refundable, refund, iitax, combined):
3308
+ eitc, c07220, odc, CTC_refundable, ODC_refundable, refund,
3309
+ ctc_total, ctc_refundable, iitax, combined):
3284
3310
  """
3285
3311
  Computes final taxes.
3286
3312
 
@@ -3307,6 +3333,10 @@ def IITAX(c59660, c11070, c10960, personal_refundable_credit, ctc_new, rptc,
3307
3333
  Earned Income Credit
3308
3334
  refund: float
3309
3335
  Total refundable income tax credits
3336
+ ctc_total: float
3337
+ Total CTC amount (c07220 + c11070 + odc + ctc_new)
3338
+ ctc_refundable: float
3339
+ Portion of total CTC amount that is refundable
3310
3340
  iitax: float
3311
3341
  Total federal individual income tax liability
3312
3342
  combined: float
@@ -3318,6 +3348,10 @@ def IITAX(c59660, c11070, c10960, personal_refundable_credit, ctc_new, rptc,
3318
3348
  Earned Income Credit
3319
3349
  refund: float
3320
3350
  Total refundable income tax credits
3351
+ ctc_total: float
3352
+ Total CTC amount (c07220 + c11070 + odc + ctc_new)
3353
+ ctc_refundable: float
3354
+ Portion of total CTC amount that is refundable
3321
3355
  iitax: float
3322
3356
  Total federal individual income tax liability
3323
3357
  combined: float
@@ -3333,10 +3367,13 @@ def IITAX(c59660, c11070, c10960, personal_refundable_credit, ctc_new, rptc,
3333
3367
  else:
3334
3368
  odc_refund = 0.
3335
3369
  refund = (eitc + c11070 + c10960 + CDCC_refund + recovery_rebate_credit +
3336
- personal_refundable_credit + ctc_new + rptc + ctc_refund + odc_refund)
3370
+ personal_refundable_credit + ctc_new + rptc + ctc_refund +
3371
+ odc_refund)
3372
+ ctc_total = c07220 + c11070 + odc + ctc_new
3373
+ ctc_refundable = ctc_refund + c11070 + odc_refund + ctc_new
3337
3374
  iitax = c09200 - refund
3338
3375
  combined = iitax + payrolltax
3339
- return (eitc, refund, iitax, combined)
3376
+ return (eitc, refund, ctc_total, ctc_refundable, iitax, combined)
3340
3377
 
3341
3378
 
3342
3379
  @JIT(nopython=True)
taxcalc/calculator.py CHANGED
@@ -694,9 +694,11 @@ class Calculator():
694
694
  variable >= self.policy_param('SS_Earnings_thd')
695
695
  )
696
696
  adj = np.where(oasdi_taxed,
697
- 0.5 * (self.policy_param('FICA_ss_trt') +
698
- self.policy_param('FICA_mc_trt')),
699
- 0.5 * self.policy_param('FICA_mc_trt'))
697
+ 0.5 * (self.policy_param('FICA_ss_trt_employer') +
698
+ self.policy_param('FICA_ss_trt_employee') +
699
+ self.policy_param('FICA_mc_trt_employer') +
700
+ self.policy_param('FICA_mc_trt_employee')),
701
+ 0.5 * (self.policy_param('FICA_mc_trt_employer') + self.policy_param('FICA_mc_trt_employee')))
700
702
  else:
701
703
  adj = 0.0
702
704
  # compute marginal tax rates
taxcalc/cli/tc.py CHANGED
@@ -8,6 +8,7 @@ which can be accessed as 'tc' from an installed taxcalc conda package.
8
8
 
9
9
  import os
10
10
  import sys
11
+ import time
11
12
  import argparse
12
13
  import difflib
13
14
  import taxcalc as tc
@@ -29,7 +30,7 @@ def cli_tc_main():
29
30
  (' '
30
31
  '[--baseline BASELINE] [--reform REFORM] [--assump ASSUMP]\n'),
31
32
  (' '
32
- '[--exact] [--tables] [--graphs]\n'),
33
+ '[--exact] [--tables] [--graphs] [--timings]\n'),
33
34
  (' '
34
35
  '[--dump] [--dvars DVARS] [--sqldb] [--outdir OUTDIR]\n'),
35
36
  (' '
@@ -88,6 +89,11 @@ def cli_tc_main():
88
89
  'to HTML files for viewing in browser.'),
89
90
  default=False,
90
91
  action="store_true")
92
+ parser.add_argument('--timings',
93
+ help=('optional flag that causes execution times to '
94
+ 'be written to stdout.'),
95
+ default=False,
96
+ action="store_true")
91
97
  parser.add_argument('--dump',
92
98
  help=('optional flag that causes OUTPUT to contain '
93
99
  'all INPUT variables (extrapolated to TAXYEAR) '
@@ -158,11 +164,16 @@ def cli_tc_main():
158
164
  inputfn.endswith('cps.csv') or
159
165
  inputfn.endswith('tmd.csv')
160
166
  )
167
+ if args.timings:
168
+ stime = time.time()
161
169
  tcio.init(input_data=inputfn, tax_year=taxyear,
162
170
  baseline=args.baseline,
163
171
  reform=args.reform, assump=args.assump,
164
172
  aging_input_data=aging,
165
173
  exact_calculations=args.exact)
174
+ if args.timings:
175
+ xtime = time.time() - stime
176
+ sys.stdout.write(f'TIMINGS: init time = {xtime:.2f} secs\n')
166
177
  if tcio.errmsg:
167
178
  sys.stderr.write(tcio.errmsg)
168
179
  sys.stderr.write('USAGE: tc --help\n')
@@ -183,12 +194,17 @@ def cli_tc_main():
183
194
  sys.stderr.write('USAGE: tc --help\n')
184
195
  return 1
185
196
  # conduct tax analysis
197
+ if args.timings:
198
+ stime = time.time()
186
199
  tcio.analyze(writing_output_file=True,
187
200
  output_tables=args.tables,
188
201
  output_graphs=args.graphs,
189
202
  dump_varset=dumpvar_set,
190
203
  output_dump=args.dump,
191
204
  output_sqldb=args.sqldb)
205
+ if args.timings:
206
+ xtime = time.time() - stime
207
+ sys.stdout.write(f'TIMINGS: calc time = {xtime:.2f} secs\n')
192
208
  # compare test output with expected test output if --test option specified
193
209
  if args.test:
194
210
  retcode = _compare_test_output_files()
@@ -214,7 +230,7 @@ def _write_expected_test_output():
214
230
  ifile.write(input_data)
215
231
  expected_output_data = (
216
232
  'RECID,YEAR,WEIGHT,INCTAX,LSTAX,PAYTAX\n'
217
- '1,2018,0.00,139.87,0.00,6120.00\n'
233
+ '1,2018,0.00,131.88,0.00,6120.00\n'
218
234
  '2,2018,0.00,28879.00,0.00,21721.60\n'
219
235
  )
220
236
  with open(EXPECTED_TEST_OUTPUT_FILENAME, 'w') as ofile:
taxcalc/growfactors.py CHANGED
@@ -17,14 +17,15 @@ class GrowFactors():
17
17
 
18
18
  Parameters
19
19
  ----------
20
- growfactors_filename: string
21
- string is name of CSV file in which grow factors reside;
22
- default value is name of file containing baseline grow factors.
20
+ growfactors_filename: None or string
21
+ string is path to the CSV file in which grow factors reside;
22
+ default value of None uses file containing puf/cps grow factors.
23
23
 
24
24
  Raises
25
25
  ------
26
26
  ValueError:
27
- if growfactors_filename is not a string.
27
+ if growfactors_filename is neither None or a string.
28
+ if growfactors_filename string points to a non-existent file.
28
29
 
29
30
  Returns
30
31
  -------
@@ -33,10 +34,11 @@ class GrowFactors():
33
34
  Notes
34
35
  -----
35
36
  Typical usage is "gfactor = GrowFactors()", which produces an object
36
- containing growth factors in the GrowFactors.FILE_NAME file.
37
+ containing baseline growth factors in the GrowFactors.FILE_NAME file,
38
+ which is for use with puf and cps data from the taxdata repository.
37
39
  """
38
40
 
39
- FILE_NAME = 'growfactors.csv'
41
+ PACKAGE_FILE_NAMES = ['growfactors.csv', 'tmd_growfactors.csv']
40
42
  FILE_PATH = os.path.abspath(os.path.dirname(__file__))
41
43
 
42
44
  VALID_NAMES = set(['ABOOK', 'ACGNS', 'ACPIM', 'ACPIU',
@@ -48,17 +50,27 @@ class GrowFactors():
48
50
  'ABENSSI', 'ABENSNAP', 'ABENWIC',
49
51
  'ABENHOUSING', 'ABENTANF', 'ABENVET'])
50
52
 
51
- def __init__(self, growfactors_filename=FILE_NAME):
53
+ def __init__(self, growfactors_filename=None):
52
54
  # read grow factors from specified growfactors_filename
53
55
  gfdf = pd.DataFrame()
54
- if isinstance(growfactors_filename, str):
55
- full_filename = os.path.join(GrowFactors.FILE_PATH,
56
- growfactors_filename)
57
- if os.path.isfile(full_filename):
58
- gfdf = pd.read_csv(full_filename, index_col='YEAR')
59
- else: # find file in package
60
- gfdf = read_egg_csv(os.path.basename(growfactors_filename),
56
+ if growfactors_filename is None:
57
+ # read puf/cps growfactors from package
58
+ gfdf = read_egg_csv(GrowFactors.PACKAGE_FILE_NAMES[0],
59
+ index_col='YEAR') # pragma: no cover
60
+ elif isinstance(growfactors_filename, str):
61
+ if growfactors_filename in GrowFactors.PACKAGE_FILE_NAMES:
62
+ # read growfactors from package
63
+ gfdf = read_egg_csv(growfactors_filename,
61
64
  index_col='YEAR') # pragma: no cover
65
+ else:
66
+ if os.path.isfile(growfactors_filename):
67
+ gfdf = pd.read_csv(growfactors_filename, index_col='YEAR')
68
+ else: # file does not exist
69
+ msg = (
70
+ f'growfactors file {growfactors_filename} '
71
+ 'does not exist'
72
+ )
73
+ raise ValueError(msg)
62
74
  else:
63
75
  raise ValueError('growfactors_filename is not a string')
64
76
  assert isinstance(gfdf, pd.DataFrame)
@@ -143,7 +155,7 @@ class GrowFactors():
143
155
  if year > self.last_year:
144
156
  msg = 'year={} > GrowFactors.last_year={}'
145
157
  raise ValueError(msg.format(year, self.last_year))
146
- return self.gfdf.loc[year,name]
158
+ return self.gfdf.loc[year, name]
147
159
 
148
160
  def update(self, name, year, diff):
149
161
  """
@@ -153,7 +165,6 @@ class GrowFactors():
153
165
  msg = 'cannot update growfactors after they have been used'
154
166
  raise ValueError(msg)
155
167
  assert name in GrowFactors.VALID_NAMES
156
- assert year >= self.first_year
157
- assert year <= self.last_year
158
- assert isinstance(diff, float)
159
- self.gfdf.loc[year,name] += diff
168
+ if year >= self.first_year and year <= self.last_year:
169
+ assert isinstance(diff, float)
170
+ self.gfdf.loc[year, name] += diff
taxcalc/parameters.py CHANGED
@@ -61,7 +61,7 @@ class Parameters(pt.Parameters):
61
61
  print(name, value)
62
62
 
63
63
  # parameter_indexing_CPI_offset [0.]
64
- # FICA_ss_trt [0.124]
64
+ # FICA_ss_trt_employer [0.062]
65
65
  # SS_Earnings_c [113700.]
66
66
 
67
67
  Check out the ParamTools
@@ -117,9 +117,9 @@
117
117
  "cps": true
118
118
  }
119
119
  },
120
- "FICA_ss_trt": {
121
- "title": "Social Security payroll tax rate",
122
- "description": "Social Security FICA rate, including both employer and employee.",
120
+ "FICA_ss_trt_employer": {
121
+ "title": "Employer side Social Security payroll tax rate",
122
+ "description": "Employer side Social Security FICA rate, including both employer and employee.",
123
123
  "notes": "",
124
124
  "section_1": "Payroll Taxes",
125
125
  "section_2": "Social Security FICA",
@@ -129,13 +129,39 @@
129
129
  "value": [
130
130
  {
131
131
  "year": 2013,
132
- "value": 0.124
132
+ "value": 0.062
133
133
  }
134
134
  ],
135
135
  "validators": {
136
136
  "range": {
137
137
  "min": 0,
138
- "max": 1
138
+ "max": 0.5
139
+ }
140
+ },
141
+ "compatible_data": {
142
+ "puf": true,
143
+ "cps": true
144
+ }
145
+ },
146
+ "FICA_ss_trt_employee": {
147
+ "title": "Employee side Social Security payroll tax rate",
148
+ "description": "Employee side Social Security FICA rate, including both employer and employee.",
149
+ "notes": "",
150
+ "section_1": "Payroll Taxes",
151
+ "section_2": "Social Security FICA",
152
+ "indexable": false,
153
+ "indexed": false,
154
+ "type": "float",
155
+ "value": [
156
+ {
157
+ "year": 2013,
158
+ "value": 0.062
159
+ }
160
+ ],
161
+ "validators": {
162
+ "range": {
163
+ "min": 0,
164
+ "max": 0.5
139
165
  }
140
166
  },
141
167
  "compatible_data": {
@@ -257,9 +283,9 @@
257
283
  "cps": true
258
284
  }
259
285
  },
260
- "FICA_mc_trt": {
261
- "title": "Medicare payroll tax rate",
262
- "description": "Medicare FICA rate, including both employer and employee.",
286
+ "FICA_mc_trt_employer": {
287
+ "title": "Employer side Medicare payroll tax rate",
288
+ "description": "Employer side Medicare FICA rate, including both employer and employee.",
263
289
  "notes": "",
264
290
  "section_1": "Payroll Taxes",
265
291
  "section_2": "Medicare FICA",
@@ -269,13 +295,39 @@
269
295
  "value": [
270
296
  {
271
297
  "year": 2013,
272
- "value": 0.029
298
+ "value": 0.0145
273
299
  }
274
300
  ],
275
301
  "validators": {
276
302
  "range": {
277
303
  "min": 0,
278
- "max": 1
304
+ "max": 0.5
305
+ }
306
+ },
307
+ "compatible_data": {
308
+ "puf": true,
309
+ "cps": true
310
+ }
311
+ },
312
+ "FICA_mc_trt_employee": {
313
+ "title": "Employee side Medicare payroll tax rate",
314
+ "description": "Employee side Medicare FICA rate, including both employer and employee.",
315
+ "notes": "",
316
+ "section_1": "Payroll Taxes",
317
+ "section_2": "Medicare FICA",
318
+ "indexable": false,
319
+ "indexed": false,
320
+ "type": "float",
321
+ "value": [
322
+ {
323
+ "year": 2013,
324
+ "value": 0.0145
325
+ }
326
+ ],
327
+ "validators": {
328
+ "range": {
329
+ "min": 0,
330
+ "max": 0.5
279
331
  }
280
332
  },
281
333
  "compatible_data": {
@@ -16350,8 +16402,8 @@
16350
16402
  }
16351
16403
  },
16352
16404
  "CDCC_crt": {
16353
- "title": "Child & dependent care credit phaseout percentage rate ceiling",
16354
- "description": "The maximum percentage rate for the CDCC; this percentage rate decreases as AGI rises above the CDCC_ps level.",
16405
+ "title": "Child & dependent care credit phaseout rate ceiling",
16406
+ "description": "The maximum rate for the CDCC; this rate decreases as AGI rises above the CDCC_ps level.",
16355
16407
  "notes": "",
16356
16408
  "section_1": "Nonrefundable Credits",
16357
16409
  "section_2": "Child And Dependent Care",
@@ -16361,21 +16413,21 @@
16361
16413
  "value": [
16362
16414
  {
16363
16415
  "year": 2013,
16364
- "value": 35.0
16416
+ "value": 0.350
16365
16417
  },
16366
16418
  {
16367
16419
  "year": 2021,
16368
- "value": 50.0
16420
+ "value": 0.500
16369
16421
  },
16370
16422
  {
16371
16423
  "year": 2022,
16372
- "value": 35.0
16424
+ "value": 0.350
16373
16425
  }
16374
16426
  ],
16375
16427
  "validators": {
16376
16428
  "range": {
16377
16429
  "min": 0,
16378
- "max": 100
16430
+ "max": 1
16379
16431
  }
16380
16432
  },
16381
16433
  "compatible_data": {
@@ -16384,8 +16436,8 @@
16384
16436
  }
16385
16437
  },
16386
16438
  "CDCC_frt": {
16387
- "title": "Child & dependent care credit phaseout percentage rate floor",
16388
- "description": "The minimum percentage rate for the first AGI phaseout of the CDCC.",
16439
+ "title": "Child & dependent care credit phaseout rate floor",
16440
+ "description": "The minimum rate for the first AGI phaseout of the CDCC.",
16389
16441
  "notes": "",
16390
16442
  "section_1": "Nonrefundable Credits",
16391
16443
  "section_2": "Child And Dependent Care",
@@ -16395,13 +16447,13 @@
16395
16447
  "value": [
16396
16448
  {
16397
16449
  "year": 2013,
16398
- "value": 20.0
16450
+ "value": 0.200
16399
16451
  }
16400
16452
  ],
16401
16453
  "validators": {
16402
16454
  "range": {
16403
16455
  "min": 0,
16404
- "max": 100
16456
+ "max": 1
16405
16457
  }
16406
16458
  },
16407
16459
  "compatible_data": {
@@ -16410,9 +16462,9 @@
16410
16462
  }
16411
16463
  },
16412
16464
  "CDCC_prt": {
16413
- "title": "Child & dependent care credit phaseout percentage rate",
16414
- "description": "The CDCC credit rate is reduced by this many percentage points for each dollary of AGI over the phase-out thresholds.",
16415
- "notes": "In the law, the credit rate is reduced by 1 percentage point for every $2,000 of AGI over the limit.",
16465
+ "title": "Child & dependent care credit phaseout rate",
16466
+ "description": "The CDCC credit rate is reduced by this many percentage points for each dollar of AGI over the phase-out thresholds.",
16467
+ "notes": "In the law, the credit rate is reduced by 1 percentage point for every $2,000 of AGI over the limit. 0.01 / 2000 = 0.000005",
16416
16468
  "section_1": "Nonrefundable Credits",
16417
16469
  "section_2": "Child And Dependent Care",
16418
16470
  "indexable": false,
@@ -16421,7 +16473,7 @@
16421
16473
  "value": [
16422
16474
  {
16423
16475
  "year": 2013,
16424
- "value": 0.0005
16476
+ "value": 5e-06
16425
16477
  }
16426
16478
  ],
16427
16479
  "validators": {
@@ -17798,22 +17850,22 @@
17798
17850
  {
17799
17851
  "year": 2018,
17800
17852
  "EIC": "0kids",
17801
- "value": 8490.0
17853
+ "value": 8510.0
17802
17854
  },
17803
17855
  {
17804
17856
  "year": 2018,
17805
17857
  "EIC": "1kid",
17806
- "value": 18660.0
17858
+ "value": 18700.0
17807
17859
  },
17808
17860
  {
17809
17861
  "year": 2018,
17810
17862
  "EIC": "2kids",
17811
- "value": 18660.0
17863
+ "value": 18700.0
17812
17864
  },
17813
17865
  {
17814
17866
  "year": 2018,
17815
17867
  "EIC": "3+kids",
17816
- "value": 18660.0
17868
+ "value": 18700.0
17817
17869
  },
17818
17870
  {
17819
17871
  "year": 2019,
@@ -18020,22 +18072,22 @@
18020
18072
  {
18021
18073
  "year": 2018,
18022
18074
  "EIC": "0kids",
18023
- "value": 5680.0
18075
+ "value": 5690.0
18024
18076
  },
18025
18077
  {
18026
18078
  "year": 2018,
18027
18079
  "EIC": "1kid",
18028
- "value": 5690.0
18080
+ "value": 5700.0
18029
18081
  },
18030
18082
  {
18031
18083
  "year": 2018,
18032
18084
  "EIC": "2kids",
18033
- "value": 5690.0
18085
+ "value": 5700.0
18034
18086
  },
18035
18087
  {
18036
18088
  "year": 2018,
18037
18089
  "EIC": "3+kids",
18038
- "value": 5690.0
18090
+ "value": 5700.0
18039
18091
  },
18040
18092
  {
18041
18093
  "year": 2019,
@@ -18080,7 +18132,7 @@
18080
18132
  {
18081
18133
  "year": 2021,
18082
18134
  "EIC": "0kids",
18083
- "value": 5950.0
18135
+ "value": 5940.0
18084
18136
  },
18085
18137
  {
18086
18138
  "year": 2021,
taxcalc/records.py CHANGED
@@ -117,6 +117,7 @@ class Records(Data):
117
117
  CPS_WEIGHTS_FILENAME = 'cps_weights.csv.gz'
118
118
  CPS_RATIOS_FILENAME = None
119
119
  TMD_WEIGHTS_FILENAME = 'tmd_weights.csv.gz'
120
+ TMD_GROWFACTORS_FILENAME = 'tmd_growfactors.csv'
120
121
  TMD_RATIOS_FILENAME = None
121
122
  CODE_PATH = os.path.abspath(os.path.dirname(__file__))
122
123
  VARINFO_FILE_NAME = 'records_variables.json'
@@ -226,7 +227,7 @@ class Records(Data):
226
227
 
227
228
  @staticmethod
228
229
  def tmd_constructor(data, # path to tmd.csv file or dataframe
229
- gfactors=GrowFactors(),
230
+ gfactors=GrowFactors(TMD_GROWFACTORS_FILENAME),
230
231
  exact_calculations=False): # pragma: no cover
231
232
  """
232
233
  Static method returns a Records object instantiated with TMD
@@ -1041,6 +1041,16 @@
1041
1041
  "desc": "Other Dependent Credit",
1042
1042
  "form": {"2013-20??": "calculated variable"}
1043
1043
  },
1044
+ "ctc_total": {
1045
+ "type": "float",
1046
+ "desc": "Total CTC amount (c07220 + c11070 + odc + ctc_new)",
1047
+ "form": {"2013-20??": "calculated variable"}
1048
+ },
1049
+ "ctc_refundable": {
1050
+ "type": "float",
1051
+ "desc": "Portion of total CTC amount that is refundable",
1052
+ "form": {"2013-20??": "calculated variable"}
1053
+ },
1044
1054
  "personal_refundable_credit": {
1045
1055
  "type": "float",
1046
1056
  "desc": "Personal refundable credit",
taxcalc/taxcalcio.py CHANGED
@@ -251,7 +251,12 @@ class TaxCalcIO():
251
251
  except paramtools.ValidationError as valerr_msg:
252
252
  self.errmsg += valerr_msg.__str__()
253
253
  # create GrowFactors base object that incorporates gdiff_baseline
254
- gfactors_base = GrowFactors()
254
+ if self.tmd_input_data:
255
+ gfactors_base = GrowFactors( # pragma: no cover
256
+ Records.TMD_GROWFACTORS_FILENAME
257
+ )
258
+ else:
259
+ gfactors_base = GrowFactors()
255
260
  gdiff_baseline.apply_to(gfactors_base)
256
261
  # specify gdiff_response object
257
262
  gdiff_response = GrowDiff()
@@ -260,7 +265,12 @@ class TaxCalcIO():
260
265
  except paramtools.ValidationError as valerr_msg:
261
266
  self.errmsg += valerr_msg.__str__()
262
267
  # create GrowFactors ref object that has all gdiff objects applied
263
- gfactors_ref = GrowFactors()
268
+ if self.tmd_input_data:
269
+ gfactors_ref = GrowFactors( # pragma: no cover
270
+ Records.TMD_GROWFACTORS_FILENAME
271
+ )
272
+ else:
273
+ gfactors_ref = GrowFactors()
264
274
  gdiff_baseline.apply_to(gfactors_ref)
265
275
  gdiff_response.apply_to(gfactors_ref)
266
276
  # create Policy objects:
@@ -0,0 +1,55 @@
1
+ YEAR,ATXPY,ASCHF,ABOOK,ACPIU,ACPIM,AWAGE,ASCHCI,ASCHCL,ASCHEI,ASCHEL,AINTS,ADIVS,ACGNS,ASOCSEC,AUCOMP,AIPD,ABENOTHER,ABENMCARE,ABENMCAID,ABENSSI,ABENSNAP,ABENWIC,ABENHOUSING,ABENTANF,ABENVET
2
+ 2021,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
3
+ 2022,1.014347,1.742914,1.047552,1.07229,1.040311,1.076282,1.022527,1.022546,1.047553,1.047566,1.049118,1.042358,0.631565,1.04749,0.152665,1.022138,1.030159,1.048769,1.047573,0.999851,1.0,1.002545,1.034942,1.0,1.0
4
+ 2023,1.050108,0.653145,1.091056,1.05402,1.004761,1.050035,1.013156,1.013121,1.091037,1.091047,1.026196,1.126711,1.0525,1.085497,0.748857,1.058072,1.030193,1.050822,1.048715,1.000448,1.0,1.003807,1.034968,1.0,1.0
5
+ 2024,1.046242,0.895528,1.007166,1.0255,1.01407,1.040377,1.0397,1.03963,1.007187,1.007157,1.156028,1.023049,0.932271,1.052921,1.337549,1.054081,1.030334,1.048426,1.051767,0.99776,1.0,1.002528,1.034951,1.0,1.0
6
+ 2025,1.040442,0.963117,1.020457,1.02198,0.958663,1.038977,1.037682,1.037745,1.020415,1.020444,1.091746,1.02538,0.97747,1.031721,1.154874,1.047914,1.030635,1.046248,1.052213,1.002245,1.0,1.003783,1.034897,1.0,1.0
7
+ 2026,1.039294,0.987094,1.014705,1.02074,1.014023,1.035978,1.037783,1.037762,1.014711,1.014716,1.098184,1.019802,0.970235,1.030992,1.035291,1.046856,1.030633,1.072236,1.0,0.999552,1.0,1.002513,1.034808,1.0,1.0
8
+ 2027,1.037119,0.998822,1.017535,1.01946,1.013312,1.033569,1.03414,1.034138,1.017568,1.017583,1.066606,1.013266,0.993714,1.031791,1.045541,1.044372,1.030788,1.0,1.0,1.0,1.0,1.002506,1.034863,1.0,1.0
9
+ 2028,1.036799,1.006582,1.023966,1.01942,1.013356,1.033042,1.031594,1.03158,1.023985,1.02393,1.050716,1.021542,1.009158,1.03344,1.043558,1.043967,1.030942,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
10
+ 2029,1.035913,1.010333,1.028149,1.01966,1.013612,1.033365,1.030869,1.030888,1.028085,1.028143,1.03013,1.032091,1.018962,1.033664,1.045739,1.042825,1.031131,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
11
+ 2030,1.036423,1.01018,1.024121,1.01977,1.013855,1.03321,1.030563,1.030595,1.02417,1.024128,1.036979,1.032934,1.024538,1.034401,1.043738,1.043174,1.03133,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
12
+ 2031,1.036362,1.010259,1.024733,1.01991,1.014016,1.032812,1.031233,1.03124,1.024699,1.024734,1.039197,1.032793,1.027842,1.036645,1.038241,1.042951,1.03151,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
13
+ 2032,1.036409,1.009979,1.028,1.01999,1.014306,1.032126,1.032334,1.032295,1.028004,1.027983,1.04014,1.03261,1.029719,1.036435,1.031319,1.042807,1.031644,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
14
+ 2033,1.035793,1.008195,1.02813,1.02002,1.014309,1.031481,1.033961,1.033991,1.028128,1.02811,1.031669,1.03246,1.030798,1.037554,1.028443,1.042009,1.031857,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
15
+ 2034,1.035385,1.008203,1.02971,1.02,1.014443,1.030912,1.033294,1.033253,1.029705,1.029722,1.027096,1.032231,1.031308,1.03748,1.029528,1.041408,1.032059,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
16
+ 2035,1.035385,1.008203,1.02971,1.02,1.014443,1.030912,1.033294,1.033253,1.029705,1.029722,1.027096,1.032231,1.031308,1.03748,1.029528,1.041408,1.032059,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
17
+ 2036,1.035385,1.008203,1.02971,1.02,1.014443,1.030912,1.033294,1.033253,1.029705,1.029722,1.027096,1.032231,1.031308,1.03748,1.029528,1.041408,1.032059,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
18
+ 2037,1.035385,1.008203,1.02971,1.02,1.014443,1.030912,1.033294,1.033253,1.029705,1.029722,1.027096,1.032231,1.031308,1.03748,1.029528,1.041408,1.032059,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
19
+ 2038,1.035385,1.008203,1.02971,1.02,1.014443,1.030912,1.033294,1.033253,1.029705,1.029722,1.027096,1.032231,1.031308,1.03748,1.029528,1.041408,1.032059,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
20
+ 2039,1.035385,1.008203,1.02971,1.02,1.014443,1.030912,1.033294,1.033253,1.029705,1.029722,1.027096,1.032231,1.031308,1.03748,1.029528,1.041408,1.032059,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
21
+ 2040,1.035385,1.008203,1.02971,1.02,1.014443,1.030912,1.033294,1.033253,1.029705,1.029722,1.027096,1.032231,1.031308,1.03748,1.029528,1.041408,1.032059,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
22
+ 2041,1.035385,1.008203,1.02971,1.02,1.014443,1.030912,1.033294,1.033253,1.029705,1.029722,1.027096,1.032231,1.031308,1.03748,1.029528,1.041408,1.032059,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
23
+ 2042,1.035385,1.008203,1.02971,1.02,1.014443,1.030912,1.033294,1.033253,1.029705,1.029722,1.027096,1.032231,1.031308,1.03748,1.029528,1.041408,1.032059,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
24
+ 2043,1.035385,1.008203,1.02971,1.02,1.014443,1.030912,1.033294,1.033253,1.029705,1.029722,1.027096,1.032231,1.031308,1.03748,1.029528,1.041408,1.032059,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
25
+ 2044,1.035385,1.008203,1.02971,1.02,1.014443,1.030912,1.033294,1.033253,1.029705,1.029722,1.027096,1.032231,1.031308,1.03748,1.029528,1.041408,1.032059,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
26
+ 2045,1.035385,1.008203,1.02971,1.02,1.014443,1.030912,1.033294,1.033253,1.029705,1.029722,1.027096,1.032231,1.031308,1.03748,1.029528,1.041408,1.032059,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
27
+ 2046,1.035385,1.008203,1.02971,1.02,1.014443,1.030912,1.033294,1.033253,1.029705,1.029722,1.027096,1.032231,1.031308,1.03748,1.029528,1.041408,1.032059,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
28
+ 2047,1.035385,1.008203,1.02971,1.02,1.014443,1.030912,1.033294,1.033253,1.029705,1.029722,1.027096,1.032231,1.031308,1.03748,1.029528,1.041408,1.032059,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
29
+ 2048,1.035385,1.008203,1.02971,1.02,1.014443,1.030912,1.033294,1.033253,1.029705,1.029722,1.027096,1.032231,1.031308,1.03748,1.029528,1.041408,1.032059,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
30
+ 2049,1.035385,1.008203,1.02971,1.02,1.014443,1.030912,1.033294,1.033253,1.029705,1.029722,1.027096,1.032231,1.031308,1.03748,1.029528,1.041408,1.032059,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
31
+ 2050,1.035385,1.008203,1.02971,1.02,1.014443,1.030912,1.033294,1.033253,1.029705,1.029722,1.027096,1.032231,1.031308,1.03748,1.029528,1.041408,1.032059,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
32
+ 2051,1.035385,1.008203,1.02971,1.02,1.014443,1.030912,1.033294,1.033253,1.029705,1.029722,1.027096,1.032231,1.031308,1.03748,1.029528,1.041408,1.032059,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
33
+ 2052,1.035385,1.008203,1.02971,1.02,1.014443,1.030912,1.033294,1.033253,1.029705,1.029722,1.027096,1.032231,1.031308,1.03748,1.029528,1.041408,1.032059,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
34
+ 2053,1.035385,1.008203,1.02971,1.02,1.014443,1.030912,1.033294,1.033253,1.029705,1.029722,1.027096,1.032231,1.031308,1.03748,1.029528,1.041408,1.032059,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
35
+ 2054,1.035385,1.008203,1.02971,1.02,1.014443,1.030912,1.033294,1.033253,1.029705,1.029722,1.027096,1.032231,1.031308,1.03748,1.029528,1.041408,1.032059,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
36
+ 2055,1.035385,1.008203,1.02971,1.02,1.014443,1.030912,1.033294,1.033253,1.029705,1.029722,1.027096,1.032231,1.031308,1.03748,1.029528,1.041408,1.032059,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
37
+ 2056,1.035385,1.008203,1.02971,1.02,1.014443,1.030912,1.033294,1.033253,1.029705,1.029722,1.027096,1.032231,1.031308,1.03748,1.029528,1.041408,1.032059,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
38
+ 2057,1.035385,1.008203,1.02971,1.02,1.014443,1.030912,1.033294,1.033253,1.029705,1.029722,1.027096,1.032231,1.031308,1.03748,1.029528,1.041408,1.032059,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
39
+ 2058,1.035385,1.008203,1.02971,1.02,1.014443,1.030912,1.033294,1.033253,1.029705,1.029722,1.027096,1.032231,1.031308,1.03748,1.029528,1.041408,1.032059,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
40
+ 2059,1.035385,1.008203,1.02971,1.02,1.014443,1.030912,1.033294,1.033253,1.029705,1.029722,1.027096,1.032231,1.031308,1.03748,1.029528,1.041408,1.032059,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
41
+ 2060,1.035385,1.008203,1.02971,1.02,1.014443,1.030912,1.033294,1.033253,1.029705,1.029722,1.027096,1.032231,1.031308,1.03748,1.029528,1.041408,1.032059,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
42
+ 2061,1.035385,1.008203,1.02971,1.02,1.014443,1.030912,1.033294,1.033253,1.029705,1.029722,1.027096,1.032231,1.031308,1.03748,1.029528,1.041408,1.032059,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
43
+ 2062,1.035385,1.008203,1.02971,1.02,1.014443,1.030912,1.033294,1.033253,1.029705,1.029722,1.027096,1.032231,1.031308,1.03748,1.029528,1.041408,1.032059,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
44
+ 2063,1.035385,1.008203,1.02971,1.02,1.014443,1.030912,1.033294,1.033253,1.029705,1.029722,1.027096,1.032231,1.031308,1.03748,1.029528,1.041408,1.032059,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
45
+ 2064,1.035385,1.008203,1.02971,1.02,1.014443,1.030912,1.033294,1.033253,1.029705,1.029722,1.027096,1.032231,1.031308,1.03748,1.029528,1.041408,1.032059,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
46
+ 2065,1.035385,1.008203,1.02971,1.02,1.014443,1.030912,1.033294,1.033253,1.029705,1.029722,1.027096,1.032231,1.031308,1.03748,1.029528,1.041408,1.032059,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
47
+ 2066,1.035385,1.008203,1.02971,1.02,1.014443,1.030912,1.033294,1.033253,1.029705,1.029722,1.027096,1.032231,1.031308,1.03748,1.029528,1.041408,1.032059,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
48
+ 2067,1.035385,1.008203,1.02971,1.02,1.014443,1.030912,1.033294,1.033253,1.029705,1.029722,1.027096,1.032231,1.031308,1.03748,1.029528,1.041408,1.032059,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
49
+ 2068,1.035385,1.008203,1.02971,1.02,1.014443,1.030912,1.033294,1.033253,1.029705,1.029722,1.027096,1.032231,1.031308,1.03748,1.029528,1.041408,1.032059,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
50
+ 2069,1.035385,1.008203,1.02971,1.02,1.014443,1.030912,1.033294,1.033253,1.029705,1.029722,1.027096,1.032231,1.031308,1.03748,1.029528,1.041408,1.032059,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
51
+ 2070,1.035385,1.008203,1.02971,1.02,1.014443,1.030912,1.033294,1.033253,1.029705,1.029722,1.027096,1.032231,1.031308,1.03748,1.029528,1.041408,1.032059,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
52
+ 2071,1.035385,1.008203,1.02971,1.02,1.014443,1.030912,1.033294,1.033253,1.029705,1.029722,1.027096,1.032231,1.031308,1.03748,1.029528,1.041408,1.032059,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
53
+ 2072,1.035385,1.008203,1.02971,1.02,1.014443,1.030912,1.033294,1.033253,1.029705,1.029722,1.027096,1.032231,1.031308,1.03748,1.029528,1.041408,1.032059,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
54
+ 2073,1.035385,1.008203,1.02971,1.02,1.014443,1.030912,1.033294,1.033253,1.029705,1.029722,1.027096,1.032231,1.031308,1.03748,1.029528,1.041408,1.032059,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
55
+ 2074,1.035385,1.008203,1.02971,1.02,1.014443,1.030912,1.033294,1.033253,1.029705,1.029722,1.027096,1.032231,1.031308,1.03748,1.029528,1.041408,1.032059,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
Binary file
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: taxcalc
3
- Version: 3.6.0
3
+ Version: 4.1.0
4
4
  Summary: taxcalc
5
5
  Home-page: https://github.com/PSLmodels/Tax-Calculator
6
6
  Download-URL: https://github.com/PSLmodels/Tax-Calculator
@@ -15,6 +15,7 @@ Classifier: Programming Language :: Python :: 3
15
15
  Classifier: Programming Language :: Python :: 3.9
16
16
  Classifier: Programming Language :: Python :: 3.10
17
17
  Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
18
19
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
19
20
  Description-Content-Type: text/markdown
20
21
  License-File: LICENSE
@@ -29,7 +30,7 @@ Requires-Dist: paramtools
29
30
  | | |
30
31
  | --- | --- |
31
32
  | Org | [![PSL cataloged](https://img.shields.io/badge/PSL-cataloged-a0a0a0.svg)](https://www.PSLmodels.org) [![OS License: CCO-1.0](https://img.shields.io/badge/OS%20License-CCO%201.0-yellow)](https://github.com/PSLmodels/Tax-Calculator/blob/master/LICENSE) [![Jupyter Book Badge](https://jupyterbook.org/badge.svg)](https://pslmodels.github.io/Tax-Calculator/) |
32
- | Package | [![Python 3.9](https://img.shields.io/badge/python-3.9-blue.svg)](https://www.python.org/downloads/release/python-3916/) [![Python 3.10](https://img.shields.io/badge/python-3.10-blue.svg)](https://www.python.org/downloads/release/python-3108/) [![Python 3.11](https://img.shields.io/badge/python-3.11-blue.svg)](https://www.python.org/downloads/release/python-3118/) [![PyPI Latest Release](https://img.shields.io/pypi/v/taxcalc.svg)](https://pypi.org/project/taxcalc/) [![PyPI Downloads](https://img.shields.io/pypi/dm/taxcalc.svg?label=PyPI%20downloads)](https://pypi.org/project/taxcalc/) [![Anaconda](https://img.shields.io/conda/dn/conda-forge/taxcalc?color=brightgreen&label=downloads&logo=conda-forge)](https://anaconda.org/conda-forge/taxcalc)|
33
+ | Package | [![Python 3.9](https://img.shields.io/badge/python-3.9-blue.svg)](https://www.python.org/downloads/release/python-3916/) [![Python 3.10](https://img.shields.io/badge/python-3.10-blue.svg)](https://www.python.org/downloads/release/python-3108/) [![Python 3.11](https://img.shields.io/badge/python-3.11-blue.svg)](https://www.python.org/downloads/release/python-3118/) [![Python 3.12](https://img.shields.io/badge/python-3.12-blue.svg)](https://www.python.org/downloads/release/python-3121/) [![PyPI Latest Release](https://img.shields.io/pypi/v/taxcalc.svg)](https://pypi.org/project/taxcalc/) [![PyPI Downloads](https://img.shields.io/pypi/dm/taxcalc.svg?label=PyPI%20downloads)](https://pypi.org/project/taxcalc/) [![Anaconda](https://img.shields.io/conda/dn/conda-forge/taxcalc?color=brightgreen&label=downloads&logo=conda-forge)](https://anaconda.org/conda-forge/taxcalc)|
33
34
  | Testing | ![example event parameter](https://github.com/PSLmodels/Tax-Calculator/actions/workflows/build_and_test.yml/badge.svg?branch=master) ![example event parameter](https://github.com/PSLmodels/Tax-Calculator/actions/workflows/deploy_jupyterbook.yml/badge.svg?branch=master) [![Codecov](https://codecov.io/gh/PSLmodels/Tax-Calculator/branch/master/graph/badge.svg)](https://codecov.io/gh/PSLmodels/Tax-Calculator) |
34
35
 
35
36
 
@@ -0,0 +1,34 @@
1
+ taxcalc/__init__.py,sha256=M1z5Tt3Ibgqv6nuN3zgoZwux626kBItmIIpEAZGybGw,478
2
+ taxcalc/calcfunctions.py,sha256=GdOoAVxGGhunH7-P7BBRH4mK0GLGje0HwvjS1lCV8Po,146005
3
+ taxcalc/calculator.py,sha256=Ybk497LXzg5RSJEiFCEQPsM0odA7MT_mutqcXWe5d8o,63694
4
+ taxcalc/conftest.py,sha256=nO4J7qu1sTHgjqrzhpRMvfMJUrNm6GP_IsSuuDt_MeQ,141
5
+ taxcalc/consumption.json,sha256=D4Iz625yka_LSlq313hoy01qGtNrpN5QYAHqd9QQfVA,8102
6
+ taxcalc/consumption.py,sha256=IS-pB2I0JW3pdXB0vHvqA14AVnkP-TDNYFMx8MmQYIg,3327
7
+ taxcalc/cps.csv.gz,sha256=SS6tSduU_Eu0EJwzpslnmqMsQQQucVMzzITfH-SeV40,9851074
8
+ taxcalc/cps_weights.csv.gz,sha256=T3YcFdlgwQduzc1KklxT9CQXTO6Puj682RHxfFpK4IA,13044422
9
+ taxcalc/data.py,sha256=wcmr-bx4Zhupsg_zYUXcpBAhIXOOM4KahqHOnV1_JR4,11137
10
+ taxcalc/decorators.py,sha256=uCZGHrq90k5Gr5YA_1tuWkCMEiOPbqXp6wxCWp6cDfM,11332
11
+ taxcalc/growdiff.json,sha256=im6mp7NZfpROismsNTjwLLAwIEltZsFfV6EKFEG3dKo,15037
12
+ taxcalc/growdiff.py,sha256=lW0tvVh2WtOOznf1AdAyDzvB-WLb8sgyogCbAOUqXw0,2905
13
+ taxcalc/growfactors.csv,sha256=OQArKySPTSweIGV9v17WrenfcQa6ABrbTpIWZUqL2Uk,12281
14
+ taxcalc/growfactors.py,sha256=IdxR6_ELJKJJHd82-gaGcQLVEYNxJpja0bYKNpVlG7A,6557
15
+ taxcalc/parameters.py,sha256=57RVKpx0i4J0L6lqdgykakO9ASHx9JnkI2tK7yDmvto,31175
16
+ taxcalc/policy.py,sha256=cOSgmvhUH3TMSqYoUbDfEu0qAWLcZk-w0cE5FjqKXMk,6341
17
+ taxcalc/policy_current_law.json,sha256=-4nvjDQA-D5dfEVsqt0ylYaAz1OhIG-jWQdnu1d7MlU,552069
18
+ taxcalc/puf_ratios.csv,sha256=FjEj41SyyW5Fp7JTVptQGKjnu43rfl3uOc9-019bE_s,3439
19
+ taxcalc/puf_weights.csv.gz,sha256=LouhxTQJ0ow-Yn63PjMElB5ICXO9AybLXeEt3gP5AY4,12988069
20
+ taxcalc/records.py,sha256=TbZA2owF-lvt6jxnP_Dp_SfnnpalHa4_L-KKMWhwPq0,17748
21
+ taxcalc/records_variables.json,sha256=MoASET9PNC6yl8yWEjCadZIQ4TAGwJBqsCimnNc79vg,42728
22
+ taxcalc/taxcalcio.py,sha256=8gNalHXsoKNtsTtsZ_7oY8aUWeCFoyNSjDISvymU7T0,32783
23
+ taxcalc/tmd_growfactors.csv,sha256=ciDtbKgKWoY8a34oC4HIyZ3c7rtHGyq8RW_tIn0nbmM,10208
24
+ taxcalc/tmd_weights.csv.gz,sha256=eeANf8bjsQ0kYPuXUjeF9f53Gybi2ITNR2pz_a6ClZI,19376906
25
+ taxcalc/utils.py,sha256=aNIEYbm37pQoayt_rXrr9iKoodoE-DH8EFL2A0rSokk,62468
26
+ taxcalc/utilsprvt.py,sha256=iIyWp9-N3_XWjQj2jV2CWnJy7vrNlKB2_vIMwYjgbWY,1323
27
+ taxcalc/cli/__init__.py,sha256=cyZ0tdx41j_vV_B6GAkqJmNKKG-B0wUC0ThC75lJlk4,104
28
+ taxcalc/cli/tc.py,sha256=fnuf-d9ZmkrWA5JhlvMGbZKPjIyuhg5r7bWT-FYxP8Q,11473
29
+ taxcalc-4.1.0.dist-info/LICENSE,sha256=m5epLdB-_NXiY7NsEDgcHP4jDtJ4vOlRf5S3Jb-jraY,1299
30
+ taxcalc-4.1.0.dist-info/METADATA,sha256=-9SuwRstSCASluHXkJiWg1tgWRUe_o-xXKL4czPia3o,3345
31
+ taxcalc-4.1.0.dist-info/WHEEL,sha256=Z4pYXqR_rTB7OWNDYFOm1qRk0RX6GFP2o8LgvP453Hk,91
32
+ taxcalc-4.1.0.dist-info/entry_points.txt,sha256=a3ZE1piRv683p27fOLdWZvVJXESkoslTOp5iXV7uVco,50
33
+ taxcalc-4.1.0.dist-info/top_level.txt,sha256=Wh8wTDHkA_cm4dn8IoUCviDyGgVQqwEQKPJnl8z6d4c,8
34
+ taxcalc-4.1.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.43.0)
2
+ Generator: setuptools (70.3.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,33 +0,0 @@
1
- taxcalc/__init__.py,sha256=RvUZ8JE0DNXN__HhHlZtgYbl7R23Li4sS3Gg_L7Csmw,478
2
- taxcalc/calcfunctions.py,sha256=pmaIRH6zohN3uzUaEunk5-21kXipNUL3nKr8dXlD-jo,143910
3
- taxcalc/calculator.py,sha256=41eg3EG9m1wZjQnY7WTeQ-uCTTrLyYjCPIw2cJzYHRI,63465
4
- taxcalc/conftest.py,sha256=nO4J7qu1sTHgjqrzhpRMvfMJUrNm6GP_IsSuuDt_MeQ,141
5
- taxcalc/consumption.json,sha256=D4Iz625yka_LSlq313hoy01qGtNrpN5QYAHqd9QQfVA,8102
6
- taxcalc/consumption.py,sha256=IS-pB2I0JW3pdXB0vHvqA14AVnkP-TDNYFMx8MmQYIg,3327
7
- taxcalc/cps.csv.gz,sha256=SS6tSduU_Eu0EJwzpslnmqMsQQQucVMzzITfH-SeV40,9851074
8
- taxcalc/cps_weights.csv.gz,sha256=T3YcFdlgwQduzc1KklxT9CQXTO6Puj682RHxfFpK4IA,13044422
9
- taxcalc/data.py,sha256=wcmr-bx4Zhupsg_zYUXcpBAhIXOOM4KahqHOnV1_JR4,11137
10
- taxcalc/decorators.py,sha256=uCZGHrq90k5Gr5YA_1tuWkCMEiOPbqXp6wxCWp6cDfM,11332
11
- taxcalc/growdiff.json,sha256=im6mp7NZfpROismsNTjwLLAwIEltZsFfV6EKFEG3dKo,15037
12
- taxcalc/growdiff.py,sha256=lW0tvVh2WtOOznf1AdAyDzvB-WLb8sgyogCbAOUqXw0,2905
13
- taxcalc/growfactors.csv,sha256=OQArKySPTSweIGV9v17WrenfcQa6ABrbTpIWZUqL2Uk,12281
14
- taxcalc/growfactors.py,sha256=z3cOw-At83kBMtlfpVqm1g11G1G0sqLyWpxAyIr8pe8,5906
15
- taxcalc/parameters.py,sha256=slxBId996ciRN28eVTkKMZsdsu-99VNIXJCR9904vAo,31166
16
- taxcalc/policy.py,sha256=cOSgmvhUH3TMSqYoUbDfEu0qAWLcZk-w0cE5FjqKXMk,6341
17
- taxcalc/policy_current_law.json,sha256=W3ewQ3_MF1SPksBNtWsc7UJeeLH_NxpPonI3IJvWGhQ,550607
18
- taxcalc/puf_ratios.csv,sha256=FjEj41SyyW5Fp7JTVptQGKjnu43rfl3uOc9-019bE_s,3439
19
- taxcalc/puf_weights.csv.gz,sha256=LouhxTQJ0ow-Yn63PjMElB5ICXO9AybLXeEt3gP5AY4,12988069
20
- taxcalc/records.py,sha256=ms8Q20lknzg1m2hkkR7s3C6MfPuR7gQnfblWkOKxq-U,17671
21
- taxcalc/records_variables.json,sha256=JB7qZBLHhuUaP1UiH7Esw3vULFDeVrJZ0WeKWtyHgRY,42391
22
- taxcalc/taxcalcio.py,sha256=oGf3sw7rb9JzlukQPVF3KI0_DK6nhNMUvK926Sacz6w,32436
23
- taxcalc/tmd_weights.csv.gz,sha256=Rtror0x5bL2szzZJ7Z87Jln-u2egxWlXW4bTEHSmj28,19513829
24
- taxcalc/utils.py,sha256=aNIEYbm37pQoayt_rXrr9iKoodoE-DH8EFL2A0rSokk,62468
25
- taxcalc/utilsprvt.py,sha256=iIyWp9-N3_XWjQj2jV2CWnJy7vrNlKB2_vIMwYjgbWY,1323
26
- taxcalc/cli/__init__.py,sha256=cyZ0tdx41j_vV_B6GAkqJmNKKG-B0wUC0ThC75lJlk4,104
27
- taxcalc/cli/tc.py,sha256=9MLXXdFrlyrP775RIWGACcgjyeiMN5b8HqMS0kGHh_o,10844
28
- taxcalc-3.6.0.dist-info/LICENSE,sha256=m5epLdB-_NXiY7NsEDgcHP4jDtJ4vOlRf5S3Jb-jraY,1299
29
- taxcalc-3.6.0.dist-info/METADATA,sha256=E52h4q4mp6Fs4Wc5Z9I7Ef3aiECwlAG_AW8gAV_FMdc,3170
30
- taxcalc-3.6.0.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
31
- taxcalc-3.6.0.dist-info/entry_points.txt,sha256=a3ZE1piRv683p27fOLdWZvVJXESkoslTOp5iXV7uVco,50
32
- taxcalc-3.6.0.dist-info/top_level.txt,sha256=Wh8wTDHkA_cm4dn8IoUCviDyGgVQqwEQKPJnl8z6d4c,8
33
- taxcalc-3.6.0.dist-info/RECORD,,