{"action":"created","comment":{"url":"https://api.github.com/repos/pytorch/pytorch/pulls/comments/243424766","pull_request_review_id":187193719,"id":243424766,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDI0MzQyNDc2Ng==","diff_hunk":"@@ -246,6 +247,11 @@ inline c10::optional<at::Scalar> PythonArgs::scalarOptional(int i) {\n   return scalar(i);\n }\n \n+inline c10::optional<int64_t> PythonArgs::int64_tOptional(int i) {","path":"torch/csrc/utils/python_arg_parser.h","position":12,"original_position":12,"commit_id":"a52eaf718387d0be231513e0c3b54d78c12ded9d","original_commit_id":"a52eaf718387d0be231513e0c3b54d78c12ded9d","user":{"login":"wanchaol","id":9443650,"node_id":"MDQ6VXNlcjk0NDM2NTA=","avatar_url":"https://avatars2.githubusercontent.com/u/9443650?v=4","gravatar_id":"","url":"https://api.github.com/users/wanchaol","html_url":"https://github.com/wanchaol","followers_url":"https://api.github.com/users/wanchaol/followers","following_url":"https://api.github.com/users/wanchaol/following{/other_user}","gists_url":"https://api.github.com/users/wanchaol/gists{/gist_id}","starred_url":"https://api.github.com/users/wanchaol/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wanchaol/subscriptions","organizations_url":"https://api.github.com/users/wanchaol/orgs","repos_url":"https://api.github.com/users/wanchaol/repos","events_url":"https://api.github.com/users/wanchaol/events{/privacy}","received_events_url":"https://api.github.com/users/wanchaol/received_events","type":"User","site_admin":false},"body":"Aha, looks like I already add the optional<int> in #15234, so you should already be able to use it :)","created_at":"2018-12-20T21:33:54Z","updated_at":"2018-12-20T21:33:54Z","html_url":"https://github.com/pytorch/pytorch/pull/15256#discussion_r243424766","pull_request_url":"https://api.github.com/repos/pytorch/pytorch/pulls/15256","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/pytorch/pytorch/pulls/comments/243424766"},"html":{"href":"https://github.com/pytorch/pytorch/pull/15256#discussion_r243424766"},"pull_request":{"href":"https://api.github.com/repos/pytorch/pytorch/pulls/15256"}}},"pull_request":{"url":"https://api.github.com/repos/pytorch/pytorch/pulls/15256","id":238893547,"node_id":"MDExOlB1bGxSZXF1ZXN0MjM4ODkzNTQ3","html_url":"https://github.com/pytorch/pytorch/pull/15256","diff_url":"https://github.com/pytorch/pytorch/pull/15256.diff","patch_url":"https://github.com/pytorch/pytorch/pull/15256.patch","issue_url":"https://api.github.com/repos/pytorch/pytorch/issues/15256","number":15256,"state":"open","locked":false,"title":"Unhide unique from C++, make unique partially scriptable, allow optional<int> for schema","user":{"login":"zasdfgbnm","id":1032377,"node_id":"MDQ6VXNlcjEwMzIzNzc=","avatar_url":"https://avatars2.githubusercontent.com/u/1032377?v=4","gravatar_id":"","url":"https://api.github.com/users/zasdfgbnm","html_url":"https://github.com/zasdfgbnm","followers_url":"https://api.github.com/users/zasdfgbnm/followers","following_url":"https://api.github.com/users/zasdfgbnm/following{/other_user}","gists_url":"https://api.github.com/users/zasdfgbnm/gists{/gist_id}","starred_url":"https://api.github.com/users/zasdfgbnm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zasdfgbnm/subscriptions","organizations_url":"https://api.github.com/users/zasdfgbnm/orgs","repos_url":"https://api.github.com/users/zasdfgbnm/repos","events_url":"https://api.github.com/users/zasdfgbnm/events{/privacy}","received_events_url":"https://api.github.com/users/zasdfgbnm/received_events","type":"User","site_admin":false},"body":"This PR does three things:\r\n\r\n## Null-able integer argument in schema\r\n\r\nAllow `int64_t?` in function schema,  which provide an elegant way of implementing null-able int arguments, as discussed in https://github.com/pytorch/pytorch/pull/15208#pullrequestreview-185230081\r\n\r\nOriginally implemented in https://github.com/pytorch/pytorch/pull/15235\r\n\r\nExample:\r\n\r\n```yaml\r\n- func: myop(Tensor self, int64_t? dim=None) -> Tensor\r\n  variants: function\r\n```\r\n\r\ncc: @zou3519 \r\n\r\n## Unhide unique from C++\r\n\r\nPreviously tried in https://github.com/pytorch/pytorch/pull/12064. There was a problem that C++ does not have kwarg support, which makes it confusing to know whether `unique(t, 1)` actually means `unique(t, dim=1)` or `unique(t, sorted=1)`.\r\n\r\nNow I think I have a better idea on how to implement this: there are two ATen operators: `unique` and `unique_dim`. `unique` has the same signature as in python, and exported to both python and C++. `unique_dim` has signature `unique_dim(tensor, dim, sorted=False, return_inverse=False)`, and only exported to C++, which could be used more naturally for a C++ user.\r\n\r\ncc: @ezyang @t-vi How does it look like this time?\r\n\r\n## Unique is now partially scriptable\r\n\r\nAs a result of the above two, `torch.unique` can now be partially scripted. See test below:\r\n\r\n```python\r\nimport torch\r\n\r\ndef f(a):\r\n    b, c = torch.unique(a, return_inverse=True)\r\n    return b.sum()\r\n\r\ndef g(a):\r\n    b = torch.unique(a)\r\n    return b.sum()\r\n\r\na = torch.rand((5, 6, 7))\r\n\r\ntraced_f = torch.jit.trace(f, a)\r\ntraced_g = torch.jit.trace(g, a)\r\nprint('traced f:', traced_f.graph)\r\nprint('traced g:', traced_g.graph)\r\n\r\nscripted_f = torch.jit.script(f)\r\nprint('scripted f:', scripted_f.graph)\r\n\r\nscripted_g = torch.jit.script(g)\r\nprint('scripted g:', scripted_g.graph)\r\n```\r\n\r\ngives\r\n\r\n```\r\ntraced f: graph(%input : Float(5, 6, 7)) {\r\n  %1 : bool = prim::Constant[value=0]()\r\n  %2 : bool = prim::Constant[value=1]()\r\n  %3 : int? = prim::None()\r\n  %b : Float(210), %5 : Long(5, 6, 7) = aten::unique(%input, %1, %2, %3)\r\n  %6 : Float() = aten::sum(%b)\r\n  return (%6);\r\n}\r\n\r\ntraced g: graph(%input : Float(5, 6, 7)) {\r\n  %1 : bool = prim::Constant[value=0]()\r\n  %2 : bool = prim::Constant[value=0]()\r\n  %3 : int? = prim::None()\r\n  %b : Float(210), %5 : Long(0) = aten::unique(%input, %1, %2, %3)\r\n  %6 : Float() = aten::sum(%b)\r\n  return (%6);\r\n}\r\n\r\nscripted f: graph(%a : Tensor) {\r\n  %2 : bool = prim::Constant[value=0]()\r\n  %1 : bool = prim::Constant[value=1]()\r\n  %5 : int? = prim::None()\r\n  %b : Tensor, %c : Tensor = aten::unique(%a, %2, %1, %5)\r\n  %9 : Tensor = aten::sum(%b)\r\n  return (%9);\r\n}\r\n\r\nTraceback (most recent call last):\r\n  File \"test.py\", line 21, in <module>\r\n    scripted_g = torch.jit.script(g)\r\n  File \"/home/gaoxiang/.virtualenvs/pt/lib/python3.7/site-packages/torch/jit/__init__.py\", line 692, in script\r\n    _jit_script_compile(mod, ast, _rcb, get_default_args(fn))\r\nRuntimeError: \r\narguments for call are not valid:\r\n  \r\n  for operator aten::sum(Tensor self, int[] dim, bool keepdim=<default>, *, Tensor out) -> Tensor:\r\n  expected a value of type Tensor for argument 'self' but found (Tensor, Tensor)\r\n  def g(a):\r\n      b = torch.unique(a)\r\n      return b.sum()\r\n             ~~~~~ <--- HERE\r\n  \r\n  for operator aten::sum(Tensor self, int[] dim, *, int dtype, Tensor out) -> Tensor:\r\n  expected a value of type Tensor for argument 'self' but found (Tensor, Tensor)\r\n  def g(a):\r\n      b = torch.unique(a)\r\n      return b.sum()\r\n             ~~~~~ <--- HERE\r\n  \r\n  for operator aten::sum(Tensor self, int[] dim, bool keepdim, *, int dtype, Tensor out) -> Tensor:\r\n  expected a value of type Tensor for argument 'self' but found (Tensor, Tensor)\r\n  def g(a):\r\n      b = torch.unique(a)\r\n      return b.sum()\r\n             ~~~~~ <--- HERE\r\n  \r\n  for operator aten::sum(Tensor self) -> Tensor:\r\n  expected a value of type Tensor for argument 'self' but found (Tensor, Tensor)\r\n  def g(a):\r\n      b = torch.unique(a)\r\n      return b.sum()\r\n             ~~~~~ <--- HERE\r\n  \r\n  for operator aten::sum(Tensor self, *, int dtype) -> Tensor:\r\n  expected a value of type Tensor for argument 'self' but found (Tensor, Tensor)\r\n  def g(a):\r\n      b = torch.unique(a)\r\n      return b.sum()\r\n             ~~~~~ <--- HERE\r\n  \r\n  for operator aten::sum(Tensor self, int[] dim, bool keepdim=<default>) -> Tensor:\r\n  expected a value of type Tensor for argument 'self' but found (Tensor, Tensor)\r\n  def g(a):\r\n      b = torch.unique(a)\r\n      return b.sum()\r\n             ~~~~~ <--- HERE\r\n  \r\n  for operator aten::sum(Tensor self, int[] dim, *, int dtype) -> Tensor:\r\n  expected a value of type Tensor for argument 'self' but found (Tensor, Tensor)\r\n  def g(a):\r\n      b = torch.unique(a)\r\n      return b.sum()\r\n             ~~~~~ <--- HERE\r\n  \r\n  for operator aten::sum(Tensor self, int[] dim, bool keepdim, *, int dtype) -> Tensor:\r\n  expected a value of type Tensor for argument 'self' but found (Tensor, Tensor)\r\n  def g(a):\r\n      b = torch.unique(a)\r\n      return b.sum()\r\n             ~~~~~ <--- HERE\r\nfor call at:\r\ndef g(a):\r\n    b = torch.unique(a)\r\n    return b.sum()\r\n           ~~~~~ <--- HERE\r\n```","created_at":"2018-12-15T06:04:45Z","updated_at":"2018-12-20T21:33:54Z","closed_at":null,"merged_at":null,"merge_commit_sha":"cc695f287ec3d4e85fa976c8b98f810fc84819c9","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":679953983,"node_id":"MDU6TGFiZWw2Nzk5NTM5ODM=","url":"https://api.github.com/repos/pytorch/pytorch/labels/jit","name":"jit","color":"c5def5","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/pytorch/pytorch/pulls/15256/commits","review_comments_url":"https://api.github.com/repos/pytorch/pytorch/pulls/15256/comments","review_comment_url":"https://api.github.com/repos/pytorch/pytorch/pulls/comments{/number}","comments_url":"https://api.github.com/repos/pytorch/pytorch/issues/15256/comments","statuses_url":"https://api.github.com/repos/pytorch/pytorch/statuses/a52eaf718387d0be231513e0c3b54d78c12ded9d","head":{"label":"zasdfgbnm:unique-cpp","ref":"unique-cpp","sha":"a52eaf718387d0be231513e0c3b54d78c12ded9d","user":{"login":"zasdfgbnm","id":1032377,"node_id":"MDQ6VXNlcjEwMzIzNzc=","avatar_url":"https://avatars2.githubusercontent.com/u/1032377?v=4","gravatar_id":"","url":"https://api.github.com/users/zasdfgbnm","html_url":"https://github.com/zasdfgbnm","followers_url":"https://api.github.com/users/zasdfgbnm/followers","following_url":"https://api.github.com/users/zasdfgbnm/following{/other_user}","gists_url":"https://api.github.com/users/zasdfgbnm/gists{/gist_id}","starred_url":"https://api.github.com/users/zasdfgbnm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zasdfgbnm/subscriptions","organizations_url":"https://api.github.com/users/zasdfgbnm/orgs","repos_url":"https://api.github.com/users/zasdfgbnm/repos","events_url":"https://api.github.com/users/zasdfgbnm/events{/privacy}","received_events_url":"https://api.github.com/users/zasdfgbnm/received_events","type":"User","site_admin":false},"repo":{"id":133190875,"node_id":"MDEwOlJlcG9zaXRvcnkxMzMxOTA4NzU=","name":"pytorch","full_name":"zasdfgbnm/pytorch","private":false,"owner":{"login":"zasdfgbnm","id":1032377,"node_id":"MDQ6VXNlcjEwMzIzNzc=","avatar_url":"https://avatars2.githubusercontent.com/u/1032377?v=4","gravatar_id":"","url":"https://api.github.com/users/zasdfgbnm","html_url":"https://github.com/zasdfgbnm","followers_url":"https://api.github.com/users/zasdfgbnm/followers","following_url":"https://api.github.com/users/zasdfgbnm/following{/other_user}","gists_url":"https://api.github.com/users/zasdfgbnm/gists{/gist_id}","starred_url":"https://api.github.com/users/zasdfgbnm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zasdfgbnm/subscriptions","organizations_url":"https://api.github.com/users/zasdfgbnm/orgs","repos_url":"https://api.github.com/users/zasdfgbnm/repos","events_url":"https://api.github.com/users/zasdfgbnm/events{/privacy}","received_events_url":"https://api.github.com/users/zasdfgbnm/received_events","type":"User","site_admin":false},"html_url":"https://github.com/zasdfgbnm/pytorch","description":"Tensors and Dynamic neural networks in Python  with strong GPU acceleration","fork":true,"url":"https://api.github.com/repos/zasdfgbnm/pytorch","forks_url":"https://api.github.com/repos/zasdfgbnm/pytorch/forks","keys_url":"https://api.github.com/repos/zasdfgbnm/pytorch/keys{/key_id}","collaborators_url":"https://api.github.com/repos/zasdfgbnm/pytorch/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/zasdfgbnm/pytorch/teams","hooks_url":"https://api.github.com/repos/zasdfgbnm/pytorch/hooks","issue_events_url":"https://api.github.com/repos/zasdfgbnm/pytorch/issues/events{/number}","events_url":"https://api.github.com/repos/zasdfgbnm/pytorch/events","assignees_url":"https://api.github.com/repos/zasdfgbnm/pytorch/assignees{/user}","branches_url":"https://api.github.com/repos/zasdfgbnm/pytorch/branches{/branch}","tags_url":"https://api.github.com/repos/zasdfgbnm/pytorch/tags","blobs_url":"https://api.github.com/repos/zasdfgbnm/pytorch/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/zasdfgbnm/pytorch/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/zasdfgbnm/pytorch/git/refs{/sha}","trees_url":"https://api.github.com/repos/zasdfgbnm/pytorch/git/trees{/sha}","statuses_url":"https://api.github.com/repos/zasdfgbnm/pytorch/statuses/{sha}","languages_url":"https://api.github.com/repos/zasdfgbnm/pytorch/languages","stargazers_url":"https://api.github.com/repos/zasdfgbnm/pytorch/stargazers","contributors_url":"https://api.github.com/repos/zasdfgbnm/pytorch/contributors","subscribers_url":"https://api.github.com/repos/zasdfgbnm/pytorch/subscribers","subscription_url":"https://api.github.com/repos/zasdfgbnm/pytorch/subscription","commits_url":"https://api.github.com/repos/zasdfgbnm/pytorch/commits{/sha}","git_commits_url":"https://api.github.com/repos/zasdfgbnm/pytorch/git/commits{/sha}","comments_url":"https://api.github.com/repos/zasdfgbnm/pytorch/comments{/number}","issue_comment_url":"https://api.github.com/repos/zasdfgbnm/pytorch/issues/comments{/number}","contents_url":"https://api.github.com/repos/zasdfgbnm/pytorch/contents/{+path}","compare_url":"https://api.github.com/repos/zasdfgbnm/pytorch/compare/{base}...{head}","merges_url":"https://api.github.com/repos/zasdfgbnm/pytorch/merges","archive_url":"https://api.github.com/repos/zasdfgbnm/pytorch/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/zasdfgbnm/pytorch/downloads","issues_url":"https://api.github.com/repos/zasdfgbnm/pytorch/issues{/number}","pulls_url":"https://api.github.com/repos/zasdfgbnm/pytorch/pulls{/number}","milestones_url":"https://api.github.com/repos/zasdfgbnm/pytorch/milestones{/number}","notifications_url":"https://api.github.com/repos/zasdfgbnm/pytorch/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/zasdfgbnm/pytorch/labels{/name}","releases_url":"https://api.github.com/repos/zasdfgbnm/pytorch/releases{/id}","deployments_url":"https://api.github.com/repos/zasdfgbnm/pytorch/deployments","created_at":"2018-05-12T23:32:13Z","updated_at":"2018-12-20T04:28:43Z","pushed_at":"2018-12-20T19:17:11Z","git_url":"git://github.com/zasdfgbnm/pytorch.git","ssh_url":"git@github.com:zasdfgbnm/pytorch.git","clone_url":"https://github.com/zasdfgbnm/pytorch.git","svn_url":"https://github.com/zasdfgbnm/pytorch","homepage":"http://pytorch.org","size":94297,"stargazers_count":0,"watchers_count":0,"language":"C++","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":2,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":0,"open_issues":2,"watchers":0,"default_branch":"master"}},"base":{"label":"pytorch:master","ref":"master","sha":"33018e4e09b16075440ea72a6929b15c7ae670f5","user":{"login":"pytorch","id":21003710,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIxMDAzNzEw","avatar_url":"https://avatars3.githubusercontent.com/u/21003710?v=4","gravatar_id":"","url":"https://api.github.com/users/pytorch","html_url":"https://github.com/pytorch","followers_url":"https://api.github.com/users/pytorch/followers","following_url":"https://api.github.com/users/pytorch/following{/other_user}","gists_url":"https://api.github.com/users/pytorch/gists{/gist_id}","starred_url":"https://api.github.com/users/pytorch/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pytorch/subscriptions","organizations_url":"https://api.github.com/users/pytorch/orgs","repos_url":"https://api.github.com/users/pytorch/repos","events_url":"https://api.github.com/users/pytorch/events{/privacy}","received_events_url":"https://api.github.com/users/pytorch/received_events","type":"Organization","site_admin":false},"repo":{"id":65600975,"node_id":"MDEwOlJlcG9zaXRvcnk2NTYwMDk3NQ==","name":"pytorch","full_name":"pytorch/pytorch","private":false,"owner":{"login":"pytorch","id":21003710,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIxMDAzNzEw","avatar_url":"https://avatars3.githubusercontent.com/u/21003710?v=4","gravatar_id":"","url":"https://api.github.com/users/pytorch","html_url":"https://github.com/pytorch","followers_url":"https://api.github.com/users/pytorch/followers","following_url":"https://api.github.com/users/pytorch/following{/other_user}","gists_url":"https://api.github.com/users/pytorch/gists{/gist_id}","starred_url":"https://api.github.com/users/pytorch/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pytorch/subscriptions","organizations_url":"https://api.github.com/users/pytorch/orgs","repos_url":"https://api.github.com/users/pytorch/repos","events_url":"https://api.github.com/users/pytorch/events{/privacy}","received_events_url":"https://api.github.com/users/pytorch/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/pytorch/pytorch","description":"Tensors and Dynamic neural networks in Python  with strong GPU acceleration","fork":false,"url":"https://api.github.com/repos/pytorch/pytorch","forks_url":"https://api.github.com/repos/pytorch/pytorch/forks","keys_url":"https://api.github.com/repos/pytorch/pytorch/keys{/key_id}","collaborators_url":"https://api.github.com/repos/pytorch/pytorch/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/pytorch/pytorch/teams","hooks_url":"https://api.github.com/repos/pytorch/pytorch/hooks","issue_events_url":"https://api.github.com/repos/pytorch/pytorch/issues/events{/number}","events_url":"https://api.github.com/repos/pytorch/pytorch/events","assignees_url":"https://api.github.com/repos/pytorch/pytorch/assignees{/user}","branches_url":"https://api.github.com/repos/pytorch/pytorch/branches{/branch}","tags_url":"https://api.github.com/repos/pytorch/pytorch/tags","blobs_url":"https://api.github.com/repos/pytorch/pytorch/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/pytorch/pytorch/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/pytorch/pytorch/git/refs{/sha}","trees_url":"https://api.github.com/repos/pytorch/pytorch/git/trees{/sha}","statuses_url":"https://api.github.com/repos/pytorch/pytorch/statuses/{sha}","languages_url":"https://api.github.com/repos/pytorch/pytorch/languages","stargazers_url":"https://api.github.com/repos/pytorch/pytorch/stargazers","contributors_url":"https://api.github.com/repos/pytorch/pytorch/contributors","subscribers_url":"https://api.github.com/repos/pytorch/pytorch/subscribers","subscription_url":"https://api.github.com/repos/pytorch/pytorch/subscription","commits_url":"https://api.github.com/repos/pytorch/pytorch/commits{/sha}","git_commits_url":"https://api.github.com/repos/pytorch/pytorch/git/commits{/sha}","comments_url":"https://api.github.com/repos/pytorch/pytorch/comments{/number}","issue_comment_url":"https://api.github.com/repos/pytorch/pytorch/issues/comments{/number}","contents_url":"https://api.github.com/repos/pytorch/pytorch/contents/{+path}","compare_url":"https://api.github.com/repos/pytorch/pytorch/compare/{base}...{head}","merges_url":"https://api.github.com/repos/pytorch/pytorch/merges","archive_url":"https://api.github.com/repos/pytorch/pytorch/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/pytorch/pytorch/downloads","issues_url":"https://api.github.com/repos/pytorch/pytorch/issues{/number}","pulls_url":"https://api.github.com/repos/pytorch/pytorch/pulls{/number}","milestones_url":"https://api.github.com/repos/pytorch/pytorch/milestones{/number}","notifications_url":"https://api.github.com/repos/pytorch/pytorch/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/pytorch/pytorch/labels{/name}","releases_url":"https://api.github.com/repos/pytorch/pytorch/releases{/id}","deployments_url":"https://api.github.com/repos/pytorch/pytorch/deployments","created_at":"2016-08-13T05:26:41Z","updated_at":"2018-12-20T21:33:11Z","pushed_at":"2018-12-20T21:31:56Z","git_url":"git://github.com/pytorch/pytorch.git","ssh_url":"git@github.com:pytorch/pytorch.git","clone_url":"https://github.com/pytorch/pytorch.git","svn_url":"https://github.com/pytorch/pytorch","homepage":"https://pytorch.org","size":96646,"stargazers_count":22955,"watchers_count":22955,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":5437,"mirror_url":null,"archived":false,"open_issues_count":2359,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":5437,"open_issues":2359,"watchers":22955,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/pytorch/pytorch/pulls/15256"},"html":{"href":"https://github.com/pytorch/pytorch/pull/15256"},"issue":{"href":"https://api.github.com/repos/pytorch/pytorch/issues/15256"},"comments":{"href":"https://api.github.com/repos/pytorch/pytorch/issues/15256/comments"},"review_comments":{"href":"https://api.github.com/repos/pytorch/pytorch/pulls/15256/comments"},"review_comment":{"href":"https://api.github.com/repos/pytorch/pytorch/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/pytorch/pytorch/pulls/15256/commits"},"statuses":{"href":"https://api.github.com/repos/pytorch/pytorch/statuses/a52eaf718387d0be231513e0c3b54d78c12ded9d"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"wanchaol"}}