{"action":"created","comment":{"url":"https://api.github.com/repos/python/cpython/pulls/comments/212241541","pull_request_review_id":148828275,"id":212241541,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIxMjI0MTU0MQ==","diff_hunk":"@@ -4848,9 +4889,17 @@ datetime_fromisoformat(PyObject* cls, PyObject *dtstr) {\n         return NULL;\n     }\n \n-    Py_ssize_t len;\n+    int needs_decref = 0;\n+    dtstr = _sanitize_isoformat_str(dtstr, &needs_decref);","path":"Modules/_datetimemodule.c","position":102,"original_position":102,"commit_id":"35ec22c02a90fcce0bae8ed6890bd8856ca9841b","original_commit_id":"35ec22c02a90fcce0bae8ed6890bd8856ca9841b","user":{"login":"izbyshev","id":11427362,"node_id":"MDQ6VXNlcjExNDI3MzYy","avatar_url":"https://avatars2.githubusercontent.com/u/11427362?v=4","gravatar_id":"","url":"https://api.github.com/users/izbyshev","html_url":"https://github.com/izbyshev","followers_url":"https://api.github.com/users/izbyshev/followers","following_url":"https://api.github.com/users/izbyshev/following{/other_user}","gists_url":"https://api.github.com/users/izbyshev/gists{/gist_id}","starred_url":"https://api.github.com/users/izbyshev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/izbyshev/subscriptions","organizations_url":"https://api.github.com/users/izbyshev/orgs","repos_url":"https://api.github.com/users/izbyshev/repos","events_url":"https://api.github.com/users/izbyshev/events{/privacy}","received_events_url":"https://api.github.com/users/izbyshev/received_events","type":"User","site_admin":false},"body":"`dtstr` should be checked for NULL.","created_at":"2018-08-23T09:29:03Z","updated_at":"2018-08-23T09:29:04Z","html_url":"https://github.com/python/cpython/pull/8862#discussion_r212241541","pull_request_url":"https://api.github.com/repos/python/cpython/pulls/8862","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/python/cpython/pulls/comments/212241541"},"html":{"href":"https://github.com/python/cpython/pull/8862#discussion_r212241541"},"pull_request":{"href":"https://api.github.com/repos/python/cpython/pulls/8862"}}},"pull_request":{"url":"https://api.github.com/repos/python/cpython/pulls/8862","id":210193343,"node_id":"MDExOlB1bGxSZXF1ZXN0MjEwMTkzMzQz","html_url":"https://github.com/python/cpython/pull/8862","diff_url":"https://github.com/python/cpython/pull/8862.diff","patch_url":"https://github.com/python/cpython/pull/8862.patch","issue_url":"https://api.github.com/repos/python/cpython/issues/8862","number":8862,"state":"open","locked":false,"title":"bpo-34454: Fix issue with non-UTF8 separator strings","user":{"login":"pganssle","id":1377457,"node_id":"MDQ6VXNlcjEzNzc0NTc=","avatar_url":"https://avatars0.githubusercontent.com/u/1377457?v=4","gravatar_id":"","url":"https://api.github.com/users/pganssle","html_url":"https://github.com/pganssle","followers_url":"https://api.github.com/users/pganssle/followers","following_url":"https://api.github.com/users/pganssle/following{/other_user}","gists_url":"https://api.github.com/users/pganssle/gists{/gist_id}","starred_url":"https://api.github.com/users/pganssle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pganssle/subscriptions","organizations_url":"https://api.github.com/users/pganssle/orgs","repos_url":"https://api.github.com/users/pganssle/repos","events_url":"https://api.github.com/users/pganssle/events{/privacy}","received_events_url":"https://api.github.com/users/pganssle/received_events","type":"User","site_admin":false},"body":"It is possible to pass a non-UTF-8 string as a separator in `datetime.isoformat`, but the current implementation starts by decoding to UTF-8, which will fail even for some valid strings.\r\n\r\nIn the special case of non-UTF-8 separators, we replace the separator character with `T` before encoding as UTF-8, so that encoding errors only occur on *invalid* ISO 8601 strings, and are handled as a standard `ValueError` (as would occur in the pure Python version). \r\n\r\n[bpo-34454](https://www.bugs.python.org/issue34454): Implementation of the fix without significant performance problems.\r\n\r\n<!-- issue-number: [bpo-34454](https://www.bugs.python.org/issue34454) -->\r\nhttps://bugs.python.org/issue34454\r\n<!-- /issue-number -->\r\n","created_at":"2018-08-22T16:31:26Z","updated_at":"2018-08-23T09:29:03Z","closed_at":null,"merged_at":null,"merge_commit_sha":"a7617e6163cabce599d7e8d51c94a05bf0b68620","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":536945472,"node_id":"MDU6TGFiZWw1MzY5NDU0NzI=","url":"https://api.github.com/repos/python/cpython/labels/CLA%20signed","name":"CLA signed","color":"0e8a16","default":false},{"id":666979922,"node_id":"MDU6TGFiZWw2NjY5Nzk5MjI=","url":"https://api.github.com/repos/python/cpython/labels/awaiting%20changes","name":"awaiting changes","color":"fbca04","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/python/cpython/pulls/8862/commits","review_comments_url":"https://api.github.com/repos/python/cpython/pulls/8862/comments","review_comment_url":"https://api.github.com/repos/python/cpython/pulls/comments{/number}","comments_url":"https://api.github.com/repos/python/cpython/issues/8862/comments","statuses_url":"https://api.github.com/repos/python/cpython/statuses/35ec22c02a90fcce0bae8ed6890bd8856ca9841b","head":{"label":"pganssle:fromisoformat_fix_nonutf8_crash","ref":"fromisoformat_fix_nonutf8_crash","sha":"35ec22c02a90fcce0bae8ed6890bd8856ca9841b","user":{"login":"pganssle","id":1377457,"node_id":"MDQ6VXNlcjEzNzc0NTc=","avatar_url":"https://avatars0.githubusercontent.com/u/1377457?v=4","gravatar_id":"","url":"https://api.github.com/users/pganssle","html_url":"https://github.com/pganssle","followers_url":"https://api.github.com/users/pganssle/followers","following_url":"https://api.github.com/users/pganssle/following{/other_user}","gists_url":"https://api.github.com/users/pganssle/gists{/gist_id}","starred_url":"https://api.github.com/users/pganssle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pganssle/subscriptions","organizations_url":"https://api.github.com/users/pganssle/orgs","repos_url":"https://api.github.com/users/pganssle/repos","events_url":"https://api.github.com/users/pganssle/events{/privacy}","received_events_url":"https://api.github.com/users/pganssle/received_events","type":"User","site_admin":false},"repo":{"id":108867719,"node_id":"MDEwOlJlcG9zaXRvcnkxMDg4Njc3MTk=","name":"cpython","full_name":"pganssle/cpython","owner":{"login":"pganssle","id":1377457,"node_id":"MDQ6VXNlcjEzNzc0NTc=","avatar_url":"https://avatars0.githubusercontent.com/u/1377457?v=4","gravatar_id":"","url":"https://api.github.com/users/pganssle","html_url":"https://github.com/pganssle","followers_url":"https://api.github.com/users/pganssle/followers","following_url":"https://api.github.com/users/pganssle/following{/other_user}","gists_url":"https://api.github.com/users/pganssle/gists{/gist_id}","starred_url":"https://api.github.com/users/pganssle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pganssle/subscriptions","organizations_url":"https://api.github.com/users/pganssle/orgs","repos_url":"https://api.github.com/users/pganssle/repos","events_url":"https://api.github.com/users/pganssle/events{/privacy}","received_events_url":"https://api.github.com/users/pganssle/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/pganssle/cpython","description":"The Python programming language","fork":true,"url":"https://api.github.com/repos/pganssle/cpython","forks_url":"https://api.github.com/repos/pganssle/cpython/forks","keys_url":"https://api.github.com/repos/pganssle/cpython/keys{/key_id}","collaborators_url":"https://api.github.com/repos/pganssle/cpython/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/pganssle/cpython/teams","hooks_url":"https://api.github.com/repos/pganssle/cpython/hooks","issue_events_url":"https://api.github.com/repos/pganssle/cpython/issues/events{/number}","events_url":"https://api.github.com/repos/pganssle/cpython/events","assignees_url":"https://api.github.com/repos/pganssle/cpython/assignees{/user}","branches_url":"https://api.github.com/repos/pganssle/cpython/branches{/branch}","tags_url":"https://api.github.com/repos/pganssle/cpython/tags","blobs_url":"https://api.github.com/repos/pganssle/cpython/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/pganssle/cpython/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/pganssle/cpython/git/refs{/sha}","trees_url":"https://api.github.com/repos/pganssle/cpython/git/trees{/sha}","statuses_url":"https://api.github.com/repos/pganssle/cpython/statuses/{sha}","languages_url":"https://api.github.com/repos/pganssle/cpython/languages","stargazers_url":"https://api.github.com/repos/pganssle/cpython/stargazers","contributors_url":"https://api.github.com/repos/pganssle/cpython/contributors","subscribers_url":"https://api.github.com/repos/pganssle/cpython/subscribers","subscription_url":"https://api.github.com/repos/pganssle/cpython/subscription","commits_url":"https://api.github.com/repos/pganssle/cpython/commits{/sha}","git_commits_url":"https://api.github.com/repos/pganssle/cpython/git/commits{/sha}","comments_url":"https://api.github.com/repos/pganssle/cpython/comments{/number}","issue_comment_url":"https://api.github.com/repos/pganssle/cpython/issues/comments{/number}","contents_url":"https://api.github.com/repos/pganssle/cpython/contents/{+path}","compare_url":"https://api.github.com/repos/pganssle/cpython/compare/{base}...{head}","merges_url":"https://api.github.com/repos/pganssle/cpython/merges","archive_url":"https://api.github.com/repos/pganssle/cpython/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/pganssle/cpython/downloads","issues_url":"https://api.github.com/repos/pganssle/cpython/issues{/number}","pulls_url":"https://api.github.com/repos/pganssle/cpython/pulls{/number}","milestones_url":"https://api.github.com/repos/pganssle/cpython/milestones{/number}","notifications_url":"https://api.github.com/repos/pganssle/cpython/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/pganssle/cpython/labels{/name}","releases_url":"https://api.github.com/repos/pganssle/cpython/releases{/id}","deployments_url":"https://api.github.com/repos/pganssle/cpython/deployments","created_at":"2017-10-30T15:09:38Z","updated_at":"2018-04-20T18:22:20Z","pushed_at":"2018-08-22T21:52:57Z","git_url":"git://github.com/pganssle/cpython.git","ssh_url":"git@github.com:pganssle/cpython.git","clone_url":"https://github.com/pganssle/cpython.git","svn_url":"https://github.com/pganssle/cpython","homepage":"https://www.python.org/","size":238039,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"python:master","ref":"master","sha":"65bef36f0bc5d8c3f6a47568012df4ae5ba2ac8b","user":{"login":"python","id":1525981,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE1MjU5ODE=","avatar_url":"https://avatars3.githubusercontent.com/u/1525981?v=4","gravatar_id":"","url":"https://api.github.com/users/python","html_url":"https://github.com/python","followers_url":"https://api.github.com/users/python/followers","following_url":"https://api.github.com/users/python/following{/other_user}","gists_url":"https://api.github.com/users/python/gists{/gist_id}","starred_url":"https://api.github.com/users/python/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/python/subscriptions","organizations_url":"https://api.github.com/users/python/orgs","repos_url":"https://api.github.com/users/python/repos","events_url":"https://api.github.com/users/python/events{/privacy}","received_events_url":"https://api.github.com/users/python/received_events","type":"Organization","site_admin":false},"repo":{"id":81598961,"node_id":"MDEwOlJlcG9zaXRvcnk4MTU5ODk2MQ==","name":"cpython","full_name":"python/cpython","owner":{"login":"python","id":1525981,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE1MjU5ODE=","avatar_url":"https://avatars3.githubusercontent.com/u/1525981?v=4","gravatar_id":"","url":"https://api.github.com/users/python","html_url":"https://github.com/python","followers_url":"https://api.github.com/users/python/followers","following_url":"https://api.github.com/users/python/following{/other_user}","gists_url":"https://api.github.com/users/python/gists{/gist_id}","starred_url":"https://api.github.com/users/python/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/python/subscriptions","organizations_url":"https://api.github.com/users/python/orgs","repos_url":"https://api.github.com/users/python/repos","events_url":"https://api.github.com/users/python/events{/privacy}","received_events_url":"https://api.github.com/users/python/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/python/cpython","description":"The Python programming language","fork":false,"url":"https://api.github.com/repos/python/cpython","forks_url":"https://api.github.com/repos/python/cpython/forks","keys_url":"https://api.github.com/repos/python/cpython/keys{/key_id}","collaborators_url":"https://api.github.com/repos/python/cpython/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/python/cpython/teams","hooks_url":"https://api.github.com/repos/python/cpython/hooks","issue_events_url":"https://api.github.com/repos/python/cpython/issues/events{/number}","events_url":"https://api.github.com/repos/python/cpython/events","assignees_url":"https://api.github.com/repos/python/cpython/assignees{/user}","branches_url":"https://api.github.com/repos/python/cpython/branches{/branch}","tags_url":"https://api.github.com/repos/python/cpython/tags","blobs_url":"https://api.github.com/repos/python/cpython/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/python/cpython/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/python/cpython/git/refs{/sha}","trees_url":"https://api.github.com/repos/python/cpython/git/trees{/sha}","statuses_url":"https://api.github.com/repos/python/cpython/statuses/{sha}","languages_url":"https://api.github.com/repos/python/cpython/languages","stargazers_url":"https://api.github.com/repos/python/cpython/stargazers","contributors_url":"https://api.github.com/repos/python/cpython/contributors","subscribers_url":"https://api.github.com/repos/python/cpython/subscribers","subscription_url":"https://api.github.com/repos/python/cpython/subscription","commits_url":"https://api.github.com/repos/python/cpython/commits{/sha}","git_commits_url":"https://api.github.com/repos/python/cpython/git/commits{/sha}","comments_url":"https://api.github.com/repos/python/cpython/comments{/number}","issue_comment_url":"https://api.github.com/repos/python/cpython/issues/comments{/number}","contents_url":"https://api.github.com/repos/python/cpython/contents/{+path}","compare_url":"https://api.github.com/repos/python/cpython/compare/{base}...{head}","merges_url":"https://api.github.com/repos/python/cpython/merges","archive_url":"https://api.github.com/repos/python/cpython/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/python/cpython/downloads","issues_url":"https://api.github.com/repos/python/cpython/issues{/number}","pulls_url":"https://api.github.com/repos/python/cpython/pulls{/number}","milestones_url":"https://api.github.com/repos/python/cpython/milestones{/number}","notifications_url":"https://api.github.com/repos/python/cpython/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/python/cpython/labels{/name}","releases_url":"https://api.github.com/repos/python/cpython/releases{/id}","deployments_url":"https://api.github.com/repos/python/cpython/deployments","created_at":"2017-02-10T19:23:51Z","updated_at":"2018-08-23T09:17:59Z","pushed_at":"2018-08-23T08:14:55Z","git_url":"git://github.com/python/cpython.git","ssh_url":"git@github.com:python/cpython.git","clone_url":"https://github.com/python/cpython.git","svn_url":"https://github.com/python/cpython","homepage":"https://www.python.org/","size":245952,"stargazers_count":19355,"watchers_count":19355,"language":"Python","has_issues":false,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":6528,"mirror_url":null,"archived":false,"open_issues_count":871,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":6528,"open_issues":871,"watchers":19355,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/python/cpython/pulls/8862"},"html":{"href":"https://github.com/python/cpython/pull/8862"},"issue":{"href":"https://api.github.com/repos/python/cpython/issues/8862"},"comments":{"href":"https://api.github.com/repos/python/cpython/issues/8862/comments"},"review_comments":{"href":"https://api.github.com/repos/python/cpython/pulls/8862/comments"},"review_comment":{"href":"https://api.github.com/repos/python/cpython/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/python/cpython/pulls/8862/commits"},"statuses":{"href":"https://api.github.com/repos/python/cpython/statuses/35ec22c02a90fcce0bae8ed6890bd8856ca9841b"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"izbyshev"}}