taxcalc 4.3.1__py3-none-any.whl → 4.3.2__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,6 +14,6 @@ from taxcalc.taxcalcio import *
14
14
  from taxcalc.utils import *
15
15
  from taxcalc.cli import *
16
16
 
17
- __version__ = '4.3.1'
17
+ __version__ = '4.3.2'
18
18
  __min_python3_version__ = 10
19
19
  __max_python3_version__ = 12
taxcalc/calculator.py CHANGED
@@ -698,7 +698,8 @@ class Calculator():
698
698
  self.policy_param('FICA_ss_trt_employee') +
699
699
  self.policy_param('FICA_mc_trt_employer') +
700
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')))
701
+ 0.5 * (self.policy_param('FICA_mc_trt_employer') +
702
+ self.policy_param('FICA_mc_trt_employee')))
702
703
  else:
703
704
  adj = 0.0
704
705
  # compute marginal tax rates
@@ -1189,11 +1190,10 @@ class Calculator():
1189
1190
  for pname in baseline.keys():
1190
1191
  upda_value = getattr(updated, pname)
1191
1192
  base_value = getattr(baseline, pname)
1193
+ is_array = isinstance(upda_value, np.ndarray)
1192
1194
  if (
1193
- (isinstance(upda_value, np.ndarray) and
1194
- np.allclose(upda_value, base_value)) or
1195
- (not isinstance(upda_value, np.ndarray) and
1196
- upda_value != base_value)
1195
+ (is_array and not np.allclose(upda_value, base_value))
1196
+ or (is_array == False and upda_value != base_value)
1197
1197
  ):
1198
1198
  params_with_diff.append(pname)
1199
1199
  if params_with_diff:
@@ -1248,7 +1248,7 @@ class Calculator():
1248
1248
  else: # if baseline is GrowDiff object
1249
1249
  # each GrowDiff parameter has zero as default value
1250
1250
  doc += ' baseline_value: 0.0\n'
1251
- del mdata_base
1251
+ del mdata_base
1252
1252
  return doc
1253
1253
 
1254
1254
  # begin main logic of reform_documentation
taxcalc/growfactors.py CHANGED
@@ -38,7 +38,7 @@ class GrowFactors():
38
38
  which is for use with puf and cps data from the taxdata repository.
39
39
  """
40
40
 
41
- PACKAGE_FILE_NAMES = ['growfactors.csv', 'tmd_growfactors.csv']
41
+ PACKAGE_FILE_NAMES = ['growfactors.csv']
42
42
  FILE_PATH = os.path.abspath(os.path.dirname(__file__))
43
43
 
44
44
  VALID_NAMES = set(['ABOOK', 'ACGNS', 'ACPIM', 'ACPIU',
taxcalc/policy.py CHANGED
@@ -7,6 +7,7 @@ Tax-Calculator federal tax policy Policy class.
7
7
 
8
8
  import os
9
9
  import json
10
+ from pathlib import Path
10
11
  import numpy as np
11
12
  from taxcalc.parameters import Parameters
12
13
  from taxcalc.growfactors import GrowFactors
@@ -80,7 +81,7 @@ class Policy(Parameters):
80
81
  # (3) specify which Policy parameters are wage (rather than price) indexed
81
82
  WAGE_INDEXED_PARAMS = ['SS_Earnings_c', 'SS_Earnings_thd']
82
83
 
83
- def __init__(self, gfactors=None, only_reading_defaults=False, **kwargs):
84
+ def __init__(self, gfactors=None, **kwargs):
84
85
  # put JSON contents of DEFAULTS_FILE_NAME into self._vals dictionary
85
86
  super().__init__()
86
87
  # handle gfactors argument
@@ -92,7 +93,6 @@ class Policy(Parameters):
92
93
  raise ValueError('gfactors is not None or a GrowFactors instance')
93
94
  # read default parameters and initialize
94
95
  syr = Policy.JSON_START_YEAR
95
- lyr = Policy.LAST_BUDGET_YEAR
96
96
  nyrs = Policy.DEFAULT_NUM_YEARS
97
97
  self._inflation_rates = None
98
98
  self._wage_growth_rates = None
@@ -101,6 +101,19 @@ class Policy(Parameters):
101
101
  Policy.REDEFINED_PARAMS,
102
102
  Policy.WAGE_INDEXED_PARAMS, **kwargs)
103
103
 
104
+ @staticmethod
105
+ def tmd_constructor(growfactors_path): # pragma: no cover
106
+ """
107
+ Static method returns a Policy object instantiated with TMD
108
+ input data. This convenience method works in a analogous way
109
+ to Policy(), which returns a Policy object instantiated with
110
+ non-TMD input data.
111
+ """
112
+ assert isinstance(growfactors_path, Path)
113
+ gf_filename = str(growfactors_path)
114
+ tmd_growfactors = GrowFactors(growfactors_filename=gf_filename)
115
+ return Policy(gfactors=tmd_growfactors)
116
+
104
117
  @staticmethod
105
118
  def read_json_reform(obj):
106
119
  """
