{"action":"opened","number":330,"pull_request":{"url":"https://api.github.com/repos/plotly/dash/pulls/330","id":208161375,"node_id":"MDExOlB1bGxSZXF1ZXN0MjA4MTYxMzc1","html_url":"https://github.com/plotly/dash/pull/330","diff_url":"https://github.com/plotly/dash/pull/330.diff","patch_url":"https://github.com/plotly/dash/pull/330.patch","issue_url":"https://api.github.com/repos/plotly/dash/issues/330","number":330,"state":"open","locked":false,"title":"Check to make sure children are not nested lists. Fix plotly/dash-renderer#23","user":{"login":"rmarren1","id":10272301,"node_id":"MDQ6VXNlcjEwMjcyMzAx","avatar_url":"https://avatars3.githubusercontent.com/u/10272301?v=4","gravatar_id":"","url":"https://api.github.com/users/rmarren1","html_url":"https://github.com/rmarren1","followers_url":"https://api.github.com/users/rmarren1/followers","following_url":"https://api.github.com/users/rmarren1/following{/other_user}","gists_url":"https://api.github.com/users/rmarren1/gists{/gist_id}","starred_url":"https://api.github.com/users/rmarren1/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rmarren1/subscriptions","organizations_url":"https://api.github.com/users/rmarren1/orgs","repos_url":"https://api.github.com/users/rmarren1/repos","events_url":"https://api.github.com/users/rmarren1/events{/privacy}","received_events_url":"https://api.github.com/users/rmarren1/received_events","type":"User","site_admin":false},"body":"Proposed fix to https://github.com/plotly/dash-renderer/issues/23\r\n\r\nThis solution borrows heavily from https://github.com/plotly/dash/pull/273. Basically the same except instead of checking if values in the tree are a member of a valid set, we just check if the value is not a nested list.\r\n\r\nA major difference is that this check if performed before _each_ callback rather than being called only if `json.dumps` fails. In this case, `json.dumps` succeeds since nested arrays are valid JSON.\r\n\r\nExamples:\r\n```\r\ndash.exceptions.InvalidCallbackReturnValue: \r\nThe callback for property `children` of component `output`\r\nreturned a tree with one value having type `list`\r\nwhich is not JSON serializable.\r\n\r\nThe value in question is located at\r\n[*] list \r\n\r\n\r\nand has string representation\r\n`['nested']`\r\n\r\nIn general, Dash properties can only be\r\ndash components, strings, dictionaries, numbers, None,\r\nor un-nested lists of those.\r\n\r\n```\r\n```\r\ndash.exceptions.InvalidCallbackReturnValue: \r\nThe callback for property `children` of component `output`\r\nreturned a tree with one value having type `list`\r\nwhich can not be serialized by Dash.\r\n\r\nThe value in question is located at\r\n[*] Div \r\n\r\n\r\nand has string representation\r\n`[['nested']]`\r\n\r\nIn general, Dash properties can only be\r\ndash components, strings, dictionaries, numbers, None,\r\nor un-nested lists of those.\r\n```","created_at":"2018-08-14T03:45:56Z","updated_at":"2018-08-14T03:45:56Z","closed_at":null,"merged_at":null,"merge_commit_sha":null,"assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/plotly/dash/pulls/330/commits","review_comments_url":"https://api.github.com/repos/plotly/dash/pulls/330/comments","review_comment_url":"https://api.github.com/repos/plotly/dash/pulls/comments{/number}","comments_url":"https://api.github.com/repos/plotly/dash/issues/330/comments","statuses_url":"https://api.github.com/repos/plotly/dash/statuses/6f39099b457ac13a21cad2ece49a5bf43348e412","head":{"label":"rmarren1:nested-arrays","ref":"nested-arrays","sha":"6f39099b457ac13a21cad2ece49a5bf43348e412","user":{"login":"rmarren1","id":10272301,"node_id":"MDQ6VXNlcjEwMjcyMzAx","avatar_url":"https://avatars3.githubusercontent.com/u/10272301?v=4","gravatar_id":"","url":"https://api.github.com/users/rmarren1","html_url":"https://github.com/rmarren1","followers_url":"https://api.github.com/users/rmarren1/followers","following_url":"https://api.github.com/users/rmarren1/following{/other_user}","gists_url":"https://api.github.com/users/rmarren1/gists{/gist_id}","starred_url":"https://api.github.com/users/rmarren1/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rmarren1/subscriptions","organizations_url":"https://api.github.com/users/rmarren1/orgs","repos_url":"https://api.github.com/users/rmarren1/repos","events_url":"https://api.github.com/users/rmarren1/events{/privacy}","received_events_url":"https://api.github.com/users/rmarren1/received_events","type":"User","site_admin":false},"repo":{"id":127372872,"node_id":"MDEwOlJlcG9zaXRvcnkxMjczNzI4NzI=","name":"dash","full_name":"rmarren1/dash","owner":{"login":"rmarren1","id":10272301,"node_id":"MDQ6VXNlcjEwMjcyMzAx","avatar_url":"https://avatars3.githubusercontent.com/u/10272301?v=4","gravatar_id":"","url":"https://api.github.com/users/rmarren1","html_url":"https://github.com/rmarren1","followers_url":"https://api.github.com/users/rmarren1/followers","following_url":"https://api.github.com/users/rmarren1/following{/other_user}","gists_url":"https://api.github.com/users/rmarren1/gists{/gist_id}","starred_url":"https://api.github.com/users/rmarren1/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rmarren1/subscriptions","organizations_url":"https://api.github.com/users/rmarren1/orgs","repos_url":"https://api.github.com/users/rmarren1/repos","events_url":"https://api.github.com/users/rmarren1/events{/privacy}","received_events_url":"https://api.github.com/users/rmarren1/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/rmarren1/dash","description":"Interactive, Reactive Web Apps for Python. Dash Is Productive™","fork":true,"url":"https://api.github.com/repos/rmarren1/dash","forks_url":"https://api.github.com/repos/rmarren1/dash/forks","keys_url":"https://api.github.com/repos/rmarren1/dash/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rmarren1/dash/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rmarren1/dash/teams","hooks_url":"https://api.github.com/repos/rmarren1/dash/hooks","issue_events_url":"https://api.github.com/repos/rmarren1/dash/issues/events{/number}","events_url":"https://api.github.com/repos/rmarren1/dash/events","assignees_url":"https://api.github.com/repos/rmarren1/dash/assignees{/user}","branches_url":"https://api.github.com/repos/rmarren1/dash/branches{/branch}","tags_url":"https://api.github.com/repos/rmarren1/dash/tags","blobs_url":"https://api.github.com/repos/rmarren1/dash/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rmarren1/dash/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rmarren1/dash/git/refs{/sha}","trees_url":"https://api.github.com/repos/rmarren1/dash/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rmarren1/dash/statuses/{sha}","languages_url":"https://api.github.com/repos/rmarren1/dash/languages","stargazers_url":"https://api.github.com/repos/rmarren1/dash/stargazers","contributors_url":"https://api.github.com/repos/rmarren1/dash/contributors","subscribers_url":"https://api.github.com/repos/rmarren1/dash/subscribers","subscription_url":"https://api.github.com/repos/rmarren1/dash/subscription","commits_url":"https://api.github.com/repos/rmarren1/dash/commits{/sha}","git_commits_url":"https://api.github.com/repos/rmarren1/dash/git/commits{/sha}","comments_url":"https://api.github.com/repos/rmarren1/dash/comments{/number}","issue_comment_url":"https://api.github.com/repos/rmarren1/dash/issues/comments{/number}","contents_url":"https://api.github.com/repos/rmarren1/dash/contents/{+path}","compare_url":"https://api.github.com/repos/rmarren1/dash/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rmarren1/dash/merges","archive_url":"https://api.github.com/repos/rmarren1/dash/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rmarren1/dash/downloads","issues_url":"https://api.github.com/repos/rmarren1/dash/issues{/number}","pulls_url":"https://api.github.com/repos/rmarren1/dash/pulls{/number}","milestones_url":"https://api.github.com/repos/rmarren1/dash/milestones{/number}","notifications_url":"https://api.github.com/repos/rmarren1/dash/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rmarren1/dash/labels{/name}","releases_url":"https://api.github.com/repos/rmarren1/dash/releases{/id}","deployments_url":"https://api.github.com/repos/rmarren1/dash/deployments","created_at":"2018-03-30T02:45:29Z","updated_at":"2018-08-03T00:01:12Z","pushed_at":"2018-08-14T03:37:27Z","git_url":"git://github.com/rmarren1/dash.git","ssh_url":"git@github.com:rmarren1/dash.git","clone_url":"https://github.com/rmarren1/dash.git","svn_url":"https://github.com/rmarren1/dash","homepage":"https://plot.ly/products/dash","size":2001,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"plotly:master","ref":"master","sha":"a5b75920b160f925cb73f16e285797976000c4dc","user":{"login":"plotly","id":5997976,"node_id":"MDEyOk9yZ2FuaXphdGlvbjU5OTc5NzY=","avatar_url":"https://avatars2.githubusercontent.com/u/5997976?v=4","gravatar_id":"","url":"https://api.github.com/users/plotly","html_url":"https://github.com/plotly","followers_url":"https://api.github.com/users/plotly/followers","following_url":"https://api.github.com/users/plotly/following{/other_user}","gists_url":"https://api.github.com/users/plotly/gists{/gist_id}","starred_url":"https://api.github.com/users/plotly/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/plotly/subscriptions","organizations_url":"https://api.github.com/users/plotly/orgs","repos_url":"https://api.github.com/users/plotly/repos","events_url":"https://api.github.com/users/plotly/events{/privacy}","received_events_url":"https://api.github.com/users/plotly/received_events","type":"Organization","site_admin":false},"repo":{"id":33702544,"node_id":"MDEwOlJlcG9zaXRvcnkzMzcwMjU0NA==","name":"dash","full_name":"plotly/dash","owner":{"login":"plotly","id":5997976,"node_id":"MDEyOk9yZ2FuaXphdGlvbjU5OTc5NzY=","avatar_url":"https://avatars2.githubusercontent.com/u/5997976?v=4","gravatar_id":"","url":"https://api.github.com/users/plotly","html_url":"https://github.com/plotly","followers_url":"https://api.github.com/users/plotly/followers","following_url":"https://api.github.com/users/plotly/following{/other_user}","gists_url":"https://api.github.com/users/plotly/gists{/gist_id}","starred_url":"https://api.github.com/users/plotly/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/plotly/subscriptions","organizations_url":"https://api.github.com/users/plotly/orgs","repos_url":"https://api.github.com/users/plotly/repos","events_url":"https://api.github.com/users/plotly/events{/privacy}","received_events_url":"https://api.github.com/users/plotly/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/plotly/dash","description":"Interactive, Reactive Web Apps for Python. Dash Is Productive™","fork":false,"url":"https://api.github.com/repos/plotly/dash","forks_url":"https://api.github.com/repos/plotly/dash/forks","keys_url":"https://api.github.com/repos/plotly/dash/keys{/key_id}","collaborators_url":"https://api.github.com/repos/plotly/dash/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/plotly/dash/teams","hooks_url":"https://api.github.com/repos/plotly/dash/hooks","issue_events_url":"https://api.github.com/repos/plotly/dash/issues/events{/number}","events_url":"https://api.github.com/repos/plotly/dash/events","assignees_url":"https://api.github.com/repos/plotly/dash/assignees{/user}","branches_url":"https://api.github.com/repos/plotly/dash/branches{/branch}","tags_url":"https://api.github.com/repos/plotly/dash/tags","blobs_url":"https://api.github.com/repos/plotly/dash/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/plotly/dash/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/plotly/dash/git/refs{/sha}","trees_url":"https://api.github.com/repos/plotly/dash/git/trees{/sha}","statuses_url":"https://api.github.com/repos/plotly/dash/statuses/{sha}","languages_url":"https://api.github.com/repos/plotly/dash/languages","stargazers_url":"https://api.github.com/repos/plotly/dash/stargazers","contributors_url":"https://api.github.com/repos/plotly/dash/contributors","subscribers_url":"https://api.github.com/repos/plotly/dash/subscribers","subscription_url":"https://api.github.com/repos/plotly/dash/subscription","commits_url":"https://api.github.com/repos/plotly/dash/commits{/sha}","git_commits_url":"https://api.github.com/repos/plotly/dash/git/commits{/sha}","comments_url":"https://api.github.com/repos/plotly/dash/comments{/number}","issue_comment_url":"https://api.github.com/repos/plotly/dash/issues/comments{/number}","contents_url":"https://api.github.com/repos/plotly/dash/contents/{+path}","compare_url":"https://api.github.com/repos/plotly/dash/compare/{base}...{head}","merges_url":"https://api.github.com/repos/plotly/dash/merges","archive_url":"https://api.github.com/repos/plotly/dash/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/plotly/dash/downloads","issues_url":"https://api.github.com/repos/plotly/dash/issues{/number}","pulls_url":"https://api.github.com/repos/plotly/dash/pulls{/number}","milestones_url":"https://api.github.com/repos/plotly/dash/milestones{/number}","notifications_url":"https://api.github.com/repos/plotly/dash/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/plotly/dash/labels{/name}","releases_url":"https://api.github.com/repos/plotly/dash/releases{/id}","deployments_url":"https://api.github.com/repos/plotly/dash/deployments","created_at":"2015-04-10T01:53:08Z","updated_at":"2018-08-14T02:21:13Z","pushed_at":"2018-08-13T22:02:09Z","git_url":"git://github.com/plotly/dash.git","ssh_url":"git@github.com:plotly/dash.git","clone_url":"https://github.com/plotly/dash.git","svn_url":"https://github.com/plotly/dash","homepage":"https://plot.ly/products/dash","size":1957,"stargazers_count":5724,"watchers_count":5724,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":556,"mirror_url":null,"archived":false,"open_issues_count":81,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":556,"open_issues":81,"watchers":5724,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/plotly/dash/pulls/330"},"html":{"href":"https://github.com/plotly/dash/pull/330"},"issue":{"href":"https://api.github.com/repos/plotly/dash/issues/330"},"comments":{"href":"https://api.github.com/repos/plotly/dash/issues/330/comments"},"review_comments":{"href":"https://api.github.com/repos/plotly/dash/pulls/330/comments"},"review_comment":{"href":"https://api.github.com/repos/plotly/dash/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/plotly/dash/pulls/330/commits"},"statuses":{"href":"https://api.github.com/repos/plotly/dash/statuses/6f39099b457ac13a21cad2ece49a5bf43348e412"}},"author_association":"CONTRIBUTOR","merged":false,"mergeable":null,"rebaseable":null,"mergeable_state":"unknown","merged_by":null,"comments":0,"review_comments":0,"maintainer_can_modify":true,"commits":1,"additions":169,"deletions":105,"changed_files":2}}
{"actor":{"display_login":"rmarren1"}}