{"action":"created","comment":{"url":"https://api.github.com/repos/pytorch/pytorch/pulls/comments/192274708","pull_request_review_id":125019960,"id":192274708,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDE5MjI3NDcwOA==","diff_hunk":"@@ -0,0 +1,204 @@\n+#pragma once\n+\n+#include <ATen/Error.h>\n+\n+#include <cstdint>\n+#include <functional>\n+#include <initializer_list>\n+#include <string>\n+#include <unordered_map>\n+#include <utility>\n+#include <vector>\n+\n+namespace torch {\n+namespace detail {\n+\n+/// A simple ordered dictionary implementation, akin to Python's `OrderedDict`.\n+template <typename T>\n+class OrderedDict {\n+ public:\n+  struct Item {\n+    Item(std::string key_, T value_)\n+        : key(std::move(key_)), value(std::move(value_)) {}\n+\n+    T& operator*() {\n+      return value;\n+    }\n+    const T& operator*() const {\n+      return value;\n+    }\n+    T* operator->() {\n+      return &value;\n+    }\n+    const T* operator->() const {\n+      return &value;\n+    }\n+\n+    const std::string key;\n+    T value;\n+  };\n+\n+  using Iterator = typename std::vector<Item>::iterator;\n+  using ConstIterator = typename std::vector<Item>::const_iterator;\n+\n+  OrderedDict() = default;\n+\n+  // Copy we have to do ourselves, because items' keys are const, so we have to\n+  // re-insert the items.\n+  OrderedDict(const OrderedDict& other) : index_(other.index_) {\n+    for (const auto& item : other.items_) {\n+      items_.push_back(item);\n+    }\n+  }\n+\n+  OrderedDict& operator=(const OrderedDict& other) {\n+    index_ = other.index_;\n+    items_.clear();\n+    for (const auto& item : other.items_) {\n+      items_.push_back(item);\n+    }\n+    return *this;\n+  }\n+\n+  // Move works by default, because you can move-construct vectors of const\n+  // values..\n+  OrderedDict(OrderedDict&& other) = default;\n+  OrderedDict& operator=(OrderedDict&& other) = default;\n+\n+  ~OrderedDict() = default;\n+\n+  /*implicit */ OrderedDict(std::initializer_list<Item> initializer_list) {\n+    items_.reserve(initializer_list.size());\n+    for (auto& item : initializer_list) {\n+      // Copy the key here and move it into the index.\n+      items_.emplace_back(item.key, std::move(item.value));\n+      index_.emplace(std::move(item.key), size() - 1);\n+    }\n+  }\n+\n+  Iterator begin() {\n+    return items_.begin();\n+  }\n+\n+  ConstIterator begin() const {\n+    return items_.begin();\n+  }\n+\n+  Iterator end() {\n+    return items_.end();\n+  }\n+\n+  ConstIterator end() const {\n+    return items_.end();\n+  }\n+\n+  Item& front() {\n+    return items_.front();\n+  }\n+\n+  const Item& front() const {\n+    return items_.front();\n+  }\n+\n+  Item& back() {\n+    return items_.back();\n+  }\n+\n+  const Item& back() const {\n+    return items_.back();\n+  }\n+\n+  Item& operator[](size_t index) {\n+    return items_[index];\n+  }\n+\n+  const Item& operator[](size_t index) const {\n+    return items_[index];\n+  }\n+\n+  T& operator[](const std::string& key) {\n+    return get(key);\n+  }\n+\n+  const T& operator[](const std::string& key) const {\n+    return get(key);\n+  }\n+\n+  template <typename Key, typename Value>\n+  T& insert(Key&& key, Value&& value) {","path":"torch/csrc/api/include/torch/detail/ordered_dict.h","position":128,"original_position":128,"commit_id":"cfc0c3faab58058aee6aafb9abd432c2c1974a5f","original_commit_id":"cfc0c3faab58058aee6aafb9abd432c2c1974a5f","user":{"login":"ezyang","id":13564,"node_id":"MDQ6VXNlcjEzNTY0","avatar_url":"https://avatars0.githubusercontent.com/u/13564?v=4","gravatar_id":"","url":"https://api.github.com/users/ezyang","html_url":"https://github.com/ezyang","followers_url":"https://api.github.com/users/ezyang/followers","following_url":"https://api.github.com/users/ezyang/following{/other_user}","gists_url":"https://api.github.com/users/ezyang/gists{/gist_id}","starred_url":"https://api.github.com/users/ezyang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ezyang/subscriptions","organizations_url":"https://api.github.com/users/ezyang/orgs","repos_url":"https://api.github.com/users/ezyang/repos","events_url":"https://api.github.com/users/ezyang/events{/privacy}","received_events_url":"https://api.github.com/users/ezyang/received_events","type":"User","site_admin":false},"body":"Just take a `std::string` by value.\r\n\r\n(I'm not sure why you put a universal reference here; maybe because you're trying to make it work with lvalues and rvalues? But see also https://stackoverflow.com/questions/21605579/how-true-is-want-speed-pass-by-value?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa )","created_at":"2018-06-01T00:44:03Z","updated_at":"2018-06-01T00:44:03Z","html_url":"https://github.com/pytorch/pytorch/pull/7823#discussion_r192274708","pull_request_url":"https://api.github.com/repos/pytorch/pytorch/pulls/7823","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/pytorch/pytorch/pulls/comments/192274708"},"html":{"href":"https://github.com/pytorch/pytorch/pull/7823#discussion_r192274708"},"pull_request":{"href":"https://api.github.com/repos/pytorch/pytorch/pulls/7823"}}},"pull_request":{"url":"https://api.github.com/repos/pytorch/pytorch/pulls/7823","id":190408726,"node_id":"MDExOlB1bGxSZXF1ZXN0MTkwNDA4NzI2","html_url":"https://github.com/pytorch/pytorch/pull/7823","diff_url":"https://github.com/pytorch/pytorch/pull/7823.diff","patch_url":"https://github.com/pytorch/pytorch/pull/7823.patch","issue_url":"https://api.github.com/repos/pytorch/pytorch/issues/7823","number":7823,"state":"open","locked":false,"title":"[C++ API] Improve and use OrderedDict for parameters / modules","user":{"login":"goldsborough","id":6429851,"node_id":"MDQ6VXNlcjY0Mjk4NTE=","avatar_url":"https://avatars3.githubusercontent.com/u/6429851?v=4","gravatar_id":"","url":"https://api.github.com/users/goldsborough","html_url":"https://github.com/goldsborough","followers_url":"https://api.github.com/users/goldsborough/followers","following_url":"https://api.github.com/users/goldsborough/following{/other_user}","gists_url":"https://api.github.com/users/goldsborough/gists{/gist_id}","starred_url":"https://api.github.com/users/goldsborough/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/goldsborough/subscriptions","organizations_url":"https://api.github.com/users/goldsborough/orgs","repos_url":"https://api.github.com/users/goldsborough/repos","events_url":"https://api.github.com/users/goldsborough/events{/privacy}","received_events_url":"https://api.github.com/users/goldsborough/received_events","type":"User","site_admin":false},"body":"This PR brings back the `OrderedDict` data structure from my old C++ API PR https://github.com/pytorch/pytorch/pull/6345. It's based on the `OrderedDict` class from the JIT, but implemented slightly differently in that it stores `(key, value)` pairs together in a vector, besides another copy of the `key` for the index. This is to allow easier iteration, since iterators are now over items instead of only keys or only values. The problem with the old design (`unordered_map<string, int>` and `vector<Value>`) is that you can't get an ordered list keys from it, since the index map is unordered, which makes iteration over \"items\" impossible.\r\n\r\nI've replaced uses of `unordered_map` in the C++ API with `OrderedDict`, as well as uses of the old `OrderedDict` in the JIT with the new one.\r\n\r\nAlso added a bunch of tests.\r\n\r\n@apaszke @ebetica @zdevito ","created_at":"2018-05-24T20:20:46Z","updated_at":"2018-06-01T00:44:03Z","closed_at":null,"merged_at":null,"merge_commit_sha":"f9d98006b7fddedccaf146db5a862c3c274078d2","assignee":null,"assignees":[],"requested_reviewers":[{"login":"zdevito","id":370202,"node_id":"MDQ6VXNlcjM3MDIwMg==","avatar_url":"https://avatars0.githubusercontent.com/u/370202?v=4","gravatar_id":"","url":"https://api.github.com/users/zdevito","html_url":"https://github.com/zdevito","followers_url":"https://api.github.com/users/zdevito/followers","following_url":"https://api.github.com/users/zdevito/following{/other_user}","gists_url":"https://api.github.com/users/zdevito/gists{/gist_id}","starred_url":"https://api.github.com/users/zdevito/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zdevito/subscriptions","organizations_url":"https://api.github.com/users/zdevito/orgs","repos_url":"https://api.github.com/users/zdevito/repos","events_url":"https://api.github.com/users/zdevito/events{/privacy}","received_events_url":"https://api.github.com/users/zdevito/received_events","type":"User","site_admin":false},{"login":"colesbury","id":655866,"node_id":"MDQ6VXNlcjY1NTg2Ng==","avatar_url":"https://avatars1.githubusercontent.com/u/655866?v=4","gravatar_id":"","url":"https://api.github.com/users/colesbury","html_url":"https://github.com/colesbury","followers_url":"https://api.github.com/users/colesbury/followers","following_url":"https://api.github.com/users/colesbury/following{/other_user}","gists_url":"https://api.github.com/users/colesbury/gists{/gist_id}","starred_url":"https://api.github.com/users/colesbury/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/colesbury/subscriptions","organizations_url":"https://api.github.com/users/colesbury/orgs","repos_url":"https://api.github.com/users/colesbury/repos","events_url":"https://api.github.com/users/colesbury/events{/privacy}","received_events_url":"https://api.github.com/users/colesbury/received_events","type":"User","site_admin":false},{"login":"soumith","id":1310570,"node_id":"MDQ6VXNlcjEzMTA1NzA=","avatar_url":"https://avatars0.githubusercontent.com/u/1310570?v=4","gravatar_id":"","url":"https://api.github.com/users/soumith","html_url":"https://github.com/soumith","followers_url":"https://api.github.com/users/soumith/followers","following_url":"https://api.github.com/users/soumith/following{/other_user}","gists_url":"https://api.github.com/users/soumith/gists{/gist_id}","starred_url":"https://api.github.com/users/soumith/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/soumith/subscriptions","organizations_url":"https://api.github.com/users/soumith/orgs","repos_url":"https://api.github.com/users/soumith/repos","events_url":"https://api.github.com/users/soumith/events{/privacy}","received_events_url":"https://api.github.com/users/soumith/received_events","type":"User","site_admin":false},{"login":"ebetica","id":3605224,"node_id":"MDQ6VXNlcjM2MDUyMjQ=","avatar_url":"https://avatars3.githubusercontent.com/u/3605224?v=4","gravatar_id":"","url":"https://api.github.com/users/ebetica","html_url":"https://github.com/ebetica","followers_url":"https://api.github.com/users/ebetica/followers","following_url":"https://api.github.com/users/ebetica/following{/other_user}","gists_url":"https://api.github.com/users/ebetica/gists{/gist_id}","starred_url":"https://api.github.com/users/ebetica/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ebetica/subscriptions","organizations_url":"https://api.github.com/users/ebetica/orgs","repos_url":"https://api.github.com/users/ebetica/repos","events_url":"https://api.github.com/users/ebetica/events{/privacy}","received_events_url":"https://api.github.com/users/ebetica/received_events","type":"User","site_admin":false},{"login":"gchanan","id":3768583,"node_id":"MDQ6VXNlcjM3Njg1ODM=","avatar_url":"https://avatars2.githubusercontent.com/u/3768583?v=4","gravatar_id":"","url":"https://api.github.com/users/gchanan","html_url":"https://github.com/gchanan","followers_url":"https://api.github.com/users/gchanan/followers","following_url":"https://api.github.com/users/gchanan/following{/other_user}","gists_url":"https://api.github.com/users/gchanan/gists{/gist_id}","starred_url":"https://api.github.com/users/gchanan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gchanan/subscriptions","organizations_url":"https://api.github.com/users/gchanan/orgs","repos_url":"https://api.github.com/users/gchanan/repos","events_url":"https://api.github.com/users/gchanan/events{/privacy}","received_events_url":"https://api.github.com/users/gchanan/received_events","type":"User","site_admin":false},{"login":"apaszke","id":4583066,"node_id":"MDQ6VXNlcjQ1ODMwNjY=","avatar_url":"https://avatars3.githubusercontent.com/u/4583066?v=4","gravatar_id":"","url":"https://api.github.com/users/apaszke","html_url":"https://github.com/apaszke","followers_url":"https://api.github.com/users/apaszke/followers","following_url":"https://api.github.com/users/apaszke/following{/other_user}","gists_url":"https://api.github.com/users/apaszke/gists{/gist_id}","starred_url":"https://api.github.com/users/apaszke/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/apaszke/subscriptions","organizations_url":"https://api.github.com/users/apaszke/orgs","repos_url":"https://api.github.com/users/apaszke/repos","events_url":"https://api.github.com/users/apaszke/events{/privacy}","received_events_url":"https://api.github.com/users/apaszke/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/pytorch/pytorch/pulls/7823/commits","review_comments_url":"https://api.github.com/repos/pytorch/pytorch/pulls/7823/comments","review_comment_url":"https://api.github.com/repos/pytorch/pytorch/pulls/comments{/number}","comments_url":"https://api.github.com/repos/pytorch/pytorch/issues/7823/comments","statuses_url":"https://api.github.com/repos/pytorch/pytorch/statuses/cfc0c3faab58058aee6aafb9abd432c2c1974a5f","head":{"label":"goldsborough:ordered-dict","ref":"ordered-dict","sha":"cfc0c3faab58058aee6aafb9abd432c2c1974a5f","user":{"login":"goldsborough","id":6429851,"node_id":"MDQ6VXNlcjY0Mjk4NTE=","avatar_url":"https://avatars3.githubusercontent.com/u/6429851?v=4","gravatar_id":"","url":"https://api.github.com/users/goldsborough","html_url":"https://github.com/goldsborough","followers_url":"https://api.github.com/users/goldsborough/followers","following_url":"https://api.github.com/users/goldsborough/following{/other_user}","gists_url":"https://api.github.com/users/goldsborough/gists{/gist_id}","starred_url":"https://api.github.com/users/goldsborough/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/goldsborough/subscriptions","organizations_url":"https://api.github.com/users/goldsborough/orgs","repos_url":"https://api.github.com/users/goldsborough/repos","events_url":"https://api.github.com/users/goldsborough/events{/privacy}","received_events_url":"https://api.github.com/users/goldsborough/received_events","type":"User","site_admin":false},"repo":{"id":115096378,"node_id":"MDEwOlJlcG9zaXRvcnkxMTUwOTYzNzg=","name":"pytorch","full_name":"goldsborough/pytorch","owner":{"login":"goldsborough","id":6429851,"node_id":"MDQ6VXNlcjY0Mjk4NTE=","avatar_url":"https://avatars3.githubusercontent.com/u/6429851?v=4","gravatar_id":"","url":"https://api.github.com/users/goldsborough","html_url":"https://github.com/goldsborough","followers_url":"https://api.github.com/users/goldsborough/followers","following_url":"https://api.github.com/users/goldsborough/following{/other_user}","gists_url":"https://api.github.com/users/goldsborough/gists{/gist_id}","starred_url":"https://api.github.com/users/goldsborough/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/goldsborough/subscriptions","organizations_url":"https://api.github.com/users/goldsborough/orgs","repos_url":"https://api.github.com/users/goldsborough/repos","events_url":"https://api.github.com/users/goldsborough/events{/privacy}","received_events_url":"https://api.github.com/users/goldsborough/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/goldsborough/pytorch","description":"Tensors and Dynamic neural networks in Python  with strong GPU acceleration","fork":true,"url":"https://api.github.com/repos/goldsborough/pytorch","forks_url":"https://api.github.com/repos/goldsborough/pytorch/forks","keys_url":"https://api.github.com/repos/goldsborough/pytorch/keys{/key_id}","collaborators_url":"https://api.github.com/repos/goldsborough/pytorch/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/goldsborough/pytorch/teams","hooks_url":"https://api.github.com/repos/goldsborough/pytorch/hooks","issue_events_url":"https://api.github.com/repos/goldsborough/pytorch/issues/events{/number}","events_url":"https://api.github.com/repos/goldsborough/pytorch/events","assignees_url":"https://api.github.com/repos/goldsborough/pytorch/assignees{/user}","branches_url":"https://api.github.com/repos/goldsborough/pytorch/branches{/branch}","tags_url":"https://api.github.com/repos/goldsborough/pytorch/tags","blobs_url":"https://api.github.com/repos/goldsborough/pytorch/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/goldsborough/pytorch/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/goldsborough/pytorch/git/refs{/sha}","trees_url":"https://api.github.com/repos/goldsborough/pytorch/git/trees{/sha}","statuses_url":"https://api.github.com/repos/goldsborough/pytorch/statuses/{sha}","languages_url":"https://api.github.com/repos/goldsborough/pytorch/languages","stargazers_url":"https://api.github.com/repos/goldsborough/pytorch/stargazers","contributors_url":"https://api.github.com/repos/goldsborough/pytorch/contributors","subscribers_url":"https://api.github.com/repos/goldsborough/pytorch/subscribers","subscription_url":"https://api.github.com/repos/goldsborough/pytorch/subscription","commits_url":"https://api.github.com/repos/goldsborough/pytorch/commits{/sha}","git_commits_url":"https://api.github.com/repos/goldsborough/pytorch/git/commits{/sha}","comments_url":"https://api.github.com/repos/goldsborough/pytorch/comments{/number}","issue_comment_url":"https://api.github.com/repos/goldsborough/pytorch/issues/comments{/number}","contents_url":"https://api.github.com/repos/goldsborough/pytorch/contents/{+path}","compare_url":"https://api.github.com/repos/goldsborough/pytorch/compare/{base}...{head}","merges_url":"https://api.github.com/repos/goldsborough/pytorch/merges","archive_url":"https://api.github.com/repos/goldsborough/pytorch/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/goldsborough/pytorch/downloads","issues_url":"https://api.github.com/repos/goldsborough/pytorch/issues{/number}","pulls_url":"https://api.github.com/repos/goldsborough/pytorch/pulls{/number}","milestones_url":"https://api.github.com/repos/goldsborough/pytorch/milestones{/number}","notifications_url":"https://api.github.com/repos/goldsborough/pytorch/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/goldsborough/pytorch/labels{/name}","releases_url":"https://api.github.com/repos/goldsborough/pytorch/releases{/id}","deployments_url":"https://api.github.com/repos/goldsborough/pytorch/deployments","created_at":"2017-12-22T08:49:57Z","updated_at":"2018-05-21T18:49:38Z","pushed_at":"2018-06-01T00:21:41Z","git_url":"git://github.com/goldsborough/pytorch.git","ssh_url":"git@github.com:goldsborough/pytorch.git","clone_url":"https://github.com/goldsborough/pytorch.git","svn_url":"https://github.com/goldsborough/pytorch","homepage":"http://pytorch.org","size":56676,"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":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":"pytorch:master","ref":"master","sha":"c94f3bbf339f4378a97c12e2c1e3627cce8288ba","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","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},"private":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-06-01T00:14:34Z","pushed_at":"2018-06-01T00:40:15Z","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":"http://pytorch.org","size":56409,"stargazers_count":16002,"watchers_count":16002,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":3612,"mirror_url":null,"archived":false,"open_issues_count":1149,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":3612,"open_issues":1149,"watchers":16002,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/pytorch/pytorch/pulls/7823"},"html":{"href":"https://github.com/pytorch/pytorch/pull/7823"},"issue":{"href":"https://api.github.com/repos/pytorch/pytorch/issues/7823"},"comments":{"href":"https://api.github.com/repos/pytorch/pytorch/issues/7823/comments"},"review_comments":{"href":"https://api.github.com/repos/pytorch/pytorch/pulls/7823/comments"},"review_comment":{"href":"https://api.github.com/repos/pytorch/pytorch/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/pytorch/pytorch/pulls/7823/commits"},"statuses":{"href":"https://api.github.com/repos/pytorch/pytorch/statuses/cfc0c3faab58058aee6aafb9abd432c2c1974a5f"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"ezyang"}}