Skip to content

ParamTools 0.14.0

Compare
Choose a tag to compare
@hdoupe hdoupe released this 01 May 17:45
· 125 commits to master since this release
  • Add the _auto attribute to parameter values that were extended automatically. This make it possible to update the rules for how parameters should be extended, delete the extended values, and update with the new rules (#102):
# Update extension rules:
offset = 0.0025
for year, rate in params.index_rates.items():
    params.index_rates[year] = rate + offset

# Select automatically created values:
automatically_added = params.select_eq(
    "standard_deduction", strict=True, _auto=True
)

# Delete automatically created values and replace using the new rules:
params.delete(
    {
        "standard_deduction": automatically_added
    }
)
  • Add a clobber argument to the adjust method that allows you to toggle whether user-defined values should be overridden while doing an adjustment in extend mode. (#102)

  • Bug fixes for corner cases in logic for extending parameter values. (#103)

  • API change in extend method to use more concise keyword arguments. The argument label_to_extend is now label and the label_to_extend_values is now label_values. (#103)

  • Ability to specify the state to be used when converting between lists of value objects and arrays (#105):

# Select standard_deduction values in years 2014 and 2015
In [2]: params.to_array("standard_deduction", year=[2014, 2015])                                                                                                                              
Out[2]: 
array([[13673.68, 27347.36],
       [13673.68, 27347.36]])

# Convert standard_deduction values to a numpy array and back to a list of value objects:
In [3]: params.from_array( 
   ...:     "standard_deduction", 
   ...:     params.to_array("standard_deduction", year=[2014, 2015]), 
   ...:     year=[2014, 2015] 
   ...: )                                                                                                                                                                                     
Out[3]: 
[{'year': 2014, 'marital_status': 'single', 'value': 13673.68},
 {'year': 2014, 'marital_status': 'joint', 'value': 27347.36},
 {'year': 2015, 'marital_status': 'single', 'value': 13673.68},
 {'year': 2015, 'marital_status': 'joint', 'value': 27347.36}]
  • Bug fix for overriding the ops values like array_first or label_to_extend when initializing a Parameters instance (#104):
params = Params(array_first=False, label_to_extend=None)
  • Fixes bug in sort_values method that occurs when using it in conjunction with set_state (#106):
In [1]: from taxcalc import Policy 
   ...: pol = Policy(array_first=False) 
   ...: pol.select_eq("STD", strict=False, year=[2021]) 
   ...: pol.set_year([2018, 2019, 2020, 2021])                                                                                                                                                

In [2]: d = pol.sort_values()                                                                                                                                                                 

In [3]: pol.STD                                                                                                                                                                               
Out[3]: 
[{'MARS': 'single', 'value': 12000.0, 'year': 2018},
 {'MARS': 'mjoint', 'value': 24000.0, 'year': 2018},
 {'MARS': 'mseparate', 'value': 12000.0, 'year': 2018},
 {'MARS': 'headhh', 'value': 18000.0, 'year': 2018},
 {'MARS': 'widow', 'value': 24000.0, 'year': 2018},
 {'MARS': 'single', 'value': 12200.0, 'year': 2019},
 {'MARS': 'mjoint', 'value': 24400.0, 'year': 2019},
 {'MARS': 'mseparate', 'value': 12200.0, 'year': 2019},
 {'MARS': 'headhh', 'value': 18350.0, 'year': 2019},
 {'MARS': 'widow', 'value': 24400.0, 'year': 2019},
 {'MARS': 'single', 'value': 12392.76, 'year': 2020, '_auto': True},
 {'MARS': 'mjoint', 'value': 24785.52, 'year': 2020, '_auto': True},
 {'MARS': 'mseparate', 'value': 12392.76, 'year': 2020, '_auto': True},
 {'MARS': 'headhh', 'value': 18639.93, 'year': 2020, '_auto': True},
 {'MARS': 'widow', 'value': 24785.52, 'year': 2020, '_auto': True},
 {'MARS': 'single', 'value': 12662.92, 'year': 2021, '_auto': True},
 {'MARS': 'mjoint', 'value': 25325.84, 'year': 2021, '_auto': True},
 {'MARS': 'mseparate', 'value': 12662.92, 'year': 2021, '_auto': True},
 {'MARS': 'headhh', 'value': 19046.28, 'year': 2021, '_auto': True},
 {'MARS': 'widow', 'value': 25325.84, 'year': 2021, '_auto': True}]