{"action":"created","comment":{"url":"https://api.github.com/repos/cython/cython/pulls/comments/327824006","pull_request_review_id":292663105,"id":327824006,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDMyNzgyNDAwNg==","diff_hunk":"@@ -184,6 +195,32 @@ class NormalClassΓΓ(Γναμε2):\n             pass\n         return nestεd\n \n+def unicode_kwarg(*,αrg):","path":"tests/run/unicode_identifiers.pyx","position":22,"original_position":22,"commit_id":"045a8531aac430351b66862d24fb53fe2c4adb9a","original_commit_id":"045a8531aac430351b66862d24fb53fe2c4adb9a","user":{"login":"scoder","id":491659,"node_id":"MDQ6VXNlcjQ5MTY1OQ==","avatar_url":"https://avatars0.githubusercontent.com/u/491659?v=4","gravatar_id":"","url":"https://api.github.com/users/scoder","html_url":"https://github.com/scoder","followers_url":"https://api.github.com/users/scoder/followers","following_url":"https://api.github.com/users/scoder/following{/other_user}","gists_url":"https://api.github.com/users/scoder/gists{/gist_id}","starred_url":"https://api.github.com/users/scoder/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/scoder/subscriptions","organizations_url":"https://api.github.com/users/scoder/orgs","repos_url":"https://api.github.com/users/scoder/repos","events_url":"https://api.github.com/users/scoder/events{/privacy}","received_events_url":"https://api.github.com/users/scoder/received_events","type":"User","site_admin":false},"body":"Space.\r\nAlso, I think an example where the difference is easier to spot (in different fonts) than for `arg` versus `αrg` would be nice.","created_at":"2019-09-24T20:40:54Z","updated_at":"2019-09-24T20:49:05Z","html_url":"https://github.com/cython/cython/pull/3119#discussion_r327824006","pull_request_url":"https://api.github.com/repos/cython/cython/pulls/3119","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/cython/cython/pulls/comments/327824006"},"html":{"href":"https://github.com/cython/cython/pull/3119#discussion_r327824006"},"pull_request":{"href":"https://api.github.com/repos/cython/cython/pulls/3119"}}},"pull_request":{"url":"https://api.github.com/repos/cython/cython/pulls/3119","id":313053864,"node_id":"MDExOlB1bGxSZXF1ZXN0MzEzMDUzODY0","html_url":"https://github.com/cython/cython/pull/3119","diff_url":"https://github.com/cython/cython/pull/3119.diff","patch_url":"https://github.com/cython/cython/pull/3119.patch","issue_url":"https://api.github.com/repos/cython/cython/issues/3119","number":3119,"state":"open","locked":false,"title":"(more) unicode identifiers and imports","user":{"login":"da-woods","id":10536947,"node_id":"MDQ6VXNlcjEwNTM2OTQ3","avatar_url":"https://avatars0.githubusercontent.com/u/10536947?v=4","gravatar_id":"","url":"https://api.github.com/users/da-woods","html_url":"https://github.com/da-woods","followers_url":"https://api.github.com/users/da-woods/followers","following_url":"https://api.github.com/users/da-woods/following{/other_user}","gists_url":"https://api.github.com/users/da-woods/gists{/gist_id}","starred_url":"https://api.github.com/users/da-woods/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/da-woods/subscriptions","organizations_url":"https://api.github.com/users/da-woods/orgs","repos_url":"https://api.github.com/users/da-woods/repos","events_url":"https://api.github.com/users/da-woods/events{/privacy}","received_events_url":"https://api.github.com/users/da-woods/received_events","type":"User","site_admin":false},"body":"This hopefully \"finishes\" the support for unicode identifiers. It builds off https://github.com/cython/cython/pull/3096, so I don't think there's much point in looking at it before that's finalized.\r\n\r\nIt adds 2 features:\r\n1. Support for unicode identifiers in C/C++ features such as structs and cppclasses. For structs used purely in Python I've mangled the names with punycode. For features that are exported/imported to C with \"public\" or \"extern\", I've translated the names to be \\uXXXX escaped (without any mangling or normalization). Pretty much every modern C/C++ compiler supports unicode in identifiers in this form (only Clang supports it in raw form I think), so this this seems like the most compatible thing to do. I've trusted that the user knows what names they want and not performed any normalization for these (I don't think normalization is yet defined in C/C++ standards, so it's hard to do anything else).\r\n\r\n2. Support for import of modules with unicode in their names. As in PEP 489 this is only supported from Python 3.5 onwards (but the Cython translation step should work fine in earlier versions...). The Python 2 filename handling in Cython.Build seems a bit fragile with unicode filenames (since most os.path functions require bytes) - I haven't made any serious attempt to fix that beyond getting my test-cases to work.","created_at":"2019-09-01T18:09:59Z","updated_at":"2019-09-24T20:49:03Z","closed_at":null,"merged_at":null,"merge_commit_sha":"d496d4daaaa39d38f8b7500ef49a633e05531f0d","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/cython/cython/pulls/3119/commits","review_comments_url":"https://api.github.com/repos/cython/cython/pulls/3119/comments","review_comment_url":"https://api.github.com/repos/cython/cython/pulls/comments{/number}","comments_url":"https://api.github.com/repos/cython/cython/issues/3119/comments","statuses_url":"https://api.github.com/repos/cython/cython/statuses/045a8531aac430351b66862d24fb53fe2c4adb9a","head":{"label":"da-woods:unicode_identifiers_cstruct","ref":"unicode_identifiers_cstruct","sha":"045a8531aac430351b66862d24fb53fe2c4adb9a","user":{"login":"da-woods","id":10536947,"node_id":"MDQ6VXNlcjEwNTM2OTQ3","avatar_url":"https://avatars0.githubusercontent.com/u/10536947?v=4","gravatar_id":"","url":"https://api.github.com/users/da-woods","html_url":"https://github.com/da-woods","followers_url":"https://api.github.com/users/da-woods/followers","following_url":"https://api.github.com/users/da-woods/following{/other_user}","gists_url":"https://api.github.com/users/da-woods/gists{/gist_id}","starred_url":"https://api.github.com/users/da-woods/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/da-woods/subscriptions","organizations_url":"https://api.github.com/users/da-woods/orgs","repos_url":"https://api.github.com/users/da-woods/repos","events_url":"https://api.github.com/users/da-woods/events{/privacy}","received_events_url":"https://api.github.com/users/da-woods/received_events","type":"User","site_admin":false},"repo":{"id":35321967,"node_id":"MDEwOlJlcG9zaXRvcnkzNTMyMTk2Nw==","name":"cython","full_name":"da-woods/cython","private":false,"owner":{"login":"da-woods","id":10536947,"node_id":"MDQ6VXNlcjEwNTM2OTQ3","avatar_url":"https://avatars0.githubusercontent.com/u/10536947?v=4","gravatar_id":"","url":"https://api.github.com/users/da-woods","html_url":"https://github.com/da-woods","followers_url":"https://api.github.com/users/da-woods/followers","following_url":"https://api.github.com/users/da-woods/following{/other_user}","gists_url":"https://api.github.com/users/da-woods/gists{/gist_id}","starred_url":"https://api.github.com/users/da-woods/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/da-woods/subscriptions","organizations_url":"https://api.github.com/users/da-woods/orgs","repos_url":"https://api.github.com/users/da-woods/repos","events_url":"https://api.github.com/users/da-woods/events{/privacy}","received_events_url":"https://api.github.com/users/da-woods/received_events","type":"User","site_admin":false},"html_url":"https://github.com/da-woods/cython","description":"A Python to C compiler","fork":true,"url":"https://api.github.com/repos/da-woods/cython","forks_url":"https://api.github.com/repos/da-woods/cython/forks","keys_url":"https://api.github.com/repos/da-woods/cython/keys{/key_id}","collaborators_url":"https://api.github.com/repos/da-woods/cython/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/da-woods/cython/teams","hooks_url":"https://api.github.com/repos/da-woods/cython/hooks","issue_events_url":"https://api.github.com/repos/da-woods/cython/issues/events{/number}","events_url":"https://api.github.com/repos/da-woods/cython/events","assignees_url":"https://api.github.com/repos/da-woods/cython/assignees{/user}","branches_url":"https://api.github.com/repos/da-woods/cython/branches{/branch}","tags_url":"https://api.github.com/repos/da-woods/cython/tags","blobs_url":"https://api.github.com/repos/da-woods/cython/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/da-woods/cython/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/da-woods/cython/git/refs{/sha}","trees_url":"https://api.github.com/repos/da-woods/cython/git/trees{/sha}","statuses_url":"https://api.github.com/repos/da-woods/cython/statuses/{sha}","languages_url":"https://api.github.com/repos/da-woods/cython/languages","stargazers_url":"https://api.github.com/repos/da-woods/cython/stargazers","contributors_url":"https://api.github.com/repos/da-woods/cython/contributors","subscribers_url":"https://api.github.com/repos/da-woods/cython/subscribers","subscription_url":"https://api.github.com/repos/da-woods/cython/subscription","commits_url":"https://api.github.com/repos/da-woods/cython/commits{/sha}","git_commits_url":"https://api.github.com/repos/da-woods/cython/git/commits{/sha}","comments_url":"https://api.github.com/repos/da-woods/cython/comments{/number}","issue_comment_url":"https://api.github.com/repos/da-woods/cython/issues/comments{/number}","contents_url":"https://api.github.com/repos/da-woods/cython/contents/{+path}","compare_url":"https://api.github.com/repos/da-woods/cython/compare/{base}...{head}","merges_url":"https://api.github.com/repos/da-woods/cython/merges","archive_url":"https://api.github.com/repos/da-woods/cython/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/da-woods/cython/downloads","issues_url":"https://api.github.com/repos/da-woods/cython/issues{/number}","pulls_url":"https://api.github.com/repos/da-woods/cython/pulls{/number}","milestones_url":"https://api.github.com/repos/da-woods/cython/milestones{/number}","notifications_url":"https://api.github.com/repos/da-woods/cython/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/da-woods/cython/labels{/name}","releases_url":"https://api.github.com/repos/da-woods/cython/releases{/id}","deployments_url":"https://api.github.com/repos/da-woods/cython/deployments","created_at":"2015-05-09T08:55:00Z","updated_at":"2019-09-03T10:46:39Z","pushed_at":"2019-09-08T09:14:01Z","git_url":"git://github.com/da-woods/cython.git","ssh_url":"git@github.com:da-woods/cython.git","clone_url":"https://github.com/da-woods/cython.git","svn_url":"https://github.com/da-woods/cython","homepage":"http://cython.org","size":55718,"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,"disabled":false,"open_issues_count":0,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"cython:master","ref":"master","sha":"00c1dc96af0e44741dc777f96a2eb5769f572bb3","user":{"login":"cython","id":486082,"node_id":"MDEyOk9yZ2FuaXphdGlvbjQ4NjA4Mg==","avatar_url":"https://avatars3.githubusercontent.com/u/486082?v=4","gravatar_id":"","url":"https://api.github.com/users/cython","html_url":"https://github.com/cython","followers_url":"https://api.github.com/users/cython/followers","following_url":"https://api.github.com/users/cython/following{/other_user}","gists_url":"https://api.github.com/users/cython/gists{/gist_id}","starred_url":"https://api.github.com/users/cython/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cython/subscriptions","organizations_url":"https://api.github.com/users/cython/orgs","repos_url":"https://api.github.com/users/cython/repos","events_url":"https://api.github.com/users/cython/events{/privacy}","received_events_url":"https://api.github.com/users/cython/received_events","type":"Organization","site_admin":false},"repo":{"id":1099265,"node_id":"MDEwOlJlcG9zaXRvcnkxMDk5MjY1","name":"cython","full_name":"cython/cython","private":false,"owner":{"login":"cython","id":486082,"node_id":"MDEyOk9yZ2FuaXphdGlvbjQ4NjA4Mg==","avatar_url":"https://avatars3.githubusercontent.com/u/486082?v=4","gravatar_id":"","url":"https://api.github.com/users/cython","html_url":"https://github.com/cython","followers_url":"https://api.github.com/users/cython/followers","following_url":"https://api.github.com/users/cython/following{/other_user}","gists_url":"https://api.github.com/users/cython/gists{/gist_id}","starred_url":"https://api.github.com/users/cython/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cython/subscriptions","organizations_url":"https://api.github.com/users/cython/orgs","repos_url":"https://api.github.com/users/cython/repos","events_url":"https://api.github.com/users/cython/events{/privacy}","received_events_url":"https://api.github.com/users/cython/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/cython/cython","description":"The most widely used Python to C compiler","fork":false,"url":"https://api.github.com/repos/cython/cython","forks_url":"https://api.github.com/repos/cython/cython/forks","keys_url":"https://api.github.com/repos/cython/cython/keys{/key_id}","collaborators_url":"https://api.github.com/repos/cython/cython/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/cython/cython/teams","hooks_url":"https://api.github.com/repos/cython/cython/hooks","issue_events_url":"https://api.github.com/repos/cython/cython/issues/events{/number}","events_url":"https://api.github.com/repos/cython/cython/events","assignees_url":"https://api.github.com/repos/cython/cython/assignees{/user}","branches_url":"https://api.github.com/repos/cython/cython/branches{/branch}","tags_url":"https://api.github.com/repos/cython/cython/tags","blobs_url":"https://api.github.com/repos/cython/cython/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/cython/cython/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/cython/cython/git/refs{/sha}","trees_url":"https://api.github.com/repos/cython/cython/git/trees{/sha}","statuses_url":"https://api.github.com/repos/cython/cython/statuses/{sha}","languages_url":"https://api.github.com/repos/cython/cython/languages","stargazers_url":"https://api.github.com/repos/cython/cython/stargazers","contributors_url":"https://api.github.com/repos/cython/cython/contributors","subscribers_url":"https://api.github.com/repos/cython/cython/subscribers","subscription_url":"https://api.github.com/repos/cython/cython/subscription","commits_url":"https://api.github.com/repos/cython/cython/commits{/sha}","git_commits_url":"https://api.github.com/repos/cython/cython/git/commits{/sha}","comments_url":"https://api.github.com/repos/cython/cython/comments{/number}","issue_comment_url":"https://api.github.com/repos/cython/cython/issues/comments{/number}","contents_url":"https://api.github.com/repos/cython/cython/contents/{+path}","compare_url":"https://api.github.com/repos/cython/cython/compare/{base}...{head}","merges_url":"https://api.github.com/repos/cython/cython/merges","archive_url":"https://api.github.com/repos/cython/cython/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/cython/cython/downloads","issues_url":"https://api.github.com/repos/cython/cython/issues{/number}","pulls_url":"https://api.github.com/repos/cython/cython/pulls{/number}","milestones_url":"https://api.github.com/repos/cython/cython/milestones{/number}","notifications_url":"https://api.github.com/repos/cython/cython/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/cython/cython/labels{/name}","releases_url":"https://api.github.com/repos/cython/cython/releases{/id}","deployments_url":"https://api.github.com/repos/cython/cython/deployments","created_at":"2010-11-21T07:44:20Z","updated_at":"2019-09-24T19:10:38Z","pushed_at":"2019-09-24T15:52:09Z","git_url":"git://github.com/cython/cython.git","ssh_url":"git@github.com:cython/cython.git","clone_url":"https://github.com/cython/cython.git","svn_url":"https://github.com/cython/cython","homepage":"https://cython.org","size":55500,"stargazers_count":4518,"watchers_count":4518,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":907,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":706,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":907,"open_issues":706,"watchers":4518,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/cython/cython/pulls/3119"},"html":{"href":"https://github.com/cython/cython/pull/3119"},"issue":{"href":"https://api.github.com/repos/cython/cython/issues/3119"},"comments":{"href":"https://api.github.com/repos/cython/cython/issues/3119/comments"},"review_comments":{"href":"https://api.github.com/repos/cython/cython/pulls/3119/comments"},"review_comment":{"href":"https://api.github.com/repos/cython/cython/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/cython/cython/pulls/3119/commits"},"statuses":{"href":"https://api.github.com/repos/cython/cython/statuses/045a8531aac430351b66862d24fb53fe2c4adb9a"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"scoder"}}