{"action":"created","comment":{"url":"https://api.github.com/repos/pydata/pandas/pulls/comments/34885125","id":34885125,"diff_hunk":"@@ -951,222 +953,324 @@ def __init__(self, path_or_buf, convert_dates=True,\n     def _read_header(self):\n         first_char = self.path_or_buf.read(1)\n         if struct.unpack('c', first_char)[0] == b'<':\n-            # format 117 or higher (XML like)\n-            self.path_or_buf.read(27)  # stata_dta><header><release>\n-            self.format_version = int(self.path_or_buf.read(3))\n-            if self.format_version not in [117]:\n-                raise ValueError(\"Version of given Stata file is not 104, \"\n-                                 \"105, 108, 113 (Stata 8/9), 114 (Stata \"\n-                                 \"10/11), 115 (Stata 12) or 117 (Stata 13)\")\n-            self.path_or_buf.read(21)  # </release><byteorder>\n-            self.byteorder = self.path_or_buf.read(3) == \"MSF\" and '>' or '<'\n-            self.path_or_buf.read(15)  # </byteorder><K>\n-            self.nvar = struct.unpack(self.byteorder + 'H',\n-                                      self.path_or_buf.read(2))[0]\n-            self.path_or_buf.read(7)  # </K><N>\n-            self.nobs = struct.unpack(self.byteorder + 'I',\n-                                      self.path_or_buf.read(4))[0]\n-            self.path_or_buf.read(11)  # </N><label>\n-            strlen = struct.unpack('b', self.path_or_buf.read(1))[0]\n-            self.data_label = self._null_terminate(self.path_or_buf.read(strlen))\n-            self.path_or_buf.read(19)  # </label><timestamp>\n-            strlen = struct.unpack('b', self.path_or_buf.read(1))[0]\n-            self.time_stamp = self._null_terminate(self.path_or_buf.read(strlen))\n-            self.path_or_buf.read(26)  # </timestamp></header><map>\n-            self.path_or_buf.read(8)  # 0x0000000000000000\n-            self.path_or_buf.read(8)  # position of <map>\n-            seek_vartypes = struct.unpack(\n-                self.byteorder + 'q', self.path_or_buf.read(8))[0] + 16\n-            seek_varnames = struct.unpack(\n-                self.byteorder + 'q', self.path_or_buf.read(8))[0] + 10\n-            seek_sortlist = struct.unpack(\n-                self.byteorder + 'q', self.path_or_buf.read(8))[0] + 10\n-            seek_formats = struct.unpack(\n-                self.byteorder + 'q', self.path_or_buf.read(8))[0] + 9\n-            seek_value_label_names = struct.unpack(\n-                self.byteorder + 'q', self.path_or_buf.read(8))[0] + 19\n-            # Stata 117 data files do not follow the described format.  This is\n-            # a work around that uses the previous label, 33 bytes for each\n-            # variable, 20 for the closing tag and 17 for the opening tag\n-            self.path_or_buf.read(8)  # <variable_lables>, throw away\n-            seek_variable_labels = seek_value_label_names + (33*self.nvar) + 20 + 17\n-            # Below is the original, correct code (per Stata sta format doc,\n-            # although this is not followed in actual 117 dtas)\n-            #seek_variable_labels = struct.unpack(\n-            #    self.byteorder + 'q', self.path_or_buf.read(8))[0] + 17\n-            self.path_or_buf.read(8)  # <characteristics>\n-            self.data_location = struct.unpack(\n-                self.byteorder + 'q', self.path_or_buf.read(8))[0] + 6\n-            self.seek_strls = struct.unpack(\n-                self.byteorder + 'q', self.path_or_buf.read(8))[0] + 7\n-            self.seek_value_labels = struct.unpack(\n-                self.byteorder + 'q', self.path_or_buf.read(8))[0] + 14\n-            #self.path_or_buf.read(8)  # </stata_dta>\n-            #self.path_or_buf.read(8)  # EOF\n-            self.path_or_buf.seek(seek_vartypes)\n-            typlist = [struct.unpack(self.byteorder + 'H',\n-                                     self.path_or_buf.read(2))[0]\n-                       for i in range(self.nvar)]\n-            self.typlist = [None]*self.nvar\n-            try:\n-                i = 0\n-                for typ in typlist:\n-                    if typ <= 2045:\n-                        self.typlist[i] = typ\n-                    #elif typ == 32768:\n-                    #    raise ValueError(\"Long strings are not supported\")\n-                    else:\n-                        self.typlist[i] = self.TYPE_MAP_XML[typ]\n-                    i += 1\n-            except:\n-                raise ValueError(\"cannot convert stata types [{0}]\"\n-                                 .format(','.join(typlist)))\n-            self.dtyplist = [None]*self.nvar\n-            try:\n-                i = 0\n-                for typ in typlist:\n-                    if typ <= 2045:\n-                        self.dtyplist[i] = str(typ)\n-                    else:\n-                        self.dtyplist[i] = self.DTYPE_MAP_XML[typ]\n-                    i += 1\n-            except:\n-                raise ValueError(\"cannot convert stata dtypes [{0}]\"\n-                                 .format(','.join(typlist)))\n+            self._read_new_header(first_char)\n+        else:\n+            self._read_old_header(first_char)\n \n-            self.path_or_buf.seek(seek_varnames)\n-            self.varlist = [self._null_terminate(self.path_or_buf.read(33))\n-                            for i in range(self.nvar)]\n+        self.has_string_data = len([x for x in self.typlist\n+                                    if type(x) is int]) > 0\n \n-            self.path_or_buf.seek(seek_sortlist)\n-            self.srtlist = struct.unpack(\n-                self.byteorder + ('h' * (self.nvar + 1)),\n-                self.path_or_buf.read(2 * (self.nvar + 1))\n-            )[:-1]\n+        # calculate size of a data record\n+        self.col_sizes = lmap(lambda x: self._calcsize(x), self.typlist)\n \n-            self.path_or_buf.seek(seek_formats)\n-            self.fmtlist = [self._null_terminate(self.path_or_buf.read(49))\n-                            for i in range(self.nvar)]\n+        # remove format details from %td\n+        self.fmtlist = [\"%td\" if x.startswith(\"%td\") else x for x in self.fmtlist]\n \n-            self.path_or_buf.seek(seek_value_label_names)\n-            self.lbllist = [self._null_terminate(self.path_or_buf.read(33))\n-                            for i in range(self.nvar)]\n \n-            self.path_or_buf.seek(seek_variable_labels)\n-            self.vlblist = [self._null_terminate(self.path_or_buf.read(81))\n+    def _read_new_header(self, first_char):\n+        # The first part of the header is common to 117 and 118.\n+        self.path_or_buf.read(27)  # stata_dta><header><release>\n+        self.format_version = int(self.path_or_buf.read(3))\n+        if self.format_version not in [117, 118]:\n+            raise ValueError(_version_error)\n+        self.path_or_buf.read(21)  # </release><byteorder>\n+        self.byteorder = self.path_or_buf.read(3) == \"MSF\" and '>' or '<'\n+        self.path_or_buf.read(15)  # </byteorder><K>\n+        self.nvar = struct.unpack(self.byteorder + 'H',\n+                                  self.path_or_buf.read(2))[0]\n+        self.path_or_buf.read(7)  # </K><N>\n+\n+        # The rest of the header has version-specific struture.\n+        if self.format_version == 117:\n+            self._read_117_header()\n+        else:\n+            self._read_118_header()\n+\n+\n+    def _read_118_header(self):\n+        self.nobs = struct.unpack(self.byteorder + 'Q',\n+                                  self.path_or_buf.read(8))[0] # CHANGE\n+        self.path_or_buf.read(11)  # </N><label>\n+        strlen = struct.unpack(self.byteorder + 'H', self.path_or_buf.read(2))[0]\n+        self.data_label = self._decode(self.path_or_buf.read(strlen))\n+        self.path_or_buf.read(19)  # </label><timestamp>\n+        strlen = struct.unpack('b', self.path_or_buf.read(1))[0]\n+        self.time_stamp = self.path_or_buf.read(strlen).decode(\"utf-8\")\n+        self.path_or_buf.read(26)  # </timestamp></header><map>\n+        self.path_or_buf.read(8)  # 0x0000000000000000\n+        self.path_or_buf.read(8)  # position of <map>\n+        seek_vartypes = struct.unpack(\n+            self.byteorder + 'q', self.path_or_buf.read(8))[0] + 16\n+        seek_varnames = struct.unpack(\n+            self.byteorder + 'q', self.path_or_buf.read(8))[0] + 10\n+        seek_sortlist = struct.unpack(\n+            self.byteorder + 'q', self.path_or_buf.read(8))[0] + 10\n+        seek_formats = struct.unpack(\n+            self.byteorder + 'q', self.path_or_buf.read(8))[0] + 9\n+        seek_value_label_names = struct.unpack(\n+            self.byteorder + 'q', self.path_or_buf.read(8))[0] + 19\n+        seek_variable_labels = struct.unpack(\n+            self.byteorder + 'q', self.path_or_buf.read(8))[0] + 17\n+        self.path_or_buf.read(8)  # <characteristics>\n+        self.data_location = struct.unpack(\n+            self.byteorder + 'q', self.path_or_buf.read(8))[0] + 6\n+        self.seek_strls = struct.unpack(\n+            self.byteorder + 'q', self.path_or_buf.read(8))[0] + 7\n+        self.seek_value_labels = struct.unpack(\n+            self.byteorder + 'q', self.path_or_buf.read(8))[0] + 14\n+        self.path_or_buf.seek(seek_vartypes)\n+        typlist = [struct.unpack(self.byteorder + 'H',\n+                                 self.path_or_buf.read(2))[0]\n+                   for i in range(self.nvar)]\n+        self.typlist = [None]*self.nvar","path":"pandas/io/stata.py","position":207,"original_position":207,"commit_id":"654e88b1208b2fccdbc0f0b11a5e9ef1cdb23a20","original_commit_id":"654e88b1208b2fccdbc0f0b11a5e9ef1cdb23a20","user":{"login":"jreback","id":953992,"avatar_url":"https://avatars.githubusercontent.com/u/953992?v=3","gravatar_id":"","url":"https://api.github.com/users/jreback","html_url":"https://github.com/jreback","followers_url":"https://api.github.com/users/jreback/followers","following_url":"https://api.github.com/users/jreback/following{/other_user}","gists_url":"https://api.github.com/users/jreback/gists{/gist_id}","starred_url":"https://api.github.com/users/jreback/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jreback/subscriptions","organizations_url":"https://api.github.com/users/jreback/orgs","repos_url":"https://api.github.com/users/jreback/repos","events_url":"https://api.github.com/users/jreback/events{/privacy}","received_events_url":"https://api.github.com/users/jreback/received_events","type":"User","site_admin":false},"body":"more idiomatic to have something like this:\r\n\r\n```\r\ndef f(typ):\r\n      if typ <= 2045:\r\n            return str(typ)\r\n      try:\r\n            return self.DTYPE_MAP_XML[typ]\r\n       except KeyError:\r\n            raise ValueError(\"cannot convert stata dtype [{0}]\"\r\n                            .format(typ))\r\n    \r\nself.dtyplist = map(f, typlist)\r\n```","created_at":"2015-07-17T12:39:36Z","updated_at":"2015-07-17T12:39:36Z","html_url":"https://github.com/pydata/pandas/pull/10516#discussion_r34885125","pull_request_url":"https://api.github.com/repos/pydata/pandas/pulls/10516","_links":{"self":{"href":"https://api.github.com/repos/pydata/pandas/pulls/comments/34885125"},"html":{"href":"https://github.com/pydata/pandas/pull/10516#discussion_r34885125"},"pull_request":{"href":"https://api.github.com/repos/pydata/pandas/pulls/10516"}}},"pull_request":{"url":"https://api.github.com/repos/pydata/pandas/pulls/10516","id":39258884,"html_url":"https://github.com/pydata/pandas/pull/10516","diff_url":"https://github.com/pydata/pandas/pull/10516.diff","patch_url":"https://github.com/pydata/pandas/pull/10516.patch","issue_url":"https://api.github.com/repos/pydata/pandas/issues/10516","number":10516,"state":"open","locked":false,"title":"Read Stata version 118 files closes #9882","user":{"login":"kshedden","id":2666691,"avatar_url":"https://avatars.githubusercontent.com/u/2666691?v=3","gravatar_id":"","url":"https://api.github.com/users/kshedden","html_url":"https://github.com/kshedden","followers_url":"https://api.github.com/users/kshedden/followers","following_url":"https://api.github.com/users/kshedden/following{/other_user}","gists_url":"https://api.github.com/users/kshedden/gists{/gist_id}","starred_url":"https://api.github.com/users/kshedden/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kshedden/subscriptions","organizations_url":"https://api.github.com/users/kshedden/orgs","repos_url":"https://api.github.com/users/kshedden/repos","events_url":"https://api.github.com/users/kshedden/events{/privacy}","received_events_url":"https://api.github.com/users/kshedden/received_events","type":"User","site_admin":false},"body":"closes #9882 \r\n\r\nThis extends the Stata reader to handle version 118 (stata 14) format files.\r\n\r\nIt correctly handles the test file posted by @makmanalp.  I don't have stata14 now to generate additional test files, but I'm not sure that it's necessary.\r\n\r\nThere is one point I'm not sure about, relating to the way that strls are indexed by a weird composite of a short and a 6 byte integer.  The stata docs aren't clear on how this 8 byte composite should (or shouldn't) be byteswapped when the file and local endianness don't match.  We currently byteswap it in this case (inheriting from our dta117 code) but I'm not sure that this is correct.\r\n\r\nI can confirm that it works when the file and local machine are both little endian, which covers the most common situation.\r\n\r\nI haven't looked at the writer much, it seems to always write version 114 files. ","created_at":"2015-07-06T11:37:01Z","updated_at":"2015-07-17T12:39:36Z","closed_at":null,"merged_at":null,"merge_commit_sha":"e069c84cc708f76e754c267f0d2f2fc9ca151339","assignee":null,"milestone":{"url":"https://api.github.com/repos/pydata/pandas/milestones/34","html_url":"https://github.com/pydata/pandas/milestones/0.17.0","labels_url":"https://api.github.com/repos/pydata/pandas/milestones/34/labels","id":1033710,"number":34,"title":"0.17.0","description":"","creator":{"login":"jreback","id":953992,"avatar_url":"https://avatars.githubusercontent.com/u/953992?v=3","gravatar_id":"","url":"https://api.github.com/users/jreback","html_url":"https://github.com/jreback","followers_url":"https://api.github.com/users/jreback/followers","following_url":"https://api.github.com/users/jreback/following{/other_user}","gists_url":"https://api.github.com/users/jreback/gists{/gist_id}","starred_url":"https://api.github.com/users/jreback/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jreback/subscriptions","organizations_url":"https://api.github.com/users/jreback/orgs","repos_url":"https://api.github.com/users/jreback/repos","events_url":"https://api.github.com/users/jreback/events{/privacy}","received_events_url":"https://api.github.com/users/jreback/received_events","type":"User","site_admin":false},"open_issues":192,"closed_issues":120,"state":"open","created_at":"2015-03-23T10:47:38Z","updated_at":"2015-07-17T00:34:41Z","due_on":"2015-07-31T04:00:00Z","closed_at":null},"commits_url":"https://api.github.com/repos/pydata/pandas/pulls/10516/commits","review_comments_url":"https://api.github.com/repos/pydata/pandas/pulls/10516/comments","review_comment_url":"https://api.github.com/repos/pydata/pandas/pulls/comments{/number}","comments_url":"https://api.github.com/repos/pydata/pandas/issues/10516/comments","statuses_url":"https://api.github.com/repos/pydata/pandas/statuses/654e88b1208b2fccdbc0f0b11a5e9ef1cdb23a20","head":{"label":"kshedden:stata118","ref":"stata118","sha":"654e88b1208b2fccdbc0f0b11a5e9ef1cdb23a20","user":{"login":"kshedden","id":2666691,"avatar_url":"https://avatars.githubusercontent.com/u/2666691?v=3","gravatar_id":"","url":"https://api.github.com/users/kshedden","html_url":"https://github.com/kshedden","followers_url":"https://api.github.com/users/kshedden/followers","following_url":"https://api.github.com/users/kshedden/following{/other_user}","gists_url":"https://api.github.com/users/kshedden/gists{/gist_id}","starred_url":"https://api.github.com/users/kshedden/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kshedden/subscriptions","organizations_url":"https://api.github.com/users/kshedden/orgs","repos_url":"https://api.github.com/users/kshedden/repos","events_url":"https://api.github.com/users/kshedden/events{/privacy}","received_events_url":"https://api.github.com/users/kshedden/received_events","type":"User","site_admin":false},"repo":{"id":30704378,"name":"pandas","full_name":"kshedden/pandas","owner":{"login":"kshedden","id":2666691,"avatar_url":"https://avatars.githubusercontent.com/u/2666691?v=3","gravatar_id":"","url":"https://api.github.com/users/kshedden","html_url":"https://github.com/kshedden","followers_url":"https://api.github.com/users/kshedden/followers","following_url":"https://api.github.com/users/kshedden/following{/other_user}","gists_url":"https://api.github.com/users/kshedden/gists{/gist_id}","starred_url":"https://api.github.com/users/kshedden/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kshedden/subscriptions","organizations_url":"https://api.github.com/users/kshedden/orgs","repos_url":"https://api.github.com/users/kshedden/repos","events_url":"https://api.github.com/users/kshedden/events{/privacy}","received_events_url":"https://api.github.com/users/kshedden/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/kshedden/pandas","description":"Flexible and powerful data analysis / manipulation library for Python, providing labeled data structures similar to R data.frame objects, statistical functions, and much more","fork":true,"url":"https://api.github.com/repos/kshedden/pandas","forks_url":"https://api.github.com/repos/kshedden/pandas/forks","keys_url":"https://api.github.com/repos/kshedden/pandas/keys{/key_id}","collaborators_url":"https://api.github.com/repos/kshedden/pandas/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/kshedden/pandas/teams","hooks_url":"https://api.github.com/repos/kshedden/pandas/hooks","issue_events_url":"https://api.github.com/repos/kshedden/pandas/issues/events{/number}","events_url":"https://api.github.com/repos/kshedden/pandas/events","assignees_url":"https://api.github.com/repos/kshedden/pandas/assignees{/user}","branches_url":"https://api.github.com/repos/kshedden/pandas/branches{/branch}","tags_url":"https://api.github.com/repos/kshedden/pandas/tags","blobs_url":"https://api.github.com/repos/kshedden/pandas/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/kshedden/pandas/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/kshedden/pandas/git/refs{/sha}","trees_url":"https://api.github.com/repos/kshedden/pandas/git/trees{/sha}","statuses_url":"https://api.github.com/repos/kshedden/pandas/statuses/{sha}","languages_url":"https://api.github.com/repos/kshedden/pandas/languages","stargazers_url":"https://api.github.com/repos/kshedden/pandas/stargazers","contributors_url":"https://api.github.com/repos/kshedden/pandas/contributors","subscribers_url":"https://api.github.com/repos/kshedden/pandas/subscribers","subscription_url":"https://api.github.com/repos/kshedden/pandas/subscription","commits_url":"https://api.github.com/repos/kshedden/pandas/commits{/sha}","git_commits_url":"https://api.github.com/repos/kshedden/pandas/git/commits{/sha}","comments_url":"https://api.github.com/repos/kshedden/pandas/comments{/number}","issue_comment_url":"https://api.github.com/repos/kshedden/pandas/issues/comments{/number}","contents_url":"https://api.github.com/repos/kshedden/pandas/contents/{+path}","compare_url":"https://api.github.com/repos/kshedden/pandas/compare/{base}...{head}","merges_url":"https://api.github.com/repos/kshedden/pandas/merges","archive_url":"https://api.github.com/repos/kshedden/pandas/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/kshedden/pandas/downloads","issues_url":"https://api.github.com/repos/kshedden/pandas/issues{/number}","pulls_url":"https://api.github.com/repos/kshedden/pandas/pulls{/number}","milestones_url":"https://api.github.com/repos/kshedden/pandas/milestones{/number}","notifications_url":"https://api.github.com/repos/kshedden/pandas/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/kshedden/pandas/labels{/name}","releases_url":"https://api.github.com/repos/kshedden/pandas/releases{/id}","created_at":"2015-02-12T13:46:00Z","updated_at":"2015-04-03T12:35:08Z","pushed_at":"2015-07-17T06:44:27Z","git_url":"git://github.com/kshedden/pandas.git","ssh_url":"git@github.com:kshedden/pandas.git","clone_url":"https://github.com/kshedden/pandas.git","svn_url":"https://github.com/kshedden/pandas","homepage":"http://pandas.pydata.org","size":55808,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"pydata:master","ref":"master","sha":"9da54ad0f92c54823e992dfbb4f572a01e173f0b","user":{"login":"pydata","id":1284191,"avatar_url":"https://avatars.githubusercontent.com/u/1284191?v=3","gravatar_id":"","url":"https://api.github.com/users/pydata","html_url":"https://github.com/pydata","followers_url":"https://api.github.com/users/pydata/followers","following_url":"https://api.github.com/users/pydata/following{/other_user}","gists_url":"https://api.github.com/users/pydata/gists{/gist_id}","starred_url":"https://api.github.com/users/pydata/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pydata/subscriptions","organizations_url":"https://api.github.com/users/pydata/orgs","repos_url":"https://api.github.com/users/pydata/repos","events_url":"https://api.github.com/users/pydata/events{/privacy}","received_events_url":"https://api.github.com/users/pydata/received_events","type":"Organization","site_admin":false},"repo":{"id":858127,"name":"pandas","full_name":"pydata/pandas","owner":{"login":"pydata","id":1284191,"avatar_url":"https://avatars.githubusercontent.com/u/1284191?v=3","gravatar_id":"","url":"https://api.github.com/users/pydata","html_url":"https://github.com/pydata","followers_url":"https://api.github.com/users/pydata/followers","following_url":"https://api.github.com/users/pydata/following{/other_user}","gists_url":"https://api.github.com/users/pydata/gists{/gist_id}","starred_url":"https://api.github.com/users/pydata/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pydata/subscriptions","organizations_url":"https://api.github.com/users/pydata/orgs","repos_url":"https://api.github.com/users/pydata/repos","events_url":"https://api.github.com/users/pydata/events{/privacy}","received_events_url":"https://api.github.com/users/pydata/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/pydata/pandas","description":"Flexible and powerful data analysis / manipulation library for Python, providing labeled data structures similar to R data.frame objects, statistical functions, and much more","fork":false,"url":"https://api.github.com/repos/pydata/pandas","forks_url":"https://api.github.com/repos/pydata/pandas/forks","keys_url":"https://api.github.com/repos/pydata/pandas/keys{/key_id}","collaborators_url":"https://api.github.com/repos/pydata/pandas/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/pydata/pandas/teams","hooks_url":"https://api.github.com/repos/pydata/pandas/hooks","issue_events_url":"https://api.github.com/repos/pydata/pandas/issues/events{/number}","events_url":"https://api.github.com/repos/pydata/pandas/events","assignees_url":"https://api.github.com/repos/pydata/pandas/assignees{/user}","branches_url":"https://api.github.com/repos/pydata/pandas/branches{/branch}","tags_url":"https://api.github.com/repos/pydata/pandas/tags","blobs_url":"https://api.github.com/repos/pydata/pandas/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/pydata/pandas/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/pydata/pandas/git/refs{/sha}","trees_url":"https://api.github.com/repos/pydata/pandas/git/trees{/sha}","statuses_url":"https://api.github.com/repos/pydata/pandas/statuses/{sha}","languages_url":"https://api.github.com/repos/pydata/pandas/languages","stargazers_url":"https://api.github.com/repos/pydata/pandas/stargazers","contributors_url":"https://api.github.com/repos/pydata/pandas/contributors","subscribers_url":"https://api.github.com/repos/pydata/pandas/subscribers","subscription_url":"https://api.github.com/repos/pydata/pandas/subscription","commits_url":"https://api.github.com/repos/pydata/pandas/commits{/sha}","git_commits_url":"https://api.github.com/repos/pydata/pandas/git/commits{/sha}","comments_url":"https://api.github.com/repos/pydata/pandas/comments{/number}","issue_comment_url":"https://api.github.com/repos/pydata/pandas/issues/comments{/number}","contents_url":"https://api.github.com/repos/pydata/pandas/contents/{+path}","compare_url":"https://api.github.com/repos/pydata/pandas/compare/{base}...{head}","merges_url":"https://api.github.com/repos/pydata/pandas/merges","archive_url":"https://api.github.com/repos/pydata/pandas/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/pydata/pandas/downloads","issues_url":"https://api.github.com/repos/pydata/pandas/issues{/number}","pulls_url":"https://api.github.com/repos/pydata/pandas/pulls{/number}","milestones_url":"https://api.github.com/repos/pydata/pandas/milestones{/number}","notifications_url":"https://api.github.com/repos/pydata/pandas/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/pydata/pandas/labels{/name}","releases_url":"https://api.github.com/repos/pydata/pandas/releases{/id}","created_at":"2010-08-24T01:37:33Z","updated_at":"2015-07-17T08:21:01Z","pushed_at":"2015-07-17T06:44:37Z","git_url":"git://github.com/pydata/pandas.git","ssh_url":"git@github.com:pydata/pandas.git","clone_url":"https://github.com/pydata/pandas.git","svn_url":"https://github.com/pydata/pandas","homepage":"http://pandas.pydata.org","size":148187,"stargazers_count":4662,"watchers_count":4662,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1755,"mirror_url":null,"open_issues_count":1498,"forks":1755,"open_issues":1498,"watchers":4662,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/pydata/pandas/pulls/10516"},"html":{"href":"https://github.com/pydata/pandas/pull/10516"},"issue":{"href":"https://api.github.com/repos/pydata/pandas/issues/10516"},"comments":{"href":"https://api.github.com/repos/pydata/pandas/issues/10516/comments"},"review_comments":{"href":"https://api.github.com/repos/pydata/pandas/pulls/10516/comments"},"review_comment":{"href":"https://api.github.com/repos/pydata/pandas/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/pydata/pandas/pulls/10516/commits"},"statuses":{"href":"https://api.github.com/repos/pydata/pandas/statuses/654e88b1208b2fccdbc0f0b11a5e9ef1cdb23a20"}}}}