{"action":"created","comment":{"url":"https://api.github.com/repos/matplotlib/matplotlib/pulls/comments/166820701","pull_request_review_id":94943874,"id":166820701,"diff_hunk":"@@ -13,111 +18,154 @@\n \n # np 1.6/1.7 support\n from distutils.version import LooseVersion\n-import collections\n \n+VALID_TYPES = tuple(set(six.string_types +\n+                        (bytes, six.text_type, np.str_, np.bytes_)))\n \n-if LooseVersion(np.__version__) >= LooseVersion('1.8.0'):\n-    def shim_array(data):\n-        return np.array(data, dtype=np.unicode)\n-else:\n-    def shim_array(data):\n-        if (isinstance(data, six.string_types) or\n-                not isinstance(data, collections.Iterable)):\n-            data = [data]\n-        try:\n-            data = [str(d) for d in data]\n-        except UnicodeEncodeError:\n-            # this yields gibberish but unicode text doesn't\n-            # render under numpy1.6 anyway\n-            data = [d.encode('utf-8', 'ignore').decode('utf-8')\n-                    for d in data]\n-        return np.array(data, dtype=np.unicode)\n \n+def to_str(value):\n+    \"\"\"Helper function to turn values to strings.\n+    \"\"\"\n+    # Note: This function is only used by StrCategoryFormatter\n+    if LooseVersion(np.__version__) < LooseVersion('1.7.0'):\n+        if (isinstance(value, (six.text_type, np.unicode))):\n+            value = value.encode('utf-8', 'ignore').decode('utf-8')\n+    if isinstance(value, (np.bytes_, six.binary_type)):\n+        value = value.decode(encoding='utf-8')\n+    elif not isinstance(value, (np.str_, six.string_types)):\n+        value = str(value)\n+    return value\n \n class StrCategoryConverter(units.ConversionInterface):\n     @staticmethod\n     def convert(value, unit, axis):\n-        \"\"\"Uses axis.unit_data map to encode\n-        data as floats\n+        \"\"\"Uses axis.unit_data to encode string data as floats\n+\n+        Parameters\n+        ----------\n+        value: string, iterable\n+            value or list of values to plot\n+        unit:\n+        axis:\n         \"\"\"\n-        value = np.atleast_1d(value)\n-        # try and update from here....\n-        if hasattr(axis.unit_data, 'update'):\n-            for val in value:\n-                if isinstance(val, six.string_types):\n-                    axis.unit_data.update(val)\n-        vmap = dict(zip(axis.unit_data.seq, axis.unit_data.locs))\n+        if isinstance(value, VALID_TYPES):\n+            return axis.units._mapping[value]\n \n-        if isinstance(value, six.string_types):\n-            return vmap[value]\n+        # dtype = object preserves mixed typing\n+        values = np.atleast_1d(np.array(value, dtype=object))\n \n-        vals = shim_array(value)\n+        # pass through sequence of non binary numbers\n+        if all((units.ConversionInterface.is_numlike(v) and\n+                not isinstance(v, VALID_TYPES)) for v in values):\n+            return np.asarray(values, dtype=float)\n \n-        for lab, loc in vmap.items():\n-            vals[vals == lab] = loc\n+        # force an update so it also does type checking\n+        axis.units.update(values)\n \n-        return vals.astype('float')\n+        str2idx = np.vectorize(axis.units._mapping.__getitem__,\n+                               otypes=[float])\n+\n+        mapped_value = str2idx(values)\n+        return mapped_value\n \n     @staticmethod\n     def axisinfo(unit, axis):\n-        majloc = StrCategoryLocator(axis.unit_data.locs)\n-        majfmt = StrCategoryFormatter(axis.unit_data.seq)\n+        \"\"\"Sets the axis ticks and labels\n+        \"\"\"\n+        # locator and formatter take mapping dict because\n+        # args need to be pass by reference for updates\n+        majloc = StrCategoryLocator(axis.units)\n+        majfmt = StrCategoryFormatter(axis.units)\n         return units.AxisInfo(majloc=majloc, majfmt=majfmt)\n \n     @staticmethod\n-    def default_units(data, axis):\n-        # the conversion call stack is:\n+    def default_units(data=None, axis=None):\n+        # the conversion call stack is supposed to be\n         # default_units->axis_info->convert\n-        if axis.unit_data is None:\n-            axis.unit_data = UnitData(data)\n+        if axis.units is None:\n+            axis.units = UnitData(data)\n         else:\n-            axis.unit_data.update(data)\n-        return None\n+            axis.units.update(data)\n+        return axis.units\n \n \n-class StrCategoryLocator(ticker.FixedLocator):\n-    def __init__(self, locs):\n-        self.locs = locs\n-        self.nbins = None\n+class StrCategoryLocator(ticker.Locator):\n+    \"\"\"tick at every integer mapping of the string data\"\"\"\n+    def __init__(self, units):\n+        \"\"\"\n+        Parameters\n+        -----------\n+        units: dict\n+              (string, integer) mapping\n+        \"\"\"\n+        self._units = units\n \n+    def __call__(self):\n+        return list(self._units._mapping.values())\n \n-class StrCategoryFormatter(ticker.FixedFormatter):\n-    def __init__(self, seq):\n-        self.seq = seq\n-        self.offset_string = ''\n+    def tick_values(self, vmin, vmax):\n+        return self()\n+\n+\n+class StrCategoryFormatter(ticker.Formatter):\n+    \"\"\"String representation of the data at every tick\"\"\"\n+    def __init__(self, units):\n+        \"\"\"\n+        Parameters\n+        ----------\n+        units: dict\n+              (string, integer) mapping\n+        \"\"\"\n+        self._units = units\n+\n+    def __call__(self, x, pos=None):\n+        if pos is None:\n+            return \"\"\n+        r_mapping = {v: to_str(k) for k, v in self._units._mapping.items()}\n+        return r_mapping.get(int(x), '')\n \n \n class UnitData(object):\n-    # debatable makes sense to special code missing values\n-    spdict = {'nan': -1.0, 'inf': -2.0, '-inf': -3.0}\n \n-    def __init__(self, data):\n+    def __init__(self, data=None):","path":"lib/matplotlib/category.py","position":180,"original_position":180,"commit_id":"96b611ca3f20e3ef87bd7978f8c80ca50c875efb","original_commit_id":"96b611ca3f20e3ef87bd7978f8c80ca50c875efb","user":{"login":"tacaswell","id":199813,"avatar_url":"https://avatars3.githubusercontent.com/u/199813?v=4","gravatar_id":"","url":"https://api.github.com/users/tacaswell","html_url":"https://github.com/tacaswell","followers_url":"https://api.github.com/users/tacaswell/followers","following_url":"https://api.github.com/users/tacaswell/following{/other_user}","gists_url":"https://api.github.com/users/tacaswell/gists{/gist_id}","starred_url":"https://api.github.com/users/tacaswell/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tacaswell/subscriptions","organizations_url":"https://api.github.com/users/tacaswell/orgs","repos_url":"https://api.github.com/users/tacaswell/repos","events_url":"https://api.github.com/users/tacaswell/events{/privacy}","received_events_url":"https://api.github.com/users/tacaswell/received_events","type":"User","site_admin":false},"body":":sheep: I am :sleepy: and can not read.  Carry on this is :+1: ","created_at":"2018-02-08T02:53:19Z","updated_at":"2018-02-08T02:53:23Z","html_url":"https://github.com/matplotlib/matplotlib/pull/9783#discussion_r166820701","pull_request_url":"https://api.github.com/repos/matplotlib/matplotlib/pulls/9783","author_association":"OWNER","_links":{"self":{"href":"https://api.github.com/repos/matplotlib/matplotlib/pulls/comments/166820701"},"html":{"href":"https://github.com/matplotlib/matplotlib/pull/9783#discussion_r166820701"},"pull_request":{"href":"https://api.github.com/repos/matplotlib/matplotlib/pulls/9783"}},"in_reply_to_id":166820030},"pull_request":{"url":"https://api.github.com/repos/matplotlib/matplotlib/pulls/9783","id":152610833,"html_url":"https://github.com/matplotlib/matplotlib/pull/9783","diff_url":"https://github.com/matplotlib/matplotlib/pull/9783.diff","patch_url":"https://github.com/matplotlib/matplotlib/pull/9783.patch","issue_url":"https://api.github.com/repos/matplotlib/matplotlib/issues/9783","number":9783,"state":"open","locked":false,"title":"Categorical: Unsorted, String only, fix overwrite bug","user":{"login":"story645","id":1300499,"avatar_url":"https://avatars2.githubusercontent.com/u/1300499?v=4","gravatar_id":"","url":"https://api.github.com/users/story645","html_url":"https://github.com/story645","followers_url":"https://api.github.com/users/story645/followers","following_url":"https://api.github.com/users/story645/following{/other_user}","gists_url":"https://api.github.com/users/story645/gists{/gist_id}","starred_url":"https://api.github.com/users/story645/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/story645/subscriptions","organizations_url":"https://api.github.com/users/story645/orgs","repos_url":"https://api.github.com/users/story645/repos","events_url":"https://api.github.com/users/story645/events{/privacy}","received_events_url":"https://api.github.com/users/story645/received_events","type":"User","site_admin":false},"body":"Alternative to #9774 and supersedes #9340 that preserves more of the existing behavior. Open discussion on whether that should be preserved, but closes out #9350, #9312, #9336 .\r\n``` Python\r\nimport numpy as np\r\ndog = [\"bored\", \"happy\",\"happy\",\"bored\", \"bored\",\"happy\"]\r\ncat = [\"bored\", \"bored\",\"bored\",\"happy\",\"bored\",\"bored\"]\r\ntime = [\"combing\",\"feeding\",\"drinking\",\"napping\",\"washing\",\"playing\"]\r\n\r\nfig, ax = plt.subplots()\r\nax.plot(time, dog, label=\"dog\")\r\nax.plot(time, cat, label=\"cat\")\r\nax.legend()\r\n```\r\n![index](https://user-images.githubusercontent.com/1300499/32803323-2a7bd88c-c951-11e7-96ca-8b546f02b7a0.png)\r\n\r\nAnd it's supporting missing values/nans in scatter but not in plot (in plot it's treating them as a categorical). My guess is this is tied into #9713 (plot doesn't behave like the other functions). \r\n","created_at":"2017-11-14T20:35:04Z","updated_at":"2018-02-08T02:53:23Z","closed_at":null,"merged_at":null,"merge_commit_sha":"ee976df7310612bb25ca7c383fffddde96eff386","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"milestone":{"url":"https://api.github.com/repos/matplotlib/matplotlib/milestones/25","html_url":"https://github.com/matplotlib/matplotlib/milestone/25","labels_url":"https://api.github.com/repos/matplotlib/matplotlib/milestones/25/labels","id":2189521,"number":25,"title":"v2.2","description":"","creator":{"login":"tacaswell","id":199813,"avatar_url":"https://avatars3.githubusercontent.com/u/199813?v=4","gravatar_id":"","url":"https://api.github.com/users/tacaswell","html_url":"https://github.com/tacaswell","followers_url":"https://api.github.com/users/tacaswell/followers","following_url":"https://api.github.com/users/tacaswell/following{/other_user}","gists_url":"https://api.github.com/users/tacaswell/gists{/gist_id}","starred_url":"https://api.github.com/users/tacaswell/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tacaswell/subscriptions","organizations_url":"https://api.github.com/users/tacaswell/orgs","repos_url":"https://api.github.com/users/tacaswell/repos","events_url":"https://api.github.com/users/tacaswell/events{/privacy}","received_events_url":"https://api.github.com/users/tacaswell/received_events","type":"User","site_admin":false},"open_issues":855,"closed_issues":417,"state":"open","created_at":"2016-12-11T20:54:18Z","updated_at":"2018-02-08T02:17:31Z","due_on":"2018-01-30T08:00:00Z","closed_at":null},"commits_url":"https://api.github.com/repos/matplotlib/matplotlib/pulls/9783/commits","review_comments_url":"https://api.github.com/repos/matplotlib/matplotlib/pulls/9783/comments","review_comment_url":"https://api.github.com/repos/matplotlib/matplotlib/pulls/comments{/number}","comments_url":"https://api.github.com/repos/matplotlib/matplotlib/issues/9783/comments","statuses_url":"https://api.github.com/repos/matplotlib/matplotlib/statuses/96b611ca3f20e3ef87bd7978f8c80ca50c875efb","head":{"label":"story645:cat","ref":"cat","sha":"96b611ca3f20e3ef87bd7978f8c80ca50c875efb","user":{"login":"story645","id":1300499,"avatar_url":"https://avatars2.githubusercontent.com/u/1300499?v=4","gravatar_id":"","url":"https://api.github.com/users/story645","html_url":"https://github.com/story645","followers_url":"https://api.github.com/users/story645/followers","following_url":"https://api.github.com/users/story645/following{/other_user}","gists_url":"https://api.github.com/users/story645/gists{/gist_id}","starred_url":"https://api.github.com/users/story645/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/story645/subscriptions","organizations_url":"https://api.github.com/users/story645/orgs","repos_url":"https://api.github.com/users/story645/repos","events_url":"https://api.github.com/users/story645/events{/privacy}","received_events_url":"https://api.github.com/users/story645/received_events","type":"User","site_admin":false},"repo":{"id":54352213,"name":"matplotlib","full_name":"story645/matplotlib","owner":{"login":"story645","id":1300499,"avatar_url":"https://avatars2.githubusercontent.com/u/1300499?v=4","gravatar_id":"","url":"https://api.github.com/users/story645","html_url":"https://github.com/story645","followers_url":"https://api.github.com/users/story645/followers","following_url":"https://api.github.com/users/story645/following{/other_user}","gists_url":"https://api.github.com/users/story645/gists{/gist_id}","starred_url":"https://api.github.com/users/story645/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/story645/subscriptions","organizations_url":"https://api.github.com/users/story645/orgs","repos_url":"https://api.github.com/users/story645/repos","events_url":"https://api.github.com/users/story645/events{/privacy}","received_events_url":"https://api.github.com/users/story645/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/story645/matplotlib","description":"matplotlib: plotting with Python","fork":true,"url":"https://api.github.com/repos/story645/matplotlib","forks_url":"https://api.github.com/repos/story645/matplotlib/forks","keys_url":"https://api.github.com/repos/story645/matplotlib/keys{/key_id}","collaborators_url":"https://api.github.com/repos/story645/matplotlib/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/story645/matplotlib/teams","hooks_url":"https://api.github.com/repos/story645/matplotlib/hooks","issue_events_url":"https://api.github.com/repos/story645/matplotlib/issues/events{/number}","events_url":"https://api.github.com/repos/story645/matplotlib/events","assignees_url":"https://api.github.com/repos/story645/matplotlib/assignees{/user}","branches_url":"https://api.github.com/repos/story645/matplotlib/branches{/branch}","tags_url":"https://api.github.com/repos/story645/matplotlib/tags","blobs_url":"https://api.github.com/repos/story645/matplotlib/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/story645/matplotlib/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/story645/matplotlib/git/refs{/sha}","trees_url":"https://api.github.com/repos/story645/matplotlib/git/trees{/sha}","statuses_url":"https://api.github.com/repos/story645/matplotlib/statuses/{sha}","languages_url":"https://api.github.com/repos/story645/matplotlib/languages","stargazers_url":"https://api.github.com/repos/story645/matplotlib/stargazers","contributors_url":"https://api.github.com/repos/story645/matplotlib/contributors","subscribers_url":"https://api.github.com/repos/story645/matplotlib/subscribers","subscription_url":"https://api.github.com/repos/story645/matplotlib/subscription","commits_url":"https://api.github.com/repos/story645/matplotlib/commits{/sha}","git_commits_url":"https://api.github.com/repos/story645/matplotlib/git/commits{/sha}","comments_url":"https://api.github.com/repos/story645/matplotlib/comments{/number}","issue_comment_url":"https://api.github.com/repos/story645/matplotlib/issues/comments{/number}","contents_url":"https://api.github.com/repos/story645/matplotlib/contents/{+path}","compare_url":"https://api.github.com/repos/story645/matplotlib/compare/{base}...{head}","merges_url":"https://api.github.com/repos/story645/matplotlib/merges","archive_url":"https://api.github.com/repos/story645/matplotlib/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/story645/matplotlib/downloads","issues_url":"https://api.github.com/repos/story645/matplotlib/issues{/number}","pulls_url":"https://api.github.com/repos/story645/matplotlib/pulls{/number}","milestones_url":"https://api.github.com/repos/story645/matplotlib/milestones{/number}","notifications_url":"https://api.github.com/repos/story645/matplotlib/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/story645/matplotlib/labels{/name}","releases_url":"https://api.github.com/repos/story645/matplotlib/releases{/id}","deployments_url":"https://api.github.com/repos/story645/matplotlib/deployments","created_at":"2016-03-21T01:56:22Z","updated_at":"2017-01-24T07:21:48Z","pushed_at":"2018-02-08T02:35:00Z","git_url":"git://github.com/story645/matplotlib.git","ssh_url":"git@github.com:story645/matplotlib.git","clone_url":"https://github.com/story645/matplotlib.git","svn_url":"https://github.com/story645/matplotlib","homepage":"http://matplotlib.org/","size":321841,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":17,"license":null,"forks":0,"open_issues":17,"watchers":0,"default_branch":"master"}},"base":{"label":"matplotlib:master","ref":"master","sha":"a3d1c469e0dc7dc1732287d9dda6e8174e580a0b","user":{"login":"matplotlib","id":215947,"avatar_url":"https://avatars0.githubusercontent.com/u/215947?v=4","gravatar_id":"","url":"https://api.github.com/users/matplotlib","html_url":"https://github.com/matplotlib","followers_url":"https://api.github.com/users/matplotlib/followers","following_url":"https://api.github.com/users/matplotlib/following{/other_user}","gists_url":"https://api.github.com/users/matplotlib/gists{/gist_id}","starred_url":"https://api.github.com/users/matplotlib/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/matplotlib/subscriptions","organizations_url":"https://api.github.com/users/matplotlib/orgs","repos_url":"https://api.github.com/users/matplotlib/repos","events_url":"https://api.github.com/users/matplotlib/events{/privacy}","received_events_url":"https://api.github.com/users/matplotlib/received_events","type":"Organization","site_admin":false},"repo":{"id":1385122,"name":"matplotlib","full_name":"matplotlib/matplotlib","owner":{"login":"matplotlib","id":215947,"avatar_url":"https://avatars0.githubusercontent.com/u/215947?v=4","gravatar_id":"","url":"https://api.github.com/users/matplotlib","html_url":"https://github.com/matplotlib","followers_url":"https://api.github.com/users/matplotlib/followers","following_url":"https://api.github.com/users/matplotlib/following{/other_user}","gists_url":"https://api.github.com/users/matplotlib/gists{/gist_id}","starred_url":"https://api.github.com/users/matplotlib/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/matplotlib/subscriptions","organizations_url":"https://api.github.com/users/matplotlib/orgs","repos_url":"https://api.github.com/users/matplotlib/repos","events_url":"https://api.github.com/users/matplotlib/events{/privacy}","received_events_url":"https://api.github.com/users/matplotlib/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/matplotlib/matplotlib","description":"matplotlib: plotting with Python","fork":false,"url":"https://api.github.com/repos/matplotlib/matplotlib","forks_url":"https://api.github.com/repos/matplotlib/matplotlib/forks","keys_url":"https://api.github.com/repos/matplotlib/matplotlib/keys{/key_id}","collaborators_url":"https://api.github.com/repos/matplotlib/matplotlib/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/matplotlib/matplotlib/teams","hooks_url":"https://api.github.com/repos/matplotlib/matplotlib/hooks","issue_events_url":"https://api.github.com/repos/matplotlib/matplotlib/issues/events{/number}","events_url":"https://api.github.com/repos/matplotlib/matplotlib/events","assignees_url":"https://api.github.com/repos/matplotlib/matplotlib/assignees{/user}","branches_url":"https://api.github.com/repos/matplotlib/matplotlib/branches{/branch}","tags_url":"https://api.github.com/repos/matplotlib/matplotlib/tags","blobs_url":"https://api.github.com/repos/matplotlib/matplotlib/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/matplotlib/matplotlib/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/matplotlib/matplotlib/git/refs{/sha}","trees_url":"https://api.github.com/repos/matplotlib/matplotlib/git/trees{/sha}","statuses_url":"https://api.github.com/repos/matplotlib/matplotlib/statuses/{sha}","languages_url":"https://api.github.com/repos/matplotlib/matplotlib/languages","stargazers_url":"https://api.github.com/repos/matplotlib/matplotlib/stargazers","contributors_url":"https://api.github.com/repos/matplotlib/matplotlib/contributors","subscribers_url":"https://api.github.com/repos/matplotlib/matplotlib/subscribers","subscription_url":"https://api.github.com/repos/matplotlib/matplotlib/subscription","commits_url":"https://api.github.com/repos/matplotlib/matplotlib/commits{/sha}","git_commits_url":"https://api.github.com/repos/matplotlib/matplotlib/git/commits{/sha}","comments_url":"https://api.github.com/repos/matplotlib/matplotlib/comments{/number}","issue_comment_url":"https://api.github.com/repos/matplotlib/matplotlib/issues/comments{/number}","contents_url":"https://api.github.com/repos/matplotlib/matplotlib/contents/{+path}","compare_url":"https://api.github.com/repos/matplotlib/matplotlib/compare/{base}...{head}","merges_url":"https://api.github.com/repos/matplotlib/matplotlib/merges","archive_url":"https://api.github.com/repos/matplotlib/matplotlib/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/matplotlib/matplotlib/downloads","issues_url":"https://api.github.com/repos/matplotlib/matplotlib/issues{/number}","pulls_url":"https://api.github.com/repos/matplotlib/matplotlib/pulls{/number}","milestones_url":"https://api.github.com/repos/matplotlib/matplotlib/milestones{/number}","notifications_url":"https://api.github.com/repos/matplotlib/matplotlib/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/matplotlib/matplotlib/labels{/name}","releases_url":"https://api.github.com/repos/matplotlib/matplotlib/releases{/id}","deployments_url":"https://api.github.com/repos/matplotlib/matplotlib/deployments","created_at":"2011-02-19T03:17:12Z","updated_at":"2018-02-08T01:14:45Z","pushed_at":"2018-02-08T02:35:01Z","git_url":"git://github.com/matplotlib/matplotlib.git","ssh_url":"git@github.com:matplotlib/matplotlib.git","clone_url":"https://github.com/matplotlib/matplotlib.git","svn_url":"https://github.com/matplotlib/matplotlib","homepage":"http://matplotlib.org/","size":321974,"stargazers_count":6719,"watchers_count":6719,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":3161,"mirror_url":null,"archived":false,"open_issues_count":1352,"license":null,"forks":3161,"open_issues":1352,"watchers":6719,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/matplotlib/matplotlib/pulls/9783"},"html":{"href":"https://github.com/matplotlib/matplotlib/pull/9783"},"issue":{"href":"https://api.github.com/repos/matplotlib/matplotlib/issues/9783"},"comments":{"href":"https://api.github.com/repos/matplotlib/matplotlib/issues/9783/comments"},"review_comments":{"href":"https://api.github.com/repos/matplotlib/matplotlib/pulls/9783/comments"},"review_comment":{"href":"https://api.github.com/repos/matplotlib/matplotlib/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/matplotlib/matplotlib/pulls/9783/commits"},"statuses":{"href":"https://api.github.com/repos/matplotlib/matplotlib/statuses/96b611ca3f20e3ef87bd7978f8c80ca50c875efb"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"tacaswell"}}