diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml
index f4eef9568..c57381ee1 100644
--- a/.github/workflows/build_and_test.yml
+++ b/.github/workflows/build_and_test.yml
@@ -1,4 +1,4 @@
-name: Build Package and Test Source Code [Python 3.7, 3.8, 3.9, 3.10]
+name: Build Package and Test Source Code [Python 3.9, 3.10, 2.11]
on: [push, pull_request]
@@ -8,7 +8,7 @@ jobs:
strategy:
matrix:
os: [ubuntu-latest, windows-latest]
- python-version: [3.7, 3.8, 3.9, '3.10']
+ python-version: [3.9, '3.10', '3.11']
steps:
- name: Checkout
diff --git a/LICENSE.md b/LICENSE
similarity index 100%
rename from LICENSE.md
rename to LICENSE
diff --git a/README.md b/README.md
index 48eefbd2e..3c3aba333 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,8 @@
-[![PSL cataloged](https://img.shields.io/badge/PSL-cataloged-a0a0a0.svg)](https://www.PSLmodels.org)
-[![Python 3.6+](https://img.shields.io/badge/python-3.6%2B-blue.svg)](https://www.python.org/downloads/release/python-360/)
-[![Build Status](https://travis-ci.org/PSLmodels/Tax-Calculator.svg?branch=master)](https://travis-ci.org/PSLmodels/Tax-Calculator)
-[![Codecov](https://codecov.io/gh/PSLmodels/Tax-Calculator/branch/master/graph/badge.svg)](https://codecov.io/gh/PSLmodels/Tax-Calculator)
+| | |
+| --- | --- |
+| 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/) |
+| 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)|
+| 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) |
Tax-Calculator
@@ -11,7 +12,7 @@ Tax-Calculator is an open-source microsimulation model for static
analysis of USA federal income and payroll taxes.
We are seeking contributors and maintainers. If you are interested in joining the project as a contributor or maintainer,
-open a new [issue](https://github.com/PSLmodels/Tax-Calculator/issues) and ping @MattHJensen or @jdebacker -- or just jump right in.
+open a new [issue](https://github.com/PSLmodels/Tax-Calculator/issues) and ping [@MattHJensen](https://github.com/MattHJensen/) or [@jdebacker](https://github.com/jdebacker/) -- or just jump right in.
Complete documentation is available
[here](https://PSLmodels.github.io/Tax-Calculator/).
diff --git a/conda.recipe/meta.yaml b/conda.recipe/meta.yaml
index b7a076d8f..9f6d8f8cc 100755
--- a/conda.recipe/meta.yaml
+++ b/conda.recipe/meta.yaml
@@ -8,7 +8,7 @@ build:
requirements:
build:
- - python
+ - "python<3.12"
- "numpy>=1.14"
- "pandas>=1.2.0"
- "bokeh>=1.4.0, <3.0.0"
@@ -19,9 +19,9 @@ requirements:
- aiohttp
- curl
- openpyxl
-
+
run:
- - python
+ - "python<3.12"
- "numpy>=1.14"
- "pandas>=1.2.0"
- "bokeh>=1.4.0, <3.0.0"
diff --git a/docs/index.md b/docs/index.md
index 058f1b2d2..41b2140cd 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -9,7 +9,13 @@ You can install it with [Anaconda](https://www.anaconda.com/products/individual)
via:
```
-conda install -c conda-forge taxcalc
+conda update taxcalc
+```
+
+or with [PyPI](https://pypi.org/project/taxcalc/) via:
+
+```
+pip install taxcalc
```
When using
@@ -56,7 +62,13 @@ The cross-model validation work with NBER's TAXSIM-27 model is described
If you are already using Tax-Calculator, upgrade using the following command:
```
-conda update -c conda-forge taxcalc
+conda update conda-forge::taxcalc
+```
+
+or
+
+```
+pip install -U taxcalc
```
If you're a new user, read {doc}`usage/starting`.
diff --git a/docs/recipes/recipe00.ipynb b/docs/recipes/recipe00.ipynb
index 142068e19..e894967c1 100644
--- a/docs/recipes/recipe00.ipynb
+++ b/docs/recipes/recipe00.ipynb
@@ -14,7 +14,7 @@
},
{
"cell_type": "code",
- "execution_count": 1,
+ "execution_count": null,
"metadata": {
"tags": [
"remove-cell"
@@ -22,23 +22,15 @@
},
"outputs": [],
"source": [
- "# Install conda and taxcalc if in Google Colab.\n",
- "# the `&> /dev/null` silences output except for errors\n",
+ "# Install taxcalc if not already installed\n",
"import sys\n",
- "if 'google.colab' in sys.modules and 'taxbrain' not in sys.modules:\n",
- " !wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh &> /dev/null\n",
- " !bash Miniconda3-latest-Linux-x86_64.sh -bfp /usr/local &> /dev/null\n",
- " # Append path to be able to run packages installed with conda\n",
- " # This must correspond to the conda Python version, which may differ from\n",
- " # the base Colab Python installation.\n",
- " sys.path.append('/usr/local/lib/python3.8/site-packages')\n",
- " # Install taxbrain\n",
- " !yes | conda install -c conda-forge taxcalc &> /dev/null"
+ "if 'taxcalc' not in sys.modules:\n",
+ " %pip install taxcalc &> /dev/null # dev/null suppresses output"
]
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": 1,
"metadata": {
"hide-output": false
},
@@ -69,7 +61,7 @@
},
{
"cell_type": "code",
- "execution_count": 3,
+ "execution_count": 2,
"metadata": {
"hide-output": false
},
@@ -87,7 +79,7 @@
},
{
"cell_type": "code",
- "execution_count": 4,
+ "execution_count": 3,
"metadata": {
"hide-output": false
},
@@ -108,7 +100,7 @@
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": 4,
"metadata": {
"hide-output": false
},
@@ -126,7 +118,7 @@
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": 5,
"metadata": {
"hide-output": false
},
@@ -146,7 +138,7 @@
},
{
"cell_type": "code",
- "execution_count": 7,
+ "execution_count": 6,
"metadata": {
"hide-output": false
},
@@ -165,7 +157,7 @@
},
{
"cell_type": "code",
- "execution_count": 8,
+ "execution_count": 7,
"metadata": {
"hide-output": false
},
@@ -186,7 +178,7 @@
},
{
"cell_type": "code",
- "execution_count": 9,
+ "execution_count": 8,
"metadata": {
"hide-output": false
},
@@ -210,7 +202,7 @@
},
{
"cell_type": "code",
- "execution_count": 10,
+ "execution_count": 9,
"metadata": {
"hide-output": false
},
@@ -219,8 +211,8 @@
"name": "stdout",
"output_type": "stream",
"text": [
- "2020_CLP_itax_rev($B)= 1321.487\n",
- "2020_REF_itax_rev($B)= 1329.959\n"
+ "2020_CLP_itax_rev($B)= 764.170\n",
+ "2020_REF_itax_rev($B)= 766.855\n"
]
}
],
@@ -238,7 +230,7 @@
},
{
"cell_type": "code",
- "execution_count": 11,
+ "execution_count": 10,
"metadata": {
"hide-output": false
},
@@ -280,7 +272,7 @@
},
{
"cell_type": "code",
- "execution_count": 12,
+ "execution_count": 11,
"metadata": {
"hide-output": false
},
@@ -288,11 +280,10 @@
{
"data": {
"text/html": [
- "\n",
- "
\n",
+ "
\n",
"
\n",
- "
Loading BokehJS ...\n",
- "
"
+ "
Loading BokehJS ...\n",
+ "
\n"
]
},
"metadata": {},
@@ -300,305 +291,8 @@
},
{
"data": {
- "application/javascript": [
- "\n",
- "(function(root) {\n",
- " function now() {\n",
- " return new Date();\n",
- " }\n",
- "\n",
- " var force = true;\n",
- "\n",
- " if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n",
- " root._bokeh_onload_callbacks = [];\n",
- " root._bokeh_is_loading = undefined;\n",
- " }\n",
- "\n",
- " var JS_MIME_TYPE = 'application/javascript';\n",
- " var HTML_MIME_TYPE = 'text/html';\n",
- " var EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n",
- " var CLASS_NAME = 'output_bokeh rendered_html';\n",
- "\n",
- " /**\n",
- " * Render data to the DOM node\n",
- " */\n",
- " function render(props, node) {\n",
- " var script = document.createElement(\"script\");\n",
- " node.appendChild(script);\n",
- " }\n",
- "\n",
- " /**\n",
- " * Handle when an output is cleared or removed\n",
- " */\n",
- " function handleClearOutput(event, handle) {\n",
- " var cell = handle.cell;\n",
- "\n",
- " var id = cell.output_area._bokeh_element_id;\n",
- " var server_id = cell.output_area._bokeh_server_id;\n",
- " // Clean up Bokeh references\n",
- " if (id != null && id in Bokeh.index) {\n",
- " Bokeh.index[id].model.document.clear();\n",
- " delete Bokeh.index[id];\n",
- " }\n",
- "\n",
- " if (server_id !== undefined) {\n",
- " // Clean up Bokeh references\n",
- " var cmd = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n",
- " cell.notebook.kernel.execute(cmd, {\n",
- " iopub: {\n",
- " output: function(msg) {\n",
- " var id = msg.content.text.trim();\n",
- " if (id in Bokeh.index) {\n",
- " Bokeh.index[id].model.document.clear();\n",
- " delete Bokeh.index[id];\n",
- " }\n",
- " }\n",
- " }\n",
- " });\n",
- " // Destroy server and session\n",
- " var cmd = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n",
- " cell.notebook.kernel.execute(cmd);\n",
- " }\n",
- " }\n",
- "\n",
- " /**\n",
- " * Handle when a new output is added\n",
- " */\n",
- " function handleAddOutput(event, handle) {\n",
- " var output_area = handle.output_area;\n",
- " var output = handle.output;\n",
- "\n",
- " // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n",
- " if ((output.output_type != \"display_data\") || (!Object.prototype.hasOwnProperty.call(output.data, EXEC_MIME_TYPE))) {\n",
- " return\n",
- " }\n",
- "\n",
- " var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n",
- "\n",
- " if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n",
- " toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n",
- " // store reference to embed id on output_area\n",
- " output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n",
- " }\n",
- " if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n",
- " var bk_div = document.createElement(\"div\");\n",
- " bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n",
- " var script_attrs = bk_div.children[0].attributes;\n",
- " for (var i = 0; i < script_attrs.length; i++) {\n",
- " toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n",
- " toinsert[toinsert.length - 1].firstChild.textContent = bk_div.children[0].textContent\n",
- " }\n",
- " // store reference to server id on output_area\n",
- " output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n",
- " }\n",
- " }\n",
- "\n",
- " function register_renderer(events, OutputArea) {\n",
- "\n",
- " function append_mime(data, metadata, element) {\n",
- " // create a DOM node to render to\n",
- " var toinsert = this.create_output_subarea(\n",
- " metadata,\n",
- " CLASS_NAME,\n",
- " EXEC_MIME_TYPE\n",
- " );\n",
- " this.keyboard_manager.register_events(toinsert);\n",
- " // Render to node\n",
- " var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n",
- " render(props, toinsert[toinsert.length - 1]);\n",
- " element.append(toinsert);\n",
- " return toinsert\n",
- " }\n",
- "\n",
- " /* Handle when an output is cleared or removed */\n",
- " events.on('clear_output.CodeCell', handleClearOutput);\n",
- " events.on('delete.Cell', handleClearOutput);\n",
- "\n",
- " /* Handle when a new output is added */\n",
- " events.on('output_added.OutputArea', handleAddOutput);\n",
- "\n",
- " /**\n",
- " * Register the mime type and append_mime function with output_area\n",
- " */\n",
- " OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n",
- " /* Is output safe? */\n",
- " safe: true,\n",
- " /* Index of renderer in `output_area.display_order` */\n",
- " index: 0\n",
- " });\n",
- " }\n",
- "\n",
- " // register the mime type if in Jupyter Notebook environment and previously unregistered\n",
- " if (root.Jupyter !== undefined) {\n",
- " var events = require('base/js/events');\n",
- " var OutputArea = require('notebook/js/outputarea').OutputArea;\n",
- "\n",
- " if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n",
- " register_renderer(events, OutputArea);\n",
- " }\n",
- " }\n",
- "\n",
- " \n",
- " if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n",
- " root._bokeh_timeout = Date.now() + 5000;\n",
- " root._bokeh_failed_load = false;\n",
- " }\n",
- "\n",
- " var NB_LOAD_WARNING = {'data': {'text/html':\n",
- " \"\\n\"+\n",
- " \"
\\n\"+\n",
- " \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n",
- " \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n",
- " \"
\\n\"+\n",
- " \"
\\n\"+\n",
- " \"- re-rerun `output_notebook()` to attempt to load from CDN again, or
\\n\"+\n",
- " \"- use INLINE resources instead, as so:
\\n\"+\n",
- " \"
\\n\"+\n",
- " \"
\\n\"+\n",
- " \"from bokeh.resources import INLINE\\n\"+\n",
- " \"output_notebook(resources=INLINE)\\n\"+\n",
- " \"
\\n\"+\n",
- " \"
\"}};\n",
- "\n",
- " function display_loaded() {\n",
- " var el = document.getElementById(\"1052\");\n",
- " if (el != null) {\n",
- " el.textContent = \"BokehJS is loading...\";\n",
- " }\n",
- " if (root.Bokeh !== undefined) {\n",
- " if (el != null) {\n",
- " el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n",
- " }\n",
- " } else if (Date.now() < root._bokeh_timeout) {\n",
- " setTimeout(display_loaded, 100)\n",
- " }\n",
- " }\n",
- "\n",
- "\n",
- " function run_callbacks() {\n",
- " try {\n",
- " root._bokeh_onload_callbacks.forEach(function(callback) {\n",
- " if (callback != null)\n",
- " callback();\n",
- " });\n",
- " } finally {\n",
- " delete root._bokeh_onload_callbacks\n",
- " }\n",
- " console.debug(\"Bokeh: all callbacks have finished\");\n",
- " }\n",
- "\n",
- " function load_libs(css_urls, js_urls, callback) {\n",
- " if (css_urls == null) css_urls = [];\n",
- " if (js_urls == null) js_urls = [];\n",
- "\n",
- " root._bokeh_onload_callbacks.push(callback);\n",
- " if (root._bokeh_is_loading > 0) {\n",
- " console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n",
- " return null;\n",
- " }\n",
- " if (js_urls == null || js_urls.length === 0) {\n",
- " run_callbacks();\n",
- " return null;\n",
- " }\n",
- " console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
- " root._bokeh_is_loading = css_urls.length + js_urls.length;\n",
- "\n",
- " function on_load() {\n",
- " root._bokeh_is_loading--;\n",
- " if (root._bokeh_is_loading === 0) {\n",
- " console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n",
- " run_callbacks()\n",
- " }\n",
- " }\n",
- "\n",
- " function on_error(url) {\n",
- " console.error(\"failed to load \" + url);\n",
- " }\n",
- "\n",
- " for (let i = 0; i < css_urls.length; i++) {\n",
- " const url = css_urls[i];\n",
- " const element = document.createElement(\"link\");\n",
- " element.onload = on_load;\n",
- " element.onerror = on_error.bind(null, url);\n",
- " element.rel = \"stylesheet\";\n",
- " element.type = \"text/css\";\n",
- " element.href = url;\n",
- " console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n",
- " document.body.appendChild(element);\n",
- " }\n",
- "\n",
- " const hashes = {\"https://cdn.bokeh.org/bokeh/release/bokeh-2.3.1.min.js\": \"YF85VygJKMVnHE+lLv2AM93Vbstr0yo2TbIu5v8se5Rq3UQAUmcuh4aaJwNlpKwa\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.3.1.min.js\": \"KKuas3gevv3PvrlkyCMzffFeaMq5we/a2QsP5AUoS3mJ0jmaCL7jirFJN3GoE/lM\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.3.1.min.js\": \"MK/uFc3YT18pkvvXRl66tTHjP0/dxoSH2e/eiNMFIguKlun2+WVqaPTWmUy/zvh4\"};\n",
- "\n",
- " for (let i = 0; i < js_urls.length; i++) {\n",
- " const url = js_urls[i];\n",
- " const element = document.createElement('script');\n",
- " element.onload = on_load;\n",
- " element.onerror = on_error.bind(null, url);\n",
- " element.async = false;\n",
- " element.src = url;\n",
- " if (url in hashes) {\n",
- " element.crossOrigin = \"anonymous\";\n",
- " element.integrity = \"sha384-\" + hashes[url];\n",
- " }\n",
- " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
- " document.head.appendChild(element);\n",
- " }\n",
- " };\n",
- "\n",
- " function inject_raw_css(css) {\n",
- " const element = document.createElement(\"style\");\n",
- " element.appendChild(document.createTextNode(css));\n",
- " document.body.appendChild(element);\n",
- " }\n",
- "\n",
- " \n",
- " var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.3.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.3.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.3.1.min.js\"];\n",
- " var css_urls = [];\n",
- " \n",
- "\n",
- " var inline_js = [\n",
- " function(Bokeh) {\n",
- " Bokeh.set_log_level(\"info\");\n",
- " },\n",
- " function(Bokeh) {\n",
- " \n",
- " \n",
- " }\n",
- " ];\n",
- "\n",
- " function run_inline_js() {\n",
- " \n",
- " if (root.Bokeh !== undefined || force === true) {\n",
- " \n",
- " for (var i = 0; i < inline_js.length; i++) {\n",
- " inline_js[i].call(root, root.Bokeh);\n",
- " }\n",
- " if (force === true) {\n",
- " display_loaded();\n",
- " }} else if (Date.now() < root._bokeh_timeout) {\n",
- " setTimeout(run_inline_js, 100);\n",
- " } else if (!root._bokeh_failed_load) {\n",
- " console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
- " root._bokeh_failed_load = true;\n",
- " } else if (force !== true) {\n",
- " var cell = $(document.getElementById(\"1052\")).parents('.cell').data().cell;\n",
- " cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
- " }\n",
- "\n",
- " }\n",
- "\n",
- " if (root._bokeh_is_loading === 0) {\n",
- " console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
- " run_inline_js();\n",
- " } else {\n",
- " load_libs(css_urls, js_urls, function() {\n",
- " console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n",
- " run_inline_js();\n",
- " });\n",
- " }\n",
- "}(window));"
- ],
- "application/vnd.bokehjs_load.v0+json": "\n(function(root) {\n function now() {\n return new Date();\n }\n\n var force = true;\n\n if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\n \n\n \n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n var NB_LOAD_WARNING = {'data': {'text/html':\n \"\\n\"+\n \"
\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"
\\n\"+\n \"
\\n\"+\n \"- re-rerun `output_notebook()` to attempt to load from CDN again, or
\\n\"+\n \"- use INLINE resources instead, as so:
\\n\"+\n \"
\\n\"+\n \"
\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"
\\n\"+\n \"
\"}};\n\n function display_loaded() {\n var el = document.getElementById(\"1052\");\n if (el != null) {\n el.textContent = \"BokehJS is loading...\";\n }\n if (root.Bokeh !== undefined) {\n if (el != null) {\n el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(display_loaded, 100)\n }\n }\n\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error(url) {\n console.error(\"failed to load \" + url);\n }\n\n for (let i = 0; i < css_urls.length; i++) {\n const url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n const hashes = {\"https://cdn.bokeh.org/bokeh/release/bokeh-2.3.1.min.js\": \"YF85VygJKMVnHE+lLv2AM93Vbstr0yo2TbIu5v8se5Rq3UQAUmcuh4aaJwNlpKwa\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.3.1.min.js\": \"KKuas3gevv3PvrlkyCMzffFeaMq5we/a2QsP5AUoS3mJ0jmaCL7jirFJN3GoE/lM\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.3.1.min.js\": \"MK/uFc3YT18pkvvXRl66tTHjP0/dxoSH2e/eiNMFIguKlun2+WVqaPTWmUy/zvh4\"};\n\n for (let i = 0; i < js_urls.length; i++) {\n const url = js_urls[i];\n const element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.async = false;\n element.src = url;\n if (url in hashes) {\n element.crossOrigin = \"anonymous\";\n element.integrity = \"sha384-\" + hashes[url];\n }\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n \n var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.3.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.3.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.3.1.min.js\"];\n var css_urls = [];\n \n\n var inline_js = [\n function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\n function(Bokeh) {\n \n \n }\n ];\n\n function run_inline_js() {\n \n if (root.Bokeh !== undefined || force === true) {\n \n for (var i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\n if (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n var cell = $(document.getElementById(\"1052\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));"
+ "application/javascript": "(function(root) {\n function now() {\n return new Date();\n }\n\n const force = true;\n\n if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\nconst JS_MIME_TYPE = 'application/javascript';\n const HTML_MIME_TYPE = 'text/html';\n const EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n const CLASS_NAME = 'output_bokeh rendered_html';\n\n /**\n * Render data to the DOM node\n */\n function render(props, node) {\n const script = document.createElement(\"script\");\n node.appendChild(script);\n }\n\n /**\n * Handle when an output is cleared or removed\n */\n function handleClearOutput(event, handle) {\n const cell = handle.cell;\n\n const id = cell.output_area._bokeh_element_id;\n const server_id = cell.output_area._bokeh_server_id;\n // Clean up Bokeh references\n if (id != null && id in Bokeh.index) {\n Bokeh.index[id].model.document.clear();\n delete Bokeh.index[id];\n }\n\n if (server_id !== undefined) {\n // Clean up Bokeh references\n const cmd_clean = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n cell.notebook.kernel.execute(cmd_clean, {\n iopub: {\n output: function(msg) {\n const id = msg.content.text.trim();\n if (id in Bokeh.index) {\n Bokeh.index[id].model.document.clear();\n delete Bokeh.index[id];\n }\n }\n }\n });\n // Destroy server and session\n const cmd_destroy = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n cell.notebook.kernel.execute(cmd_destroy);\n }\n }\n\n /**\n * Handle when a new output is added\n */\n function handleAddOutput(event, handle) {\n const output_area = handle.output_area;\n const output = handle.output;\n\n // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n if ((output.output_type != \"display_data\") || (!Object.prototype.hasOwnProperty.call(output.data, EXEC_MIME_TYPE))) {\n return\n }\n\n const toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n\n if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n // store reference to embed id on output_area\n output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n }\n if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n const bk_div = document.createElement(\"div\");\n bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n const script_attrs = bk_div.children[0].attributes;\n for (let i = 0; i < script_attrs.length; i++) {\n toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n toinsert[toinsert.length - 1].firstChild.textContent = bk_div.children[0].textContent\n }\n // store reference to server id on output_area\n output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n }\n }\n\n function register_renderer(events, OutputArea) {\n\n function append_mime(data, metadata, element) {\n // create a DOM node to render to\n const toinsert = this.create_output_subarea(\n metadata,\n CLASS_NAME,\n EXEC_MIME_TYPE\n );\n this.keyboard_manager.register_events(toinsert);\n // Render to node\n const props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n render(props, toinsert[toinsert.length - 1]);\n element.append(toinsert);\n return toinsert\n }\n\n /* Handle when an output is cleared or removed */\n events.on('clear_output.CodeCell', handleClearOutput);\n events.on('delete.Cell', handleClearOutput);\n\n /* Handle when a new output is added */\n events.on('output_added.OutputArea', handleAddOutput);\n\n /**\n * Register the mime type and append_mime function with output_area\n */\n OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n /* Is output safe? */\n safe: true,\n /* Index of renderer in `output_area.display_order` */\n index: 0\n });\n }\n\n // register the mime type if in Jupyter Notebook environment and previously unregistered\n if (root.Jupyter !== undefined) {\n const events = require('base/js/events');\n const OutputArea = require('notebook/js/outputarea').OutputArea;\n\n if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n register_renderer(events, OutputArea);\n }\n }\n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n const NB_LOAD_WARNING = {'data': {'text/html':\n \"\\n\"+\n \"
\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"
\\n\"+\n \"
\\n\"+\n \"- re-rerun `output_notebook()` to attempt to load from CDN again, or
\\n\"+\n \"- use INLINE resources instead, as so:
\\n\"+\n \"
\\n\"+\n \"
\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"
\\n\"+\n \"
\"}};\n\n function display_loaded() {\n const el = document.getElementById(\"1055\");\n if (el != null) {\n el.textContent = \"BokehJS is loading...\";\n }\n if (root.Bokeh !== undefined) {\n if (el != null) {\n el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(display_loaded, 100)\n }\n }\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error(url) {\n console.error(\"failed to load \" + url);\n }\n\n for (let i = 0; i < css_urls.length; i++) {\n const url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n for (let i = 0; i < js_urls.length; i++) {\n const url = js_urls[i];\n const element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-2.4.3.min.js\"];\n const css_urls = [];\n\n const inline_js = [ function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\nfunction(Bokeh) {\n }\n ];\n\n function run_inline_js() {\n if (root.Bokeh !== undefined || force === true) {\n for (let i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\nif (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n const cell = $(document.getElementById(\"1055\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));",
+ "application/vnd.bokehjs_load.v0+json": ""
},
"metadata": {},
"output_type": "display_data"
@@ -607,12 +301,7 @@
"data": {
"text/html": [
"\n",
- "\n",
- "\n",
- "\n",
- "\n",
- "\n",
- " \n"
+ " \n"
]
},
"metadata": {},
@@ -620,34 +309,7 @@
},
{
"data": {
- "application/javascript": [
- "(function(root) {\n",
- " function embed_document(root) {\n",
- " \n",
- " var docs_json = {\"273ee692-dd1c-49e7-b5f5-b2d375de677c\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1013\"}],\"center\":[{\"id\":\"1016\"},{\"id\":\"1020\"}],\"height\":500,\"left\":[{\"id\":\"1017\"}],\"renderers\":[{\"id\":\"1038\"},{\"id\":\"1043\"},{\"id\":\"1048\"}],\"title\":{\"id\":\"1003\"},\"toolbar\":{\"id\":\"1028\"},\"width\":850,\"x_range\":{\"id\":\"1005\"},\"x_scale\":{\"id\":\"1009\"},\"y_range\":{\"id\":\"1007\"},\"y_scale\":{\"id\":\"1011\"}},\"id\":\"1002\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"1062\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"line_color\":\"blue\",\"line_width\":3,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1036\",\"type\":\"Line\"},{\"attributes\":{\"axis\":{\"id\":\"1013\"},\"ticker\":null},\"id\":\"1016\",\"type\":\"Grid\"},{\"attributes\":{\"data\":{\"x\":[5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99],\"y\":{\"__ndarray__\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZsMK9GG6Dj8AAAAAAAAAAAAAAAAAAAAAwaAslbVZWz98k+9PZJ+ZP1lLdc79sMQ/AFQM1vhZzD/S5JYICr3LP6OcJRWibc4/MMLGq/39zT9PWf3IGiLNP+a9nJK6c8w/QW5C1v/kyj+ggBUyRufKP6HmXDF7z8w/RmgVczH1xD8sY032SojIP0J47uXCJ8g/up7e89JpyD8ESmFP+yzHP6p7b/9Pv8Y/GDYcNT34xD91d+We0W3FP6Bk1I3IYcc/je35QGKmxD9DixqhatfFP5ALuWCpLcc/qeKR8yiAxT8GFDe7thLJP1Jj+YYEWsU/oOLbLL/ExT/q4IBbYf3FPz5esoyR5cU/TdWoId+/xD96YOm6Y33GP/ZjL7RlEcg/Ynbw0F0Tyz9gaumYMyTJPzMVPWJ3K8g/LfE3sXjFxj9H2IlkqKDHP38VyjAZcsw/J7mamdKYyT9i3DuZnkbJPxOhF0W+rck/gE43fHuLyz9D26FjrHjOP9jfroXRss0/m0N7bJYBzj9igyjoZPLNP2MO4/BhatA/Mr5XF2S9zT8cSJNwSh7PP/iXFodpw88/EWXazA0nzz9tVJGx63vPPyioGj+c/s4/3zYRM4Njzj+xl7hjYwrPPxLeL3dIStA/JsxZEljMzz8bjVcNpFrQP/5ckoCsENA/3ZJfnBSC0D/GWgTT4tvPPwL/4TOPUNA/17rWKlI30D81LJ3HFcfOP6iPOproxc8/pY3YQHM9zj/E4PBLK5/PP/wTY9RxXNA/6L+xOai70j+NZZ+Kis/TP1TxioB+8NM/RMTIEK901D9T/4e+OcTUPyOR3Wo2b9Q/9K+2aXDS1D/er6Vfem7TP2mp64dg5tM/9KDyBw7g0z+6zvfIFLrSP4KydgzJ3tA/MTTD6CBnzT8HGrTjbvLDP+rKWgaGgK0/jqhK1Dgltb9aJLCaZG/9vw==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[95]}},\"selected\":{\"id\":\"1061\"},\"selection_policy\":{\"id\":\"1060\"}},\"id\":\"1035\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1064\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1009\",\"type\":\"LinearScale\"},{\"attributes\":{\"axis_label\":\"Baseline Expanded-Income Percentile\",\"axis_label_text_font_size\":\"12pt\",\"axis_label_text_font_style\":\"normal\",\"formatter\":{\"id\":\"1055\"},\"major_label_policy\":{\"id\":\"1056\"},\"ticker\":{\"id\":\"1014\"}},\"id\":\"1013\",\"type\":\"LinearAxis\"},{\"attributes\":{\"source\":{\"id\":\"1035\"}},\"id\":\"1039\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1025\",\"type\":\"ResetTool\"},{\"attributes\":{\"data\":{},\"selected\":{\"id\":\"1063\"},\"selection_policy\":{\"id\":\"1062\"}},\"id\":\"1040\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1056\",\"type\":\"AllLabels\"},{\"attributes\":{\"active_multi\":null,\"tools\":[{\"id\":\"1021\"},{\"id\":\"1022\"},{\"id\":\"1023\"},{\"id\":\"1024\"},{\"id\":\"1025\"},{\"id\":\"1026\"}]},\"id\":\"1028\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"1018\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1007\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1058\",\"type\":\"AllLabels\"},{\"attributes\":{\"axis\":{\"id\":\"1017\"},\"dimension\":1,\"ticker\":null},\"id\":\"1020\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1055\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"data\":{\"x\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100],\"y\":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},\"selected\":{\"id\":\"1065\"},\"selection_policy\":{\"id\":\"1064\"}},\"id\":\"1045\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1027\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"1014\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1024\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1021\",\"type\":\"PanTool\"},{\"attributes\":{\"data_source\":{\"id\":\"1040\"},\"glyph\":{\"id\":\"1041\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1042\"},\"view\":{\"id\":\"1044\"},\"visible\":false},\"id\":\"1043\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1026\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1011\",\"type\":\"LinearScale\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"value\":0},\"y\":{\"value\":0}},\"id\":\"1042\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"1065\",\"type\":\"Selection\"},{\"attributes\":{\"axis_label\":\"Change in After-Tax Expanded Income\",\"axis_label_text_font_size\":\"12pt\",\"axis_label_text_font_style\":\"normal\",\"formatter\":{\"id\":\"1050\"},\"major_label_policy\":{\"id\":\"1058\"},\"ticker\":{\"id\":\"1018\"}},\"id\":\"1017\",\"type\":\"LinearAxis\"},{\"attributes\":{\"text\":\"Percentage Change in After-Tax Expanded Income by Income Percentile for 2020\",\"text_font_size\":\"12pt\"},\"id\":\"1003\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1005\",\"type\":\"DataRange1d\"},{\"attributes\":{\"fill_color\":{\"value\":\"#1f77b4\"},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"value\":0},\"y\":{\"value\":0}},\"id\":\"1041\",\"type\":\"Circle\"},{\"attributes\":{\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1046\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1061\",\"type\":\"Selection\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"blue\",\"line_width\":3,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1037\",\"type\":\"Line\"},{\"attributes\":{\"source\":{\"id\":\"1040\"}},\"id\":\"1044\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1022\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"data_source\":{\"id\":\"1045\"},\"glyph\":{\"id\":\"1046\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1047\"},\"view\":{\"id\":\"1049\"}},\"id\":\"1048\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1060\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1063\",\"type\":\"Selection\"},{\"attributes\":{\"line_alpha\":0.1,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1047\",\"type\":\"Line\"},{\"attributes\":{\"source\":{\"id\":\"1045\"}},\"id\":\"1049\",\"type\":\"CDSView\"},{\"attributes\":{\"data_source\":{\"id\":\"1035\"},\"glyph\":{\"id\":\"1036\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1037\"},\"view\":{\"id\":\"1039\"}},\"id\":\"1038\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"format\":\"%+.1f%%\"},\"id\":\"1050\",\"type\":\"PrintfTickFormatter\"},{\"attributes\":{\"overlay\":{\"id\":\"1027\"}},\"id\":\"1023\",\"type\":\"BoxZoomTool\"}],\"root_ids\":[\"1002\"]},\"title\":\"Bokeh Application\",\"version\":\"2.3.1\"}};\n",
- " var render_items = [{\"docid\":\"273ee692-dd1c-49e7-b5f5-b2d375de677c\",\"root_ids\":[\"1002\"],\"roots\":{\"1002\":\"d7ff7a97-599f-411b-9915-979c692594e7\"}}];\n",
- " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
- "\n",
- " }\n",
- " if (root.Bokeh !== undefined) {\n",
- " embed_document(root);\n",
- " } else {\n",
- " var attempts = 0;\n",
- " var timer = setInterval(function(root) {\n",
- " if (root.Bokeh !== undefined) {\n",
- " clearInterval(timer);\n",
- " embed_document(root);\n",
- " } else {\n",
- " attempts++;\n",
- " if (attempts > 100) {\n",
- " clearInterval(timer);\n",
- " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
- " }\n",
- " }\n",
- " }, 10, root)\n",
- " }\n",
- "})(window);"
- ],
+ "application/javascript": "(function(root) {\n function embed_document(root) {\n const docs_json = {\"b4e7db24-33d9-48db-a78f-613a20b224ed\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1013\"}],\"center\":[{\"id\":\"1016\"},{\"id\":\"1020\"}],\"height\":500,\"left\":[{\"id\":\"1017\"}],\"renderers\":[{\"id\":\"1039\"},{\"id\":\"1045\"},{\"id\":\"1051\"}],\"title\":{\"id\":\"1003\"},\"toolbar\":{\"id\":\"1028\"},\"width\":850,\"x_range\":{\"id\":\"1005\"},\"x_scale\":{\"id\":\"1009\"},\"y_range\":{\"id\":\"1007\"},\"y_scale\":{\"id\":\"1011\"}},\"id\":\"1002\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"1024\",\"type\":\"SaveTool\"},{\"attributes\":{\"axis\":{\"id\":\"1013\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1016\",\"type\":\"Grid\"},{\"attributes\":{\"source\":{\"id\":\"1047\"}},\"id\":\"1052\",\"type\":\"CDSView\"},{\"attributes\":{\"overlay\":{\"id\":\"1027\"}},\"id\":\"1023\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1009\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1014\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1066\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"source\":{\"id\":\"1041\"}},\"id\":\"1046\",\"type\":\"CDSView\"},{\"attributes\":{\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1048\",\"type\":\"Line\"},{\"attributes\":{\"axis\":{\"id\":\"1017\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1020\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1060\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"#1f77b4\"},\"hatch_alpha\":{\"value\":0.2},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"value\":0},\"y\":{\"value\":0}},\"id\":\"1044\",\"type\":\"Circle\"},{\"attributes\":{\"line_alpha\":0.1,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1049\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1058\",\"type\":\"AllLabels\"},{\"attributes\":{\"line_alpha\":0.2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1050\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1063\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1025\",\"type\":\"ResetTool\"},{\"attributes\":{\"tools\":[{\"id\":\"1021\"},{\"id\":\"1022\"},{\"id\":\"1023\"},{\"id\":\"1024\"},{\"id\":\"1025\"},{\"id\":\"1026\"}]},\"id\":\"1028\",\"type\":\"Toolbar\"},{\"attributes\":{\"data\":{\"x\":[5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99],\"y\":{\"__ndarray__\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7pAUaHxB0/nKHNERleVD/aBfTa5GK5P0zVkWhx9Mo/MyzH8YQWzD+pINmUkOTMP3OFqn2Lms0/8iIBCWq5zT9f49UIBzzMP06jPnzVuco/sfpwiWyyyj/cE/Pit0DIP4vjF9+tRMY/kk6lUKONxj9ZJ3Qv7GPIP/ywLEChx8c/uODkTw+Pwz//QpOmUxbHP+XSbuRmcsc/Yp1E8a8pwz/oPImT0KvFPxd9SDHizcY/vikqmuJdxT/4hylo1YvEP5Y1FnRwa8k/5e2syIN+xD/EzeGu4orJPxuGg09wIMU/rJm32UV5xj+PMOMRN+jGP3grYWRFv8Y/bX4Rdzn/xT9ZKtV4GxfHPzt7leYNTMs/XIVwz8fUyz9QPgO7qOfIPyqUsGwcrco/sAJAhxqPyT9kd/bygD3KP1TD+k2huM4/s6CWjY/Syj+BGQbOkyjMP8FmY0BjSc0/MMluZ0Vpzz9dkUVK2PzQP9E+WDIaQ88/mGf4APw+0D+Q2p3dchfQPyYJamTK6tA/LU7i+eGLzj9/DTFYturPP5SyL35DVdA/nSfrgGr4zz8FGxAeEujPP9nJc7aGLdA/bkbBxEHg0D9WlqbgMDTQP9QitksiYdA/fJg9erjT0D+WnxAqc4fQP6gDqOTq6s8/XstJZQWc0D9yFUr7DbXQP4Ys1hLqMtA/WPgvsM3J0D/PinNa9L3PP72HEQlkjM8/xb6Fgr3Dzz/MWdGtJUjQP4AIGIUljdI/HCzGFTn+1D8CkKaBv1/VPyhwUjJ6FNU/ZARpdk+O1T+PskAqb2jVPwVodjLZztU/goIrFgTq1D/6Vb29u4PUP1iFtqAKbtQ/QSPAM0z80z9oEEwZCNPSP0Gi0h0sStE/cZXjQS5gzj++dActio/GPw9LdrOlN7o/lacgTUsLor+sBLR9Caf7vw==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[95]}},\"selected\":{\"id\":\"1063\"},\"selection_policy\":{\"id\":\"1062\"}},\"id\":\"1035\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"hatch_alpha\":{\"value\":0.1},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"value\":0},\"y\":{\"value\":0}},\"id\":\"1043\",\"type\":\"Circle\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1027\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"blue\",\"line_width\":3,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1037\",\"type\":\"Line\"},{\"attributes\":{\"line_color\":\"blue\",\"line_width\":3,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1036\",\"type\":\"Line\"},{\"attributes\":{\"data\":{},\"selected\":{\"id\":\"1065\"},\"selection_policy\":{\"id\":\"1064\"}},\"id\":\"1041\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1026\",\"type\":\"HelpTool\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1035\"},\"glyph\":{\"id\":\"1036\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1038\"},\"nonselection_glyph\":{\"id\":\"1037\"},\"view\":{\"id\":\"1040\"}},\"id\":\"1039\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"fill_color\":{\"value\":\"#1f77b4\"},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"value\":0},\"y\":{\"value\":0}},\"id\":\"1042\",\"type\":\"Circle\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1047\"},\"glyph\":{\"id\":\"1048\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1050\"},\"nonselection_glyph\":{\"id\":\"1049\"},\"view\":{\"id\":\"1052\"}},\"id\":\"1051\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1021\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1018\",\"type\":\"BasicTicker\"},{\"attributes\":{\"format\":\"%+.1f%%\"},\"id\":\"1053\",\"type\":\"PrintfTickFormatter\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1041\"},\"glyph\":{\"id\":\"1042\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1044\"},\"nonselection_glyph\":{\"id\":\"1043\"},\"view\":{\"id\":\"1046\"},\"visible\":false},\"id\":\"1045\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"axis_label\":\"Change in After-Tax Expanded Income\",\"axis_label_text_font_size\":\"12pt\",\"axis_label_text_font_style\":\"normal\",\"coordinates\":null,\"formatter\":{\"id\":\"1053\"},\"group\":null,\"major_label_policy\":{\"id\":\"1058\"},\"ticker\":{\"id\":\"1018\"}},\"id\":\"1017\",\"type\":\"LinearAxis\"},{\"attributes\":{\"axis_label\":\"Baseline Expanded-Income Percentile\",\"axis_label_text_font_size\":\"12pt\",\"axis_label_text_font_style\":\"normal\",\"coordinates\":null,\"formatter\":{\"id\":\"1060\"},\"group\":null,\"major_label_policy\":{\"id\":\"1061\"},\"ticker\":{\"id\":\"1014\"}},\"id\":\"1013\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1007\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1065\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1005\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1061\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1022\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1067\",\"type\":\"Selection\"},{\"attributes\":{\"source\":{\"id\":\"1035\"}},\"id\":\"1040\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1011\",\"type\":\"LinearScale\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"blue\",\"line_width\":3,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1038\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1064\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"data\":{\"x\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100],\"y\":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},\"selected\":{\"id\":\"1067\"},\"selection_policy\":{\"id\":\"1066\"}},\"id\":\"1047\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"text\":\"Percentage Change in After-Tax Expanded Income by Income Percentile for 2020\",\"text_font_size\":\"12pt\"},\"id\":\"1003\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1062\",\"type\":\"UnionRenderers\"}],\"root_ids\":[\"1002\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n const render_items = [{\"docid\":\"b4e7db24-33d9-48db-a78f-613a20b224ed\",\"root_ids\":[\"1002\"],\"roots\":{\"1002\":\"8ecf2c89-2d75-43f2-8d5a-e5caa0f4c91c\"}}];\n root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n }\n if (root.Bokeh !== undefined) {\n embed_document(root);\n } else {\n let attempts = 0;\n const timer = setInterval(function(root) {\n if (root.Bokeh !== undefined) {\n clearInterval(timer);\n embed_document(root);\n } else {\n attempts++;\n if (attempts > 100) {\n clearInterval(timer);\n console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n }\n }\n }, 10, root)\n }\n})(window);",
"application/vnd.bokehjs_exec.v0+json": ""
},
"metadata": {
@@ -675,7 +337,7 @@
},
{
"cell_type": "code",
- "execution_count": 13,
+ "execution_count": 12,
"metadata": {
"hide-output": false
},
@@ -707,27 +369,27 @@
" \n",
" \n",
" Returns (#m) | \n",
- " 205.440 | \n",
+ " 204.480 | \n",
"
\n",
" \n",
" AGI ($b) | \n",
- " 11475.571 | \n",
+ " 11573.238 | \n",
"
\n",
" \n",
" Itemizers (#m) | \n",
- " 30.950 | \n",
+ " 27.730 | \n",
"
\n",
" \n",
" Itemized Deduction ($b) | \n",
- " 824.019 | \n",
+ " 752.189 | \n",
"
\n",
" \n",
" Standard Deduction Filers (#m) | \n",
- " 174.490 | \n",
+ " 176.750 | \n",
"
\n",
" \n",
" Standard Deduction ($b) | \n",
- " 3188.464 | \n",
+ " 3075.468 | \n",
"
\n",
" \n",
" Personal Exemption ($b) | \n",
@@ -735,35 +397,35 @@
"
\n",
" \n",
" Taxable Income ($b) | \n",
- " 8513.062 | \n",
+ " 8617.397 | \n",
"
\n",
" \n",
" Regular Tax ($b) | \n",
- " 1505.162 | \n",
+ " 1505.274 | \n",
"
\n",
" \n",
" AMT Income ($b) | \n",
- " 10856.448 | \n",
+ " 11012.668 | \n",
"
\n",
" \n",
" AMT Liability ($b) | \n",
- " 0.923 | \n",
+ " 0.568 | \n",
"
\n",
" \n",
" AMT Filers (#m) | \n",
- " 0.420 | \n",
+ " 0.090 | \n",
"
\n",
" \n",
" Tax before Credits ($b) | \n",
- " 1506.085 | \n",
+ " 1505.841 | \n",
"
\n",
" \n",
" Refundable Credits ($b) | \n",
- " 103.539 | \n",
+ " 654.861 | \n",
"
\n",
" \n",
" Nonrefundable Credits ($b) | \n",
- " 94.954 | \n",
+ " 99.385 | \n",
"
\n",
" \n",
" Reform Surtaxes ($b) | \n",
@@ -771,27 +433,27 @@
"
\n",
" \n",
" Other Taxes ($b) | \n",
- " 13.895 | \n",
+ " 12.575 | \n",
"
\n",
" \n",
" Ind Income Tax ($b) | \n",
- " 1321.487 | \n",
+ " 764.170 | \n",
"
\n",
" \n",
" Payroll Taxes ($b) | \n",
- " 1186.745 | \n",
+ " 1217.941 | \n",
"
\n",
" \n",
" Combined Liability ($b) | \n",
- " 2508.233 | \n",
+ " 1982.111 | \n",
"
\n",
" \n",
" With Income Tax <= 0 (#m) | \n",
- " 101.340 | \n",
+ " 135.170 | \n",
"
\n",
" \n",
" With Combined Tax <= 0 (#m) | \n",
- " 69.360 | \n",
+ " 98.150 | \n",
"
\n",
" \n",
" UBI Benefits ($b) | \n",
@@ -799,11 +461,11 @@
"
\n",
" \n",
" Total Benefits, Consumption Value ($b) | \n",
- " 3650.123 | \n",
+ " 3617.042 | \n",
"
\n",
" \n",
" Total Benefits Cost ($b) | \n",
- " 3650.123 | \n",
+ " 3617.042 | \n",
"
\n",
" \n",
"\n",
@@ -811,34 +473,34 @@
],
"text/plain": [
" 2020\n",
- "Returns (#m) 205.440\n",
- "AGI ($b) 11475.571\n",
- "Itemizers (#m) 30.950\n",
- "Itemized Deduction ($b) 824.019\n",
- "Standard Deduction Filers (#m) 174.490\n",
- "Standard Deduction ($b) 3188.464\n",
+ "Returns (#m) 204.480\n",
+ "AGI ($b) 11573.238\n",
+ "Itemizers (#m) 27.730\n",
+ "Itemized Deduction ($b) 752.189\n",
+ "Standard Deduction Filers (#m) 176.750\n",
+ "Standard Deduction ($b) 3075.468\n",
"Personal Exemption ($b) 0.000\n",
- "Taxable Income ($b) 8513.062\n",
- "Regular Tax ($b) 1505.162\n",
- "AMT Income ($b) 10856.448\n",
- "AMT Liability ($b) 0.923\n",
- "AMT Filers (#m) 0.420\n",
- "Tax before Credits ($b) 1506.085\n",
- "Refundable Credits ($b) 103.539\n",
- "Nonrefundable Credits ($b) 94.954\n",
+ "Taxable Income ($b) 8617.397\n",
+ "Regular Tax ($b) 1505.274\n",
+ "AMT Income ($b) 11012.668\n",
+ "AMT Liability ($b) 0.568\n",
+ "AMT Filers (#m) 0.090\n",
+ "Tax before Credits ($b) 1505.841\n",
+ "Refundable Credits ($b) 654.861\n",
+ "Nonrefundable Credits ($b) 99.385\n",
"Reform Surtaxes ($b) 0.000\n",
- "Other Taxes ($b) 13.895\n",
- "Ind Income Tax ($b) 1321.487\n",
- "Payroll Taxes ($b) 1186.745\n",
- "Combined Liability ($b) 2508.233\n",
- "With Income Tax <= 0 (#m) 101.340\n",
- "With Combined Tax <= 0 (#m) 69.360\n",
+ "Other Taxes ($b) 12.575\n",
+ "Ind Income Tax ($b) 764.170\n",
+ "Payroll Taxes ($b) 1217.941\n",
+ "Combined Liability ($b) 1982.111\n",
+ "With Income Tax <= 0 (#m) 135.170\n",
+ "With Combined Tax <= 0 (#m) 98.150\n",
"UBI Benefits ($b) 0.000\n",
- "Total Benefits, Consumption Value ($b) 3650.123\n",
- "Total Benefits Cost ($b) 3650.123"
+ "Total Benefits, Consumption Value ($b) 3617.042\n",
+ "Total Benefits Cost ($b) 3617.042"
]
},
- "execution_count": 13,
+ "execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
@@ -856,7 +518,7 @@
},
{
"cell_type": "code",
- "execution_count": 14,
+ "execution_count": 13,
"metadata": {
"hide-output": false
},
@@ -888,63 +550,63 @@
" \n",
" \n",
" Returns (#m) | \n",
- " 205.440 | \n",
+ " 204.480 | \n",
"
\n",
" \n",
" AGI ($b) | \n",
- " 11475.571 | \n",
+ " 11573.238 | \n",
"
\n",
" \n",
" Itemizers (#m) | \n",
- " 30.860 | \n",
+ " 27.660 | \n",
"
\n",
" \n",
" Itemized Deduction ($b) | \n",
- " 821.244 | \n",
+ " 749.755 | \n",
"
\n",
" \n",
" Standard Deduction Filers (#m) | \n",
- " 174.580 | \n",
+ " 176.820 | \n",
"
\n",
" \n",
" Standard Deduction ($b) | \n",
- " 3190.011 | \n",
+ " 3076.756 | \n",
"
\n",
" \n",
" Personal Exemption ($b) | \n",
- " 387.209 | \n",
+ " 375.177 | \n",
"
\n",
" \n",
" Taxable Income ($b) | \n",
- " 8274.064 | \n",
+ " 8369.678 | \n",
"
\n",
" \n",
" Regular Tax ($b) | \n",
- " 1511.260 | \n",
+ " 1505.595 | \n",
"
\n",
" \n",
" AMT Income ($b) | \n",
- " 10859.047 | \n",
+ " 11014.938 | \n",
"
\n",
" \n",
" AMT Liability ($b) | \n",
- " 0.978 | \n",
+ " 0.585 | \n",
"
\n",
" \n",
" AMT Filers (#m) | \n",
- " 0.450 | \n",
+ " 0.090 | \n",
"
\n",
" \n",
" Tax before Credits ($b) | \n",
- " 1512.239 | \n",
+ " 1506.180 | \n",
"
\n",
" \n",
" Refundable Credits ($b) | \n",
- " 106.802 | \n",
+ " 658.196 | \n",
"
\n",
" \n",
" Nonrefundable Credits ($b) | \n",
- " 89.372 | \n",
+ " 93.705 | \n",
"
\n",
" \n",
" Reform Surtaxes ($b) | \n",
@@ -952,27 +614,27 @@
"
\n",
" \n",
" Other Taxes ($b) | \n",
- " 13.895 | \n",
+ " 12.575 | \n",
"
\n",
" \n",
" Ind Income Tax ($b) | \n",
- " 1329.959 | \n",
+ " 766.855 | \n",
"
\n",
" \n",
" Payroll Taxes ($b) | \n",
- " 1186.745 | \n",
+ " 1217.941 | \n",
"
\n",
" \n",
" Combined Liability ($b) | \n",
- " 2516.705 | \n",
+ " 1984.796 | \n",
"
\n",
" \n",
" With Income Tax <= 0 (#m) | \n",
- " 103.730 | \n",
+ " 137.340 | \n",
"
\n",
" \n",
" With Combined Tax <= 0 (#m) | \n",
- " 69.930 | \n",
+ " 98.910 | \n",
"
\n",
" \n",
" UBI Benefits ($b) | \n",
@@ -980,11 +642,11 @@
"
\n",
" \n",
" Total Benefits, Consumption Value ($b) | \n",
- " 3650.123 | \n",
+ " 3617.042 | \n",
"
\n",
" \n",
" Total Benefits Cost ($b) | \n",
- " 3650.123 | \n",
+ " 3617.042 | \n",
"
\n",
" \n",
"\n",
@@ -992,34 +654,34 @@
],
"text/plain": [
" 2020\n",
- "Returns (#m) 205.440\n",
- "AGI ($b) 11475.571\n",
- "Itemizers (#m) 30.860\n",
- "Itemized Deduction ($b) 821.244\n",
- "Standard Deduction Filers (#m) 174.580\n",
- "Standard Deduction ($b) 3190.011\n",
- "Personal Exemption ($b) 387.209\n",
- "Taxable Income ($b) 8274.064\n",
- "Regular Tax ($b) 1511.260\n",
- "AMT Income ($b) 10859.047\n",
- "AMT Liability ($b) 0.978\n",
- "AMT Filers (#m) 0.450\n",
- "Tax before Credits ($b) 1512.239\n",
- "Refundable Credits ($b) 106.802\n",
- "Nonrefundable Credits ($b) 89.372\n",
+ "Returns (#m) 204.480\n",
+ "AGI ($b) 11573.238\n",
+ "Itemizers (#m) 27.660\n",
+ "Itemized Deduction ($b) 749.755\n",
+ "Standard Deduction Filers (#m) 176.820\n",
+ "Standard Deduction ($b) 3076.756\n",
+ "Personal Exemption ($b) 375.177\n",
+ "Taxable Income ($b) 8369.678\n",
+ "Regular Tax ($b) 1505.595\n",
+ "AMT Income ($b) 11014.938\n",
+ "AMT Liability ($b) 0.585\n",
+ "AMT Filers (#m) 0.090\n",
+ "Tax before Credits ($b) 1506.180\n",
+ "Refundable Credits ($b) 658.196\n",
+ "Nonrefundable Credits ($b) 93.705\n",
"Reform Surtaxes ($b) 0.000\n",
- "Other Taxes ($b) 13.895\n",
- "Ind Income Tax ($b) 1329.959\n",
- "Payroll Taxes ($b) 1186.745\n",
- "Combined Liability ($b) 2516.705\n",
- "With Income Tax <= 0 (#m) 103.730\n",
- "With Combined Tax <= 0 (#m) 69.930\n",
+ "Other Taxes ($b) 12.575\n",
+ "Ind Income Tax ($b) 766.855\n",
+ "Payroll Taxes ($b) 1217.941\n",
+ "Combined Liability ($b) 1984.796\n",
+ "With Income Tax <= 0 (#m) 137.340\n",
+ "With Combined Tax <= 0 (#m) 98.910\n",
"UBI Benefits ($b) 0.000\n",
- "Total Benefits, Consumption Value ($b) 3650.123\n",
- "Total Benefits Cost ($b) 3650.123"
+ "Total Benefits, Consumption Value ($b) 3617.042\n",
+ "Total Benefits Cost ($b) 3617.042"
]
},
- "execution_count": 14,
+ "execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
@@ -1037,7 +699,7 @@
},
{
"cell_type": "code",
- "execution_count": 15,
+ "execution_count": 14,
"metadata": {
"hide-output": false
},
@@ -1073,175 +735,175 @@
" \n",
" \n",
" 0-10n | \n",
- " 0.114430 | \n",
- " 0.000000 | \n",
- " 0.000000 | \n",
- " -8.336880 | \n",
- " -8.336880 | \n",
+ " 0.103662 | \n",
+ " -0.292423 | \n",
+ " -0.292423 | \n",
+ " -6.364313 | \n",
+ " -6.364313 | \n",
"
\n",
" \n",
" 0-10z | \n",
- " 8.403193 | \n",
- " 0.000000 | \n",
- " 0.000000 | \n",
- " 0.000000 | \n",
- " 0.000000 | \n",
+ " 8.289516 | \n",
+ " -17.339037 | \n",
+ " -17.339037 | \n",
+ " 17.339037 | \n",
+ " 17.339037 | \n",
"
\n",
" \n",
" 0-10p | \n",
- " 12.024905 | \n",
- " -0.658431 | \n",
- " -0.658431 | \n",
- " 39.100850 | \n",
- " 39.100850 | \n",
+ " 12.054710 | \n",
+ " -25.583473 | \n",
+ " -25.583473 | \n",
+ " 66.416417 | \n",
+ " 66.416417 | \n",
"
\n",
" \n",
" 10-20 | \n",
- " 20.546100 | \n",
- " -8.163146 | \n",
- " -8.462583 | \n",
- " 254.161426 | \n",
- " 254.460863 | \n",
+ " 20.448902 | \n",
+ " -52.554387 | \n",
+ " -52.900799 | \n",
+ " 308.444021 | \n",
+ " 308.790433 | \n",
"
\n",
" \n",
" 20-30 | \n",
- " 20.544257 | \n",
- " -6.965458 | \n",
- " -8.028696 | \n",
- " 483.759011 | \n",
- " 484.822249 | \n",
+ " 20.447972 | \n",
+ " -53.636240 | \n",
+ " -54.653772 | \n",
+ " 542.850180 | \n",
+ " 543.867712 | \n",
"
\n",
" \n",
" 30-40 | \n",
- " 20.544358 | \n",
- " 0.378259 | \n",
- " -0.870559 | \n",
- " 662.399548 | \n",
- " 663.648366 | \n",
+ " 20.448551 | \n",
+ " -46.759061 | \n",
+ " -48.021038 | \n",
+ " 718.059905 | \n",
+ " 719.321882 | \n",
"
\n",
" \n",
" 40-50 | \n",
- " 20.543396 | \n",
- " 6.744895 | \n",
- " 5.119558 | \n",
- " 826.755409 | \n",
- " 828.380745 | \n",
+ " 20.448614 | \n",
+ " -44.573176 | \n",
+ " -46.294368 | \n",
+ " 888.228515 | \n",
+ " 889.949708 | \n",
"
\n",
" \n",
" 50-60 | \n",
- " 20.544877 | \n",
- " 17.232458 | \n",
- " 14.844037 | \n",
- " 1027.126836 | \n",
- " 1029.515257 | \n",
+ " 20.448520 | \n",
+ " -39.736886 | \n",
+ " -42.405082 | \n",
+ " 1100.805232 | \n",
+ " 1103.473428 | \n",
"
\n",
" \n",
" 60-70 | \n",
- " 20.544650 | \n",
- " 35.578883 | \n",
- " 32.102435 | \n",
- " 1288.718946 | \n",
- " 1292.195394 | \n",
+ " 20.448182 | \n",
+ " -30.590266 | \n",
+ " -34.290827 | \n",
+ " 1381.854900 | \n",
+ " 1385.555461 | \n",
"
\n",
" \n",
" 70-80 | \n",
- " 20.544138 | \n",
- " 74.685647 | \n",
- " 70.005515 | \n",
- " 1638.897669 | \n",
- " 1643.577800 | \n",
+ " 20.448218 | \n",
+ " 2.337068 | \n",
+ " -2.517134 | \n",
+ " 1742.953419 | \n",
+ " 1747.807621 | \n",
"
\n",
" \n",
" 80-90 | \n",
- " 20.544566 | \n",
- " 155.808839 | \n",
- " 148.199487 | \n",
- " 2184.242996 | \n",
- " 2191.852349 | \n",
+ " 20.447460 | \n",
+ " 85.024868 | \n",
+ " 76.807708 | \n",
+ " 2292.728158 | \n",
+ " 2300.945318 | \n",
"
\n",
" \n",
" 90-100 | \n",
- " 20.544658 | \n",
- " 1046.845328 | \n",
- " 1077.708556 | \n",
- " 4758.309062 | \n",
- " 4727.445834 | \n",
+ " 20.449858 | \n",
+ " 987.873311 | \n",
+ " 1014.344944 | \n",
+ " 4737.770572 | \n",
+ " 4711.298939 | \n",
"
\n",
" \n",
" ALL | \n",
- " 205.443528 | \n",
- " 1321.487275 | \n",
- " 1329.959319 | \n",
- " 13155.134872 | \n",
- " 13146.662827 | \n",
+ " 204.484164 | \n",
+ " 764.170298 | \n",
+ " 766.854698 | \n",
+ " 13791.086043 | \n",
+ " 13788.401642 | \n",
"
\n",
" \n",
" 90-95 | \n",
- " 10.271604 | \n",
- " 170.933865 | \n",
- " 165.558035 | \n",
- " 1491.100907 | \n",
- " 1496.476737 | \n",
+ " 10.225611 | \n",
+ " 142.001368 | \n",
+ " 136.439568 | \n",
+ " 1532.001747 | \n",
+ " 1537.563546 | \n",
"
\n",
" \n",
" 95-99 | \n",
- " 8.218293 | \n",
- " 332.400614 | \n",
- " 330.837087 | \n",
- " 1841.803092 | \n",
- " 1843.366620 | \n",
+ " 8.177219 | \n",
+ " 322.467707 | \n",
+ " 320.116774 | \n",
+ " 1821.899805 | \n",
+ " 1824.250737 | \n",
"
\n",
" \n",
" Top 1% | \n",
- " 2.054761 | \n",
- " 543.510848 | \n",
- " 581.313434 | \n",
- " 1425.405063 | \n",
- " 1387.602477 | \n",
+ " 2.047027 | \n",
+ " 523.404237 | \n",
+ " 557.788601 | \n",
+ " 1383.869020 | \n",
+ " 1349.484656 | \n",
"
\n",
" \n",
"\n",
""
],
"text/plain": [
- " funits(#m) itax1($b) itax2($b) aftertax_inc1($b) \\\n",
- "0-10n 0.114430 0.000000 0.000000 -8.336880 \n",
- "0-10z 8.403193 0.000000 0.000000 0.000000 \n",
- "0-10p 12.024905 -0.658431 -0.658431 39.100850 \n",
- "10-20 20.546100 -8.163146 -8.462583 254.161426 \n",
- "20-30 20.544257 -6.965458 -8.028696 483.759011 \n",
- "30-40 20.544358 0.378259 -0.870559 662.399548 \n",
- "40-50 20.543396 6.744895 5.119558 826.755409 \n",
- "50-60 20.544877 17.232458 14.844037 1027.126836 \n",
- "60-70 20.544650 35.578883 32.102435 1288.718946 \n",
- "70-80 20.544138 74.685647 70.005515 1638.897669 \n",
- "80-90 20.544566 155.808839 148.199487 2184.242996 \n",
- "90-100 20.544658 1046.845328 1077.708556 4758.309062 \n",
- "ALL 205.443528 1321.487275 1329.959319 13155.134872 \n",
- "90-95 10.271604 170.933865 165.558035 1491.100907 \n",
- "95-99 8.218293 332.400614 330.837087 1841.803092 \n",
- "Top 1% 2.054761 543.510848 581.313434 1425.405063 \n",
+ " funits(#m) itax1($b) itax2($b) aftertax_inc1($b) \\\n",
+ "0-10n 0.103662 -0.292423 -0.292423 -6.364313 \n",
+ "0-10z 8.289516 -17.339037 -17.339037 17.339037 \n",
+ "0-10p 12.054710 -25.583473 -25.583473 66.416417 \n",
+ "10-20 20.448902 -52.554387 -52.900799 308.444021 \n",
+ "20-30 20.447972 -53.636240 -54.653772 542.850180 \n",
+ "30-40 20.448551 -46.759061 -48.021038 718.059905 \n",
+ "40-50 20.448614 -44.573176 -46.294368 888.228515 \n",
+ "50-60 20.448520 -39.736886 -42.405082 1100.805232 \n",
+ "60-70 20.448182 -30.590266 -34.290827 1381.854900 \n",
+ "70-80 20.448218 2.337068 -2.517134 1742.953419 \n",
+ "80-90 20.447460 85.024868 76.807708 2292.728158 \n",
+ "90-100 20.449858 987.873311 1014.344944 4737.770572 \n",
+ "ALL 204.484164 764.170298 766.854698 13791.086043 \n",
+ "90-95 10.225611 142.001368 136.439568 1532.001747 \n",
+ "95-99 8.177219 322.467707 320.116774 1821.899805 \n",
+ "Top 1% 2.047027 523.404237 557.788601 1383.869020 \n",
"\n",
" aftertax_inc2($b) \n",
- "0-10n -8.336880 \n",
- "0-10z 0.000000 \n",
- "0-10p 39.100850 \n",
- "10-20 254.460863 \n",
- "20-30 484.822249 \n",
- "30-40 663.648366 \n",
- "40-50 828.380745 \n",
- "50-60 1029.515257 \n",
- "60-70 1292.195394 \n",
- "70-80 1643.577800 \n",
- "80-90 2191.852349 \n",
- "90-100 4727.445834 \n",
- "ALL 13146.662827 \n",
- "90-95 1496.476737 \n",
- "95-99 1843.366620 \n",
- "Top 1% 1387.602477 "
+ "0-10n -6.364313 \n",
+ "0-10z 17.339037 \n",
+ "0-10p 66.416417 \n",
+ "10-20 308.790433 \n",
+ "20-30 543.867712 \n",
+ "30-40 719.321882 \n",
+ "40-50 889.949708 \n",
+ "50-60 1103.473428 \n",
+ "60-70 1385.555461 \n",
+ "70-80 1747.807621 \n",
+ "80-90 2300.945318 \n",
+ "90-100 4711.298939 \n",
+ "ALL 13788.401642 \n",
+ "90-95 1537.563546 \n",
+ "95-99 1824.250737 \n",
+ "Top 1% 1349.484656 "
]
},
- "execution_count": 15,
+ "execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
@@ -1259,7 +921,7 @@
},
{
"cell_type": "code",
- "execution_count": 16,
+ "execution_count": 15,
"metadata": {
"hide-output": false
},
@@ -1294,115 +956,115 @@
" \n",
" \n",
" 0-10n | \n",
- " 0.114430 | \n",
- " 0.000000e+00 | \n",
- " 0.000000e+00 | \n",
+ " 0.103662 | \n",
+ " 0.000000 | \n",
+ " 0.000000 | \n",
" 0.000000 | \n",
"
\n",
" \n",
" 0-10z | \n",
- " 8.403193 | \n",
- " 0.000000e+00 | \n",
- " 0.000000e+00 | \n",
- " NaN | \n",
+ " 8.289516 | \n",
+ " 0.000000 | \n",
+ " 0.000000 | \n",
+ " 0.000000 | \n",
"
\n",
" \n",
" 0-10p | \n",
- " 12.024905 | \n",
- " 1.629896e-22 | \n",
- " 1.355434e-20 | \n",
+ " 12.054710 | \n",
+ " 0.000000 | \n",
+ " 0.000000 | \n",
" 0.000000 | \n",
"
\n",
" \n",
" 10-20 | \n",
- " 20.546100 | \n",
- " -2.994368e-01 | \n",
- " -1.457390e+01 | \n",
- " 0.117814 | \n",
+ " 20.448902 | \n",
+ " -0.346412 | \n",
+ " -16.940394 | \n",
+ " 0.112310 | \n",
"
\n",
" \n",
" 20-30 | \n",
- " 20.544257 | \n",
- " -1.063238e+00 | \n",
- " -5.175354e+01 | \n",
- " 0.219787 | \n",
+ " 20.447972 | \n",
+ " -1.017532 | \n",
+ " -49.762006 | \n",
+ " 0.187443 | \n",
"
\n",
" \n",
" 30-40 | \n",
- " 20.544358 | \n",
- " -1.248819e+00 | \n",
- " -6.078645e+01 | \n",
- " 0.188530 | \n",
+ " 20.448551 | \n",
+ " -1.261977 | \n",
+ " -61.714742 | \n",
+ " 0.175748 | \n",
"
\n",
" \n",
" 40-50 | \n",
- " 20.543396 | \n",
- " -1.625336e+00 | \n",
- " -7.911722e+01 | \n",
- " 0.196592 | \n",
+ " 20.448614 | \n",
+ " -1.721193 | \n",
+ " -84.171605 | \n",
+ " 0.193778 | \n",
"
\n",
" \n",
" 50-60 | \n",
- " 20.544877 | \n",
- " -2.388421e+00 | \n",
- " -1.162538e+02 | \n",
- " 0.232534 | \n",
+ " 20.448520 | \n",
+ " -2.668196 | \n",
+ " -130.483583 | \n",
+ " 0.242386 | \n",
"
\n",
" \n",
" 60-70 | \n",
- " 20.544650 | \n",
- " -3.476448e+00 | \n",
- " -1.692143e+02 | \n",
- " 0.269760 | \n",
+ " 20.448182 | \n",
+ " -3.700560 | \n",
+ " -180.972592 | \n",
+ " 0.267797 | \n",
"
\n",
" \n",
" 70-80 | \n",
- " 20.544138 | \n",
- " -4.680132e+00 | \n",
- " -2.278086e+02 | \n",
- " 0.285566 | \n",
+ " 20.448218 | \n",
+ " -4.854202 | \n",
+ " -237.389972 | \n",
+ " 0.278504 | \n",
"
\n",
" \n",
" 80-90 | \n",
- " 20.544566 | \n",
- " -7.609353e+00 | \n",
- " -3.703827e+02 | \n",
- " 0.348375 | \n",
+ " 20.447460 | \n",
+ " -8.217160 | \n",
+ " -401.867019 | \n",
+ " 0.358401 | \n",
"
\n",
" \n",
" 90-100 | \n",
- " 20.544658 | \n",
- " 3.086323e+01 | \n",
- " 1.502251e+03 | \n",
- " -0.648618 | \n",
+ " 20.449858 | \n",
+ " 26.471633 | \n",
+ " 1294.465375 | \n",
+ " -0.558736 | \n",
"
\n",
" \n",
" ALL | \n",
- " 205.443528 | \n",
- " 8.472045e+00 | \n",
- " 4.123783e+01 | \n",
- " -0.064401 | \n",
+ " 204.484164 | \n",
+ " 2.684400 | \n",
+ " 13.127667 | \n",
+ " -0.019465 | \n",
"
\n",
" \n",
" 90-95 | \n",
- " 10.271604 | \n",
- " -5.375830e+00 | \n",
- " -5.233682e+02 | \n",
- " 0.360528 | \n",
+ " 10.225611 | \n",
+ " -5.561800 | \n",
+ " -543.908766 | \n",
+ " 0.363041 | \n",
"
\n",
" \n",
" 95-99 | \n",
- " 8.218293 | \n",
- " -1.563528e+00 | \n",
- " -1.902497e+02 | \n",
- " 0.084891 | \n",
+ " 8.177219 | \n",
+ " -2.350932 | \n",
+ " -287.497784 | \n",
+ " 0.129037 | \n",
"
\n",
" \n",
" Top 1% | \n",
- " 2.054761 | \n",
- " 3.780259e+01 | \n",
- " 1.839756e+04 | \n",
- " -2.652059 | \n",
+ " 2.047027 | \n",
+ " 34.384364 | \n",
+ " 16797.217391 | \n",
+ " -2.484655 | \n",
"
\n",
" \n",
"\n",
@@ -1410,25 +1072,25 @@
],
"text/plain": [
" funits(#m) agg_diff($b) mean_diff($) aftertaxinc_diff(%)\n",
- "0-10n 0.114430 0.000000e+00 0.000000e+00 0.000000\n",
- "0-10z 8.403193 0.000000e+00 0.000000e+00 NaN\n",
- "0-10p 12.024905 1.629896e-22 1.355434e-20 0.000000\n",
- "10-20 20.546100 -2.994368e-01 -1.457390e+01 0.117814\n",
- "20-30 20.544257 -1.063238e+00 -5.175354e+01 0.219787\n",
- "30-40 20.544358 -1.248819e+00 -6.078645e+01 0.188530\n",
- "40-50 20.543396 -1.625336e+00 -7.911722e+01 0.196592\n",
- "50-60 20.544877 -2.388421e+00 -1.162538e+02 0.232534\n",
- "60-70 20.544650 -3.476448e+00 -1.692143e+02 0.269760\n",
- "70-80 20.544138 -4.680132e+00 -2.278086e+02 0.285566\n",
- "80-90 20.544566 -7.609353e+00 -3.703827e+02 0.348375\n",
- "90-100 20.544658 3.086323e+01 1.502251e+03 -0.648618\n",
- "ALL 205.443528 8.472045e+00 4.123783e+01 -0.064401\n",
- "90-95 10.271604 -5.375830e+00 -5.233682e+02 0.360528\n",
- "95-99 8.218293 -1.563528e+00 -1.902497e+02 0.084891\n",
- "Top 1% 2.054761 3.780259e+01 1.839756e+04 -2.652059"
+ "0-10n 0.103662 0.000000 0.000000 0.000000\n",
+ "0-10z 8.289516 0.000000 0.000000 0.000000\n",
+ "0-10p 12.054710 0.000000 0.000000 0.000000\n",
+ "10-20 20.448902 -0.346412 -16.940394 0.112310\n",
+ "20-30 20.447972 -1.017532 -49.762006 0.187443\n",
+ "30-40 20.448551 -1.261977 -61.714742 0.175748\n",
+ "40-50 20.448614 -1.721193 -84.171605 0.193778\n",
+ "50-60 20.448520 -2.668196 -130.483583 0.242386\n",
+ "60-70 20.448182 -3.700560 -180.972592 0.267797\n",
+ "70-80 20.448218 -4.854202 -237.389972 0.278504\n",
+ "80-90 20.447460 -8.217160 -401.867019 0.358401\n",
+ "90-100 20.449858 26.471633 1294.465375 -0.558736\n",
+ "ALL 204.484164 2.684400 13.127667 -0.019465\n",
+ "90-95 10.225611 -5.561800 -543.908766 0.363041\n",
+ "95-99 8.177219 -2.350932 -287.497784 0.129037\n",
+ "Top 1% 2.047027 34.384364 16797.217391 -2.484655"
]
},
- "execution_count": 16,
+ "execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
@@ -1436,6 +1098,13 @@
"source": [
"diff_extract"
]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
}
],
"metadata": {
@@ -1459,7 +1128,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.8.8"
+ "version": "3.9.13"
},
"title": "Basic Recipe: Static Analysis of a Simple Reform"
},
diff --git a/docs/recipes/recipe01.ipynb b/docs/recipes/recipe01.ipynb
index 27590f221..addfe695e 100644
--- a/docs/recipes/recipe01.ipynb
+++ b/docs/recipes/recipe01.ipynb
@@ -14,41 +14,49 @@
},
{
"cell_type": "code",
- "execution_count": 4,
+ "execution_count": 1,
"metadata": {
"tags": [
"remove-cell"
]
},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Note: you may need to restart the kernel to use updated packages.\n"
+ ]
+ }
+ ],
"source": [
- "# Install conda and taxcalc if in Google Colab.\n",
- "# the `&> /dev/null` silences output except for errors\n",
+ "# Install taxcalc if not already installed\n",
"import sys\n",
- "if 'google.colab' in sys.modules and 'taxbrain' not in sys.modules:\n",
- " !wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh &> /dev/null\n",
- " !bash Miniconda3-latest-Linux-x86_64.sh -bfp /usr/local &> /dev/null\n",
- " # Append path to be able to run packages installed with conda\n",
- " # This must correspond to the conda Python version, which may differ from\n",
- " # the base Colab Python installation.\n",
- " sys.path.append('/usr/local/lib/python3.8/site-packages')\n",
- " # Install taxbrain\n",
- " !yes | conda install -c conda-forge taxcalc &> /dev/null"
+ "if 'taxcalc' not in sys.modules:\n",
+ " %pip install taxcalc &> /dev/null # dev/null suppresses output"
]
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": 2,
"metadata": {
"hide-output": false
},
"outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/Users/jason.debacker/Library/Python/3.9/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n",
+ " warnings.warn(\n"
+ ]
+ },
{
"name": "stdout",
"output_type": "stream",
"text": [
- "2018_REFORM1_iitax_rev($B)= 1490.622\n",
- "2018_REFORM2_iitax_rev($B)= 1318.628\n",
+ "2018_REFORM1_iitax_rev($B)= 1357.959\n",
+ "2018_REFORM2_iitax_rev($B)= 1191.548\n",
"\n"
]
}
@@ -121,7 +129,7 @@
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": 3,
"metadata": {
"hide-output": false
},
@@ -134,22 +142,22 @@
"(taxfall is count of funits with cut in income tax in reform 2 vs 1)\n",
"(taxrise is count of funits with rise in income tax in reform 2 vs 1)\n",
" funits(#m) taxfall(#m) taxrise(#m) agg_diff($b) mean_diff($) aftertax_income_diff(%)\n",
- "0-10n 0.106585 0.000000 0.000000 0.000000 0.000000 0.000000\n",
- "0-10z 8.200964 0.000000 0.000000 0.000000 0.000000 NaN\n",
- "0-10p 11.685544 0.145729 0.017773 -0.010031 -0.858403 0.026886\n",
- "10-20 19.993379 6.131286 2.879208 -0.737282 -36.876308 0.307117\n",
- "20-30 19.992590 9.819025 2.904122 -1.767789 -88.422187 0.388099\n",
- "30-40 19.995314 8.928170 2.495154 -3.420389 -171.059528 0.551945\n",
- "40-50 19.993436 10.540007 2.490796 -5.754637 -287.826313 0.746778\n",
- "50-60 19.994152 12.663991 2.070555 -8.569910 -428.620835 0.894647\n",
- "60-70 19.992890 13.910415 1.784819 -11.604895 -580.451123 0.964668\n",
- "70-80 19.994268 15.376689 1.552446 -16.537168 -827.095476 1.080738\n",
- "80-90 19.993895 17.040071 1.620336 -26.070610 -1303.928552 1.277742\n",
- "90-100 19.993808 18.220631 1.530360 -97.520960 -4877.557973 2.180188\n",
- "ALL 199.936825 112.776014 19.345569 -171.993672 -860.240085 1.396031\n",
- "90-95 9.996300 9.017015 0.757695 -23.229363 -2323.796032 1.660532\n",
- "95-99 7.997983 7.390026 0.586730 -41.609762 -5202.531695 2.400130\n",
- "Top 1% 1.999525 1.813590 0.185935 -32.681835 -16344.800972 2.438041\n"
+ "0-10n 0.099275 0.000000 0.000000 0.000000 0.000000 0.000000\n",
+ "0-10z 8.084542 0.000000 0.000000 0.000000 0.000000 NaN\n",
+ "0-10p 11.735976 0.169109 0.011897 -0.011921 -1.015744 0.031171\n",
+ "10-20 19.921421 6.244056 2.883407 -0.773509 -38.828008 0.322410\n",
+ "20-30 19.920369 10.151692 2.378508 -1.896750 -95.216620 0.419345\n",
+ "30-40 19.917881 9.242263 1.994306 -3.502678 -175.855977 0.571117\n",
+ "40-50 19.923591 11.040202 2.113940 -5.832407 -292.738759 0.767135\n",
+ "50-60 19.919733 13.189452 2.028448 -8.722775 -437.896167 0.920887\n",
+ "60-70 19.921081 14.175127 1.733752 -11.955894 -600.162899 1.000052\n",
+ "70-80 19.921138 15.556599 1.506702 -17.063720 -856.563503 1.126938\n",
+ "80-90 19.920627 16.985440 1.623547 -26.169065 -1313.666732 1.300501\n",
+ "90-100 19.920851 18.176315 1.484443 -90.482764 -4542.113487 2.145463\n",
+ "ALL 199.206484 114.930254 17.758950 -166.411483 -835.371819 1.388568\n",
+ "90-95 9.960209 8.973904 0.753146 -22.527567 -2261.756334 1.659892\n",
+ "95-99 7.968375 7.400993 0.540449 -37.453830 -4700.309681 2.287011\n",
+ "Top 1% 1.992266 1.801418 0.190848 -30.501367 -15309.885606 2.494891\n"
]
}
],
@@ -183,7 +191,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.8.8"
+ "version": "3.9.6"
},
"title": "Recipe 1: Directly Comparing Two Reforms"
},
diff --git a/docs/recipes/recipe02.ipynb b/docs/recipes/recipe02.ipynb
index c8397a372..fda5d9c2a 100644
--- a/docs/recipes/recipe02.ipynb
+++ b/docs/recipes/recipe02.ipynb
@@ -12,7 +12,20 @@
},
{
"cell_type": "code",
- "execution_count": 1,
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import sys\n",
+ "if 'google.colab' in sys.modules:\n",
+ " !pip install -q condacolab &> /dev/null # dev/null suppresses output\n",
+ " import condacolab\n",
+ " condacolab.install()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
"metadata": {
"tags": [
"remove-cell"
@@ -20,24 +33,16 @@
},
"outputs": [],
"source": [
- "# Install conda, taxcalc, and behresp if in Google Colab.\n",
- "# the `&> /dev/null` silences output except for errors\n",
- "import sys\n",
- "if 'google.colab' in sys.modules and 'taxbrain' not in sys.modules:\n",
- " !wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh &> /dev/null\n",
- " !bash Miniconda3-latest-Linux-x86_64.sh -bfp /usr/local &> /dev/null\n",
- " # Append path to be able to run packages installed with conda\n",
- " # This must correspond to the conda Python version, which may differ from\n",
- " # the base Colab Python installation.\n",
- " sys.path.append('/usr/local/lib/python3.8/site-packages')\n",
- " # Install taxbrain\n",
- " !yes | conda install -c conda-forge taxcalc &> /dev/null\n",
- " !yes | conda install -c conda-forge behresp &> /dev/null"
+ "# Install taxcalc if not already installed\n",
+ "if 'taxcalc' not in sys.modules:\n",
+ " %pip install taxcalc &> /dev/null # dev/null suppresses output\n",
+ "if 'behresp' not in sys.modules:\n",
+ " !yes | conda install conda-forge::behresp #&> /dev/null"
]
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": 1,
"metadata": {
"hide-output": false
},
@@ -46,9 +51,9 @@
"name": "stdout",
"output_type": "stream",
"text": [
- "2020_CURRENT_LAW_P__itax_rev($B)= 1321.487\n",
- "2020_REFORM_STATIC__itax_rev($B)= 1329.959\n",
- "2020_REFORM_DYNAMIC_itax_rev($B)= 1316.667\n"
+ "2020_CURRENT_LAW_P__itax_rev($B)= 764.170\n",
+ "2020_REFORM_STATIC__itax_rev($B)= 766.855\n",
+ "2020_REFORM_DYNAMIC_itax_rev($B)= 755.060\n"
]
}
],
@@ -109,7 +114,7 @@
},
{
"cell_type": "code",
- "execution_count": 3,
+ "execution_count": 2,
"metadata": {
"hide-output": false
},
@@ -138,7 +143,7 @@
},
{
"cell_type": "code",
- "execution_count": 4,
+ "execution_count": 3,
"metadata": {
"hide-output": false
},
@@ -172,39 +177,39 @@
" \n",
" \n",
" Returns (#m) | \n",
- " 205.440 | \n",
- " 208.140 | \n",
- " 210.820 | \n",
+ " 204.480 | \n",
+ " 207.080 | \n",
+ " 209.660 | \n",
"
\n",
" \n",
" AGI ($b) | \n",
- " 11475.571 | \n",
- " 11691.366 | \n",
- " 12219.492 | \n",
+ " 11573.238 | \n",
+ " 13156.205 | \n",
+ " 13723.185 | \n",
"
\n",
" \n",
" Itemizers (#m) | \n",
- " 30.950 | \n",
- " 29.170 | \n",
- " 30.670 | \n",
+ " 27.730 | \n",
+ " 32.030 | \n",
+ " 31.220 | \n",
"
\n",
" \n",
" Itemized Deduction ($b) | \n",
- " 824.019 | \n",
- " 760.366 | \n",
- " 809.757 | \n",
+ " 752.189 | \n",
+ " 880.903 | \n",
+ " 882.969 | \n",
"
\n",
" \n",
" Standard Deduction Filers (#m) | \n",
- " 174.490 | \n",
- " 178.960 | \n",
- " 180.140 | \n",
+ " 176.750 | \n",
+ " 175.050 | \n",
+ " 178.440 | \n",
"
\n",
" \n",
" Standard Deduction ($b) | \n",
- " 3188.464 | \n",
- " 3289.501 | \n",
- " 3344.937 | \n",
+ " 3075.468 | \n",
+ " 3066.702 | \n",
+ " 3229.758 | \n",
"
\n",
" \n",
" Personal Exemption ($b) | \n",
@@ -214,51 +219,51 @@
"
\n",
" \n",
" Taxable Income ($b) | \n",
- " 8513.062 | \n",
- " 8731.100 | \n",
- " 9177.528 | \n",
+ " 8617.397 | \n",
+ " 10040.159 | \n",
+ " 10505.738 | \n",
"
\n",
" \n",
" Regular Tax ($b) | \n",
- " 1505.162 | \n",
- " 1544.527 | \n",
- " 1635.569 | \n",
+ " 1505.274 | \n",
+ " 1760.905 | \n",
+ " 1864.719 | \n",
"
\n",
" \n",
" AMT Income ($b) | \n",
- " 10856.448 | \n",
- " 11122.136 | \n",
- " 11611.624 | \n",
+ " 11012.668 | \n",
+ " 12497.322 | \n",
+ " 13059.342 | \n",
"
\n",
" \n",
" AMT Liability ($b) | \n",
- " 0.923 | \n",
- " 0.883 | \n",
- " 0.902 | \n",
+ " 0.568 | \n",
+ " 1.811 | \n",
+ " 1.322 | \n",
"
\n",
" \n",
" AMT Filers (#m) | \n",
- " 0.420 | \n",
- " 0.440 | \n",
- " 0.440 | \n",
+ " 0.090 | \n",
+ " 0.330 | \n",
+ " 0.250 | \n",
"
\n",
" \n",
" Tax before Credits ($b) | \n",
- " 1506.085 | \n",
- " 1545.410 | \n",
- " 1636.472 | \n",
+ " 1505.841 | \n",
+ " 1762.716 | \n",
+ " 1866.041 | \n",
"
\n",
" \n",
" Refundable Credits ($b) | \n",
- " 103.539 | \n",
- " 867.141 | \n",
- " 102.528 | \n",
+ " 654.861 | \n",
+ " 827.256 | \n",
+ " 98.250 | \n",
"
\n",
" \n",
" Nonrefundable Credits ($b) | \n",
- " 94.954 | \n",
- " 3.935 | \n",
- " 98.942 | \n",
+ " 99.385 | \n",
+ " 0.005 | \n",
+ " 107.651 | \n",
"
\n",
" \n",
" Reform Surtaxes ($b) | \n",
@@ -268,39 +273,39 @@
"
\n",
" \n",
" Other Taxes ($b) | \n",
- " 13.895 | \n",
- " 12.309 | \n",
- " 13.109 | \n",
+ " 12.575 | \n",
+ " 13.844 | \n",
+ " 14.446 | \n",
"
\n",
" \n",
" Ind Income Tax ($b) | \n",
- " 1321.487 | \n",
- " 686.642 | \n",
- " 1448.110 | \n",
+ " 764.170 | \n",
+ " 949.299 | \n",
+ " 1674.587 | \n",
"
\n",
" \n",
" Payroll Taxes ($b) | \n",
- " 1186.745 | \n",
- " 1213.929 | \n",
- " 1267.083 | \n",
+ " 1217.941 | \n",
+ " 1318.728 | \n",
+ " 1421.579 | \n",
"
\n",
" \n",
" Combined Liability ($b) | \n",
- " 2508.233 | \n",
- " 1900.571 | \n",
- " 2715.194 | \n",
+ " 1982.111 | \n",
+ " 2268.028 | \n",
+ " 3096.166 | \n",
"
\n",
" \n",
" With Income Tax <= 0 (#m) | \n",
- " 101.340 | \n",
- " 136.280 | \n",
- " 102.410 | \n",
+ " 135.170 | \n",
+ " 127.680 | \n",
+ " 95.970 | \n",
"
\n",
" \n",
" With Combined Tax <= 0 (#m) | \n",
- " 69.360 | \n",
- " 106.330 | \n",
- " 71.670 | \n",
+ " 98.150 | \n",
+ " 97.700 | \n",
+ " 67.730 | \n",
"
\n",
" \n",
" UBI Benefits ($b) | \n",
@@ -310,15 +315,15 @@
"
\n",
" \n",
" Total Benefits, Consumption Value ($b) | \n",
- " 3650.123 | \n",
- " 3871.611 | \n",
- " 4112.506 | \n",
+ " 3617.042 | \n",
+ " 3992.973 | \n",
+ " 4069.559 | \n",
"
\n",
" \n",
" Total Benefits Cost ($b) | \n",
- " 3650.123 | \n",
- " 3871.611 | \n",
- " 4112.506 | \n",
+ " 3617.042 | \n",
+ " 3992.973 | \n",
+ " 4069.559 | \n",
"
\n",
" \n",
"\n",
@@ -326,34 +331,34 @@
],
"text/plain": [
" 2020 2021 2022\n",
- "Returns (#m) 205.440 208.140 210.820\n",
- "AGI ($b) 11475.571 11691.366 12219.492\n",
- "Itemizers (#m) 30.950 29.170 30.670\n",
- "Itemized Deduction ($b) 824.019 760.366 809.757\n",
- "Standard Deduction Filers (#m) 174.490 178.960 180.140\n",
- "Standard Deduction ($b) 3188.464 3289.501 3344.937\n",
+ "Returns (#m) 204.480 207.080 209.660\n",
+ "AGI ($b) 11573.238 13156.205 13723.185\n",
+ "Itemizers (#m) 27.730 32.030 31.220\n",
+ "Itemized Deduction ($b) 752.189 880.903 882.969\n",
+ "Standard Deduction Filers (#m) 176.750 175.050 178.440\n",
+ "Standard Deduction ($b) 3075.468 3066.702 3229.758\n",
"Personal Exemption ($b) 0.000 0.000 0.000\n",
- "Taxable Income ($b) 8513.062 8731.100 9177.528\n",
- "Regular Tax ($b) 1505.162 1544.527 1635.569\n",
- "AMT Income ($b) 10856.448 11122.136 11611.624\n",
- "AMT Liability ($b) 0.923 0.883 0.902\n",
- "AMT Filers (#m) 0.420 0.440 0.440\n",
- "Tax before Credits ($b) 1506.085 1545.410 1636.472\n",
- "Refundable Credits ($b) 103.539 867.141 102.528\n",
- "Nonrefundable Credits ($b) 94.954 3.935 98.942\n",
+ "Taxable Income ($b) 8617.397 10040.159 10505.738\n",
+ "Regular Tax ($b) 1505.274 1760.905 1864.719\n",
+ "AMT Income ($b) 11012.668 12497.322 13059.342\n",
+ "AMT Liability ($b) 0.568 1.811 1.322\n",
+ "AMT Filers (#m) 0.090 0.330 0.250\n",
+ "Tax before Credits ($b) 1505.841 1762.716 1866.041\n",
+ "Refundable Credits ($b) 654.861 827.256 98.250\n",
+ "Nonrefundable Credits ($b) 99.385 0.005 107.651\n",
"Reform Surtaxes ($b) 0.000 0.000 0.000\n",
- "Other Taxes ($b) 13.895 12.309 13.109\n",
- "Ind Income Tax ($b) 1321.487 686.642 1448.110\n",
- "Payroll Taxes ($b) 1186.745 1213.929 1267.083\n",
- "Combined Liability ($b) 2508.233 1900.571 2715.194\n",
- "With Income Tax <= 0 (#m) 101.340 136.280 102.410\n",
- "With Combined Tax <= 0 (#m) 69.360 106.330 71.670\n",
+ "Other Taxes ($b) 12.575 13.844 14.446\n",
+ "Ind Income Tax ($b) 764.170 949.299 1674.587\n",
+ "Payroll Taxes ($b) 1217.941 1318.728 1421.579\n",
+ "Combined Liability ($b) 1982.111 2268.028 3096.166\n",
+ "With Income Tax <= 0 (#m) 135.170 127.680 95.970\n",
+ "With Combined Tax <= 0 (#m) 98.150 97.700 67.730\n",
"UBI Benefits ($b) 0.000 0.000 0.000\n",
- "Total Benefits, Consumption Value ($b) 3650.123 3871.611 4112.506\n",
- "Total Benefits Cost ($b) 3650.123 3871.611 4112.506"
+ "Total Benefits, Consumption Value ($b) 3617.042 3992.973 4069.559\n",
+ "Total Benefits Cost ($b) 3617.042 3992.973 4069.559"
]
},
- "execution_count": 4,
+ "execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
@@ -371,7 +376,7 @@
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": 4,
"metadata": {
"hide-output": false
},
@@ -405,93 +410,93 @@
" \n",
" \n",
" Returns (#m) | \n",
- " 205.440 | \n",
- " 208.140 | \n",
- " 210.820 | \n",
+ " 204.480 | \n",
+ " 207.080 | \n",
+ " 209.660 | \n",
"
\n",
" \n",
" AGI ($b) | \n",
- " 11475.571 | \n",
- " 11691.366 | \n",
- " 12219.492 | \n",
+ " 11573.238 | \n",
+ " 13156.205 | \n",
+ " 13723.185 | \n",
"
\n",
" \n",
" Itemizers (#m) | \n",
- " 30.860 | \n",
- " 29.100 | \n",
- " 30.580 | \n",
+ " 27.660 | \n",
+ " 31.890 | \n",
+ " 31.110 | \n",
"
\n",
" \n",
" Itemized Deduction ($b) | \n",
- " 821.244 | \n",
- " 757.934 | \n",
- " 807.273 | \n",
+ " 749.755 | \n",
+ " 877.489 | \n",
+ " 879.822 | \n",
"
\n",
" \n",
" Standard Deduction Filers (#m) | \n",
- " 174.580 | \n",
- " 179.040 | \n",
- " 180.230 | \n",
+ " 176.820 | \n",
+ " 175.180 | \n",
+ " 178.560 | \n",
"
\n",
" \n",
" Standard Deduction ($b) | \n",
- " 3190.011 | \n",
- " 3290.859 | \n",
- " 3346.410 | \n",
+ " 3076.756 | \n",
+ " 3068.785 | \n",
+ " 3231.586 | \n",
"
\n",
" \n",
" Personal Exemption ($b) | \n",
- " 387.209 | \n",
- " 394.699 | \n",
- " 403.152 | \n",
+ " 375.177 | \n",
+ " 383.210 | \n",
+ " 404.808 | \n",
"
\n",
" \n",
" Taxable Income ($b) | \n",
- " 8274.064 | \n",
- " 8486.881 | \n",
- " 8927.069 | \n",
+ " 8369.678 | \n",
+ " 9776.270 | \n",
+ " 10230.157 | \n",
"
\n",
" \n",
" Regular Tax ($b) | \n",
- " 1511.260 | \n",
- " 1550.256 | \n",
- " 1643.269 | \n",
+ " 1505.595 | \n",
+ " 1764.964 | \n",
+ " 1871.117 | \n",
"
\n",
" \n",
" AMT Income ($b) | \n",
- " 10859.047 | \n",
- " 11124.396 | \n",
- " 11613.962 | \n",
+ " 11014.938 | \n",
+ " 12500.520 | \n",
+ " 13062.305 | \n",
"
\n",
" \n",
" AMT Liability ($b) | \n",
- " 0.978 | \n",
- " 0.964 | \n",
- " 0.978 | \n",
+ " 0.585 | \n",
+ " 1.927 | \n",
+ " 1.414 | \n",
"
\n",
" \n",
" AMT Filers (#m) | \n",
- " 0.450 | \n",
- " 0.450 | \n",
- " 0.460 | \n",
+ " 0.090 | \n",
+ " 0.350 | \n",
+ " 0.270 | \n",
"
\n",
" \n",
" Tax before Credits ($b) | \n",
- " 1512.239 | \n",
- " 1551.220 | \n",
- " 1644.247 | \n",
+ " 1506.180 | \n",
+ " 1766.891 | \n",
+ " 1872.531 | \n",
"
\n",
" \n",
" Refundable Credits ($b) | \n",
- " 106.802 | \n",
- " 867.141 | \n",
- " 106.097 | \n",
+ " 658.196 | \n",
+ " 827.256 | \n",
+ " 101.933 | \n",
"
\n",
" \n",
" Nonrefundable Credits ($b) | \n",
- " 89.372 | \n",
- " 3.728 | \n",
- " 93.371 | \n",
+ " 93.705 | \n",
+ " 0.002 | \n",
+ " 102.012 | \n",
"
\n",
" \n",
" Reform Surtaxes ($b) | \n",
@@ -501,39 +506,39 @@
"
\n",
" \n",
" Other Taxes ($b) | \n",
- " 13.895 | \n",
- " 12.309 | \n",
- " 13.109 | \n",
+ " 12.575 | \n",
+ " 13.844 | \n",
+ " 14.446 | \n",
"
\n",
" \n",
" Ind Income Tax ($b) | \n",
- " 1329.959 | \n",
- " 692.660 | \n",
- " 1457.889 | \n",
+ " 766.855 | \n",
+ " 953.478 | \n",
+ " 1683.031 | \n",
"
\n",
" \n",
" Payroll Taxes ($b) | \n",
- " 1186.745 | \n",
- " 1213.929 | \n",
- " 1267.083 | \n",
+ " 1217.941 | \n",
+ " 1318.728 | \n",
+ " 1421.579 | \n",
"
\n",
" \n",
" Combined Liability ($b) | \n",
- " 2516.705 | \n",
- " 1906.589 | \n",
- " 2724.972 | \n",
+ " 1984.796 | \n",
+ " 2272.206 | \n",
+ " 3104.610 | \n",
"
\n",
" \n",
" With Income Tax <= 0 (#m) | \n",
- " 103.730 | \n",
- " 138.010 | \n",
- " 104.890 | \n",
+ " 137.340 | \n",
+ " 129.960 | \n",
+ " 98.600 | \n",
"
\n",
" \n",
" With Combined Tax <= 0 (#m) | \n",
- " 69.930 | \n",
- " 107.270 | \n",
- " 72.360 | \n",
+ " 98.910 | \n",
+ " 98.600 | \n",
+ " 68.450 | \n",
"
\n",
" \n",
" UBI Benefits ($b) | \n",
@@ -543,15 +548,15 @@
"
\n",
" \n",
" Total Benefits, Consumption Value ($b) | \n",
- " 3650.123 | \n",
- " 3871.611 | \n",
- " 4112.506 | \n",
+ " 3617.042 | \n",
+ " 3992.973 | \n",
+ " 4069.559 | \n",
"
\n",
" \n",
" Total Benefits Cost ($b) | \n",
- " 3650.123 | \n",
- " 3871.611 | \n",
- " 4112.506 | \n",
+ " 3617.042 | \n",
+ " 3992.973 | \n",
+ " 4069.559 | \n",
"
\n",
" \n",
"\n",
@@ -559,34 +564,34 @@
],
"text/plain": [
" 2020 2021 2022\n",
- "Returns (#m) 205.440 208.140 210.820\n",
- "AGI ($b) 11475.571 11691.366 12219.492\n",
- "Itemizers (#m) 30.860 29.100 30.580\n",
- "Itemized Deduction ($b) 821.244 757.934 807.273\n",
- "Standard Deduction Filers (#m) 174.580 179.040 180.230\n",
- "Standard Deduction ($b) 3190.011 3290.859 3346.410\n",
- "Personal Exemption ($b) 387.209 394.699 403.152\n",
- "Taxable Income ($b) 8274.064 8486.881 8927.069\n",
- "Regular Tax ($b) 1511.260 1550.256 1643.269\n",
- "AMT Income ($b) 10859.047 11124.396 11613.962\n",
- "AMT Liability ($b) 0.978 0.964 0.978\n",
- "AMT Filers (#m) 0.450 0.450 0.460\n",
- "Tax before Credits ($b) 1512.239 1551.220 1644.247\n",
- "Refundable Credits ($b) 106.802 867.141 106.097\n",
- "Nonrefundable Credits ($b) 89.372 3.728 93.371\n",
+ "Returns (#m) 204.480 207.080 209.660\n",
+ "AGI ($b) 11573.238 13156.205 13723.185\n",
+ "Itemizers (#m) 27.660 31.890 31.110\n",
+ "Itemized Deduction ($b) 749.755 877.489 879.822\n",
+ "Standard Deduction Filers (#m) 176.820 175.180 178.560\n",
+ "Standard Deduction ($b) 3076.756 3068.785 3231.586\n",
+ "Personal Exemption ($b) 375.177 383.210 404.808\n",
+ "Taxable Income ($b) 8369.678 9776.270 10230.157\n",
+ "Regular Tax ($b) 1505.595 1764.964 1871.117\n",
+ "AMT Income ($b) 11014.938 12500.520 13062.305\n",
+ "AMT Liability ($b) 0.585 1.927 1.414\n",
+ "AMT Filers (#m) 0.090 0.350 0.270\n",
+ "Tax before Credits ($b) 1506.180 1766.891 1872.531\n",
+ "Refundable Credits ($b) 658.196 827.256 101.933\n",
+ "Nonrefundable Credits ($b) 93.705 0.002 102.012\n",
"Reform Surtaxes ($b) 0.000 0.000 0.000\n",
- "Other Taxes ($b) 13.895 12.309 13.109\n",
- "Ind Income Tax ($b) 1329.959 692.660 1457.889\n",
- "Payroll Taxes ($b) 1186.745 1213.929 1267.083\n",
- "Combined Liability ($b) 2516.705 1906.589 2724.972\n",
- "With Income Tax <= 0 (#m) 103.730 138.010 104.890\n",
- "With Combined Tax <= 0 (#m) 69.930 107.270 72.360\n",
+ "Other Taxes ($b) 12.575 13.844 14.446\n",
+ "Ind Income Tax ($b) 766.855 953.478 1683.031\n",
+ "Payroll Taxes ($b) 1217.941 1318.728 1421.579\n",
+ "Combined Liability ($b) 1984.796 2272.206 3104.610\n",
+ "With Income Tax <= 0 (#m) 137.340 129.960 98.600\n",
+ "With Combined Tax <= 0 (#m) 98.910 98.600 68.450\n",
"UBI Benefits ($b) 0.000 0.000 0.000\n",
- "Total Benefits, Consumption Value ($b) 3650.123 3871.611 4112.506\n",
- "Total Benefits Cost ($b) 3650.123 3871.611 4112.506"
+ "Total Benefits, Consumption Value ($b) 3617.042 3992.973 4069.559\n",
+ "Total Benefits Cost ($b) 3617.042 3992.973 4069.559"
]
},
- "execution_count": 5,
+ "execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
@@ -604,7 +609,7 @@
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": 5,
"metadata": {
"hide-output": false
},
@@ -638,93 +643,93 @@
" \n",
" \n",
" Returns (#m) | \n",
- " 205.440 | \n",
- " 208.140 | \n",
- " 210.820 | \n",
+ " 204.480 | \n",
+ " 207.080 | \n",
+ " 209.660 | \n",
"
\n",
" \n",
" AGI ($b) | \n",
- " 11445.873 | \n",
- " 11659.522 | \n",
- " 12185.655 | \n",
+ " 11547.479 | \n",
+ " 13123.042 | \n",
+ " 13686.894 | \n",
"
\n",
" \n",
" Itemizers (#m) | \n",
- " 30.830 | \n",
- " 29.070 | \n",
- " 30.560 | \n",
+ " 27.630 | \n",
+ " 31.870 | \n",
+ " 31.080 | \n",
"
\n",
" \n",
" Itemized Deduction ($b) | \n",
- " 819.497 | \n",
- " 756.391 | \n",
- " 805.450 | \n",
+ " 748.521 | \n",
+ " 875.970 | \n",
+ " 878.204 | \n",
"
\n",
" \n",
" Standard Deduction Filers (#m) | \n",
- " 174.620 | \n",
- " 179.060 | \n",
- " 180.260 | \n",
+ " 176.850 | \n",
+ " 175.200 | \n",
+ " 178.580 | \n",
"
\n",
" \n",
" Standard Deduction ($b) | \n",
- " 3190.774 | \n",
- " 3291.311 | \n",
- " 3347.043 | \n",
+ " 3077.317 | \n",
+ " 3069.335 | \n",
+ " 3232.059 | \n",
"
\n",
" \n",
" Personal Exemption ($b) | \n",
- " 387.209 | \n",
- " 394.699 | \n",
- " 403.152 | \n",
+ " 375.177 | \n",
+ " 383.210 | \n",
+ " 404.808 | \n",
"
\n",
" \n",
" Taxable Income ($b) | \n",
- " 8245.048 | \n",
- " 8455.598 | \n",
- " 8893.866 | \n",
+ " 8344.174 | \n",
+ " 9743.507 | \n",
+ " 10194.449 | \n",
"
\n",
" \n",
" Regular Tax ($b) | \n",
- " 1498.246 | \n",
- " 1536.636 | \n",
- " 1628.637 | \n",
+ " 1494.026 | \n",
+ " 1750.669 | \n",
+ " 1855.496 | \n",
"
\n",
" \n",
" AMT Income ($b) | \n",
- " 10830.848 | \n",
- " 11093.908 | \n",
- " 11581.700 | \n",
+ " 10990.180 | \n",
+ " 12468.655 | \n",
+ " 13027.447 | \n",
"
\n",
" \n",
" AMT Liability ($b) | \n",
- " 0.990 | \n",
- " 0.984 | \n",
- " 1.007 | \n",
+ " 0.583 | \n",
+ " 1.967 | \n",
+ " 1.452 | \n",
"
\n",
" \n",
" AMT Filers (#m) | \n",
- " 0.440 | \n",
- " 0.450 | \n",
- " 0.460 | \n",
+ " 0.090 | \n",
+ " 0.350 | \n",
+ " 0.280 | \n",
"
\n",
" \n",
" Tax before Credits ($b) | \n",
- " 1499.236 | \n",
- " 1537.620 | \n",
- " 1629.644 | \n",
+ " 1494.609 | \n",
+ " 1752.636 | \n",
+ " 1856.948 | \n",
"
\n",
" \n",
" Refundable Credits ($b) | \n",
- " 106.529 | \n",
- " 867.114 | \n",
- " 105.817 | \n",
+ " 657.905 | \n",
+ " 827.233 | \n",
+ " 101.663 | \n",
"
\n",
" \n",
" Nonrefundable Credits ($b) | \n",
- " 89.619 | \n",
- " 3.744 | \n",
- " 93.623 | \n",
+ " 93.933 | \n",
+ " 0.002 | \n",
+ " 102.266 | \n",
"
\n",
" \n",
" Reform Surtaxes ($b) | \n",
@@ -734,39 +739,39 @@
"
\n",
" \n",
" Other Taxes ($b) | \n",
- " 13.579 | \n",
- " 12.004 | \n",
- " 12.784 | \n",
+ " 12.290 | \n",
+ " 13.496 | \n",
+ " 14.083 | \n",
"
\n",
" \n",
" Ind Income Tax ($b) | \n",
- " 1316.667 | \n",
- " 678.766 | \n",
- " 1442.988 | \n",
+ " 755.060 | \n",
+ " 938.897 | \n",
+ " 1667.103 | \n",
"
\n",
" \n",
" Payroll Taxes ($b) | \n",
- " 1185.888 | \n",
- " 1212.854 | \n",
- " 1266.008 | \n",
+ " 1217.293 | \n",
+ " 1317.688 | \n",
+ " 1420.460 | \n",
"
\n",
" \n",
" Combined Liability ($b) | \n",
- " 2502.555 | \n",
- " 1891.620 | \n",
- " 2708.996 | \n",
+ " 1972.353 | \n",
+ " 2256.585 | \n",
+ " 3087.563 | \n",
"
\n",
" \n",
" With Income Tax <= 0 (#m) | \n",
- " 103.580 | \n",
- " 137.980 | \n",
- " 104.690 | \n",
+ " 137.310 | \n",
+ " 129.930 | \n",
+ " 98.420 | \n",
"
\n",
" \n",
" With Combined Tax <= 0 (#m) | \n",
- " 69.730 | \n",
- " 107.250 | \n",
- " 72.170 | \n",
+ " 98.880 | \n",
+ " 98.570 | \n",
+ " 68.270 | \n",
"
\n",
" \n",
" UBI Benefits ($b) | \n",
@@ -776,15 +781,15 @@
"
\n",
" \n",
" Total Benefits, Consumption Value ($b) | \n",
- " 3650.123 | \n",
- " 3871.611 | \n",
- " 4112.506 | \n",
+ " 3617.042 | \n",
+ " 3992.973 | \n",
+ " 4069.559 | \n",
"
\n",
" \n",
" Total Benefits Cost ($b) | \n",
- " 3650.123 | \n",
- " 3871.611 | \n",
- " 4112.506 | \n",
+ " 3617.042 | \n",
+ " 3992.973 | \n",
+ " 4069.559 | \n",
"
\n",
" \n",
"\n",
@@ -792,34 +797,34 @@
],
"text/plain": [
" 2020 2021 2022\n",
- "Returns (#m) 205.440 208.140 210.820\n",
- "AGI ($b) 11445.873 11659.522 12185.655\n",
- "Itemizers (#m) 30.830 29.070 30.560\n",
- "Itemized Deduction ($b) 819.497 756.391 805.450\n",
- "Standard Deduction Filers (#m) 174.620 179.060 180.260\n",
- "Standard Deduction ($b) 3190.774 3291.311 3347.043\n",
- "Personal Exemption ($b) 387.209 394.699 403.152\n",
- "Taxable Income ($b) 8245.048 8455.598 8893.866\n",
- "Regular Tax ($b) 1498.246 1536.636 1628.637\n",
- "AMT Income ($b) 10830.848 11093.908 11581.700\n",
- "AMT Liability ($b) 0.990 0.984 1.007\n",
- "AMT Filers (#m) 0.440 0.450 0.460\n",
- "Tax before Credits ($b) 1499.236 1537.620 1629.644\n",
- "Refundable Credits ($b) 106.529 867.114 105.817\n",
- "Nonrefundable Credits ($b) 89.619 3.744 93.623\n",
+ "Returns (#m) 204.480 207.080 209.660\n",
+ "AGI ($b) 11547.479 13123.042 13686.894\n",
+ "Itemizers (#m) 27.630 31.870 31.080\n",
+ "Itemized Deduction ($b) 748.521 875.970 878.204\n",
+ "Standard Deduction Filers (#m) 176.850 175.200 178.580\n",
+ "Standard Deduction ($b) 3077.317 3069.335 3232.059\n",
+ "Personal Exemption ($b) 375.177 383.210 404.808\n",
+ "Taxable Income ($b) 8344.174 9743.507 10194.449\n",
+ "Regular Tax ($b) 1494.026 1750.669 1855.496\n",
+ "AMT Income ($b) 10990.180 12468.655 13027.447\n",
+ "AMT Liability ($b) 0.583 1.967 1.452\n",
+ "AMT Filers (#m) 0.090 0.350 0.280\n",
+ "Tax before Credits ($b) 1494.609 1752.636 1856.948\n",
+ "Refundable Credits ($b) 657.905 827.233 101.663\n",
+ "Nonrefundable Credits ($b) 93.933 0.002 102.266\n",
"Reform Surtaxes ($b) 0.000 0.000 0.000\n",
- "Other Taxes ($b) 13.579 12.004 12.784\n",
- "Ind Income Tax ($b) 1316.667 678.766 1442.988\n",
- "Payroll Taxes ($b) 1185.888 1212.854 1266.008\n",
- "Combined Liability ($b) 2502.555 1891.620 2708.996\n",
- "With Income Tax <= 0 (#m) 103.580 137.980 104.690\n",
- "With Combined Tax <= 0 (#m) 69.730 107.250 72.170\n",
+ "Other Taxes ($b) 12.290 13.496 14.083\n",
+ "Ind Income Tax ($b) 755.060 938.897 1667.103\n",
+ "Payroll Taxes ($b) 1217.293 1317.688 1420.460\n",
+ "Combined Liability ($b) 1972.353 2256.585 3087.563\n",
+ "With Income Tax <= 0 (#m) 137.310 129.930 98.420\n",
+ "With Combined Tax <= 0 (#m) 98.880 98.570 68.270\n",
"UBI Benefits ($b) 0.000 0.000 0.000\n",
- "Total Benefits, Consumption Value ($b) 3650.123 3871.611 4112.506\n",
- "Total Benefits Cost ($b) 3650.123 3871.611 4112.506"
+ "Total Benefits, Consumption Value ($b) 3617.042 3992.973 4069.559\n",
+ "Total Benefits Cost ($b) 3617.042 3992.973 4069.559"
]
},
- "execution_count": 6,
+ "execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
@@ -850,7 +855,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.8.8"
+ "version": "3.9.18"
},
"title": "Recipe 2: Estimating Behavioral Response to Reform"
},
diff --git a/docs/recipes/recipe03.ipynb b/docs/recipes/recipe03.ipynb
index b78793ed2..649da23c8 100644
--- a/docs/recipes/recipe03.ipynb
+++ b/docs/recipes/recipe03.ipynb
@@ -18,20 +18,20 @@
"remove-cell"
]
},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Note: you may need to restart the kernel to use updated packages.\n"
+ ]
+ }
+ ],
"source": [
- "# Install conda and taxcalc if in Google Colab.\n",
- "# the `&> /dev/null` silences output except for errors\n",
+ "# Install taxcalc if not already installed\n",
"import sys\n",
- "if 'google.colab' in sys.modules and 'taxbrain' not in sys.modules:\n",
- " !wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh &> /dev/null\n",
- " !bash Miniconda3-latest-Linux-x86_64.sh -bfp /usr/local &> /dev/null\n",
- " # Append path to be able to run packages installed with conda\n",
- " # This must correspond to the conda Python version, which may differ from\n",
- " # the base Colab Python installation.\n",
- " sys.path.append('/usr/local/lib/python3.8/site-packages')\n",
- " # Install taxbrain\n",
- " !yes | conda install -c conda-forge taxcalc &> /dev/null"
+ "if 'taxcalc' not in sys.modules:\n",
+ " %pip install taxcalc &> /dev/null # dev/null suppresses output"
]
},
{
@@ -40,7 +40,18 @@
"metadata": {
"hide-output": false
},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/Users/jason.debacker/Library/Python/3.9/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n",
+ " warnings.warn(\n",
+ "/var/folders/bw/1cvntf9x02b49nfwgy_qnfn00000gp/T/ipykernel_23337/2301227557.py:21: FutureWarning: The default of observed=False is deprecated and will be changed to True in a future version of pandas. Pass observed=False to retain current behavior or observed=True to adopt the future default and silence this warning.\n",
+ " gbydf = vardf.groupby('table_row', as_index=False)\n"
+ ]
+ }
+ ],
"source": [
"import taxcalc as tc\n",
"import numpy as np\n",
@@ -84,16 +95,16 @@
"output_type": "stream",
"text": [
"AGI Category \t Num(#M)\t Avg($K)\n",
- "[-9e+99, 1) \t 0.076\t 0.198\n",
- "[1, 5000) \t 3.391\t 0.479\n",
- "[5000, 10000) \t 5.145\t 1.228\n",
- "[10000, 15000) \t 5.789\t 1.793\n",
- "[15000, 20000) \t 3.259\t 3.448\n",
- "[20000, 25000) \t 2.663\t 4.204\n",
- "[25000, 30000) \t 2.399\t 3.765\n",
- "[30000, 40000) \t 4.216\t 2.550\n",
- "[40000, 50000) \t 2.418\t 1.418\n",
- "[50000, 75000) \t 0.548\t 0.533\n",
+ "[-9e+99, 1) \t 0.077\t 0.306\n",
+ "[1, 5000) \t 3.177\t 0.548\n",
+ "[5000, 10000) \t 4.808\t 1.343\n",
+ "[10000, 15000) \t 5.338\t 1.878\n",
+ "[15000, 20000) \t 3.159\t 3.613\n",
+ "[20000, 25000) \t 2.578\t 4.326\n",
+ "[25000, 30000) \t 2.303\t 3.867\n",
+ "[30000, 40000) \t 4.457\t 2.660\n",
+ "[40000, 50000) \t 2.644\t 1.384\n",
+ "[50000, 75000) \t 0.536\t 0.547\n",
"[75000, 100000) \t 0.000\t nan\n",
"[100000, 200000) \t 0.000\t nan\n",
"[200000, 500000) \t 0.000\t nan\n",
@@ -103,7 +114,7 @@
"[2000000, 5000000) \t 0.000\t nan\n",
"[5000000, 10000000) \t 0.000\t nan\n",
"[10000000, 9e+99) \t 0.000\t nan\n",
- "ALL \t 29.906\t 2.149\n"
+ "ALL \t 29.077\t 2.254\n"
]
}
],
@@ -153,7 +164,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.8.8"
+ "version": "3.9.6"
},
"title": "Recipe 3: Creating a Custom Table"
},
diff --git a/docs/recipes/recipe04.ipynb b/docs/recipes/recipe04.ipynb
index d38643cc0..f4ed1c18c 100644
--- a/docs/recipes/recipe04.ipynb
+++ b/docs/recipes/recipe04.ipynb
@@ -13,7 +13,20 @@
},
{
"cell_type": "code",
- "execution_count": 1,
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import sys\n",
+ "if 'google.colab' in sys.modules:\n",
+ " !pip install -q condacolab &> /dev/null # dev/null suppresses output\n",
+ " import condacolab\n",
+ " condacolab.install()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
"metadata": {
"tags": [
"remove-cell"
@@ -21,24 +34,16 @@
},
"outputs": [],
"source": [
- "# Install conda, taxcalc, and behresp if in Google Colab.\n",
- "# the `&> /dev/null` silences output except for errors\n",
- "import sys\n",
- "if 'google.colab' in sys.modules and 'taxbrain' not in sys.modules:\n",
- " !wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh &> /dev/null\n",
- " !bash Miniconda3-latest-Linux-x86_64.sh -bfp /usr/local &> /dev/null\n",
- " # Append path to be able to run packages installed with conda\n",
- " # This must correspond to the conda Python version, which may differ from\n",
- " # the base Colab Python installation.\n",
- " sys.path.append('/usr/local/lib/python3.8/site-packages')\n",
- " # Install taxbrain\n",
- " !yes | conda install -c conda-forge taxcalc &> /dev/null\n",
- " !yes | conda install -c conda-forge behresp &> /dev/null"
+ "# Install taxcalc if not already installed\n",
+ "if 'taxcalc' not in sys.modules:\n",
+ " %pip install taxcalc &> /dev/null # dev/null suppresses output\n",
+ "if 'behresp' not in sys.modules:\n",
+ " !yes | conda install conda-forge::behresp &> /dev/null"
]
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": 1,
"metadata": {
"hide-output": false
},
@@ -50,9 +55,9 @@
"\n",
"Response in Charitable Giving by Earnings Group\n",
"Earnings Group \t Num(#M)\tResp($B)\t Resp(%)\n",
- "[-9e+99, 50000) \t 153.673\t 0.579\t 0.35\n",
- "[50000, 9e+99) \t 51.771\t 2.810\t 1.92\n",
- "ALL \t 205.444\t 3.388\t 1.09\n"
+ "[-9e+99, 50000) \t 151.185\t 0.662\t 0.40\n",
+ "[50000, 9e+99) \t 53.299\t 3.088\t 1.99\n",
+ "ALL \t 204.484\t 3.749\t 1.17\n"
]
}
],
@@ -160,7 +165,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.8.8"
+ "version": "3.9.13"
},
"title": "Recipe 4: Estimating Differential Reform Response"
},
diff --git a/docs/recipes/recipe04_pandas.ipynb b/docs/recipes/recipe04_pandas.ipynb
index 56996bc4b..2b3f39499 100644
--- a/docs/recipes/recipe04_pandas.ipynb
+++ b/docs/recipes/recipe04_pandas.ipynb
@@ -13,7 +13,20 @@
},
{
"cell_type": "code",
- "execution_count": 1,
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import sys\n",
+ "if 'google.colab' in sys.modules:\n",
+ " !pip install -q condacolab &> /dev/null # dev/null suppresses output\n",
+ " import condacolab\n",
+ " condacolab.install()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
"metadata": {
"tags": [
"remove-cell"
@@ -21,24 +34,16 @@
},
"outputs": [],
"source": [
- "# Install conda, taxcalc, and behresp if in Google Colab.\n",
- "# the `&> /dev/null` silences output except for errors\n",
- "import sys\n",
- "if 'google.colab' in sys.modules and 'taxbrain' not in sys.modules:\n",
- " !wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh &> /dev/null\n",
- " !bash Miniconda3-latest-Linux-x86_64.sh -bfp /usr/local &> /dev/null\n",
- " # Append path to be able to run packages installed with conda\n",
- " # This must correspond to the conda Python version, which may differ from\n",
- " # the base Colab Python installation.\n",
- " sys.path.append('/usr/local/lib/python3.8/site-packages')\n",
- " # Install taxbrain\n",
- " !yes | conda install -c conda-forge taxcalc &> /dev/null\n",
- " !yes | conda install -c conda-forge behresp &> /dev/null"
+ "# Install taxcalc if not already installed\n",
+ "if 'taxcalc' not in sys.modules:\n",
+ " %pip install taxcalc &> /dev/null # dev/null suppresses output\n",
+ "if 'behresp' not in sys.modules:\n",
+ " !yes | conda install conda-forge::behresp &> /dev/null"
]
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": 1,
"metadata": {
"hide-output": false
},
@@ -153,7 +158,7 @@
},
{
"cell_type": "code",
- "execution_count": 3,
+ "execution_count": 2,
"metadata": {
"hide-output": false
},
@@ -189,23 +194,23 @@
" \n",
" 0 | \n",
" [-9e+99, 50000.0) | \n",
- " 153.673 | \n",
- " 0.579 | \n",
- " 0.354 | \n",
+ " 151.185 | \n",
+ " 0.662 | \n",
+ " 0.399 | \n",
"
\n",
" \n",
" 1 | \n",
" [50000.0, 9e+99) | \n",
- " 51.771 | \n",
- " 2.810 | \n",
- " 1.924 | \n",
+ " 53.299 | \n",
+ " 3.088 | \n",
+ " 1.992 | \n",
"
\n",
" \n",
" 2 | \n",
" TOTAL | \n",
- " 205.444 | \n",
- " 3.388 | \n",
- " 1.094 | \n",
+ " 204.484 | \n",
+ " 3.749 | \n",
+ " 1.169 | \n",
"
\n",
" \n",
"\n",
@@ -213,12 +218,12 @@
],
"text/plain": [
" Earnings Group Num(#M) Resp($B) Resp(%)\n",
- "0 [-9e+99, 50000.0) 153.673 0.579 0.354\n",
- "1 [50000.0, 9e+99) 51.771 2.810 1.924\n",
- "2 TOTAL 205.444 3.388 1.094"
+ "0 [-9e+99, 50000.0) 151.185 0.662 0.399\n",
+ "1 [50000.0, 9e+99) 53.299 3.088 1.992\n",
+ "2 TOTAL 204.484 3.749 1.169"
]
},
- "execution_count": 3,
+ "execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
@@ -249,7 +254,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.8.8"
+ "version": "3.9.13"
},
"title": "Recipe 4: Estimating Differential Reform Response - pandas version"
},
diff --git a/docs/recipes/recipe05.ipynb b/docs/recipes/recipe05.ipynb
index b1e8d1581..9a7c458c6 100644
--- a/docs/recipes/recipe05.ipynb
+++ b/docs/recipes/recipe05.ipynb
@@ -27,60 +27,68 @@
},
{
"cell_type": "code",
- "execution_count": 3,
+ "execution_count": 1,
"metadata": {
"tags": [
"remove-cell"
]
},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Note: you may need to restart the kernel to use updated packages.\n"
+ ]
+ }
+ ],
"source": [
- "# Install conda and taxcalc if in Google Colab.\n",
- "# the `&> /dev/null` silences output except for errors\n",
+ "# Install taxcalc if not already installed\n",
"import sys\n",
- "if 'google.colab' in sys.modules and 'taxbrain' not in sys.modules:\n",
- " !wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh &> /dev/null\n",
- " !bash Miniconda3-latest-Linux-x86_64.sh -bfp /usr/local &> /dev/null\n",
- " # Append path to be able to run packages installed with conda\n",
- " # This must correspond to the conda Python version, which may differ from\n",
- " # the base Colab Python installation.\n",
- " sys.path.append('/usr/local/lib/python3.8/site-packages')\n",
- " # Install taxbrain\n",
- " !yes | conda install -c conda-forge taxcalc &> /dev/null"
+ "if 'taxcalc' not in sys.modules:\n",
+ " %pip install taxcalc &> /dev/null # dev/null suppresses output"
]
},
{
"cell_type": "code",
- "execution_count": 4,
+ "execution_count": 2,
"metadata": {
"hide-output": false
},
"outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/Users/jason.debacker/Library/Python/3.9/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n",
+ " warnings.warn(\n"
+ ]
+ },
{
"name": "stdout",
"output_type": "stream",
"text": [
- "2018_REFORM1_iitax_rev($B)= 1490.622\n",
- "2018_REFORM2_iitax_rev($B)= 1318.628\n",
+ "2018_REFORM1_iitax_rev($B)= 1357.959\n",
+ "2018_REFORM2_iitax_rev($B)= 1191.548\n",
"\n",
"Extract of 2018 income-tax difference table by expanded-income decile\n",
"(taxfall is count of funits with cut in income tax in reform 2 vs 1)\n",
"(taxrise is count of funits with rise in income tax in reform 2 vs 1)\n",
" funits(#m) taxfall(#m) taxrise(#m) agg_diff($b) mean_diff($) aftertax_income_diff(%)\n",
- "<$0K 0.139124 0.0 0.0 0.0 0.0 0.0\n",
- "=$0K 29.360997 0.003983 0.002566 -0.000287 -0.009787 -10.994703\n",
- "$0-10K 32.634225 2.439499 1.481056 -0.192404 -5.895768 0.153202\n",
- "$10-20K 21.215453 11.400456 3.749611 -1.574948 -74.235899 0.523949\n",
- "$20-30K 18.488102 13.415713 3.117832 -3.833011 -207.323123 0.911481\n",
- "$30-40K 16.846289 13.309936 2.780591 -7.114322 -422.307974 1.398477\n",
- "$40-50K 13.333506 11.09226 1.916136 -8.326389 -624.471124 1.663769\n",
- "$50-75K 22.922516 20.261737 2.364728 -20.252232 -883.508263 1.781652\n",
- "$75-100K 13.730687 12.392468 1.229796 -16.292847 -1186.601008 1.73044\n",
- "$100-200K 21.754256 19.722118 1.936147 -41.919663 -1926.963736 1.832605\n",
- "$200-500K 7.847764 7.236539 0.604507 -43.906601 -5594.791585 2.662069\n",
- "$500-1000K 1.149148 1.07263 0.076518 -15.341258 -13350.120894 2.854432\n",
- ">$1000K 0.514758 0.428676 0.086082 -13.239708 -25720.23792 1.98472\n",
- "ALL 199.936825 112.776014 19.345569 -171.993672 -860.240085 1.89689\n"
+ "<$0K 0.129804 0.0 0.0 0.0 0.0 0.0\n",
+ "=$0K 28.997572 0.003718 0.001407 -0.000261 -0.008994 -10.526744\n",
+ "$0-10K 32.922181 2.554743 1.40047 -0.203435 -6.179258 0.159624\n",
+ "$10-20K 21.708136 12.425967 3.591809 -1.710808 -78.80952 0.55683\n",
+ "$20-30K 18.701441 14.515061 2.676056 -4.194498 -224.287399 0.984496\n",
+ "$30-40K 16.854735 13.888505 2.418122 -7.553283 -448.140132 1.486787\n",
+ "$40-50K 13.339599 11.341441 1.754578 -8.763624 -656.963111 1.751975\n",
+ "$50-75K 22.042293 19.660424 2.143487 -20.04181 -909.243402 1.832268\n",
+ "$75-100K 13.857519 12.601969 1.151749 -16.995741 -1226.463508 1.787595\n",
+ "$100-200K 21.789028 19.756532 1.942246 -42.49801 -1950.431685 1.850584\n",
+ "$200-500K 7.451103 6.918421 0.529425 -41.047952 -5508.976365 2.663093\n",
+ "$500-1000K 0.967451 0.891342 0.076109 -12.384206 -12800.85902 2.725012\n",
+ ">$1000K 0.445622 0.372131 0.073491 -11.017856 -24724.688454 1.966994\n",
+ "ALL 199.206484 114.930254 17.75895 -166.411483 -835.371819 1.899907\n"
]
}
],
@@ -243,7 +251,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.8.8"
+ "version": "3.9.6"
},
"title": "Recipe 5: Redefining Expanded Income"
},
diff --git a/docs/recipes/recipe06.ipynb b/docs/recipes/recipe06.ipynb
index 42a98b335..41b28c10c 100644
--- a/docs/recipes/recipe06.ipynb
+++ b/docs/recipes/recipe06.ipynb
@@ -32,7 +32,7 @@
},
{
"cell_type": "code",
- "execution_count": 1,
+ "execution_count": 3,
"metadata": {
"tags": [
"remove-cell"
@@ -40,23 +40,15 @@
},
"outputs": [],
"source": [
- "# Install conda and taxcalc if in Google Colab.\n",
- "# the `&> /dev/null` silences output except for errors\n",
+ "# Install taxcalc if not already installed\n",
"import sys\n",
- "if 'google.colab' in sys.modules and 'taxbrain' not in sys.modules:\n",
- " !wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh &> /dev/null\n",
- " !bash Miniconda3-latest-Linux-x86_64.sh -bfp /usr/local &> /dev/null\n",
- " # Append path to be able to run packages installed with conda\n",
- " # This must correspond to the conda Python version, which may differ from\n",
- " # the base Colab Python installation.\n",
- " sys.path.append('/usr/local/lib/python3.8/site-packages')\n",
- " # Install taxbrain\n",
- " !yes | conda install -c conda-forge taxcalc &> /dev/null"
+ "if 'taxcalc' not in sys.modules:\n",
+ " %pip install taxcalc &> /dev/null # dev/null suppresses output"
]
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": 4,
"metadata": {
"hide-output": false
},
@@ -66,10 +58,10 @@
"output_type": "stream",
"text": [
"YEAR UNITS ITAX1 ITAX2 EITC1 EITC2 COLR1 COLR2\n",
- "2019 202.7 1402.9 1402.9 59.3 59.3 0.0 0.0\n",
- "2020 205.4 1321.5 1042.9 64.3 0.0 0.0 342.8\n",
- "2021 208.1 686.6 436.7 93.7 0.0 0.0 343.6\n",
- "2022 210.8 1448.1 1170.1 63.6 0.0 0.0 341.5\n"
+ "2019 201.9 1259.0 1259.0 63.3 63.3 0.0 0.0\n",
+ "2020 204.5 764.2 473.6 65.5 0.0 0.0 356.1\n",
+ "2021 207.1 949.3 694.1 76.4 0.0 0.0 331.6\n",
+ "2022 209.7 1674.6 1386.5 60.7 0.0 0.0 348.8\n"
]
}
],
@@ -231,6 +223,13 @@
" eitc1 * 1e-9, eitc2 * 1e-9,\n",
" colr1 * 1e-9, colr2 * 1e-9))"
]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
}
],
"metadata": {
@@ -254,7 +253,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.8.8"
+ "version": "3.9.6"
},
"title": "Recipe 6: Analyzing a Non-Parametric Reform"
},
diff --git a/environment.yml b/environment.yml
index ea0200d93..19dc1a14d 100644
--- a/environment.yml
+++ b/environment.yml
@@ -2,7 +2,7 @@ name: taxcalc-dev
channels:
- conda-forge
dependencies:
-- python
+- "python<3.12"
- curl
- "numpy>=1.14"
- "pandas>=1.2.0"
diff --git a/setup.py b/setup.py
index b90594a85..84bf4ea77 100644
--- a/setup.py
+++ b/setup.py
@@ -1,38 +1,45 @@
from setuptools import setup
-with open('README.md') as f:
+with open("README.md") as f:
longdesc = f.read()
-version = '3.5.0'
+version = "3.5.0"
config = {
- 'description': 'Tax Calculator',
- 'url': 'https://github.com/PSLmodels/Tax-Calculator',
- 'download_url': 'https://github.com/PSLmodels/Tax-Calculator',
- 'description': 'taxcalc',
- 'long_description': longdesc,
- 'version': version,
- 'license': 'CC0 1.0 Universal (CC0 1.0) Public Domain Dedication',
- 'packages': ['taxcalc', 'taxcalc.cli'],
- 'include_package_data': True,
- 'name': 'taxcalc',
- 'install_requires': ['setuptools', 'numpy', 'pandas', 'bokeh', 'numba'],
- 'classifiers': [
- 'Development Status :: 4 - Beta',
- 'Intended Audience :: Developers',
- 'Natural Language :: English',
- 'License :: CC0 1.0 Universal (CC0 1.0) Public Domain Dedication',
- 'Operating System :: OS Independent',
- 'Programming Language :: Python',
- 'Programming Language :: Python :: 3',
- 'Programming Language :: Python :: 3.7',
- 'Programming Language :: Python :: 3.8',
- 'Programming Language :: Python :: 3.9',
- 'Topic :: Software Development :: Libraries :: Python Modules'],
- 'tests_require': ['pytest'],
- 'entry_points': {
- 'console_scripts': ['tc=taxcalc.cli.tc:cli_tc_main']
- }
+ "description": "Tax Calculator",
+ "url": "https://github.com/PSLmodels/Tax-Calculator",
+ "download_url": "https://github.com/PSLmodels/Tax-Calculator",
+ "description": "taxcalc",
+ "long_description": longdesc,
+ "version": version,
+ "license": "CC0 1.0 Universal (CC0 1.0) Public Domain Dedication",
+ "packages": ["taxcalc", "taxcalc.cli"],
+ "include_package_data": True,
+ "name": "taxcalc",
+ "install_requires": [
+ "setuptools",
+ "numpy",
+ "pandas",
+ "bokeh",
+ "numba",
+ "requests",
+ "paramtools",
+ ],
+ "classifiers": [
+ "Development Status :: 4 - Beta",
+ "Intended Audience :: Developers",
+ "Natural Language :: English",
+ "License :: CC0 1.0 Universal (CC0 1.0) Public Domain Dedication",
+ "Operating System :: OS Independent",
+ "Programming Language :: Python",
+ "Programming Language :: Python :: 3",
+ "Programming Language :: Python :: 3.9",
+ "Programming Language :: Python :: 3.10",
+ "Programming Language :: Python :: 3.11",
+ "Topic :: Software Development :: Libraries :: Python Modules",
+ ],
+ "tests_require": ["pytest"],
+ "entry_points": {"console_scripts": ["tc=taxcalc.cli.tc:cli_tc_main"]},
}
setup(**config)
diff --git a/taxcalc.egg-info/PKG-INFO b/taxcalc.egg-info/PKG-INFO
index 0f8ed3e11..031857e11 100644
--- a/taxcalc.egg-info/PKG-INFO
+++ b/taxcalc.egg-info/PKG-INFO
@@ -12,21 +12,24 @@ Classifier: License :: CC0 1.0 Universal (CC0 1.0) Public Domain Dedication
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.7
-Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
+Classifier: Programming Language :: Python :: 3.10
+Classifier: Programming Language :: Python :: 3.11
Classifier: Topic :: Software Development :: Libraries :: Python Modules
-License-File: LICENSE.md
+License-File: LICENSE
Requires-Dist: setuptools
Requires-Dist: numpy
Requires-Dist: pandas
Requires-Dist: bokeh
Requires-Dist: numba
+Requires-Dist: requests
+Requires-Dist: paramtools
-[![PSL cataloged](https://img.shields.io/badge/PSL-cataloged-a0a0a0.svg)](https://www.PSLmodels.org)
-[![Python 3.6+](https://img.shields.io/badge/python-3.6%2B-blue.svg)](https://www.python.org/downloads/release/python-360/)
-[![Build Status](https://travis-ci.org/PSLmodels/Tax-Calculator.svg?branch=master)](https://travis-ci.org/PSLmodels/Tax-Calculator)
-[![Codecov](https://codecov.io/gh/PSLmodels/Tax-Calculator/branch/master/graph/badge.svg)](https://codecov.io/gh/PSLmodels/Tax-Calculator)
+| | |
+| --- | --- |
+| 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/) |
+| 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)|
+| 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) |
Tax-Calculator
@@ -36,7 +39,7 @@ Tax-Calculator is an open-source microsimulation model for static
analysis of USA federal income and payroll taxes.
We are seeking contributors and maintainers. If you are interested in joining the project as a contributor or maintainer,
-open a new [issue](https://github.com/PSLmodels/Tax-Calculator/issues) and ping @MattHJensen or @jdebacker -- or just jump right in.
+open a new [issue](https://github.com/PSLmodels/Tax-Calculator/issues) and ping [@MattHJensen](https://github.com/MattHJensen/) or [@jdebacker](https://github.com/jdebacker/) -- or just jump right in.
Complete documentation is available
[here](https://PSLmodels.github.io/Tax-Calculator/).
diff --git a/taxcalc.egg-info/SOURCES.txt b/taxcalc.egg-info/SOURCES.txt
index 747863a02..7c9f694e2 100644
--- a/taxcalc.egg-info/SOURCES.txt
+++ b/taxcalc.egg-info/SOURCES.txt
@@ -1,4 +1,4 @@
-LICENSE.md
+LICENSE
MANIFEST.in
README.md
setup.py
diff --git a/taxcalc.egg-info/requires.txt b/taxcalc.egg-info/requires.txt
index 1f04885ba..f8a31659f 100644
--- a/taxcalc.egg-info/requires.txt
+++ b/taxcalc.egg-info/requires.txt
@@ -3,3 +3,5 @@ numpy
pandas
bokeh
numba
+requests
+paramtools
diff --git a/taxcalc/tests/test_stats_benchmark.csv b/taxcalc/tests/test_stats_benchmark.csv
index 33625476c..e6cface7b 100644
--- a/taxcalc/tests/test_stats_benchmark.csv
+++ b/taxcalc/tests/test_stats_benchmark.csv
@@ -1,335 +1,335 @@
,test_id,pytest_obj,status,duration_ms,test_tuple,expected_value,revision,expect,fname,jfname,pfname,good_revision,params,is_paramtools,set_year,csv,fyear,input_data,baseline,reform,assump,outdir,year,base,ref,asm,dumpvar_str,str_valid,num_vars,time_diff
-0,taxcalc/tests/test_4package.py::test_for_consistency,,passed,3.8533480000069176,,,,,,,,,,,,,,,,,,,,,,,,,,0.012277999985599308
-1,taxcalc/tests/test_benefits.py::test_benefits,,passed,4128.532368999999,,,,,,,,,,,,,,,,,,,,,,,,,,192.6854849999986
-2,taxcalc/tests/test_calcfunctions.py::test_calc_and_used_vars,,passed,38.0213789999857,,,,,,,,,,,,,,,,,,,,,,,,,,3.261771999973462
-3,taxcalc/tests/test_calcfunctions.py::test_function_args_usage,,passed,1.8888740000022608,,,,,,,,,,,,,,,,,,,,,,,,,,0.0009649999981320434
-4,taxcalc/tests/test_calcfunctions.py::test_DependentCare,,passed,0.2579599999990023,,,,,,,,,,,,,,,,,,,,,,,,,,0.014933999977984114
-5,"taxcalc/tests/test_calcfunctions.py::test_StdDed[Married, young]",,passed,0.1894120000258681,"(0, 1000, [6000, 12000, 6000, 12000, 12000], 45, 44, [1500, 1200, 1500, 1500, 1500], 1000, 2, 0, 0, 0, 2, 0, False, 0)",12000,,,,,,,,,,,,,,,,,,,,,,,,0.00539700002377691
-6,"taxcalc/tests/test_calcfunctions.py::test_StdDed[Married, allow charity]",,passed,0.17630799999324154,"(0, 1000, [6000, 12000, 6000, 12000, 12000], 66, 44, [1500, 1200, 1500, 1500, 1500], 1000, 2, 0, 1, 1, 2, 200, True, 300)",15800,,,,,,,,,,,,,,,,,,,,,,,,0.003023999965989843
-7,"taxcalc/tests/test_calcfunctions.py::test_StdDed[Married, allow charity, over limit]",,passed,0.1756569999997737,"(0, 1000, [6000, 12000, 6000, 12000, 12000], 44, 66, [1500, 1200, 1500, 1500, 1500], 1000, 2, 0, 0, 0, 2, 400, True, 300)",13500,,,,,,,,,,,,,,,,,,,,,,,,0.0020720000293295016
-8,"taxcalc/tests/test_calcfunctions.py::test_StdDed[Married, two old]",,passed,0.17298200000936959,"(0, 1200, [6000, 12000, 6000, 12000, 12000], 66, 67, [1500, 1200, 1500, 1500, 1500], 1000, 2, 0, 0, 0, 2, 0, True, 0)",14400,,,,,,,,,,,,,,,,,,,,,,,,0.0052079999761645845
-9,taxcalc/tests/test_calcfunctions.py::test_StdDed[Single 1],,passed,0.17661800001178563,"(0, 1000, [6000, 12000, 6000, 12000, 12000], 44, 0, [1500, 1200, 1500, 1500, 1500], 1000, 1, 0, 0, 0, 2, 0, True, 0)",6000,,,,,,,,,,,,,,,,,,,,,,,,0.007160000052408633
-10,taxcalc/tests/test_calcfunctions.py::test_StdDed[Single 2],,passed,0.1849129999982324,"(0, 1000, [6000, 12000, 6000, 12000, 12000], 44, 0, [1500, 1200, 1500, 1500, 1500], 1000, 1, 0, 0, 0, 2, 0, True, 0)",6000,,,,,,,,,,,,,,,,,,,,,,,,0.01702800000202842
-11,"taxcalc/tests/test_calcfunctions.py::test_StdDed[Married, Single]",,passed,0.17993499997714935,"(0, 1000, [6000, 12000, 6000, 12000, 12000], 44, 0, [1500, 1200, 1500, 1500, 1500], 1000, 3, 1, 0, 0, 2, 0, True, 0)",0,,,,,,,,,,,,,,,,,,,,,,,,0.014104000030101843
-12,"taxcalc/tests/test_calcfunctions.py::test_StdDed[Marrid, Single, dep, under earn]",,passed,0.1747450000095796,"(1, 200, [6000, 12000, 6000, 12000, 12000], 44, 0, [1500, 1200, 1500, 1500, 1500], 1000, 3, 0, 0, 0, 2, 0, True, 0)",1000,,,,,,,,,,,,,,,,,,,,,,,,0.004165000035527611
-13,"taxcalc/tests/test_calcfunctions.py::test_StdDed[Married, Single, dep, over earn]",,passed,0.18193800002563876,"(1, 1000, [6000, 12000, 6000, 12000, 12000], 44, 0, [1500, 1200, 1500, 1500, 1500], 1000, 3, 0, 0, 0, 2, 0, True, 0)",1350,,,,,,,,,,,,,,,,,,,,,,,,0.010997000060797346
-14,taxcalc/tests/test_calcfunctions.py::test_EI_PayrollTax[case 1],,passed,0.254122000001189,"(120000, 10000, 15000, 100, 2000, 0.12, 0.03, 0, 99999999999, 400, 0, 0, 0, 0, 0, 0, None, None, None, None, None, None, None, None, None, None, None)","(0, 4065, 4065, 0, 0, 3252, 25000, 10000, 15000, 10100, 17000)",,,,,,,,,,,,,,,,,,,,,,,,0.012257999969733702
-15,taxcalc/tests/test_calcfunctions.py::test_EI_PayrollTax[case 2],,passed,0.2240869999923234,"(120000, 10000, 15000, 100, 2000, 0.12, 0.03, 0, 99999999999, 400, 2000, 0, 10000, 0, 0, 3000, None, None, None, None, None, None, None, None, None, None, None)","(15000, 6146.25, 4065, 2081.25, 1040.625, 4917, 38959.375, 21167.5, 17791.875, 21380, 19820)",,,,,,,,,,,,,,,,,,,,,,,,0.009384000009049487
-16,taxcalc/tests/test_calcfunctions.py::test_EI_PayrollTax[case 3],,passed,0.24267099999519814,"(120000, 150000, 15000, 100, 2000, 0.12, 0.03, 0, 99999999999, 400, 2000, 0, 10000, 0, 0, 3000, None, None, None, None, None, None, None, None, None, None, None)","(15000, 22202.25, 21453, 749.25, 374.625, 16773, 179625.375, 161833.5, 17791.875, 161380, 19820)",,,,,,,,,,,,,,,,,,,,,,,,0.029362000049104636
-17,taxcalc/tests/test_calcfunctions.py::test_EI_PayrollTax[case 4],,passed,0.22459800001684016,"(120000, 500000, 15000, 100, 2000, 0.12, 0.03, 0, 400000, 400, 2000, 0, 10000, 0, 0, 3000, None, None, None, None, None, None, None, None, None, None, None)","(15000, 46067.85, 31953, 749.25, 374.625, 30138.6, 529625.375, 511833.5, 17791.875, 511380, 19820)",,,,,,,,,,,,,,,,,,,,,,,,0.011939000017946455
-18,taxcalc/tests/test_calcfunctions.py::test_EI_PayrollTax[case 5],,passed,0.22399699997777134,"(120000, 10000, 15000, 100, 2000, 0.12, 0.03, 0, 99999999999, 400, 300, 0, 0, 0, 0, 0, None, None, None, None, None, None, None, None, None, None, None)","(300, 4065, 4065, 0, 0, 3285.3, 25300, 10279.1875, 15000, 10382, 17000)",,,,,,,,,,,,,,,,,,,,,,,,0.010206000013113226
-19,taxcalc/tests/test_calcfunctions.py::test_EI_PayrollTax[case 6],,passed,0.23545799999169503,"(120000, 10000, 15000, 100, 2000, 0.12, 0.03, 0, 99999999999, 400, 0, 0, 0, 0, -40000, 0, None, None, None, None, None, None, None, None, None, None, None)","(-40000, 4065, 4065, 0, 0, 3252, 0, 0, 15000, 10100, 17000)",,,,,,,,,,,,,,,,,,,,,,,,0.022719999975606725
-20,taxcalc/tests/test_calcfunctions.py::test_AfterTaxIncome,,passed,0.17711000000986132,,,,,,,,,,,,,,,,,,,,,,,,,,0.002313000010190136
-21,taxcalc/tests/test_calcfunctions.py::test_ExpandIncome,,passed,0.19104599999764105,,,,,,,,,,,,,,,,,,,,,,,,,,0.025445000005674956
-22,taxcalc/tests/test_calcfunctions.py::test_LumpSumTax[test_tuple0-expected_value0],,passed,0.18258000000059837,"(1, 1, 2, 0, 0, 1000)","(0, 1000)",,,,,,,,,,,,,,,,,,,,,,,,0.01005699999723228
-23,taxcalc/tests/test_calcfunctions.py::test_LumpSumTax[test_tuple1-expected_value1],,passed,0.17057699997735654,"(0, 1, 2, 0, 0, 1000)","(0, 1000)",,,,,,,,,,,,,,,,,,,,,,,,0.007570999997597028
-24,taxcalc/tests/test_calcfunctions.py::test_LumpSumTax[test_tuple2-expected_value2],,passed,0.16986700001098143,"(1, 1, 2, 100, 0, 1000)","(0, 1000)",,,,,,,,,,,,,,,,,,,,,,,,0.006862000020646519
-25,taxcalc/tests/test_calcfunctions.py::test_LumpSumTax[test_tuple3-expected_value3],,passed,0.17412400001148853,"(0, 2, 1, 100, 200, 1000)","(200, 1200)",,,,,,,,,,,,,,,,,,,,,,,,0.008403000038015335
-26,taxcalc/tests/test_calcfunctions.py::test_LumpSumTax[test_tuple4-expected_value4],,passed,0.1842129999829467,"(0, 1, 3, 100, 300, 1000)","(300, 1300)",,,,,,,,,,,,,,,,,,,,,,,,0.02038599998854812
-27,taxcalc/tests/test_calcfunctions.py::test_FairShareTax[test_tuple0-expected_value0],,passed,0.18815999999333144,"(1100000, 1, 1000, 100, 100, 0.1, [1000000, 1000000, 500000, 1000000, 1000000], [2000000, 2000000, 1000000, 2000000, 2000000], 100, 200, 2000, 300)","(10915, 11115, 12915, 11215)",,,,,,,,,,,,,,,,,,,,,,,,0.016076999997949343
-28,taxcalc/tests/test_calcfunctions.py::test_FairShareTax[test_tuple1-expected_value1],,passed,0.1759069999991425,"(2100000, 1, 1000, 100, 100, 0.1, [1000000, 1000000, 500000, 1000000, 1000000], [2000000, 2000000, 1000000, 2000000, 2000000], 100, 200, 2000, 300)","(209150, 209350, 211150, 209450)",,,,,,,,,,,,,,,,,,,,,,,,0.010646999982100197
-29,taxcalc/tests/test_calcfunctions.py::test_FairShareTax[test_tuple2-expected_value2],,passed,0.16850399998702414,"(1100000, 1, 1000, 100, 100, 0, [1000000, 1000000, 500000, 1000000, 1000000], [2000000, 2000000, 1000000, 2000000, 2000000], 100, 200, 2000, 300)","(0, 200, 2000, 300)",,,,,,,,,,,,,,,,,,,,,,,,-0.020590000019637955
-30,taxcalc/tests/test_calcfunctions.py::test_FairShareTax[test_tuple3-expected_value3],,passed,0.17015599999581354,"(1100000, 2, 1000, 100, 100, 0.1, [1000000, 1000000, 500000, 1000000, 1000000], [2000000, 2000000, 1000000, 2000000, 2000000], 100, 200, 2000, 300)","(10915, 11115, 12915, 11215)",,,,,,,,,,,,,,,,,,,,,,,,0.0029219999930774343
-31,taxcalc/tests/test_calcfunctions.py::test_FairShareTax[test_tuple4-expected_value4],,passed,0.17264100000602411,"(2100000, 2, 1000, 100, 100, 0.1, [1000000, 1000000, 500000, 1000000, 1000000], [2000000, 2000000, 1000000, 2000000, 2000000], 100, 200, 2000, 300)","(209150, 209350, 211150, 209450)",,,,,,,,,,,,,,,,,,,,,,,,0.006760000019312512
-32,taxcalc/tests/test_calcfunctions.py::test_FairShareTax[test_tuple5-expected_value5],,passed,0.16812299998036906,"(1100000, 2, 1000, 100, 100, 0, [1000000, 1000000, 500000, 1000000, 1000000], [2000000, 2000000, 1000000, 2000000, 2000000], 100, 200, 2000, 300)","(0, 200, 2000, 300)",,,,,,,,,,,,,,,,,,,,,,,,0.006559999974342645
-33,taxcalc/tests/test_calcfunctions.py::test_FairShareTax[test_tuple6-expected_value6],,passed,0.1713690000144652,"(510000, 3, 1000, 100, 100, 0.1, [1000000, 1000000, 500000, 1000000, 1000000], [2000000, 2000000, 1000000, 2000000, 2000000], 100, 200, 2000, 300)","(1003, 1203, 3003, 1303)",,,,,,,,,,,,,,,,,,,,,,,,0.005999000023848594
-34,taxcalc/tests/test_calcfunctions.py::test_FairShareTax[test_tuple7-expected_value7],,passed,0.1789630000246234,"(1100000, 3, 1000, 100, 100, 0.1, [1000000, 1000000, 500000, 1000000, 1000000], [2000000, 2000000, 1000000, 2000000, 2000000], 100, 200, 2000, 300)","(109150, 109350, 111150, 109450)",,,,,,,,,,,,,,,,,,,,,,,,0.011860000057595299
-35,taxcalc/tests/test_calcfunctions.py::test_FairShareTax[test_tuple8-expected_value8],,passed,0.1654579999978978,"(510000, 3, 1000, 100, 100, 0, [1000000, 1000000, 500000, 1000000, 1000000], [2000000, 2000000, 1000000, 2000000, 2000000], 100, 200, 2000, 300)","(0, 200, 2000, 300)",,,,,,,,,,,,,,,,,,,,,,,,0.0033340000129555847
-36,taxcalc/tests/test_calcfunctions.py::test_PersonalTaxCredit[test_tuple0-expected_value0],,passed,0.16837300000815958,"(1, 50000, 1, 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, 1400, [75000, 150000, 75000, 112500, 150000], [80000, 160000, 80000, 120000, 160000], 0, 0, [0, 0, 0, 0, 0], 0, 0, 0)","(0, 0, 1400)",,,,,,,,,,,,,,,,,,,,,,,,0.001349000001482692
-37,taxcalc/tests/test_calcfunctions.py::test_PersonalTaxCredit[test_tuple1-expected_value1],,passed,0.17162899999334513,"(1, 76000, 1, 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, 1400, [75000, 150000, 75000, 112500, 150000], [80000, 160000, 80000, 120000, 160000], 0, 0, [0, 0, 0, 0, 0], 0, 0, 0)","(0, 0, 1120)",,,,,,,,,,,,,,,,,,,,,,,,0.005286999993359132
-38,taxcalc/tests/test_calcfunctions.py::test_PersonalTaxCredit[test_tuple2-expected_value2],,passed,0.19861900000250898,"(1, 90000, 1, 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, 1400, [75000, 150000, 75000, 112500, 150000], [80000, 160000, 80000, 120000, 160000], 0, 0, [0, 0, 0, 0, 0], 0, 0, 0)","(0, 0, 0)",,,,,,,,,,,,,,,,,,,,,,,,-0.012768000033247517
-39,taxcalc/tests/test_calcfunctions.py::test_PersonalTaxCredit[test_tuple3-expected_value3],,passed,0.17011599999250393,"(2, 50000, 3, 1, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, 1400, [75000, 150000, 75000, 112500, 150000], [80000, 160000, 80000, 120000, 160000], 0, 0, [0, 0, 0, 0, 0], 0, 0, 0)","(0, 0, 4200)",,,,,,,,,,,,,,,,,,,,,,,,0.0053770000363329296
-40,taxcalc/tests/test_calcfunctions.py::test_PersonalTaxCredit[test_tuple4-expected_value4],,passed,0.1679620000061277,"(2, 155000, 4, 2, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, 1400, [75000, 150000, 75000, 112500, 150000], [80000, 160000, 80000, 120000, 160000], 0, 0, [0, 0, 0, 0, 0], 0, 0, 0)","(0, 0, 2800)",,,,,,,,,,,,,,,,,,,,,,,,0.003253000016911811
-41,taxcalc/tests/test_calcfunctions.py::test_PersonalTaxCredit[test_tuple5-expected_value5],,passed,0.1696159999937663,"(2, 170000, 4, 2, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, 1400, [75000, 150000, 75000, 112500, 150000], [80000, 160000, 80000, 120000, 160000], 0, 0, [0, 0, 0, 0, 0], 0, 0, 0)","(0, 0, 0)",,,,,,,,,,,,,,,,,,,,,,,,0.0032639999858475044
-42,taxcalc/tests/test_calcfunctions.py::test_PersonalTaxCredit[test_tuple6-expected_value6],,passed,0.16655900000728252,"(4, 50000, 2, 1, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, 1400, [75000, 150000, 75000, 112500, 150000], [80000, 160000, 80000, 120000, 160000], 0, 0, [0, 0, 0, 0, 0], 0, 0, 0)","(0, 0, 2800)",,,,,,,,,,,,,,,,,,,,,,,,0.0018800000418651153
-43,taxcalc/tests/test_calcfunctions.py::test_PersonalTaxCredit[test_tuple7-expected_value7],,passed,0.16786300000148913,"(4, 117000, 1, 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, 1400, [75000, 150000, 75000, 112500, 150000], [80000, 160000, 80000, 120000, 160000], 0, 0, [0, 0, 0, 0, 0], 0, 0, 0)","(0, 0, 560)",,,,,,,,,,,,,,,,,,,,,,,,0.0029939999990347133
-44,taxcalc/tests/test_calcfunctions.py::test_PersonalTaxCredit[test_tuple8-expected_value8],,passed,0.1680629999896155,"(4, 130000, 1, 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, 1400, [75000, 150000, 75000, 112500, 150000], [80000, 160000, 80000, 120000, 160000], 0, 0, [0, 0, 0, 0, 0], 0, 0, 0)","(0, 0, 0)",,,,,,,,,,,,,,,,,,,,,,,,0.002983999991101882
-45,taxcalc/tests/test_calcfunctions.py::test_PersonalTaxCredit[test_tuple9-expected_value9],,passed,0.1680620000001909,"(1, 50000, 1, 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, 0, [75000, 150000, 75000, 112500, 75000], [0, 0, 0, 0, 0], 0.05, 500, [1200, 2400, 1200, 1200, 1200], 0, 0, 0)","(0, 0, 1200)",,,,,,,,,,,,,,,,,,,,,,,,0.005087000033654504
-46,taxcalc/tests/test_calcfunctions.py::test_PersonalTaxCredit[test_tuple10-expected_value10],,passed,0.1681329999883019,"(1, 97000, 2, 1, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, 0, [75000, 150000, 75000, 112500, 75000], [0, 0, 0, 0, 0], 0.05, 500, [1200, 2400, 1200, 1200, 1200], 0, 0, 0)","(0, 0, 600)",,,,,,,,,,,,,,,,,,,,,,,,0.005018000024392677
-47,taxcalc/tests/test_calcfunctions.py::test_PersonalTaxCredit[test_tuple11-expected_value11],,passed,0.19116599997914818,"(1, 150000, 2, 1, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, 0, [75000, 150000, 75000, 112500, 75000], [0, 0, 0, 0, 0], 0.05, 500, [1200, 2400, 1200, 1200, 1200], 0, 0, 0)","(0, 0, 0)",,,,,,,,,,,,,,,,,,,,,,,,0.027799999998023878
-48,taxcalc/tests/test_calcfunctions.py::test_PersonalTaxCredit[test_tuple12-expected_value12],,passed,0.16635000000064792,"(2, 50000, 4, 2, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, 0, [75000, 150000, 75000, 112500, 75000], [0, 0, 0, 0, 0], 0.05, 500, [1200, 2400, 1200, 1200, 1200], 0, 0, 0)","(0, 0, 3400)",,,,,,,,,,,,,,,,,,,,,,,,0.0001780000218332134
-49,taxcalc/tests/test_calcfunctions.py::test_PersonalTaxCredit[test_tuple13-expected_value13],,passed,0.16694999999344873,"(2, 160000, 5, 3, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, 0, [75000, 150000, 75000, 112500, 75000], [0, 0, 0, 0, 0], 0.05, 500, [1200, 2400, 1200, 1200, 1200], 0, 0, 0)","(0, 0, 3400)",,,,,,,,,,,,,,,,,,,,,,,,0.002821999942170833
-50,taxcalc/tests/test_calcfunctions.py::test_PersonalTaxCredit[test_tuple14-expected_value14],,passed,0.17033699998592056,"(2, 300000, 2, 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, 0, [75000, 150000, 75000, 112500, 75000], [0, 0, 0, 0, 0], 0.05, 500, [1200, 2400, 1200, 1200, 1200], 0, 0, 0)","(0, 0, 0)",,,,,,,,,,,,,,,,,,,,,,,,0.005206999958318248
-51,taxcalc/tests/test_calcfunctions.py::test_PersonalTaxCredit[test_tuple15-expected_value15],,passed,0.16692100001591825,"(4, 50000, 3, 2, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, 0, [75000, 150000, 75000, 112500, 75000], [0, 0, 0, 0, 0], 0.05, 500, [1200, 2400, 1200, 1200, 1200], 0, 0, 0)","(0, 0, 2200)",,,,,,,,,,,,,,,,,,,,,,,,0.003685000024233942
-52,taxcalc/tests/test_calcfunctions.py::test_PersonalTaxCredit[test_tuple16-expected_value16],,passed,0.1691150000056041,"(4, 130000, 2, 1, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, 0, [75000, 150000, 75000, 112500, 75000], [0, 0, 0, 0, 0], 0.05, 500, [1200, 2400, 1200, 1200, 1200], 0, 0, 0)","(0, 0, 825)",,,,,,,,,,,,,,,,,,,,,,,,0.00250200002938078
-53,taxcalc/tests/test_calcfunctions.py::test_PersonalTaxCredit[test_tuple17-expected_value17],,passed,0.16545699998005148,"(4, 170000, 3, 2, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, 0, [75000, 150000, 75000, 112500, 75000], [0, 0, 0, 0, 0], 0.05, 500, [1200, 2400, 1200, 1200, 1200], 0, 0, 0)","(0, 0, 0)",,,,,,,,,,,,,,,,,,,,,,,,0.0014089999353927851
-54,taxcalc/tests/test_calcfunctions.py::test_EITCamount[test_tuple0-6660],,passed,267.3454119999974,"(0.0, 0.45, 19330, 6660, 19330, 19330, 0.2106)",6660,,,,,,,,,,,,,,,,,,,,,,,,14.185565999980554
-55,taxcalc/tests/test_calcfunctions.py::test_EITC[test_tuple0-6660],,passed,0.20085299999550443,"(4, 0, 3, 19330, 0, 0, 0, 0, 0, 0, 0, 0, 19330, 19330, 0, [8790, 19330, 19330, 19330], 25, 64, [5890, 5890, 5890, 5890], [0.0765, 0.34, 0.4, 0.45], [538, 3584, 5920, 6660], [0.0765, 0.1598, 0.2106, 0.2106], 0.0, 3650, 9e+99, False, False, 0)",6660,,,,,,,,,,,,,,,,,,,,,,,,0.001879999985021641
-56,taxcalc/tests/test_calcfunctions.py::test_TaxInc[test_tuple0-expected_value0],,passed,0.18678800000770934,"(527860.66, 0.0, 37000.0, 0.0, 2, 352000.0, 0.0, 0.0, 0.0, 5000.0, 7000.0, 0, 0.0, 0.0, 0.2, [160700.0, 321400.0, 160725.0, 160700.0, 321400.0], [50000.0, 100000.0, 50000.0, 50000.0, 100000.0], 0.5, 0.25, 0.025, 0.0, [9e+99, 9e+99, 9e+99, 9e+99, 9e+99], 0.0, 0.0, True)","(490860.66, 0)",,,,,,,,,,,,,,,,,,,,,,,,0.0013900000226386433
-57,taxcalc/tests/test_calcfunctions.py::test_TaxInc[test_tuple1-expected_value1],,passed,0.17482500001619883,"(337675.1, 0.0, 49000.0, 0.0, 2, 23000.0, 0.0, 0.0, 0.0, 8000.0, 4000.0, 1, 0.0, 0.0, 0.2, [160700.0, 321400.0, 160725.0, 160700.0, 321400.0], [50000.0, 100000.0, 50000.0, 50000.0, 100000.0], 0.5, 0.25, 0.025, 0.0, [9e+99, 9e+99, 9e+99, 9e+99, 9e+99], 0.0, 0.0, True)","(284075.1, 4600)",,,,,,,,,,,,,,,,,,,,,,,,0.0008890000060546299
-58,taxcalc/tests/test_calcfunctions.py::test_TaxInc[test_tuple2-expected_value2],,passed,0.1722100000165483,"(603700.0, 24400.0, 0.0, 0.0, 2, 0.0, 11000.0, 0.0, 0.0, 3000.0, -3000.0, 1, 0.0, 0.0, 0.2, [160700.0, 321400.0, 160725.0, 160700.0, 321400.0], [50000.0, 100000.0, 50000.0, 50000.0, 100000.0], 0.5, 0.25, 0.025, 0.0, [9e+99, 9e+99, 9e+99, 9e+99, 9e+99], 0.0, 0.0, True)","(579300.0, 0)",,,,,,,,,,,,,,,,,,,,,,,,0.0026619999857757926
-59,taxcalc/tests/test_calcfunctions.py::test_TaxInc[test_tuple3-expected_value3],,passed,0.17068799999719886,"(90700.0, 0.0, 32000.0, 0.0, 4, 0.0, 6000.0, 0.0, 0.0, 9000.0, -3000.0, 1, 0.0, 0.0, 0.2, [160700.0, 321400.0, 160725.0, 160700.0, 321400.0], [50000.0, 100000.0, 50000.0, 50000.0, 100000.0], 0.5, 0.25, 0.025, 0.0, [9e+99, 9e+99, 9e+99, 9e+99, 9e+99], 0.0, 0.0, True)","(57500.0, 1200)",,,,,,,,,,,,,,,,,,,,,,,,-0.003958999997166729
-60,taxcalc/tests/test_calcfunctions.py::test_ChildDepTaxCredit_2021[test_tuple0-expected_value0],,passed,0.18031499999437983,"(45, 0, 0, 0, 4, 1000, 3, 1, 0, 0, 0.0, 0, 0.0, 0, 0, 0, 0.0, 0, 2000, [200000.0, 400000.0, 200000.0, 200000.0, 400000.0], 0.05, False, 500, 0.0, 0, True, True, 0, 0, 0)","(0, 1000, 0)",,,,,,,,,,,,,,,,,,,,,,,,0.0019409999651998355
-61,taxcalc/tests/test_calcfunctions.py::test_ChildDepTaxCredit_2022[test_tuple0-expected_value0],,passed,0.1798849999943286,"(45, 0, 0, 0, 4, 1000, 3, 1, 0, 0, 0.0, 0, 0.0, 0, 0, 0, 0.0, 0, 2000, [200000.0, 400000.0, 200000.0, 200000.0, 400000.0], 0.05, False, 500, 0.0, 0, False, False, 0, 0, 0)","(0, 0, 1000)",,,,,,,,,,,,,,,,,,,,,,,,0.0076719999526631
-62,taxcalc/tests/test_calcfunctions.py::test_CTCnew_2021[test_tuple0-0],,passed,0.17719999999599167,"(1000, 0, 600, [75000, 150000, 75000, 125000, 150000], 0.05, True, True, False, 0.0, False, 0, 0, 0, 45, 0, 0, 1000, 4, 0, 0, 0)",0,,,,,,,,,,,,,,,,,,,,,,,,0.0018810000028679774
-63,taxcalc/tests/test_calcfunctions.py::test_CTCnew_2022[test_tuple0-0],,passed,0.17533599998387217,"(0, 0, 0, [0, 0, 0, 0, 0], 0, False, False, False, 0.0, False, 0, 0, 0, 45, 0, 0, 1000, 4, 0, 0, 0)",0,,,,,,,,,,,,,,,,,,,,,,,,0.00595899996369556
-64,taxcalc/tests/test_calcfunctions.py::test_AGI[test_tuple0-expected_value0],,passed,0.23035899999968024,"(29530, 0, 0, 0, 4, 1, 0, False, 0, 0, 0.0, [9e+99, 9e+99, 9e+99, 9e+99, 9e+99], 0.02, False, 10200, [150000, 150000, 150000, 150000, 150000], 10200, 0, 0, 0)","(19330, 0, 0)",,,,,,,,,,,,,,,,,,,,,,,,0.0020310000081736335
-65,taxcalc/tests/test_calculator.py::test_make_calculator,,passed,2443.9045539999997,,,,,,,,,,,,,,,,,,,,,,,,,,14.153315000015937
-66,taxcalc/tests/test_calculator.py::test_make_calculator_deepcopy,,passed,2201.3976609999872,,,,,,,,,,,,,,,,,,,,,,,,,,7.8740089999769225
-67,taxcalc/tests/test_calculator.py::test_make_calculator_with_policy_reform,,passed,2583.0377519999956,,,,,,,,,,,,,,,,,,,,,,,,,,-0.12436500003332185
-68,taxcalc/tests/test_calculator.py::test_make_calculator_with_multiyear_reform,,passed,2671.204129000017,,,,,,,,,,,,,,,,,,,,,,,,,,10.790431000003991
-69,taxcalc/tests/test_calculator.py::test_calculator_advance_to_year,,passed,2064.263793000009,,,,,,,,,,,,,,,,,,,,,,,,,,8.034024000039608
-70,taxcalc/tests/test_calculator.py::test_make_calculator_raises_on_no_policy,,passed,375.253669000017,,,,,,,,,,,,,,,,,,,,,,,,,,-8.902089999992313
-71,taxcalc/tests/test_calculator.py::test_calculator_mtr,,passed,17572.622834000016,,,,,,,,,,,,,,,,,,,,,,,,,,201.75088600001618
-72,taxcalc/tests/test_calculator.py::test_calculator_mtr_when_PT_rates_differ,,passed,3007.4118510000008,,,,,,,,,,,,,,,,,,,,,,,,,,13.603149000033682
-73,taxcalc/tests/test_calculator.py::test_make_calculator_increment_years_first,,passed,2598.0418500000155,,,,,,,,,,,,,,,,,,,,,,,,,,38.79973900006917
-74,taxcalc/tests/test_calculator.py::test_ID_HC_vs_BS,,passed,5156.744659999987,,,,,,,,,,,,,,,,,,,,,,,,,,130.81614699998954
-75,taxcalc/tests/test_calculator.py::test_ID_StateLocal_HC_vs_CRT,,passed,4872.965366000017,,,,,,,,,,,,,,,,,,,,,,,,,,110.61965499999314
-76,taxcalc/tests/test_calculator.py::test_ID_RealEstate_HC_vs_CRT,,passed,4863.253312000012,,,,,,,,,,,,,,,,,,,,,,,,,,140.033162000037
-77,taxcalc/tests/test_calculator.py::test_calculator_using_nonstd_input,,passed,1895.146636999982,,,,,,,,,,,,,,,,,,,,,,,,,,114.54384799998252
-78,taxcalc/tests/test_calculator.py::test_bad_json_names,,passed,235.76800199998615,,,,,,,,,,,,,,,,,,,,,,,,,,100.24762699998746
-79,taxcalc/tests/test_calculator.py::test_json_assump_url,,passed,571.3219980000019,,,,,,,,,,,,,,,,,,,,,,,,,,375.75466899997423
-80,taxcalc/tests/test_calculator.py::test_read_bad_json_assump_file,,passed,0.30959599999391685,,,,,,,,,,,,,,,,,,,,,,,,,,-0.0013570000021445594
-81,taxcalc/tests/test_calculator.py::test_json_doesnt_exist,,passed,0.22246399998948618,,,,,,,,,,,,,,,,,,,,,,,,,,0.0006679999842162943
-82,taxcalc/tests/test_calculator.py::test_calc_all,,passed,1778.3799190000025,,,,,,,,,,,,,,,,,,,,,,,,,,66.23974400000066
-83,taxcalc/tests/test_calculator.py::test_noreform_documentation,,passed,4231.495561000002,,,,,,,,,,,,,,,,,,,,,,,,,,124.670280000003
-84,taxcalc/tests/test_calculator.py::test_reform_documentation,,passed,6200.565699000009,,,,,,,,,,,,,,,,,,,,,,,,,,196.84385200000088
-85,taxcalc/tests/test_calculator.py::test_distribution_tables,,passed,3708.98110600001,,,,,,,,,,,,,,,,,,,,,,,,,,177.29183299996976
-86,taxcalc/tests/test_calculator.py::test_difference_table,,passed,3105.5597990000197,,,,,,,,,,,,,,,,,,,,,,,,,,94.14484900000298
-87,taxcalc/tests/test_calculator.py::test_diagnostic_table,,passed,2626.943239999974,,,,,,,,,,,,,,,,,,,,,,,,,,140.61455399993793
-88,taxcalc/tests/test_calculator.py::test_mtr_graph,,passed,2281.4407019999976,,,,,,,,,,,,,,,,,,,,,,,,,,84.3164440000237
-89,taxcalc/tests/test_calculator.py::test_atr_graph,,passed,2316.048665000011,,,,,,,,,,,,,,,,,,,,,,,,,,101.79037700001481
-90,taxcalc/tests/test_calculator.py::test_privacy_of_embedded_objects,,passed,2176.654883999987,,,,,,,,,,,,,,,,,,,,,,,,,,88.4196719999577
-91,taxcalc/tests/test_calculator.py::test_n65,,passed,1970.275885999996,,,,,,,,,,,,,,,,,,,,,,,,,,42.60278099994275
-92,taxcalc/tests/test_calculator.py::test_ce_aftertax_income,,passed,3169.2881719999946,,,,,,,,,,,,,,,,,,,,,,,,,,36.496281999973235
-93,taxcalc/tests/test_calculator.py::test_qbid_calculation,,passed,1601.631287999993,,,,,,,,,,,,,,,,,,,,,,,,,,-0.07225799996012938
-94,taxcalc/tests/test_calculator.py::test_qbid_limit_switch,,passed,3878.6970660000006,,,,,,,,,,,,,,,,,,,,,,,,,,-27.86136700004272
-95,taxcalc/tests/test_calculator.py::test_calc_all_benefits_amounts,,passed,5262.2502290000175,,,,,,,,,,,,,,,,,,,,,,,,,,123.90154800004893
-96,taxcalc/tests/test_calculator.py::test_cg_top_rate,,passed,4613.61839700001,,,,,,,,,,,,,,,,,,,,,,,,,,8.397916000006262
-97,taxcalc/tests/test_compatible_data.py::test_compatible_data_presence,,passed,0.3484780000064802,,,,,,,,,,,,,,,,,,,,,,,,,,-0.04920699998933736
-98,taxcalc/tests/test_consumption.py::test_year_consistency,,passed,0.1432359999853361,,,,,,,,,,,,,,,,,,,,,,,,,,-0.0037300000030882074
-99,taxcalc/tests/test_consumption.py::test_validity_of_consumption_vars_set,,passed,0.6931000000065524,,,,,,,,,,,,,,,,,,,,,,,,,,-0.007043000010753531
-100,taxcalc/tests/test_consumption.py::test_update_consumption,,passed,66.32821300001979,,,,,,,,,,,,,,,,,,,,,,,,,,1.2351530000387356
-101,taxcalc/tests/test_consumption.py::test_incorrect_update_consumption,,passed,400.47709999998915,,,,,,,,,,,,,,,,,,,,,,,,,,26.32754799998338
-102,taxcalc/tests/test_consumption.py::test_future_update_consumption,,passed,90.74923600002194,,,,,,,,,,,,,,,,,,,,,,,,,,-0.7968609999693399
-103,taxcalc/tests/test_consumption.py::test_consumption_default_data,,passed,29.244755999968675,,,,,,,,,,,,,,,,,,,,,,,,,,0.9480849999476959
-104,taxcalc/tests/test_consumption.py::test_consumption_response,,passed,4134.711589000006,,,,,,,,,,,,,,,,,,,,,,,,,,44.38625000000275
-105,taxcalc/tests/test_cpscsv.py::test_agg,,passed,10489.651927000012,,,,,,,,,,,,,,,,,,,,,,,,,,117.77936200002114
-106,taxcalc/tests/test_cpscsv.py::test_cps_availability,,passed,641.1905019999722,,,,,,,,,,,,,,,,,,,,,,,,,,-18.09997100002647
-107,taxcalc/tests/test_data.py::test_recs_class,,passed,377.5449519999938,,,,,,,,,,,,,,,,,,,,,,,,,,-11.368502000038973
-108,taxcalc/tests/test_decorators.py::test_create_apply_function_string,,passed,0.14489900001990463,,,,,,,,,,,,,,,,,,,,,,,,,,-0.02567099994621458
-109,taxcalc/tests/test_decorators.py::test_create_apply_function_string_with_params,,passed,0.1178090000166776,,,,,,,,,,,,,,,,,,,,,,,,,,0.0037959999872328037
-110,taxcalc/tests/test_decorators.py::test_create_toplevel_function_string_mult_outputs,,passed,0.11861100000487568,,,,,,,,,,,,,,,,,,,,,,,,,,0.0044469999807006805
-111,taxcalc/tests/test_decorators.py::test_create_toplevel_function_string,,passed,0.11208800003714714,,,,,,,,,,,,,,,,,,,,,,,,,,0.0021120000610608397
-112,taxcalc/tests/test_decorators.py::test_make_apply_function,,passed,0.5930740000508194,,,,,,,,,,,,,,,,,,,,,,,,,,-0.02686799996354239
-113,taxcalc/tests/test_decorators.py::test_magic_apply_jit,,passed,398.5197670000389,,,,,,,,,,,,,,,,,,,,,,,,,,-2.2306789999788634
-114,taxcalc/tests/test_decorators.py::test_magic_apply_jit_swap,,passed,0.6584950000387835,,,,,,,,,,,,,,,,,,,,,,,,,,-0.05196699999032717
-115,taxcalc/tests/test_decorators.py::test_magic_iterate_jit,,passed,138.52537100001427,,,,,,,,,,,,,,,,,,,,,,,,,,0.31097099997623445
-116,taxcalc/tests/test_decorators.py::test_faux_function_iterate_jit,,passed,107.66371299996536,,,,,,,,,,,,,,,,,,,,,,,,,,-0.7863800000222909
-117,taxcalc/tests/test_decorators.py::test_ret_everything_iterate_jit,,passed,172.33771600001546,,,,,,,,,,,,,,,,,,,,,,,,,,-0.6588759999885951
-118,taxcalc/tests/test_decorators.py::test_function_takes_kwarg,,passed,136.8336139999542,,,,,,,,,,,,,,,,,,,,,,,,,,3.118579999920712
-119,taxcalc/tests/test_decorators.py::test_function_no_parameters_listed,,passed,140.2348109999707,,,,,,,,,,,,,,,,,,,,,,,,,,5.429393999918375
-120,taxcalc/tests/test_decorators.py::test_function_parameters_optional,,passed,140.51609499995266,,,,,,,,,,,,,,,,,,,,,,,,,,3.1442819999938365
-121,taxcalc/tests/test_decorators.py::test_iterate_jit_raises_on_no_return,,passed,5.479623999974592,,,,,,,,,,,,,,,,,,,,,,,,,,-0.014366000016252656
-122,taxcalc/tests/test_decorators.py::test_iterate_jit_raises_on_unknown_return_argument,,passed,4.045525999970323,,,,,,,,,,,,,,,,,,,,,,,,,,-0.13284999999996217
-123,taxcalc/tests/test_decorators.py::test_force_no_jit,,passed,5.3040689999761526,,,,,,,,,,,,,,,,,,,,,,,,,,0.04324599996152756
-124,taxcalc/tests/test_growdiff.py::test_year_consistency,,passed,0.1594469999872672,,,,,,,,,,,,,,,,,,,,,,,,,,0.024093999968499702
-125,taxcalc/tests/test_growdiff.py::test_update_and_apply_growdiff,,passed,405.8254010000155,,,,,,,,,,,,,,,,,,,,,,,,,,-1.6555289999473644
-126,taxcalc/tests/test_growdiff.py::test_has_any_response,,passed,104.56608999999162,,,,,,,,,,,,,,,,,,,,,,,,,,2.655304999962013
-127,taxcalc/tests/test_growdiff.py::test_description_punctuation,,passed,0.3049680000231092,,,,,,,,,,,,,,,,,,,,,,,,,,-0.004591999982039796
-128,taxcalc/tests/test_growdiff.py::test_boolean_value_infomation,,passed,0.27267699999811157,,,,,,,,,,,,,,,,,,,,,,,,,,0.015546000042832075
-129,taxcalc/tests/test_growfactors.py::test_improper_usage,,passed,3.4920780000220475,,,,,,,,,,,,,,,,,,,,,,,,,,0.4570130000729473
-130,taxcalc/tests/test_growfactors.py::test_update_after_use,,passed,2.0367590000205382,,,,,,,,,,,,,,,,,,,,,,,,,,0.1553349999880993
-131,taxcalc/tests/test_growfactors.py::test_proper_usage,,passed,2.0451240000056714,,,,,,,,,,,,,,,,,,,,,,,,,,0.2277199999980437
-132,taxcalc/tests/test_growfactors.py::test_growfactors_csv_values,,passed,2.206816000011713,,,,,,,,,,,,,,,,,,,,,,,,,,0.0210119999906051
-133,taxcalc/tests/test_parameters.py::test_params_class[revision0-],,passed,9.376695000014479,,,{},,,,,,,,,,,,,,,,,,,,,,,0.08494200000086494
-134,taxcalc/tests/test_parameters.py::test_params_class[revision1-error],,passed,10.973666000040794,,,{'real_param': {2004: 1.9}},error,,,,,,,,,,,,,,,,,,,,,,-0.46496799996020854
-135,taxcalc/tests/test_parameters.py::test_params_class[revision2-raise],,passed,12.477564000050734,,,{'int_param': {2004: [3.6]}},raise,,,,,,,,,,,,,,,,,,,,,,0.2795070000729538
-136,taxcalc/tests/test_parameters.py::test_params_class[revision3-raise],,passed,10.57526400001052,,,{'int_param': {2004: [3]}},raise,,,,,,,,,,,,,,,,,,,,,,0.28022200001487185
-137,taxcalc/tests/test_parameters.py::test_params_class[revision4-noerror],,passed,14.885493999997834,,,"{'label_param': {2004: [1, 2]}}",noerror,,,,,,,,,,,,,,,,,,,,,,0.2692079999633279
-138,taxcalc/tests/test_parameters.py::test_params_class[revision5-raise],,passed,8.201539000026514,,,"{'label_param': {2004: [[1, 2]]}}",raise,,,,,,,,,,,,,,,,,,,,,,0.39624000004323534
-139,taxcalc/tests/test_parameters.py::test_params_class[revision6-raise],,passed,9.497770999985278,,,"{'label_param': {2004: [1, 2, 3]}}",raise,,,,,,,,,,,,,,,,,,,,,,0.5370879999873068
-140,taxcalc/tests/test_parameters.py::test_params_class[revision7-raise],,passed,10.963657999980114,,,{'bool_param': {2004: [4.9]}},raise,,,,,,,,,,,,,,,,,,,,,,0.5501729999650706
-141,taxcalc/tests/test_parameters.py::test_params_class[revision8-raise],,passed,10.589551999999003,,,{'str_param': {2004: [9]}},raise,,,,,,,,,,,,,,,,,,,,,,0.27598599996281337
-142,taxcalc/tests/test_parameters.py::test_params_class[revision9-noerror],,passed,12.414357000011478,,,{'str_param': {2004: 'nonlinear'}},noerror,,,,,,,,,,,,,,,,,,,,,,0.14962500000592627
-143,taxcalc/tests/test_parameters.py::test_params_class[revision10-error],,passed,10.382736999986264,,,{'str_param': {2004: 'unknownvalue'}},error,,,,,,,,,,,,,,,,,,,,,,0.26450600000771374
-144,taxcalc/tests/test_parameters.py::test_params_class[revision11-raise],,passed,10.91504700002588,,,{'str_param': {2004: ['nonlinear']}},raise,,,,,,,,,,,,,,,,,,,,,,0.5289040000207024
-145,taxcalc/tests/test_parameters.py::test_params_class[revision12-raise],,passed,10.775918000035745,,,{'real_param': {2004: 'linear'}},raise,,,,,,,,,,,,,,,,,,,,,,0.47628600003690913
-146,taxcalc/tests/test_parameters.py::test_params_class[revision13-raise],,passed,13.135908999970525,,,"{'real_param': {2004: [0.2, 0.3]}}",raise,,,,,,,,,,,,,,,,,,,,,,1.4168999999810694
-147,taxcalc/tests/test_parameters.py::test_params_class[revision14-raise],,passed,11.742886999968505,,,{'real_param-indexed': {2004: True}},raise,,,,,,,,,,,,,,,,,,,,,,0.5443929999273696
-148,taxcalc/tests/test_parameters.py::test_params_class[revision15-raise],,passed,8.178616000009242,,,{'unknown_param-indexed': {2004: False}},raise,,,,,,,,,,,,,,,,,,,,,,0.437066000017694
-149,taxcalc/tests/test_parameters.py::test_json_file_contents[consumption.json],,passed,178.4727509999584,,,,,consumption.json,,,,,,,,,,,,,,,,,,,,,2.0651349999525337
-150,taxcalc/tests/test_parameters.py::test_json_file_contents[policy_current_law.json],,passed,108637.030482,,,,,policy_current_law.json,,,,,,,,,,,,,,,,,,,,,4965.389421
-151,taxcalc/tests/test_parameters.py::test_json_file_contents[growdiff.json],,passed,689.0932929999849,,,,,growdiff.json,,,,,,,,,,,,,,,,,,,,,5.611541999940073
-152,taxcalc/tests/test_parameters.py::test_parameters_mentioned[consumption.json-consumption.py],,passed,0.2577489999566751,,,,,,consumption.json,consumption.py,,,,,,,,,,,,,,,,,,,-0.012037000033160383
-153,taxcalc/tests/test_parameters.py::test_parameters_mentioned[policy_current_law.json-calcfunctions.py],,passed,9.058121000009578,,,,,,policy_current_law.json,calcfunctions.py,,,,,,,,,,,,,,,,,,,0.1777040000092711
-154,taxcalc/tests/test_parameters.py::test_parameters_mentioned[growdiff.json-growdiff.py],,passed,0.26356000000760105,,,,,,growdiff.json,growdiff.py,,,,,,,,,,,,,,,,,,,-0.0005050000027040369
-155,taxcalc/tests/test_parameters.py::test_expand_xd_errors,,passed,4.957391999994343,,,,,,,,,,,,,,,,,,,,,,,,,,0.009967999972104735
-156,taxcalc/tests/test_parameters.py::test_expand_empty,,passed,5.1842740000438425,,,,,,,,,,,,,,,,,,,,,,,,,,-0.08847999998806699
-157,taxcalc/tests/test_parameters.py::test_expand_1d_scalar,,passed,15.00863999996227,,,,,,,,,,,,,,,,,,,,,,,,,,-0.14737100002548686
-158,taxcalc/tests/test_parameters.py::test_expand_2d_short_array,,passed,5.872575000012148,,,,,,,,,,,,,,,,,,,,,,,,,,0.028428999996776838
-159,taxcalc/tests/test_parameters.py::test_expand_2d_variable_rates,,passed,7.164708000004794,,,,,,,,,,,,,,,,,,,,,,,,,,0.036205000014888356
-160,taxcalc/tests/test_parameters.py::test_expand_2d_already_filled,,passed,8.965148000015688,,,,,,,,,,,,,,,,,,,,,,,,,,0.11237300003585915
-161,taxcalc/tests/test_parameters.py::test_expand_2d_partial_expand,,passed,9.399664999989454,,,,,,,,,,,,,,,,,,,,,,,,,,0.12830600002189385
-162,"taxcalc/tests/test_parameters.py::test_read_json_revision[\n{\n ""consumption"": {""BEN_mcaid_value"": {""2013"": 0.9}}\n}\n]",,passed,0.2996179999854576,,,,,,,,"
+0,taxcalc/tests/test_4package.py::test_for_consistency,,passed,3.937492999995129,,,,,,,,,,,,,,,,,,,,,,,,,,0.05634499999018816
+1,taxcalc/tests/test_benefits.py::test_benefits,,passed,4075.479924999996,,,,,,,,,,,,,,,,,,,,,,,,,,172.9582519999999
+2,taxcalc/tests/test_calcfunctions.py::test_calc_and_used_vars,,passed,35.83534700001678,,,,,,,,,,,,,,,,,,,,,,,,,,0.34522300001071926
+3,taxcalc/tests/test_calcfunctions.py::test_function_args_usage,,passed,1.9168350000029477,,,,,,,,,,,,,,,,,,,,,,,,,,0.056408000006058945
+4,taxcalc/tests/test_calcfunctions.py::test_DependentCare,,passed,0.250206999993452,,,,,,,,,,,,,,,,,,,,,,,,,,0.01111899999273197
+5,"taxcalc/tests/test_calcfunctions.py::test_StdDed[Married, young]",,passed,0.18814099999531209,"(0, 1000, [6000, 12000, 6000, 12000, 12000], 45, 44, [1500, 1200, 1500, 1500, 1500], 1000, 2, 0, 0, 0, 2, 0, False, 0)",12000,,,,,,,,,,,,,,,,,,,,,,,,-0.00011199998084521212
+6,"taxcalc/tests/test_calcfunctions.py::test_StdDed[Married, allow charity]",,passed,0.1962360000220542,"(0, 1000, [6000, 12000, 6000, 12000, 12000], 66, 44, [1500, 1200, 1500, 1500, 1500], 1000, 2, 0, 1, 1, 2, 200, True, 300)",15800,,,,,,,,,,,,,,,,,,,,,,,,0.02204000003303011
+7,"taxcalc/tests/test_calcfunctions.py::test_StdDed[Married, allow charity, over limit]",,passed,0.17180999998345214,"(0, 1000, [6000, 12000, 6000, 12000, 12000], 44, 66, [1500, 1200, 1500, 1500, 1500], 1000, 2, 0, 0, 0, 2, 400, True, 300)",13500,,,,,,,,,,,,,,,,,,,,,,,,-0.00231600000688556
+8,"taxcalc/tests/test_calcfunctions.py::test_StdDed[Married, two old]",,passed,0.16933500000959611,"(0, 1200, [6000, 12000, 6000, 12000, 12000], 66, 67, [1500, 1200, 1500, 1500, 1500], 1000, 2, 0, 0, 0, 2, 0, True, 0)",14400,,,,,,,,,,,,,,,,,,,,,,,,-0.007375999985015286
+9,taxcalc/tests/test_calcfunctions.py::test_StdDed[Single 1],,passed,0.1685240000028898,"(0, 1000, [6000, 12000, 6000, 12000, 12000], 44, 0, [1500, 1200, 1500, 1500, 1500], 1000, 1, 0, 0, 0, 2, 0, True, 0)",6000,,,,,,,,,,,,,,,,,,,,,,,,-0.006854999980987486
+10,taxcalc/tests/test_calcfunctions.py::test_StdDed[Single 2],,passed,0.17012800000770767,"(0, 1000, [6000, 12000, 6000, 12000, 12000], 44, 0, [1500, 1200, 1500, 1500, 1500], 1000, 1, 0, 0, 0, 2, 0, True, 0)",6000,,,,,,,,,,,,,,,,,,,,,,,,-0.0011219999862532304
+11,"taxcalc/tests/test_calcfunctions.py::test_StdDed[Married, Single]",,passed,0.1710589999959211,"(0, 1000, [6000, 12000, 6000, 12000, 12000], 44, 0, [1500, 1200, 1500, 1500, 1500], 1000, 3, 1, 0, 0, 2, 0, True, 0)",0,,,,,,,,,,,,,,,,,,,,,,,,0.0008999999749904064
+12,"taxcalc/tests/test_calcfunctions.py::test_StdDed[Marrid, Single, dep, under earn]",,passed,0.17566799999713112,"(1, 200, [6000, 12000, 6000, 12000, 12000], 44, 0, [1500, 1200, 1500, 1500, 1500], 1000, 3, 0, 0, 0, 2, 0, True, 0)",1000,,,,,,,,,,,,,,,,,,,,,,,,0.003534999990506632
+13,"taxcalc/tests/test_calcfunctions.py::test_StdDed[Married, Single, dep, over earn]",,passed,0.16863400000488582,"(1, 1000, [6000, 12000, 6000, 12000, 12000], 44, 0, [1500, 1200, 1500, 1500, 1500], 1000, 3, 0, 0, 0, 2, 0, True, 0)",1350,,,,,,,,,,,,,,,,,,,,,,,,-0.001735999973106972
+14,taxcalc/tests/test_calcfunctions.py::test_EI_PayrollTax[case 1],,passed,0.24533800001336203,"(120000, 10000, 15000, 100, 2000, 0.12, 0.03, 0, 99999999999, 400, 0, 0, 0, 0, 0, 0, None, None, None, None, None, None, None, None, None, None, None)","(0, 4065, 4065, 0, 0, 3252, 25000, 10000, 15000, 10100, 17000)",,,,,,,,,,,,,,,,,,,,,,,,0.003995000014356348
+15,taxcalc/tests/test_calcfunctions.py::test_EI_PayrollTax[case 2],,passed,0.22031099999253456,"(120000, 10000, 15000, 100, 2000, 0.12, 0.03, 0, 99999999999, 400, 2000, 0, 10000, 0, 0, 3000, None, None, None, None, None, None, None, None, None, None, None)","(15000, 6146.25, 4065, 2081.25, 1040.625, 4917, 38959.375, 21167.5, 17791.875, 21380, 19820)",,,,,,,,,,,,,,,,,,,,,,,,0.0022520000015902597
+16,taxcalc/tests/test_calcfunctions.py::test_EI_PayrollTax[case 3],,passed,0.21676500000467058,"(120000, 150000, 15000, 100, 2000, 0.12, 0.03, 0, 99999999999, 400, 2000, 0, 10000, 0, 0, 3000, None, None, None, None, None, None, None, None, None, None, None)","(15000, 22202.25, 21453, 749.25, 374.625, 16773, 179625.375, 161833.5, 17791.875, 161380, 19820)",,,,,,,,,,,,,,,,,,,,,,,,4.900002181787433e-05
+17,taxcalc/tests/test_calcfunctions.py::test_EI_PayrollTax[case 4],,passed,0.21531199999458295,"(120000, 500000, 15000, 100, 2000, 0.12, 0.03, 0, 400000, 400, 2000, 0, 10000, 0, 0, 3000, None, None, None, None, None, None, None, None, None, None, None)","(15000, 46067.85, 31953, 749.25, 374.625, 30138.6, 529625.375, 511833.5, 17791.875, 511380, 19820)",,,,,,,,,,,,,,,,,,,,,,,,0.0005999999928008592
+18,taxcalc/tests/test_calcfunctions.py::test_EI_PayrollTax[case 5],,passed,0.21399900001028982,"(120000, 10000, 15000, 100, 2000, 0.12, 0.03, 0, 99999999999, 400, 300, 0, 0, 0, 0, 0, None, None, None, None, None, None, None, None, None, None, None)","(300, 4065, 4065, 0, 0, 3285.3, 25300, 10279.1875, 15000, 10382, 17000)",,,,,,,,,,,,,,,,,,,,,,,,0.00034800001458282215
+19,taxcalc/tests/test_calcfunctions.py::test_EI_PayrollTax[case 6],,passed,0.21883800002342468,"(120000, 10000, 15000, 100, 2000, 0.12, 0.03, 0, 99999999999, 400, 0, 0, 0, 0, -40000, 0, None, None, None, None, None, None, None, None, None, None, None)","(-40000, 4065, 4065, 0, 0, 3252, 0, 0, 15000, 10100, 17000)",,,,,,,,,,,,,,,,,,,,,,,,0.004597000014427977
+20,taxcalc/tests/test_calcfunctions.py::test_AfterTaxIncome,,passed,0.18735999998398256,,,,,,,,,,,,,,,,,,,,,,,,,,0.011278999977548665
+21,taxcalc/tests/test_calcfunctions.py::test_ExpandIncome,,passed,0.1675729999988107,,,,,,,,,,,,,,,,,,,,,,,,,,0.00160199999754701
+22,taxcalc/tests/test_calcfunctions.py::test_LumpSumTax[test_tuple0-expected_value0],,passed,0.1755879999905119,"(1, 1, 2, 0, 0, 1000)","(0, 1000)",,,,,,,,,,,,,,,,,,,,,,,,0.0019719999784229003
+23,taxcalc/tests/test_calcfunctions.py::test_LumpSumTax[test_tuple1-expected_value1],,passed,0.16488800000047377,"(0, 1, 2, 0, 0, 1000)","(0, 1000)",,,,,,,,,,,,,,,,,,,,,,,,0.0018120000220278598
+24,taxcalc/tests/test_calcfunctions.py::test_LumpSumTax[test_tuple2-expected_value2],,passed,0.16651100000331098,"(1, 1, 2, 100, 0, 1000)","(0, 1000)",,,,,,,,,,,,,,,,,,,,,,,,0.003896999999142281
+25,taxcalc/tests/test_calcfunctions.py::test_LumpSumTax[test_tuple3-expected_value3],,passed,0.16718199998422278,"(0, 2, 1, 100, 200, 1000)","(200, 1200)",,,,,,,,,,,,,,,,,,,,,,,,0.0012509999862686805
+26,taxcalc/tests/test_calcfunctions.py::test_LumpSumTax[test_tuple4-expected_value4],,passed,0.16640100000131497,"(0, 1, 3, 100, 300, 1000)","(300, 1300)",,,,,,,,,,,,,,,,,,,,,,,,0.00132200000280136
+27,taxcalc/tests/test_calcfunctions.py::test_FairShareTax[test_tuple0-expected_value0],,passed,0.17071800002099735,"(1100000, 1, 1000, 100, 100, 0.1, [1000000, 1000000, 500000, 1000000, 1000000], [2000000, 2000000, 1000000, 2000000, 2000000], 100, 200, 2000, 300)","(10915, 11115, 12915, 11215)",,,,,,,,,,,,,,,,,,,,,,,,-0.0034489999620745393
+28,taxcalc/tests/test_calcfunctions.py::test_FairShareTax[test_tuple1-expected_value1],,passed,0.17157000002043787,"(2100000, 1, 1000, 100, 100, 0.1, [1000000, 1000000, 500000, 1000000, 1000000], [2000000, 2000000, 1000000, 2000000, 2000000], 100, 200, 2000, 300)","(209150, 209350, 211150, 209450)",,,,,,,,,,,,,,,,,,,,,,,,0.00579000001721397
+29,taxcalc/tests/test_calcfunctions.py::test_FairShareTax[test_tuple2-expected_value2],,passed,0.16656099998613172,"(1100000, 1, 1000, 100, 100, 0, [1000000, 1000000, 500000, 1000000, 1000000], [2000000, 2000000, 1000000, 2000000, 2000000], 100, 200, 2000, 300)","(0, 200, 2000, 300)",,,,,,,,,,,,,,,,,,,,,,,,0.00298399999110191
+30,taxcalc/tests/test_calcfunctions.py::test_FairShareTax[test_tuple3-expected_value3],,passed,0.16881499999499283,"(1100000, 2, 1000, 100, 100, 0.1, [1000000, 1000000, 500000, 1000000, 1000000], [2000000, 2000000, 1000000, 2000000, 2000000], 100, 200, 2000, 300)","(10915, 11115, 12915, 11215)",,,,,,,,,,,,,,,,,,,,,,,,-0.004149000005781972
+31,taxcalc/tests/test_calcfunctions.py::test_FairShareTax[test_tuple4-expected_value4],,passed,0.16889500000161206,"(2100000, 2, 1000, 100, 100, 0.1, [1000000, 1000000, 500000, 1000000, 1000000], [2000000, 2000000, 1000000, 2000000, 2000000], 100, 200, 2000, 300)","(209150, 209350, 211150, 209450)",,,,,,,,,,,,,,,,,,,,,,,,0.0006889999895065557
+32,taxcalc/tests/test_calcfunctions.py::test_FairShareTax[test_tuple5-expected_value5],,passed,0.18664899999976114,"(1100000, 2, 1000, 100, 100, 0, [1000000, 1000000, 500000, 1000000, 1000000], [2000000, 2000000, 1000000, 2000000, 2000000], 100, 200, 2000, 300)","(0, 200, 2000, 300)",,,,,,,,,,,,,,,,,,,,,,,,0.021931000020458752
+33,taxcalc/tests/test_calcfunctions.py::test_FairShareTax[test_tuple6-expected_value6],,passed,0.16682099999343336,"(510000, 3, 1000, 100, 100, 0.1, [1000000, 1000000, 500000, 1000000, 1000000], [2000000, 2000000, 1000000, 2000000, 2000000], 100, 200, 2000, 300)","(1003, 1203, 3003, 1303)",,,,,,,,,,,,,,,,,,,,,,,,-0.000593000009985134
+34,taxcalc/tests/test_calcfunctions.py::test_FairShareTax[test_tuple7-expected_value7],,passed,0.16613899998674242,"(1100000, 3, 1000, 100, 100, 0.1, [1000000, 1000000, 500000, 1000000, 1000000], [2000000, 2000000, 1000000, 2000000, 2000000], 100, 200, 2000, 300)","(109150, 109350, 111150, 109450)",,,,,,,,,,,,,,,,,,,,,,,,-0.0017050000167272705
+35,taxcalc/tests/test_calcfunctions.py::test_FairShareTax[test_tuple8-expected_value8],,passed,0.16397599998185797,"(510000, 3, 1000, 100, 100, 0, [1000000, 1000000, 500000, 1000000, 1000000], [2000000, 2000000, 1000000, 2000000, 2000000], 100, 200, 2000, 300)","(0, 200, 2000, 300)",,,,,,,,,,,,,,,,,,,,,,,,-0.00038200002450133885
+36,taxcalc/tests/test_calcfunctions.py::test_PersonalTaxCredit[test_tuple0-expected_value0],,passed,0.1681340000061482,"(1, 50000, 1, 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, 1400, [75000, 150000, 75000, 112500, 150000], [80000, 160000, 80000, 120000, 160000], 0, 0, [0, 0, 0, 0, 0], 0, 0, 0)","(0, 0, 1400)",,,,,,,,,,,,,,,,,,,,,,,,-0.001552999975729108
+37,taxcalc/tests/test_calcfunctions.py::test_PersonalTaxCredit[test_tuple1-expected_value1],,passed,0.1684839999995802,"(1, 76000, 1, 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, 1400, [75000, 150000, 75000, 112500, 150000], [80000, 160000, 80000, 120000, 160000], 0, 0, [0, 0, 0, 0, 0], 0, 0, 0)","(0, 0, 1120)",,,,,,,,,,,,,,,,,,,,,,,,0.001480999998193594
+38,taxcalc/tests/test_calcfunctions.py::test_PersonalTaxCredit[test_tuple2-expected_value2],,passed,0.17764100002182204,"(1, 90000, 1, 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, 1400, [75000, 150000, 75000, 112500, 150000], [80000, 160000, 80000, 120000, 160000], 0, 0, [0, 0, 0, 0, 0], 0, 0, 0)","(0, 0, 0)",,,,,,,,,,,,,,,,,,,,,,,,-0.005140999974173555
+39,taxcalc/tests/test_calcfunctions.py::test_PersonalTaxCredit[test_tuple3-expected_value3],,passed,0.16801399999621935,"(2, 50000, 3, 1, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, 1400, [75000, 150000, 75000, 112500, 150000], [80000, 160000, 80000, 120000, 160000], 0, 0, [0, 0, 0, 0, 0], 0, 0, 0)","(0, 0, 4200)",,,,,,,,,,,,,,,,,,,,,,,,0.0006399999961104463
+40,taxcalc/tests/test_calcfunctions.py::test_PersonalTaxCredit[test_tuple4-expected_value4],,passed,0.1662399999986519,"(2, 155000, 4, 2, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, 1400, [75000, 150000, 75000, 112500, 150000], [80000, 160000, 80000, 120000, 160000], 0, 0, [0, 0, 0, 0, 0], 0, 0, 0)","(0, 0, 2800)",,,,,,,,,,,,,,,,,,,,,,,,-0.0015549999829999883
+41,taxcalc/tests/test_calcfunctions.py::test_PersonalTaxCredit[test_tuple5-expected_value5],,passed,0.17171000001781067,"(2, 170000, 4, 2, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, 1400, [75000, 150000, 75000, 112500, 150000], [80000, 160000, 80000, 120000, 160000], 0, 0, [0, 0, 0, 0, 0], 0, 0, 0)","(0, 0, 0)",,,,,,,,,,,,,,,,,,,,,,,,0.002703000035353481
+42,taxcalc/tests/test_calcfunctions.py::test_PersonalTaxCredit[test_tuple6-expected_value6],,passed,0.16839399998502813,"(4, 50000, 2, 1, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, 1400, [75000, 150000, 75000, 112500, 150000], [80000, 160000, 80000, 120000, 160000], 0, 0, [0, 0, 0, 0, 0], 0, 0, 0)","(0, 0, 2800)",,,,,,,,,,,,,,,,,,,,,,,,0.001931999975113341
+43,taxcalc/tests/test_calcfunctions.py::test_PersonalTaxCredit[test_tuple7-expected_value7],,passed,0.1668000000165648,"(4, 117000, 1, 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, 1400, [75000, 150000, 75000, 112500, 150000], [80000, 160000, 80000, 120000, 160000], 0, 0, [0, 0, 0, 0, 0], 0, 0, 0)","(0, 0, 560)",,,,,,,,,,,,,,,,,,,,,,,,0.0003380000350717005
+44,taxcalc/tests/test_calcfunctions.py::test_PersonalTaxCredit[test_tuple8-expected_value8],,passed,0.16756299999087787,"(4, 130000, 1, 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, 1400, [75000, 150000, 75000, 112500, 150000], [80000, 160000, 80000, 120000, 160000], 0, 0, [0, 0, 0, 0, 0], 0, 0, 0)","(0, 0, 0)",,,,,,,,,,,,,,,,,,,,,,,,-0.0007730000106675183
+45,taxcalc/tests/test_calcfunctions.py::test_PersonalTaxCredit[test_tuple9-expected_value9],,passed,0.16583900000455287,"(1, 50000, 1, 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, 0, [75000, 150000, 75000, 112500, 75000], [0, 0, 0, 0, 0], 0.05, 500, [1200, 2400, 1200, 1200, 1200], 0, 0, 0)","(0, 0, 1200)",,,,,,,,,,,,,,,,,,,,,,,,0.0010400000007848853
+46,taxcalc/tests/test_calcfunctions.py::test_PersonalTaxCredit[test_tuple10-expected_value10],,passed,0.1703880000150093,"(1, 97000, 2, 1, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, 0, [75000, 150000, 75000, 112500, 75000], [0, 0, 0, 0, 0], 0.05, 500, [1200, 2400, 1200, 1200, 1200], 0, 0, 0)","(0, 0, 600)",,,,,,,,,,,,,,,,,,,,,,,,0.004727000003867998
+47,taxcalc/tests/test_calcfunctions.py::test_PersonalTaxCredit[test_tuple11-expected_value11],,passed,0.16802300001472759,"(1, 150000, 2, 1, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, 0, [75000, 150000, 75000, 112500, 75000], [0, 0, 0, 0, 0], 0.05, 500, [1200, 2400, 1200, 1200, 1200], 0, 0, 0)","(0, 0, 0)",,,,,,,,,,,,,,,,,,,,,,,,0.0018210000121143821
+48,taxcalc/tests/test_calcfunctions.py::test_PersonalTaxCredit[test_tuple12-expected_value12],,passed,0.16692099998749654,"(2, 50000, 4, 2, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, 0, [75000, 150000, 75000, 112500, 75000], [0, 0, 0, 0, 0], 0.05, 500, [1200, 2400, 1200, 1200, 1200], 0, 0, 0)","(0, 0, 3400)",,,,,,,,,,,,,,,,,,,,,,,,0.0019419999830461443
+49,taxcalc/tests/test_calcfunctions.py::test_PersonalTaxCredit[test_tuple13-expected_value13],,passed,0.1654579999978978,"(2, 160000, 5, 3, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, 0, [75000, 150000, 75000, 112500, 75000], [0, 0, 0, 0, 0], 0.05, 500, [1200, 2400, 1200, 1200, 1200], 0, 0, 0)","(0, 0, 3400)",,,,,,,,,,,,,,,,,,,,,,,,-0.0010239999994610116
+50,taxcalc/tests/test_calcfunctions.py::test_PersonalTaxCredit[test_tuple14-expected_value14],,passed,0.168274000003521,"(2, 300000, 2, 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, 0, [75000, 150000, 75000, 112500, 75000], [0, 0, 0, 0, 0], 0.05, 500, [1200, 2400, 1200, 1200, 1200], 0, 0, 0)","(0, 0, 0)",,,,,,,,,,,,,,,,,,,,,,,,0.000739999990173601
+51,taxcalc/tests/test_calcfunctions.py::test_PersonalTaxCredit[test_tuple15-expected_value15],,passed,0.16452699998126263,"(4, 50000, 3, 2, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, 0, [75000, 150000, 75000, 112500, 75000], [0, 0, 0, 0, 0], 0.05, 500, [1200, 2400, 1200, 1200, 1200], 0, 0, 0)","(0, 0, 2200)",,,,,,,,,,,,,,,,,,,,,,,,-0.0022360000002663583
+52,taxcalc/tests/test_calcfunctions.py::test_PersonalTaxCredit[test_tuple16-expected_value16],,passed,0.16593999998804065,"(4, 130000, 2, 1, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, 0, [75000, 150000, 75000, 112500, 75000], [0, 0, 0, 0, 0], 0.05, 500, [1200, 2400, 1200, 1200, 1200], 0, 0, 0)","(0, 0, 825)",,,,,,,,,,,,,,,,,,,,,,,,-0.0007520000337990496
+53,taxcalc/tests/test_calcfunctions.py::test_PersonalTaxCredit[test_tuple17-expected_value17],,passed,0.16547900000318805,"(4, 170000, 3, 2, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], 0, 0, [75000, 150000, 75000, 112500, 75000], [0, 0, 0, 0, 0], 0.05, 500, [1200, 2400, 1200, 1200, 1200], 0, 0, 0)","(0, 0, 0)",,,,,,,,,,,,,,,,,,,,,,,,-0.013006000017412561
+54,taxcalc/tests/test_calcfunctions.py::test_EITCamount[test_tuple0-6660],,passed,264.4507089999877,"(0.0, 0.45, 19330, 6660, 19330, 19330, 0.2106)",6660,,,,,,,,,,,,,,,,,,,,,,,,11.431281999989551
+55,taxcalc/tests/test_calcfunctions.py::test_EITC[test_tuple0-6660],,passed,0.19994300001258125,"(4, 0, 3, 19330, 0, 0, 0, 0, 0, 0, 0, 0, 19330, 19330, 0, [8790, 19330, 19330, 19330], 25, 64, [5890, 5890, 5890, 5890], [0.0765, 0.34, 0.4, 0.45], [538, 3584, 5920, 6660], [0.0765, 0.1598, 0.2106, 0.2106], 0.0, 3650, 9e+99, False, False, 0)",6660,,,,,,,,,,,,,,,,,,,,,,,,0.0024830000029396615
+56,taxcalc/tests/test_calcfunctions.py::test_TaxInc[test_tuple0-expected_value0],,passed,0.1871989999813195,"(527860.66, 0.0, 37000.0, 0.0, 2, 352000.0, 0.0, 0.0, 0.0, 5000.0, 7000.0, 0, 0.0, 0.0, 0.2, [160700.0, 321400.0, 160725.0, 160700.0, 321400.0], [50000.0, 100000.0, 50000.0, 50000.0, 100000.0], 0.5, 0.25, 0.025, 0.0, [9e+99, 9e+99, 9e+99, 9e+99, 9e+99], 0.0, 0.0, True)","(490860.66, 0)",,,,,,,,,,,,,,,,,,,,,,,,0.002502999990383614
+57,taxcalc/tests/test_calcfunctions.py::test_TaxInc[test_tuple1-expected_value1],,passed,0.17506700001490572,"(337675.1, 0.0, 49000.0, 0.0, 2, 23000.0, 0.0, 0.0, 0.0, 8000.0, 4000.0, 1, 0.0, 0.0, 0.2, [160700.0, 321400.0, 160725.0, 160700.0, 321400.0], [50000.0, 100000.0, 50000.0, 50000.0, 100000.0], 0.5, 0.25, 0.025, 0.0, [9e+99, 9e+99, 9e+99, 9e+99, 9e+99], 0.0, 0.0, True)","(284075.1, 4600)",,,,,,,,,,,,,,,,,,,,,,,,0.0012819999994918285
+58,taxcalc/tests/test_calcfunctions.py::test_TaxInc[test_tuple2-expected_value2],,passed,0.17301299999417097,"(603700.0, 24400.0, 0.0, 0.0, 2, 0.0, 11000.0, 0.0, 0.0, 3000.0, -3000.0, 1, 0.0, 0.0, 0.2, [160700.0, 321400.0, 160725.0, 160700.0, 321400.0], [50000.0, 100000.0, 50000.0, 50000.0, 100000.0], 0.5, 0.25, 0.025, 0.0, [9e+99, 9e+99, 9e+99, 9e+99, 9e+99], 0.0, 0.0, True)","(579300.0, 0)",,,,,,,,,,,,,,,,,,,,,,,,-0.0033869999924718286
+59,taxcalc/tests/test_calcfunctions.py::test_TaxInc[test_tuple3-expected_value3],,passed,0.168274000003521,"(90700.0, 0.0, 32000.0, 0.0, 4, 0.0, 6000.0, 0.0, 0.0, 9000.0, -3000.0, 1, 0.0, 0.0, 0.2, [160700.0, 321400.0, 160725.0, 160700.0, 321400.0], [50000.0, 100000.0, 50000.0, 50000.0, 100000.0], 0.5, 0.25, 0.025, 0.0, [9e+99, 9e+99, 9e+99, 9e+99, 9e+99], 0.0, 0.0, True)","(57500.0, 1200)",,,,,,,,,,,,,,,,,,,,,,,,-0.008526999977220812
+60,taxcalc/tests/test_calcfunctions.py::test_ChildDepTaxCredit_2021[test_tuple0-expected_value0],,passed,0.17666900001245267,"(45, 0, 0, 0, 4, 1000, 3, 1, 0, 0, 0.0, 0, 0.0, 0, 0, 0, 0.0, 0, 2000, [200000.0, 400000.0, 200000.0, 200000.0, 400000.0], 0.05, False, 500, 0.0, 0, True, True, 0, 0, 0)","(0, 1000, 0)",,,,,,,,,,,,,,,,,,,,,,,,-0.0001629999815122296
+61,taxcalc/tests/test_calcfunctions.py::test_ChildDepTaxCredit_2022[test_tuple0-expected_value0],,passed,0.173343000000159,"(45, 0, 0, 0, 4, 1000, 3, 1, 0, 0, 0.0, 0, 0.0, 0, 0, 0, 0.0, 0, 2000, [200000.0, 400000.0, 200000.0, 200000.0, 400000.0], 0.05, False, 500, 0.0, 0, False, False, 0, 0, 0)","(0, 0, 1000)",,,,,,,,,,,,,,,,,,,,,,,,0.0009800000100313178
+62,taxcalc/tests/test_calcfunctions.py::test_CTCnew_2021[test_tuple0-0],,passed,0.2037200000017947,"(1000, 0, 600, [75000, 150000, 75000, 125000, 150000], 0.05, True, True, False, 0.0, False, 0, 0, 0, 45, 0, 0, 1000, 4, 0, 0, 0)",0,,,,,,,,,,,,,,,,,,,,,,,,-0.0040789999786738085
+63,taxcalc/tests/test_calcfunctions.py::test_CTCnew_2022[test_tuple0-0],,passed,0.17056799998727,"(0, 0, 0, [0, 0, 0, 0, 0], 0, False, False, False, 0.0, False, 0, 0, 0, 45, 0, 0, 1000, 4, 0, 0, 0)",0,,,,,,,,,,,,,,,,,,,,,,,,-0.0011430000199651735
+64,taxcalc/tests/test_calcfunctions.py::test_AGI[test_tuple0-expected_value0],,passed,0.22381700000551064,"(29530, 0, 0, 0, 4, 1, 0, False, 0, 0, 0.0, [9e+99, 9e+99, 9e+99, 9e+99, 9e+99], 0.02, False, 10200, [150000, 150000, 150000, 150000, 150000], 10200, 0, 0, 0)","(19330, 0, 0)",,,,,,,,,,,,,,,,,,,,,,,,0.0016600000094513234
+65,taxcalc/tests/test_calculator.py::test_make_calculator,,passed,2435.911070000003,,,,,,,,,,,,,,,,,,,,,,,,,,4.029911999992692
+66,taxcalc/tests/test_calculator.py::test_make_calculator_deepcopy,,passed,2178.76226300001,,,,,,,,,,,,,,,,,,,,,,,,,,15.911691000013434
+67,taxcalc/tests/test_calculator.py::test_make_calculator_with_policy_reform,,passed,2568.944590000001,,,,,,,,,,,,,,,,,,,,,,,,,,17.27935300002082
+68,taxcalc/tests/test_calculator.py::test_make_calculator_with_multiyear_reform,,passed,2673.1911619999946,,,,,,,,,,,,,,,,,,,,,,,,,,34.86829199999829
+69,taxcalc/tests/test_calculator.py::test_calculator_advance_to_year,,passed,2049.235186999994,,,,,,,,,,,,,,,,,,,,,,,,,,39.27137699997752
+70,taxcalc/tests/test_calculator.py::test_make_calculator_raises_on_no_policy,,passed,375.4574699999864,,,,,,,,,,,,,,,,,,,,,,,,,,6.96021299998506
+71,taxcalc/tests/test_calculator.py::test_calculator_mtr,,passed,17416.765106000013,,,,,,,,,,,,,,,,,,,,,,,,,,45.13059499998781
+72,taxcalc/tests/test_calculator.py::test_calculator_mtr_when_PT_rates_differ,,passed,3009.5508169999903,,,,,,,,,,,,,,,,,,,,,,,,,,-14.114360000007764
+73,taxcalc/tests/test_calculator.py::test_make_calculator_increment_years_first,,passed,2551.1823119999804,,,,,,,,,,,,,,,,,,,,,,,,,,-48.12095600001976
+74,taxcalc/tests/test_calculator.py::test_ID_HC_vs_BS,,passed,5017.091901000014,,,,,,,,,,,,,,,,,,,,,,,,,,-25.03346599996803
+75,taxcalc/tests/test_calculator.py::test_ID_StateLocal_HC_vs_CRT,,passed,4762.084151999999,,,,,,,,,,,,,,,,,,,,,,,,,,10.130962999994154
+76,taxcalc/tests/test_calculator.py::test_ID_RealEstate_HC_vs_CRT,,passed,4710.636727999998,,,,,,,,,,,,,,,,,,,,,,,,,,-105.19193900000755
+77,taxcalc/tests/test_calculator.py::test_calculator_using_nonstd_input,,passed,1791.8530390000456,,,,,,,,,,,,,,,,,,,,,,,,,,1.7741630000500663
+78,taxcalc/tests/test_calculator.py::test_bad_json_names,,passed,162.7179920000117,,,,,,,,,,,,,,,,,,,,,,,,,,42.86622100002545
+79,taxcalc/tests/test_calculator.py::test_json_assump_url,,passed,292.8526389999888,,,,,,,,,,,,,,,,,,,,,,,,,,-88.95419699999246
+80,taxcalc/tests/test_calculator.py::test_read_bad_json_assump_file,,passed,0.30037999999876774,,,,,,,,,,,,,,,,,,,,,,,,,,-0.0013650000028064824
+81,taxcalc/tests/test_calculator.py::test_json_doesnt_exist,,passed,0.26820099998303704,,,,,,,,,,,,,,,,,,,,,,,,,,0.032889999999952124
+82,taxcalc/tests/test_calculator.py::test_calc_all,,passed,1680.9579949999716,,,,,,,,,,,,,,,,,,,,,,,,,,0.8719369999712399
+83,taxcalc/tests/test_calculator.py::test_noreform_documentation,,passed,4100.4056350000155,,,,,,,,,,,,,,,,,,,,,,,,,,9.502019000023665
+84,taxcalc/tests/test_calculator.py::test_reform_documentation,,passed,5975.836972000025,,,,,,,,,,,,,,,,,,,,,,,,,,48.32222200002434
+85,taxcalc/tests/test_calculator.py::test_distribution_tables,,passed,3657.1461469999917,,,,,,,,,,,,,,,,,,,,,,,,,,90.34374399999479
+86,taxcalc/tests/test_calculator.py::test_difference_table,,passed,2994.536750000009,,,,,,,,,,,,,,,,,,,,,,,,,,-31.87185900000577
+87,taxcalc/tests/test_calculator.py::test_diagnostic_table,,passed,2479.505254000003,,,,,,,,,,,,,,,,,,,,,,,,,,26.091962000009516
+88,taxcalc/tests/test_calculator.py::test_mtr_graph,,passed,2209.78969600003,,,,,,,,,,,,,,,,,,,,,,,,,,-18.92253399995525
+89,taxcalc/tests/test_calculator.py::test_atr_graph,,passed,2199.6433289999686,,,,,,,,,,,,,,,,,,,,,,,,,,-4.2750120000218885
+90,taxcalc/tests/test_calculator.py::test_privacy_of_embedded_objects,