@@ -129,7 +142,7 @@ class Policy(Parameters):
129
142
  Policy.DEFAULTS_FILE_PATH,
130
143
  Policy.DEFAULTS_FILE_NAME
131
144
  )
132
- with open(path) as f:
145
+ with open(path, 'r', encoding='utf-8') as f:
133
146
  defaults = json.loads(f.read()) # pylint: disable=protected-access
134
147
  return [k for k in defaults if k != "schema"]
135
148
 
taxcalc/reforms/ext.json CHANGED
@@ -1,5 +1,5 @@
1
1
  // REFORM TO EXTEND TEMPORARY TCJA PROVISIONS BEYOND 2025
2
- // USING TAX-CALCULATOR 4.3.1
2
+ // USING TAX-CALCULATOR 4.3.2
3
3
  // WITH 2025-to-2026 INDEXING FACTOR = 1.022000
4
4
  // AND 2028-to-2029 INDEXING FACTOR = 1.019400
5
5
  {
@@ -88,7 +88,7 @@ def fixture_reformfile1():
88
88
  "II_em": { // personal exemption amount (see indexing changes below)
89
89
  "2016": 6000,
90
90
  "2018": 7500,
91
- "2020": 9000},
91
+ "2021": 9000},
92
92
  "II_em-indexed": { // personal exemption amount indexing status
93
93
  "2016": false, // values in future years are same as this year value
94
94
  "2018": true // values in future years indexed with this year as base
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: taxcalc
3
- Version: 4.3.1
3
+ Version: 4.3.2
4
4
  Summary: taxcalc
5
5
  Home-page: https://github.com/PSLmodels/Tax-Calculator
6
6
  Download-URL: https://github.com/PSLmodels/Tax-Calculator
@@ -1,6 +1,6 @@
1
- taxcalc/__init__.py,sha256=OIcjp1KVj4GPxBYcT7C9VtzhA1WzzJcjtbLxoGJhyuU,536
1
+ taxcalc/__init__.py,sha256=Le7YP1qsAQ16R7VeiMWC2bpbsC6aiPiO2-a_Ce8gyUc,536
2
2
  taxcalc/calcfunctions.py,sha256=XrEHKMnjOQQHSryk8FXbRDo5Xd8grDgrTJ1q_7DDehQ,146696
3
- taxcalc/calculator.py,sha256=Ybk497LXzg5RSJEiFCEQPsM0odA7MT_mutqcXWe5d8o,63694
3
+ taxcalc/calculator.py,sha256=6MTDHhXitefwKHwzAQ_7RgPbZDpCWWHTOqWX_bjeA_A,63709
4
4
  taxcalc/conftest.py,sha256=nO4J7qu1sTHgjqrzhpRMvfMJUrNm6GP_IsSuuDt_MeQ,141
5
5
  taxcalc/consumption.json,sha256=D4Iz625yka_LSlq313hoy01qGtNrpN5QYAHqd9QQfVA,8102
6
6
  taxcalc/consumption.py,sha256=IS-pB2I0JW3pdXB0vHvqA14AVnkP-TDNYFMx8MmQYIg,3327
@@ -11,9 +11,9 @@ taxcalc/decorators.py,sha256=uCZGHrq90k5Gr5YA_1tuWkCMEiOPbqXp6wxCWp6cDfM,11332
11
11
  taxcalc/growdiff.json,sha256=im6mp7NZfpROismsNTjwLLAwIEltZsFfV6EKFEG3dKo,15037
12
12
  taxcalc/growdiff.py,sha256=lW0tvVh2WtOOznf1AdAyDzvB-WLb8sgyogCbAOUqXw0,2905
13
13
  taxcalc/growfactors.csv,sha256=OQArKySPTSweIGV9v17WrenfcQa6ABrbTpIWZUqL2Uk,12281
14
- taxcalc/growfactors.py,sha256=IdxR6_ELJKJJHd82-gaGcQLVEYNxJpja0bYKNpVlG7A,6557
14
+ taxcalc/growfactors.py,sha256=MNb2XbAV_RbJDjbZp7iMvC6dHabAe97wdbXWEqdAmaQ,6534
15
15
  taxcalc/parameters.py,sha256=57RVKpx0i4J0L6lqdgykakO9ASHx9JnkI2tK7yDmvto,31175
16
- taxcalc/policy.py,sha256=pM_q1R7EsSodNBtUoq3maF61flk6TMnADBbuIM3WUiY,6341
16
+ taxcalc/policy.py,sha256=65xHrz5M7OJu7k3M4Zh9WUv6hpe6Qic3c-_OkbZmnEA,6878
17
17
  taxcalc/policy_current_law.json,sha256=eARPB7EpnQgNi5GMX94krF9ZHS_AyTEJjwQljCnkc_Y,658683
18
18
  taxcalc/puf_ratios.csv,sha256=FjEj41SyyW5Fp7JTVptQGKjnu43rfl3uOc9-019bE_s,3439
19
19
  taxcalc/puf_weights.csv.gz,sha256=LouhxTQJ0ow-Yn63PjMElB5ICXO9AybLXeEt3gP5AY4,12988069
@@ -54,7 +54,7 @@ taxcalc/reforms/Trump2017.json,sha256=DZjCJQZYe98Skyss7z_Jhj8HJld_FPZeQGxwzGgQIn
54
54
  taxcalc/reforms/Trump2017.out.csv,sha256=SQTnFgXOo2QldcSYourBPiK3GsqZa3S3PHkSXQ2MAsA,474
55
55
  taxcalc/reforms/cases.csv,sha256=JQ0LSnNeyl6xSgW5mimGUJMr7xwCWTOpiOpfwx2ETsg,570
56
56
  taxcalc/reforms/clp.out.csv,sha256=5wFsG1tFqGFLVwtL_jKJVC3uzA3auB_n-IAfb7XX96s,355
57
- taxcalc/reforms/ext.json,sha256=syu81FAi8JyD6S3S5Mm7e3JdA6cqm7ssVhKYbTNw0mI,3025
57
+ taxcalc/reforms/ext.json,sha256=yj1HKhLZ93cXob0yoQlLotrKFwNiAHjdpKSi7nYuA_8,3025
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=kGn0h67vBzgkEiEhuYjvpspQ-KnndN9gDVVnsIe7S7w,473
@@ -102,7 +102,7 @@ taxcalc/tests/test_pufcsv.py,sha256=FuNwf9dR6sPppuBAYI8EPedMGJ5UjCitpq6eJa9EKsA,
102
102
  taxcalc/tests/test_records.py,sha256=CmYLJOH63vlm4K96z6Q1nzb1bK_F_rPKehZ0MFKTI4o,8323
103
103
  taxcalc/tests/test_reforms.py,sha256=HEG8YA_F9lmHX4j_0vWzXtTJZc6l6vt8Nu8cjEIUYDo,15855
104
104
  taxcalc/tests/test_responses.py,sha256=-t0-Yr2X8Y1e1KZ4oF6dlt4Ze5jbn8_JQalAee3KPzk,1625
105
- taxcalc/tests/test_taxcalcio.py,sha256=f_utdl32H8jbk1ztqnUh_WA12WpxOF4xCNON_eyycm8,24979
105
+ taxcalc/tests/test_taxcalcio.py,sha256=-O9uhV2spiUvBN2XUS4kVOUUFCsW6Ynl6XNw4dJSCVo,24979
106
106
  taxcalc/tests/test_utils.py,sha256=sA2ozKkMRbKyCsiXdeYU5K7w2a1us1Cf5pL9a2NmYpk,29139
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.3.1.dist-info/LICENSE,sha256=m5epLdB-_NXiY7NsEDgcHP4jDtJ4vOlRf5S3Jb-jraY,1299
135
- taxcalc-4.3.1.dist-info/METADATA,sha256=PLF1A_XY2XoMrpWGo-5nu_1YNXPWTDr_HlpvIBIhN2c,3183
136
- taxcalc-4.3.1.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
137
- taxcalc-4.3.1.dist-info/entry_points.txt,sha256=a3ZE1piRv683p27fOLdWZvVJXESkoslTOp5iXV7uVco,50
138
- taxcalc-4.3.1.dist-info/top_level.txt,sha256=Wh8wTDHkA_cm4dn8IoUCviDyGgVQqwEQKPJnl8z6d4c,8
139
- taxcalc-4.3.1.dist-info/RECORD,,
134
+ taxcalc-4.3.2.dist-info/LICENSE,sha256=m5epLdB-_NXiY7NsEDgcHP4jDtJ4vOlRf5S3Jb-jraY,1299
135
+ taxcalc-4.3.2.dist-info/METADATA,sha256=hT0IPjp6gznKRBIPPev8X5eIT3CiWMEWtb893zJnnlI,3183
136
+ taxcalc-4.3.2.dist-info/WHEEL,sha256=a7TGlA-5DaHMRrarXjVbQagU3Man_dCnGIWMJr5kRWo,91
137
+ taxcalc-4.3.2.dist-info/entry_points.txt,sha256=a3ZE1piRv683p27fOLdWZvVJXESkoslTOp5iXV7uVco,50
138
+ taxcalc-4.3.2.dist-info/top_level.txt,sha256=Wh8wTDHkA_cm4dn8IoUCviDyGgVQqwEQKPJnl8z6d4c,8
139
+ taxcalc-4.3.2.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.2.0)
2
+ Generator: setuptools (75.4.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5