{"action":"created","comment":{"url":"https://api.github.com/repos/quantopian/zipline/pulls/comments/201493184","pull_request_review_id":135952135,"id":201493184,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIwMTQ5MzE4NA==","diff_hunk":"@@ -1376,6 +1450,538 @@ def test_error_message_plurality(self,\n             )\n \n \n+class AssetFinderMultipleCountries(WithTradingCalendars, ZiplineTestCase):\n+    asset_finder_type = AssetFinder\n+\n+    def write_assets(self, **kwargs):\n+        self._asset_writer.write(**kwargs)\n+\n+    def init_instance_fixtures(self):\n+        super(AssetFinderMultipleCountries, self).init_instance_fixtures()\n+\n+        conn = self.enter_instance_context(empty_assets_db())\n+        self._asset_writer = AssetDBWriter(conn)\n+        self.asset_finder = self.asset_finder_type(conn)\n+\n+    @staticmethod\n+    def country_code(n):\n+        return 'A' + chr(ord('A') + n)\n+\n+    def test_lookup_symbol_delimited(self):\n+        as_of = pd.Timestamp('2013-01-01', tz='UTC')\n+        num_assets = 3\n+        frame = pd.DataFrame.from_records(\n+            [\n+                {\n+                    'sid': n,\n+                    'symbol':  'TEST.A',\n+                    'company_name': \"company %d\" % n,\n+                    'start_date': as_of.value,\n+                    'end_date': as_of.value,\n+                    'exchange': 'EXCHANGE %d' % n,\n+                }\n+                for n in range(num_assets)\n+            ]\n+        )\n+\n+        exchanges = pd.DataFrame({\n+            'exchange': frame['exchange'],\n+            'country_code': [self.country_code(n) for n in range(num_assets)],\n+        })\n+        self.write_assets(equities=frame, exchanges=exchanges)\n+        finder = self.asset_finder\n+        assets = [finder.retrieve_asset(n) for n in range(3)]\n+\n+        def shouldnt_resolve(ticker):\n+            with self.assertRaises(SymbolNotFound):\n+                finder.lookup_symbol(ticker, as_of)\n+            for n in range(num_assets):\n+                with self.assertRaises(SymbolNotFound):\n+                    finder.lookup_symbol(\n+                        ticker,\n+                        as_of,\n+                        country_code=self.country_code(n),\n+                    )\n+\n+        # we do it twice to catch caching bugs\n+        for _ in range(2):\n+            shouldnt_resolve('TEST')\n+            shouldnt_resolve('TESTA')\n+            # '@' is not a supported delimiter\n+            shouldnt_resolve('TEST@A')\n+\n+            # Adding an unnecessary fuzzy shouldn't matter.\n+            for fuzzy_char in '-', '/', '_', '.':\n+                ticker = 'TEST%sA' % fuzzy_char\n+                with self.assertRaises(MultipleSymbolsFound):\n+                    finder.lookup_symbol(ticker, as_of)\n+\n+                for n in range(num_assets):\n+                    actual_asset = finder.lookup_symbol(\n+                        ticker,\n+                        as_of,\n+                        country_code=self.country_code(n),\n+                    )\n+                    assert_equal(actual_asset, assets[n])\n+                    assert_equal(\n+                        actual_asset.exchange_info.country_code,\n+                        self.country_code(n),\n+                    )\n+\n+    def test_lookup_symbol_fuzzy(self):\n+        num_exchanges = 3\n+        metadata = pd.DataFrame.from_records([\n+            {'symbol': symbol, 'exchange': 'EXCHANGE %d' % n}\n+            for n in range(num_exchanges)\n+            for symbol in ('PRTY_HRD', 'BRKA', 'BRK_A')\n+        ])\n+        exchanges = pd.DataFrame({\n+            'exchange': metadata['exchange'].unique(),\n+            'country_code': list(map(self.country_code, range(num_exchanges))),\n+        })\n+        self.write_assets(equities=metadata, exchanges=exchanges)\n+        finder = self.asset_finder\n+        dt = pd.Timestamp('2013-01-01', tz='UTC')\n+\n+        # Try combos of looking up PRTYHRD with and without a time or fuzzy\n+        # Both non-fuzzys get no result\n+        with self.assertRaises(SymbolNotFound):\n+            finder.lookup_symbol('PRTYHRD', None)\n+        with self.assertRaises(SymbolNotFound):\n+            finder.lookup_symbol('PRTYHRD', dt)\n+\n+        for n in range(num_exchanges):\n+            with self.assertRaises(SymbolNotFound):\n+                finder.lookup_symbol(\n+                    'PRTYHRD',\n+                    None,\n+                    country_code=self.country_code(n),\n+                )\n+                with self.assertRaises(SymbolNotFound):\n+                    finder.lookup_symbol(\n+                        'PRTYHRD',\n+                        dt,\n+                        country_code=self.country_code(n),\n+                    )\n+\n+        with self.assertRaises(MultipleSymbolsFound):\n+            finder.lookup_symbol('PRTYHRD', None, fuzzy=True)\n+\n+        with self.assertRaises(MultipleSymbolsFound):\n+            finder.lookup_symbol('PRTYHRD', dt, fuzzy=True)\n+\n+        def check_sid(expected_sid, ticker, n):\n+            params = (\n+                {'as_of_date': None},\n+                {'as_of_date': dt},\n+                {'as_of_date': None, 'fuzzy': True},\n+                {'as_of_date': dt, 'fuzzy': True},\n+            )\n+            for extra_params in params:\n+                with self.assertRaises(MultipleSymbolsFound):\n+                    finder.lookup_symbol(ticker, **extra_params)\n+\n+                self.assertEqual(\n+                    expected_sid,\n+                    finder.lookup_symbol(\n+                        ticker,\n+                        country_code=self.country_code(n),\n+                        **extra_params\n+                    ),\n+                )\n+\n+        for n in range(num_exchanges):\n+            check_sid(n * 3, 'PRTY_HRD', n)\n+            check_sid(n * 3 + 1, 'BRKA', n)\n+            check_sid(n * 3 + 2, 'BRK_A', n)\n+\n+    def test_lookup_symbol_change_ticker(self):\n+        T = partial(pd.Timestamp, tz='utc')\n+        num_exchanges = 3\n+        metadata = pd.DataFrame.from_records(\n+            [\n+                # first sid per country\n+                {\n+                    'symbol': 'A',\n+                    'asset_name': 'Asset A',\n+                    'start_date': T('2014-01-01'),\n+                    'end_date': T('2014-01-05'),\n+                },\n+                {\n+                    'symbol': 'B',\n+                    'asset_name': 'Asset B',\n+                    'start_date': T('2014-01-06'),\n+                    'end_date': T('2014-01-10'),\n+                },\n+\n+                # second sid per country\n+                {\n+                    'symbol': 'C',\n+                    'asset_name': 'Asset C',\n+                    'start_date': T('2014-01-01'),\n+                    'end_date': T('2014-01-05'),\n+                },\n+                {\n+                    'symbol': 'A',  # claiming the unused symbol 'A'\n+                    'asset_name': 'Asset A',\n+                    'start_date': T('2014-01-06'),\n+                    'end_date': T('2014-01-10'),\n+                },\n+            ] * num_exchanges,\n+            index=np.repeat(np.arange(num_exchanges * 2), 2),\n+        )\n+        metadata['exchange'] = np.repeat(\n+            ['EXCHANGE %d' % n for n in range(num_exchanges)],\n+            4,\n+        )\n+        exchanges = pd.DataFrame({\n+            'exchange': ['EXCHANGE %d' % n for n in range(num_exchanges)],\n+            'country_code': [\n+                self.country_code(n) for n in range(num_exchanges)\n+            ]\n+        })\n+        self.write_assets(equities=metadata, exchanges=exchanges)\n+        finder = self.asset_finder\n+\n+        # note: these assertions walk forward in time, starting at assertions","path":"tests/test_assets.py","position":472,"original_position":472,"commit_id":"d19b6314e324b2ba376af8a88036712b09c06221","original_commit_id":"d19b6314e324b2ba376af8a88036712b09c06221","user":{"login":"ssanderson","id":1588357,"node_id":"MDQ6VXNlcjE1ODgzNTc=","avatar_url":"https://avatars0.githubusercontent.com/u/1588357?v=4","gravatar_id":"","url":"https://api.github.com/users/ssanderson","html_url":"https://github.com/ssanderson","followers_url":"https://api.github.com/users/ssanderson/followers","following_url":"https://api.github.com/users/ssanderson/following{/other_user}","gists_url":"https://api.github.com/users/ssanderson/gists{/gist_id}","starred_url":"https://api.github.com/users/ssanderson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ssanderson/subscriptions","organizations_url":"https://api.github.com/users/ssanderson/orgs","repos_url":"https://api.github.com/users/ssanderson/repos","events_url":"https://api.github.com/users/ssanderson/events{/privacy}","received_events_url":"https://api.github.com/users/ssanderson/received_events","type":"User","site_admin":false},"body":":+1: this is super helpful.","created_at":"2018-07-10T21:00:25Z","updated_at":"2018-07-10T21:32:33Z","html_url":"https://github.com/quantopian/zipline/pull/2234#discussion_r201493184","pull_request_url":"https://api.github.com/repos/quantopian/zipline/pulls/2234","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/quantopian/zipline/pulls/comments/201493184"},"html":{"href":"https://github.com/quantopian/zipline/pull/2234#discussion_r201493184"},"pull_request":{"href":"https://api.github.com/repos/quantopian/zipline/pulls/2234"}}},"pull_request":{"url":"https://api.github.com/repos/quantopian/zipline/pulls/2234","id":199089187,"node_id":"MDExOlB1bGxSZXF1ZXN0MTk5MDg5MTg3","html_url":"https://github.com/quantopian/zipline/pull/2234","diff_url":"https://github.com/quantopian/zipline/pull/2234.diff","patch_url":"https://github.com/quantopian/zipline/pull/2234.patch","issue_url":"https://api.github.com/repos/quantopian/zipline/issues/2234","number":2234,"state":"open","locked":false,"title":"ENH: Store more information about exchanges","user":{"login":"llllllllll","id":3064397,"node_id":"MDQ6VXNlcjMwNjQzOTc=","avatar_url":"https://avatars3.githubusercontent.com/u/3064397?v=4","gravatar_id":"","url":"https://api.github.com/users/llllllllll","html_url":"https://github.com/llllllllll","followers_url":"https://api.github.com/users/llllllllll/followers","following_url":"https://api.github.com/users/llllllllll/following{/other_user}","gists_url":"https://api.github.com/users/llllllllll/gists{/gist_id}","starred_url":"https://api.github.com/users/llllllllll/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/llllllllll/subscriptions","organizations_url":"https://api.github.com/users/llllllllll/orgs","repos_url":"https://api.github.com/users/llllllllll/repos","events_url":"https://api.github.com/users/llllllllll/events{/privacy}","received_events_url":"https://api.github.com/users/llllllllll/received_events","type":"User","site_admin":false},"body":"Use an object to store more attributes of an exchange. This info is stored in the `exchange` table in the assets db. We will need this to be able to store international equities in the same assets db.\r\n\r\nThis PR also adds `country_code` as a parameter to `lookup_symbol` and `lifetimes`. This PR does not allow us to trade international equities yet, it just sets up the infrastructure to reference equities listed in different countries.","created_at":"2018-07-03T21:36:21Z","updated_at":"2018-07-10T21:32:33Z","closed_at":null,"merged_at":null,"merge_commit_sha":"c18a7130e2b4833dc8e5c31d08a5c53749d6269a","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/quantopian/zipline/pulls/2234/commits","review_comments_url":"https://api.github.com/repos/quantopian/zipline/pulls/2234/comments","review_comment_url":"https://api.github.com/repos/quantopian/zipline/pulls/comments{/number}","comments_url":"https://api.github.com/repos/quantopian/zipline/issues/2234/comments","statuses_url":"https://api.github.com/repos/quantopian/zipline/statuses/d19b6314e324b2ba376af8a88036712b09c06221","head":{"label":"quantopian:exchange_info","ref":"exchange_info","sha":"d19b6314e324b2ba376af8a88036712b09c06221","user":{"login":"quantopian","id":1393215,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzOTMyMTU=","avatar_url":"https://avatars0.githubusercontent.com/u/1393215?v=4","gravatar_id":"","url":"https://api.github.com/users/quantopian","html_url":"https://github.com/quantopian","followers_url":"https://api.github.com/users/quantopian/followers","following_url":"https://api.github.com/users/quantopian/following{/other_user}","gists_url":"https://api.github.com/users/quantopian/gists{/gist_id}","starred_url":"https://api.github.com/users/quantopian/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/quantopian/subscriptions","organizations_url":"https://api.github.com/users/quantopian/orgs","repos_url":"https://api.github.com/users/quantopian/repos","events_url":"https://api.github.com/users/quantopian/events{/privacy}","received_events_url":"https://api.github.com/users/quantopian/received_events","type":"Organization","site_admin":false},"repo":{"id":6297520,"node_id":"MDEwOlJlcG9zaXRvcnk2Mjk3NTIw","name":"zipline","full_name":"quantopian/zipline","owner":{"login":"quantopian","id":1393215,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzOTMyMTU=","avatar_url":"https://avatars0.githubusercontent.com/u/1393215?v=4","gravatar_id":"","url":"https://api.github.com/users/quantopian","html_url":"https://github.com/quantopian","followers_url":"https://api.github.com/users/quantopian/followers","following_url":"https://api.github.com/users/quantopian/following{/other_user}","gists_url":"https://api.github.com/users/quantopian/gists{/gist_id}","starred_url":"https://api.github.com/users/quantopian/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/quantopian/subscriptions","organizations_url":"https://api.github.com/users/quantopian/orgs","repos_url":"https://api.github.com/users/quantopian/repos","events_url":"https://api.github.com/users/quantopian/events{/privacy}","received_events_url":"https://api.github.com/users/quantopian/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/quantopian/zipline","description":"Zipline, a Pythonic Algorithmic Trading Library","fork":false,"url":"https://api.github.com/repos/quantopian/zipline","forks_url":"https://api.github.com/repos/quantopian/zipline/forks","keys_url":"https://api.github.com/repos/quantopian/zipline/keys{/key_id}","collaborators_url":"https://api.github.com/repos/quantopian/zipline/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/quantopian/zipline/teams","hooks_url":"https://api.github.com/repos/quantopian/zipline/hooks","issue_events_url":"https://api.github.com/repos/quantopian/zipline/issues/events{/number}","events_url":"https://api.github.com/repos/quantopian/zipline/events","assignees_url":"https://api.github.com/repos/quantopian/zipline/assignees{/user}","branches_url":"https://api.github.com/repos/quantopian/zipline/branches{/branch}","tags_url":"https://api.github.com/repos/quantopian/zipline/tags","blobs_url":"https://api.github.com/repos/quantopian/zipline/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/quantopian/zipline/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/quantopian/zipline/git/refs{/sha}","trees_url":"https://api.github.com/repos/quantopian/zipline/git/trees{/sha}","statuses_url":"https://api.github.com/repos/quantopian/zipline/statuses/{sha}","languages_url":"https://api.github.com/repos/quantopian/zipline/languages","stargazers_url":"https://api.github.com/repos/quantopian/zipline/stargazers","contributors_url":"https://api.github.com/repos/quantopian/zipline/contributors","subscribers_url":"https://api.github.com/repos/quantopian/zipline/subscribers","subscription_url":"https://api.github.com/repos/quantopian/zipline/subscription","commits_url":"https://api.github.com/repos/quantopian/zipline/commits{/sha}","git_commits_url":"https://api.github.com/repos/quantopian/zipline/git/commits{/sha}","comments_url":"https://api.github.com/repos/quantopian/zipline/comments{/number}","issue_comment_url":"https://api.github.com/repos/quantopian/zipline/issues/comments{/number}","contents_url":"https://api.github.com/repos/quantopian/zipline/contents/{+path}","compare_url":"https://api.github.com/repos/quantopian/zipline/compare/{base}...{head}","merges_url":"https://api.github.com/repos/quantopian/zipline/merges","archive_url":"https://api.github.com/repos/quantopian/zipline/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/quantopian/zipline/downloads","issues_url":"https://api.github.com/repos/quantopian/zipline/issues{/number}","pulls_url":"https://api.github.com/repos/quantopian/zipline/pulls{/number}","milestones_url":"https://api.github.com/repos/quantopian/zipline/milestones{/number}","notifications_url":"https://api.github.com/repos/quantopian/zipline/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/quantopian/zipline/labels{/name}","releases_url":"https://api.github.com/repos/quantopian/zipline/releases{/id}","deployments_url":"https://api.github.com/repos/quantopian/zipline/deployments","created_at":"2012-10-19T15:50:29Z","updated_at":"2018-07-10T21:25:48Z","pushed_at":"2018-07-10T20:37:03Z","git_url":"git://github.com/quantopian/zipline.git","ssh_url":"git@github.com:quantopian/zipline.git","clone_url":"https://github.com/quantopian/zipline.git","svn_url":"https://github.com/quantopian/zipline","homepage":"http://www.zipline.io/","size":153764,"stargazers_count":7292,"watchers_count":7292,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":true,"forks_count":2315,"mirror_url":null,"archived":false,"open_issues_count":237,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":2315,"open_issues":237,"watchers":7292,"default_branch":"master"}},"base":{"label":"quantopian:master","ref":"master","sha":"845b33d0506b6be8b5d46aa76642d52474a70288","user":{"login":"quantopian","id":1393215,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzOTMyMTU=","avatar_url":"https://avatars0.githubusercontent.com/u/1393215?v=4","gravatar_id":"","url":"https://api.github.com/users/quantopian","html_url":"https://github.com/quantopian","followers_url":"https://api.github.com/users/quantopian/followers","following_url":"https://api.github.com/users/quantopian/following{/other_user}","gists_url":"https://api.github.com/users/quantopian/gists{/gist_id}","starred_url":"https://api.github.com/users/quantopian/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/quantopian/subscriptions","organizations_url":"https://api.github.com/users/quantopian/orgs","repos_url":"https://api.github.com/users/quantopian/repos","events_url":"https://api.github.com/users/quantopian/events{/privacy}","received_events_url":"https://api.github.com/users/quantopian/received_events","type":"Organization","site_admin":false},"repo":{"id":6297520,"node_id":"MDEwOlJlcG9zaXRvcnk2Mjk3NTIw","name":"zipline","full_name":"quantopian/zipline","owner":{"login":"quantopian","id":1393215,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzOTMyMTU=","avatar_url":"https://avatars0.githubusercontent.com/u/1393215?v=4","gravatar_id":"","url":"https://api.github.com/users/quantopian","html_url":"https://github.com/quantopian","followers_url":"https://api.github.com/users/quantopian/followers","following_url":"https://api.github.com/users/quantopian/following{/other_user}","gists_url":"https://api.github.com/users/quantopian/gists{/gist_id}","starred_url":"https://api.github.com/users/quantopian/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/quantopian/subscriptions","organizations_url":"https://api.github.com/users/quantopian/orgs","repos_url":"https://api.github.com/users/quantopian/repos","events_url":"https://api.github.com/users/quantopian/events{/privacy}","received_events_url":"https://api.github.com/users/quantopian/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/quantopian/zipline","description":"Zipline, a Pythonic Algorithmic Trading Library","fork":false,"url":"https://api.github.com/repos/quantopian/zipline","forks_url":"https://api.github.com/repos/quantopian/zipline/forks","keys_url":"https://api.github.com/repos/quantopian/zipline/keys{/key_id}","collaborators_url":"https://api.github.com/repos/quantopian/zipline/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/quantopian/zipline/teams","hooks_url":"https://api.github.com/repos/quantopian/zipline/hooks","issue_events_url":"https://api.github.com/repos/quantopian/zipline/issues/events{/number}","events_url":"https://api.github.com/repos/quantopian/zipline/events","assignees_url":"https://api.github.com/repos/quantopian/zipline/assignees{/user}","branches_url":"https://api.github.com/repos/quantopian/zipline/branches{/branch}","tags_url":"https://api.github.com/repos/quantopian/zipline/tags","blobs_url":"https://api.github.com/repos/quantopian/zipline/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/quantopian/zipline/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/quantopian/zipline/git/refs{/sha}","trees_url":"https://api.github.com/repos/quantopian/zipline/git/trees{/sha}","statuses_url":"https://api.github.com/repos/quantopian/zipline/statuses/{sha}","languages_url":"https://api.github.com/repos/quantopian/zipline/languages","stargazers_url":"https://api.github.com/repos/quantopian/zipline/stargazers","contributors_url":"https://api.github.com/repos/quantopian/zipline/contributors","subscribers_url":"https://api.github.com/repos/quantopian/zipline/subscribers","subscription_url":"https://api.github.com/repos/quantopian/zipline/subscription","commits_url":"https://api.github.com/repos/quantopian/zipline/commits{/sha}","git_commits_url":"https://api.github.com/repos/quantopian/zipline/git/commits{/sha}","comments_url":"https://api.github.com/repos/quantopian/zipline/comments{/number}","issue_comment_url":"https://api.github.com/repos/quantopian/zipline/issues/comments{/number}","contents_url":"https://api.github.com/repos/quantopian/zipline/contents/{+path}","compare_url":"https://api.github.com/repos/quantopian/zipline/compare/{base}...{head}","merges_url":"https://api.github.com/repos/quantopian/zipline/merges","archive_url":"https://api.github.com/repos/quantopian/zipline/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/quantopian/zipline/downloads","issues_url":"https://api.github.com/repos/quantopian/zipline/issues{/number}","pulls_url":"https://api.github.com/repos/quantopian/zipline/pulls{/number}","milestones_url":"https://api.github.com/repos/quantopian/zipline/milestones{/number}","notifications_url":"https://api.github.com/repos/quantopian/zipline/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/quantopian/zipline/labels{/name}","releases_url":"https://api.github.com/repos/quantopian/zipline/releases{/id}","deployments_url":"https://api.github.com/repos/quantopian/zipline/deployments","created_at":"2012-10-19T15:50:29Z","updated_at":"2018-07-10T21:25:48Z","pushed_at":"2018-07-10T20:37:03Z","git_url":"git://github.com/quantopian/zipline.git","ssh_url":"git@github.com:quantopian/zipline.git","clone_url":"https://github.com/quantopian/zipline.git","svn_url":"https://github.com/quantopian/zipline","homepage":"http://www.zipline.io/","size":153764,"stargazers_count":7292,"watchers_count":7292,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":true,"forks_count":2315,"mirror_url":null,"archived":false,"open_issues_count":237,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":2315,"open_issues":237,"watchers":7292,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/quantopian/zipline/pulls/2234"},"html":{"href":"https://github.com/quantopian/zipline/pull/2234"},"issue":{"href":"https://api.github.com/repos/quantopian/zipline/issues/2234"},"comments":{"href":"https://api.github.com/repos/quantopian/zipline/issues/2234/comments"},"review_comments":{"href":"https://api.github.com/repos/quantopian/zipline/pulls/2234/comments"},"review_comment":{"href":"https://api.github.com/repos/quantopian/zipline/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/quantopian/zipline/pulls/2234/commits"},"statuses":{"href":"https://api.github.com/repos/quantopian/zipline/statuses/d19b6314e324b2ba376af8a88036712b09c06221"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"ssanderson"}}