Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Clarify datatype of parameters in JSON files #1970

Merged
merged 1 commit into from
Apr 13, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion taxcalc/behavior.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
"col_var": "",
"col_label": "",
"boolean_value": true,
"integer_value": true,
"integer_value": false,
"value": [false],
"validations": {"min": false, "max": true}
},
Expand Down
52 changes: 26 additions & 26 deletions taxcalc/current_law_policy.json
Original file line number Diff line number Diff line change
Expand Up @@ -660,7 +660,7 @@
"col_var": "",
"col_label": "",
"boolean_value": true,
"integer_value": true,
"integer_value": false,
"value": [false],
"range": {"min": false, "max": true},
"out_of_range_minmsg": "",
Expand Down Expand Up @@ -952,7 +952,7 @@
"col_var": "",
"col_label": "",
"boolean_value": true,
"integer_value": true,
"integer_value": false,
"value": [false],
"range": {"min": false, "max": true},
"out_of_range_minmsg": "",
Expand Down Expand Up @@ -1090,7 +1090,7 @@
"col_var": "",
"col_label": "",
"boolean_value": true,
"integer_value": true,
"integer_value": false,
"value": [false],
"range": {"min": false, "max": true},
"out_of_range_minmsg": "",
Expand Down Expand Up @@ -2258,7 +2258,7 @@
"col_var": "idedtype",
"col_label": ["medical", "statelocal", "realestate", "casualty", "misc", "interest", "charity"],
"boolean_value": true,
"integer_value": true,
"integer_value": false,
"value": [[true, true, true, true, true, true, true]],
"range": {"min": false, "max": true},
"out_of_range_minmsg": "",
Expand Down Expand Up @@ -2306,7 +2306,7 @@
"col_var": "idedtype",
"col_label": ["medical", "statelocal", "realestate", "casualty", "misc", "interest", "charity"],
"boolean_value": true,
"integer_value": true,
"integer_value": false,
"value": [[true, true, true, true, true, true, true]],
"range": {"min": false, "max": true},
"out_of_range_minmsg": "",
Expand Down Expand Up @@ -2386,7 +2386,7 @@
"col_var": "idedtype",
"col_label": ["medical", "statelocal", "realestate", "casualty", "misc", "interest", "charity"],
"boolean_value": true,
"integer_value": true,
"integer_value": false,
"value": [[true, true, true, true, true, true, true]],
"range": {"min": false, "max": true},
"out_of_range_minmsg": "",
Expand Down Expand Up @@ -2794,7 +2794,7 @@
"col_var": "",
"col_label": "",
"boolean_value": true,
"integer_value": true,
"integer_value": false,
"value": [false],
"range": {"min": false, "max": true},
"out_of_range_minmsg": "",
Expand Down Expand Up @@ -4370,7 +4370,7 @@
"col_var": "",
"col_label": "",
"boolean_value": true,
"integer_value": true,
"integer_value": false,
"value": [false],
"range": {"min": false, "max": true},
"out_of_range_minmsg": "",
Expand All @@ -4394,7 +4394,7 @@
"col_var": "",
"col_label": "",
"boolean_value": true,
"integer_value": true,
"integer_value": false,
"value": [true],
"range": {"min": false, "max": true},
"out_of_range_minmsg": "",
Expand Down Expand Up @@ -5238,7 +5238,7 @@
"col_var": "",
"col_label": "",
"boolean_value": true,
"integer_value": true,
"integer_value": false,
"value": [false,
false,
false,
Expand Down Expand Up @@ -5315,7 +5315,7 @@
"col_var": "",
"col_label": "",
"boolean_value": true,
"integer_value": true,
"integer_value": false,
"value": [false],
"range": {"min": false, "max": true},
"out_of_range_minmsg": "",
Expand Down Expand Up @@ -5587,7 +5587,7 @@
"col_var": "",
"col_label": "",
"boolean_value": true,
"integer_value": true,
"integer_value": false,
"value": [false],
"range": {"min": false, "max": true},
"out_of_range_minmsg": "",
Expand Down Expand Up @@ -5865,7 +5865,7 @@
"col_var": "",
"col_label": "",
"boolean_value": true,
"integer_value": true,
"integer_value": false,
"value": [false],
"range": {"min": false, "max": true},
"out_of_range_minmsg": "",
Expand Down Expand Up @@ -5969,7 +5969,7 @@
"col_var": "",
"col_label": "",
"boolean_value": true,
"integer_value": true,
"integer_value": false,
"value": [false],
"range": {"min": false, "max": true},
"out_of_range_minmsg": "",
Expand Down Expand Up @@ -6017,7 +6017,7 @@
"col_var": "",
"col_label": "",
"boolean_value": true,
"integer_value": true,
"integer_value": false,
"value": [false],
"range": {"min": false, "max": true},
"out_of_range_minmsg": "",
Expand Down Expand Up @@ -6569,7 +6569,7 @@
"col_var": "",
"col_label": "",
"boolean_value": true,
"integer_value": true,
"integer_value": false,
"value": [false],
"range": {"min": false, "max": true},
"out_of_range_minmsg": "",
Expand All @@ -6593,7 +6593,7 @@
"col_var": "",
"col_label": "",
"boolean_value": true,
"integer_value": true,
"integer_value": false,
"value": [false],
"range": {"min": false, "max": true},
"out_of_range_minmsg": "",
Expand All @@ -6617,7 +6617,7 @@
"col_var": "",
"col_label": "",
"boolean_value": true,
"integer_value": true,
"integer_value": false,
"value": [false],
"range": {"min": false, "max": true},
"out_of_range_minmsg": "",
Expand All @@ -6641,7 +6641,7 @@
"col_var": "",
"col_label": "",
"boolean_value": true,
"integer_value": true,
"integer_value": false,
"value": [false],
"range": {"min": false, "max": true},
"out_of_range_minmsg": "",
Expand All @@ -6665,7 +6665,7 @@
"col_var": "",
"col_label": "",
"boolean_value": true,
"integer_value": true,
"integer_value": false,
"value": [false],
"range": {"min": false, "max": true},
"out_of_range_minmsg": "",
Expand All @@ -6689,7 +6689,7 @@
"col_var": "",
"col_label": "",
"boolean_value": true,
"integer_value": true,
"integer_value": false,
"value": [false],
"range": {"min": false, "max": true},
"out_of_range_minmsg": "",
Expand All @@ -6713,7 +6713,7 @@
"col_var": "",
"col_label": "",
"boolean_value": true,
"integer_value": true,
"integer_value": false,
"value": [false],
"range": {"min": false, "max": true},
"out_of_range_minmsg": "",
Expand All @@ -6737,7 +6737,7 @@
"col_var": "",
"col_label": "",
"boolean_value": true,
"integer_value": true,
"integer_value": false,
"value": [false],
"range": {"min": false, "max": true},
"out_of_range_minmsg": "",
Expand All @@ -6761,7 +6761,7 @@
"col_var": "",
"col_label": "",
"boolean_value": true,
"integer_value": true,
"integer_value": false,
"value": [false],
"range": {"min": false, "max": true},
"out_of_range_minmsg": "",
Expand All @@ -6785,7 +6785,7 @@
"col_var": "",
"col_label": "",
"boolean_value": true,
"integer_value": true,
"integer_value": false,
"value": [false],
"range": {"min": false, "max": true},
"out_of_range_minmsg": "",
Expand All @@ -6809,7 +6809,7 @@
"col_var": "",
"col_label": "",
"boolean_value": true,
"integer_value": true,
"integer_value": false,
"value": [false],
"range": {"min": false, "max": true},
"out_of_range_minmsg": "",
Expand Down
12 changes: 9 additions & 3 deletions taxcalc/parameters.py
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,9 @@ def set_default_vals(self, known_years=999999):
if not isinstance(name, six.string_types):
msg = 'parameter name {} is not a string'
raise ValueError(msg.format(name))
integer_values = data.get('integer_value', None)
intg_val = data.get('integer_value', None)
bool_val = data.get('bool_value', None)
integer_values = intg_val or bool_val
values = data.get('value', None)
if values:
cpi_inflated = data.get('cpi_inflated', False)
Expand Down Expand Up @@ -360,7 +362,9 @@ def _update(self, year_mods):
continue # handle elsewhere in this method
if name in self._vals:
vals_indexed = self._vals[name].get('cpi_inflated', False)
integer_values = self._vals[name].get('integer_value')
intg_val = self._vals[name].get('integer_value', None)
bool_val = self._vals[name].get('bool_value', None)
integer_values = intg_val or bool_val
else:
msg = 'parameter name {} not in parameter values dictionary'
raise ValueError(msg.format(name))
Expand Down Expand Up @@ -396,7 +400,9 @@ def _update(self, year_mods):
pvalues = [cval[year - self.start_year]]
index_rates = self._indexing_rates_for_update(name, year,
num_years_to_expand)
integer_values = self._vals[pname]['integer_value']
intg_val = self._vals[pname].get('integer_value', None)
bool_val = self._vals[pname].get('bool_value', None)
integer_values = intg_val or bool_val
nval = self._expand_array(pvalues, integer_values,
inflate=pindexed,
inflation_rates=index_rates,
Expand Down
13 changes: 7 additions & 6 deletions taxcalc/tests/test_parameters.py
Original file line number Diff line number Diff line change
Expand Up @@ -322,18 +322,18 @@ def test_bool_int_value_info(tests_path, json_filename):
pdict = json.load(pfile)
maxint = np.iinfo(np.int8).max
for param in sorted(pdict.keys()):
# check that boolean_value always implies integer_value
if pdict[param]['boolean_value'] and not pdict[param]['integer_value']:
msg = 'param,integer_value,boolean_value,= {} {} {}'
# check that boolean_value is never integer_value
if pdict[param]['boolean_value'] and pdict[param]['integer_value']:
msg = 'param,boolean_value,integer_value,= {} {} {}'
msg = msg.format(str(param),
pdict[param]['boolean_value'],
pdict[param]['integer_value'])
assert msg == 'ERROR: boolean_value is not integer_value'
assert msg == 'ERROR: boolean_value is integer_value'
# check that cpi_indexed param is not boolean or integer
nonfloat_value = (pdict[param]['integer_value'] or
pdict[param]['boolean_value'])
if pdict[param]['cpi_inflated'] and nonfloat_value:
msg = 'param,integer_value,boolean_value= {} {} {}'
msg = 'param,boolean_value,integer_value,= {} {} {}'
msg = msg.format(str(param),
pdict[param]['boolean_value'],
pdict[param]['integer_value'])
Expand All @@ -344,7 +344,8 @@ def test_bool_int_value_info(tests_path, json_filename):
val = val[0]
valstr = str(val)
val_is_boolean = bool(valstr == 'True' or valstr == 'False')
val_is_integer = not bool('.' in valstr or abs(val) > maxint)
val_is_integer = (not bool('.' in valstr or abs(val) > maxint) and
not val_is_boolean)
# check that val_is_integer is consistent with integer_value
if val_is_integer != pdict[param]['integer_value']:
msg = 'param,integer_value,valstr= {} {} {}'
Expand Down