{"action":"created","issue":{"url":"https://api.github.com/repos/OpenSourcePolicyCenter/webapp-public/issues/346","repository_url":"https://api.github.com/repos/OpenSourcePolicyCenter/webapp-public","labels_url":"https://api.github.com/repos/OpenSourcePolicyCenter/webapp-public/issues/346/labels{/name}","comments_url":"https://api.github.com/repos/OpenSourcePolicyCenter/webapp-public/issues/346/comments","events_url":"https://api.github.com/repos/OpenSourcePolicyCenter/webapp-public/issues/346/events","html_url":"https://github.com/OpenSourcePolicyCenter/webapp-public/pull/346","id":180216423,"number":346,"title":"JSON based input page taxbrain/json","user":{"login":"talumbau","id":1891418,"avatar_url":"https://avatars.githubusercontent.com/u/1891418?v=3","gravatar_id":"","url":"https://api.github.com/users/talumbau","html_url":"https://github.com/talumbau","followers_url":"https://api.github.com/users/talumbau/followers","following_url":"https://api.github.com/users/talumbau/following{/other_user}","gists_url":"https://api.github.com/users/talumbau/gists{/gist_id}","starred_url":"https://api.github.com/users/talumbau/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/talumbau/subscriptions","organizations_url":"https://api.github.com/users/talumbau/orgs","repos_url":"https://api.github.com/users/talumbau/repos","events_url":"https://api.github.com/users/talumbau/events{/privacy}","received_events_url":"https://api.github.com/users/talumbau/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/OpenSourcePolicyCenter/webapp-public/labels/in%20progress","name":"in progress","color":"ededed"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2016-09-30T04:15:46Z","updated_at":"2016-10-01T22:05:45Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/OpenSourcePolicyCenter/webapp-public/pulls/346","html_url":"https://github.com/OpenSourcePolicyCenter/webapp-public/pull/346","diff_url":"https://github.com/OpenSourcePolicyCenter/webapp-public/pull/346.diff","patch_url":"https://github.com/OpenSourcePolicyCenter/webapp-public/pull/346.patch"},"body":" - Error messages on failure to parse JSON\r\n - If valid JSON but unable to run microsim, present remote error on\r\n   failed job page\r\n - Input boxes for Calculator, Growth, and Behavior\r\n\r\nResolves #312 "},"comment":{"url":"https://api.github.com/repos/OpenSourcePolicyCenter/webapp-public/issues/comments/250940451","html_url":"https://github.com/OpenSourcePolicyCenter/webapp-public/pull/346#issuecomment-250940451","issue_url":"https://api.github.com/repos/OpenSourcePolicyCenter/webapp-public/issues/346","id":250940451,"user":{"login":"martinholmer","id":12170745,"avatar_url":"https://avatars.githubusercontent.com/u/12170745?v=3","gravatar_id":"","url":"https://api.github.com/users/martinholmer","html_url":"https://github.com/martinholmer","followers_url":"https://api.github.com/users/martinholmer/followers","following_url":"https://api.github.com/users/martinholmer/following{/other_user}","gists_url":"https://api.github.com/users/martinholmer/gists{/gist_id}","starred_url":"https://api.github.com/users/martinholmer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/martinholmer/subscriptions","organizations_url":"https://api.github.com/users/martinholmer/orgs","repos_url":"https://api.github.com/users/martinholmer/repos","events_url":"https://api.github.com/users/martinholmer/events{/privacy}","received_events_url":"https://api.github.com/users/martinholmer/received_events","type":"User","site_admin":false},"created_at":"2016-10-01T22:05:44Z","updated_at":"2016-10-01T22:05:44Z","body":"@talumbau said about TaxBrain pull request #346:\r\n> Resolves #312\r\n\r\nUnfortunately, that is not the case.\r\n\r\nIssue #312, which is entitled \"Add TaxBrain ability to specify run using JSON reform file\", is an enhancement request that contains this description of what a \"JSON reform file\" means:\r\n\r\n> There is an example of a JSON reform file in the test_incometaxio.py file [REFORM_CONTENTS string](https://github.com/open-source-economics/Tax-Calculator/blob/master/taxcalc/tests/test_incometaxio.py#L173-L208). And there is a Policy class static method that reads a JSON reform file and returns a dictionary that can be passed to the Policy class implement_reform method.\r\n\r\nThe above link to the REFORM_CONTENTS string contains the following example of a \"JSON reform file\":\r\n```\r\n// Example of a reform suitable for use as an optional IncomeTaxIO reform file.\r\n// This JSON file can contain any number of trailing //-style comments, which\r\n// will be removed before the contents are converted from JSON to a dictionary.\r\n// The primary keys are policy parameters and secondary keys are years.\r\n// Both the primary and secondary key values must be enclosed in quotes (\").\r\n// Boolean variables are specified as true or false (no quotes; all lowercase).\r\n{\r\n    \"_AMT_tthd\": // AMT taxinc threshold separating the two AMT tax brackets\r\n    {\"2015\": [200000],\r\n     \"2017\": [300000]\r\n    },\r\n    \"_EITC_c\": // maximum EITC amount by number of qualifying kids (0,1,2,3+)\r\n    {\"2016\": [[ 900, 5000,  8000,  9000]],\r\n     \"2019\": [[1200, 7000, 10000, 12000]]\r\n    },\r\n    \"_II_em\": // personal exemption amount (see indexing changes below)\r\n    {\"2016\": [6000],\r\n     \"2018\": [7500],\r\n     \"2020\": [9000]\r\n    },\r\n    \"_II_em_cpi\": // personal exemption amount indexing status\r\n    {\"2016\": false, // values in future years are same as this year value\r\n     \"2018\": true   // values in future years indexed with this year as base\r\n    },\r\n    \"_SS_Earnings_c\": // social security (OASDI) maximum taxable earnings\r\n    {\"2016\": [300000],\r\n     \"2018\": [500000],\r\n     \"2020\": [700000]\r\n    },\r\n    \"_AMT_em_cpi\": // AMT exemption amount indexing status\r\n    {\"2017\": false, // values in future years are same as this year value\r\n     \"2020\": true   // values in future years indexed with this year as base\r\n    }\r\n}\r\n```\r\nNotice that this JSON reform file has the same structure as the TaxBrain GUI presents to TaxBrain users: the policy parameters are listed first with the timing and magnitude of reform changes listed for each parameter involved in the reform.\r\n\r\nBut pull request #346 does not implement the requested enhancement because it assumes the primary JSON keys are calendar years, not policy parameters.  This means that pull request #346 implements something that is not only incompatible with the JSON reform files used by the `inctax.py` and `simtax.py` command-line interfaces to the taxcalc package, but is inconsistent with the TaxBrain GUI.\r\n\r\nBecause there never was any discussion of the pros and cons of rejecting the enhancement request in issue #312, it would appear that the nature of pull request #346 is based on an oversight.  If so, then that oversight needs to be corrected.  If not, why was enhancement request #312 rejected without any discussion?\r\n\r\n@MattHJensen "}}
{"actor":{"display_login":"martinholmer"}}