{"action":"created","comment":{"url":"https://api.github.com/repos/pydata/pandas-datareader/pulls/comments/86956757","pull_request_review_id":7587095,"id":86956757,"diff_hunk":"@@ -0,0 +1,308 @@\n+import pandas as pd\n+import json as json\n+import datetime as datetime\n+import time\n+import re\n+\n+from oandapyV20 import API\n+import oandapyV20.endpoints.instruments as instruments\n+\n+from pandas.compat import StringIO, string_types\n+from ._utils import _init_session, _sanitize_dates\n+from pandas.tseries.offsets import DateOffset\n+\n+from pandas_datareader.base import _BaseReader\n+\n+class OANDARestHistoricalInstrumentReader(_BaseReader):\n+    \"\"\"\n+        Historical Currency Pair Reader using  OANDA's REST API.\n+        See details at http://developer.oanda.com/rest-live-v20/instrument-ep/\n+        symbols : Dict of strings. \n+            Each string is a currency pair with format BASE_QUOTE. Eg: [\"EUR_USD\", \"JPY_USD\"]\n+        symbolsTypes: Dict of strings.\n+            Each string represent the type of instrument to fetch data for. Eg: For symbols=[\"EUR_USD\", \"EUR_JPY\"] then symbolsTypes=[\"currency\", \"currency\"]\n+            Valid values: currency\n+        start: string\n+            Date to begin fetching curerncy pair, in RFC3339 (\"%Y-%m-%dT%H:%M:%SZ)  # Eg: \"2014-03-21T17:41:00Z\"\n+        end: string\n+            Date to end fetching curerncy pair, in RFC3339 (\"%Y-%m-%dT%H:%M:%SZ)  # Eg: \"2014-03-21T17:41:00Z\"\n+        freq: string or Pandas's DateOffset\n+            Frequency or periodicity of the candlesticks to be retrieved\n+            Valid values are the following Panda's Offset Aliases (http://pandas.pydata.org/pandas-docs/stable/timeseries.html):\n+                    5S  ->  5 second candlesticks, minute alignment\n+                    10S -> 10 second candlesticks, minute alignment\n+                    15S -> 15 second candlesticks, minute alignment\n+                    30S -> 30 second candlesticks, minute alignment\n+                    1T,1min  ->  1 minute candlesticks, minute alignment\n+                    2T,2min  ->  2 minute candlesticks, hour alignment\n+                    4T,4min  ->  4 minute candlesticks, hour alignment\n+                    5T,5min  ->  5 minute candlesticks, hour alignment\n+                    15T,15min -> 15 minute candlesticks, hour alignment\n+                    30T,30min -> 30 minute candlesticks, hour alignment\n+                    1H  ->  1 hour candlesticks, hour alignment\n+                    2H  ->  1 hour candlesticks, day alignment\n+                    3H  ->  3 hour candlesticks, day alignment\n+                    4H  ->  4 hour candlesticks, day alignment\n+                    6H  ->  6 hour candlesticks, day alignment\n+                    8H  ->  8 hour candlesticks, day alignment\n+                    12H -> 12 hour candlesticks, day alignment\n+                    1D  ->  1 day candlesticks, day alignment\n+                    1W  ->  1 week candlesticks, aligned to start of week\n+                    1M  ->  1 month candlesticks, aligned to first day of the month\n+                    See OANDA REST v20 for updated list\n+            Default: See DEFAULT_FREQUENCY\n+        candleFormat: string\n+            Candlesticks representation\n+            Valid values: M,B,A\n+                M for midpoint\n+                B for Bid\n+                A for Ask\n+            Default: See DEFAULT_CANDLE_FORMAT\n+        access_credential: Dict of strings\n+            Credential to query the api\n+            credential[\"accountType\"]=\"practise\". Mandatory. Valid values: practice, live\n+            credential[\"apiToken\"]=\"Your OANDA API token\". Mandatory. Valid value: See your OANDA Account's API Token\n+    \"\"\"\n+    DEFAULT_FREQUENCY=\"5S\"\n+    DEFAULT_CANDLE_FORMAT=\"M\"\n+    SUPPORTED_OFFSET_ALIASES = {\n+            \"5S\":\"S5\",\n+            \"10S\":\"S10\" ,\n+            \"15S\":\"S15\",\n+            \"30S\":\"S30\",\n+            \"T\":\"M1\",\n+            \"1T\":\"M1\",\n+            \"1min\":\"M1\",\n+            \"2T\":\"M2\",\n+            \"2min\":\"M2\",\n+            \"4T\":\"M4\",\n+            \"4min\":\"M4\",\n+            \"5T\":\"M5\",\n+            \"5min\":\"M5\",\n+            \"15T\":\"M15\",\n+            \"15min\":\"M15\",\n+            \"30T\":\"M30\",\n+            \"30min\":\"M30\",\n+            \"H\":\"H1\",\n+            \"1H\":\"H1\",\n+            \"2H\":\"H2\",\n+            \"3H\":\"H3\",\n+            \"4H\":\"H4\",\n+            \"6H\":\"H6\",\n+            \"8H\":\"H8\",\n+            \"12H\":\"H12\",\n+            \"1D\":\"D\",\n+            \"1W\":\"W\",\n+            \"1M\":\"M\"\n+            }\n+\n+\n+    def __init__(self,symbols, symbolsTypes=None,\n+                start=None, end=None,\n+                freq=None, candleFormat=None,\n+                session=None,\n+                access_credential=None):\n+        _BaseReader.__init__(self, symbols, start=start, end=end, session=session)\n+\n+        if symbols is None:\n+            self.symbols = [\"EUR_USD\"]\n+\n+        self.symbolsTypes = symbolsTypes\n+        if symbolsTypes is None:\n+            self.symbolsTypes = [\"currency\"];\n+\n+        self.freq = freq\n+        if freq is None:\n+            self.freq=OANDARestHistoricalInstrumentReader.DEFAULT_FREQUENCY\n+\n+        self.candleFormat = candleFormat\n+        if candleFormat is None:\n+            self.candleFormat=OANDARestHistoricalInstrumentReader.DEFAULT_CANDLE_FORMAT\n+\n+        self.access_credential=access_credential\n+        if access_credential is None:\n+            self.access_credential = {}\n+\n+        if 'accountType' not in access_credential:\n+            self.access_credential['accountType'] = \"practice\"\n+\n+        if 'apiToken' not in access_credential:\n+            self.access_credential['apiToken'] = \"\"\n+\n+\n+    def read(self):\n+        dfs = {}\n+\n+        #print(str(self.symbols))\n+\n+        for (index,symbol) in enumerate(self.symbols):\n+            symbolsType = self.symbolsTypes[index]\n+            if symbolsType is \"currency\":\n+                (base_currency, quote_currency) = self._split_currency_pair(symbol)\n+                df = self._read_historical_currencypair_rates(\n+                    self.start, self.end,\n+                    quote_currency=quote_currency, base_currency=base_currency,\n+                    freq=self.freq,\n+                    candleFormat=self.candleFormat,\n+                    access_credential=self.access_credential,\n+                    session=self.session\n+                    )\n+                df.name = symbol\n+                dfs[symbol] = df\n+            else:\n+                raise Exception(\"Symbol Type; %s not supported\" % (symbolsType))\n+        \n+        return pd.Panel(dfs)\n+\n+    def _read_historical_currencypair_rates(self, start, end, freq=None,\n+                                            quote_currency=None, base_currency=None, \n+                                            candleFormat=None, reversed=False, \n+                                            access_credential=None, session=None):\n+        session = _init_session(session)\n+        start, end = _sanitize_dates(start, end)\n+\n+        if base_currency is None:\n+            base_currency = \"EUR\"\n+        if quote_currency is None:\n+            quote_currency = \"USD\"\n+\n+        currencyPair = \"%s_%s\" % (base_currency, quote_currency)\n+\n+        if access_credential is None:\n+            raise Exception('No access_crendtial provided. Historical data cannot be fetched')\n+\n+        credential = access_credential\n+        #print(credential)\n+\n+        oanda = API(access_token=credential['apiToken'],\n+                    environment=credential['accountType'])\n+\n+        current_start = start\n+        current_end = end\n+        current_duration = current_end - current_start\n+        includeCandleOnStart = True\n+        dfs = []\n+\n+        while current_start < end:\n+            current_end = current_start + current_duration\n+\n+            if current_end > end:\n+                current_end = end\n+\n+            current_start_timestamp = time.mktime(current_start.timetuple())\n+            current_end_timestamp = time.mktime(current_end.timetuple())\n+            rfc3339 = \"%Y-%m-%dT%H:%M:%SZ\"  # Eg: 2014-03-21T17:41:00Z\n+            current_start_rfc3339 = current_start.strftime(rfc3339)\n+            current_end_rfc3339 = current_end.strftime(rfc3339)\n+\n+            if isinstance(freq, DateOffset):\n+                offsetString = self._normalized_offset_string(freq)","path":"pandas_datareader/oandarest.py","position":199,"original_position":199,"commit_id":"383d007678add403d6723b70c7c8131791374888","original_commit_id":"383d007678add403d6723b70c7c8131791374888","user":{"login":"femtotrader","id":5049737,"avatar_url":"https://avatars.githubusercontent.com/u/5049737?v=3","gravatar_id":"","url":"https://api.github.com/users/femtotrader","html_url":"https://github.com/femtotrader","followers_url":"https://api.github.com/users/femtotrader/followers","following_url":"https://api.github.com/users/femtotrader/following{/other_user}","gists_url":"https://api.github.com/users/femtotrader/gists{/gist_id}","starred_url":"https://api.github.com/users/femtotrader/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/femtotrader/subscriptions","organizations_url":"https://api.github.com/users/femtotrader/orgs","repos_url":"https://api.github.com/users/femtotrader/repos","events_url":"https://api.github.com/users/femtotrader/events{/privacy}","received_events_url":"https://api.github.com/users/femtotrader/received_events","type":"User","site_admin":false},"body":"```python\r\noffsetString = freq.freqstr\r\n```\r\n\r\nSorry;-)","created_at":"2016-11-08T10:00:08Z","updated_at":"2016-11-08T10:00:09Z","html_url":"https://github.com/pydata/pandas-datareader/pull/257#discussion_r86956757","pull_request_url":"https://api.github.com/repos/pydata/pandas-datareader/pulls/257","_links":{"self":{"href":"https://api.github.com/repos/pydata/pandas-datareader/pulls/comments/86956757"},"html":{"href":"https://github.com/pydata/pandas-datareader/pull/257#discussion_r86956757"},"pull_request":{"href":"https://api.github.com/repos/pydata/pandas-datareader/pulls/257"}}},"pull_request":{"url":"https://api.github.com/repos/pydata/pandas-datareader/pulls/257","id":92717912,"html_url":"https://github.com/pydata/pandas-datareader/pull/257","diff_url":"https://github.com/pydata/pandas-datareader/pull/257.diff","patch_url":"https://github.com/pydata/pandas-datareader/pull/257.patch","issue_url":"https://api.github.com/repos/pydata/pandas-datareader/issues/257","number":257,"state":"open","locked":false,"title":"Add OANDA RestV20 Historical Instrument Reader","user":{"login":"davidandreoletti","id":1195702,"avatar_url":"https://avatars.githubusercontent.com/u/1195702?v=3","gravatar_id":"","url":"https://api.github.com/users/davidandreoletti","html_url":"https://github.com/davidandreoletti","followers_url":"https://api.github.com/users/davidandreoletti/followers","following_url":"https://api.github.com/users/davidandreoletti/following{/other_user}","gists_url":"https://api.github.com/users/davidandreoletti/gists{/gist_id}","starred_url":"https://api.github.com/users/davidandreoletti/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/davidandreoletti/subscriptions","organizations_url":"https://api.github.com/users/davidandreoletti/orgs","repos_url":"https://api.github.com/users/davidandreoletti/repos","events_url":"https://api.github.com/users/davidandreoletti/events{/privacy}","received_events_url":"https://api.github.com/users/davidandreoletti/received_events","type":"User","site_admin":false},"body":"","created_at":"2016-11-08T05:36:34Z","updated_at":"2016-11-08T10:00:09Z","closed_at":null,"merged_at":null,"merge_commit_sha":"40b6f7c2be71a2341f3b40cc437d29d108138275","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/pydata/pandas-datareader/pulls/257/commits","review_comments_url":"https://api.github.com/repos/pydata/pandas-datareader/pulls/257/comments","review_comment_url":"https://api.github.com/repos/pydata/pandas-datareader/pulls/comments{/number}","comments_url":"https://api.github.com/repos/pydata/pandas-datareader/issues/257/comments","statuses_url":"https://api.github.com/repos/pydata/pandas-datareader/statuses/383d007678add403d6723b70c7c8131791374888","head":{"label":"davidandreoletti:fx-oanda-historical","ref":"fx-oanda-historical","sha":"383d007678add403d6723b70c7c8131791374888","user":{"login":"davidandreoletti","id":1195702,"avatar_url":"https://avatars.githubusercontent.com/u/1195702?v=3","gravatar_id":"","url":"https://api.github.com/users/davidandreoletti","html_url":"https://github.com/davidandreoletti","followers_url":"https://api.github.com/users/davidandreoletti/followers","following_url":"https://api.github.com/users/davidandreoletti/following{/other_user}","gists_url":"https://api.github.com/users/davidandreoletti/gists{/gist_id}","starred_url":"https://api.github.com/users/davidandreoletti/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/davidandreoletti/subscriptions","organizations_url":"https://api.github.com/users/davidandreoletti/orgs","repos_url":"https://api.github.com/users/davidandreoletti/repos","events_url":"https://api.github.com/users/davidandreoletti/events{/privacy}","received_events_url":"https://api.github.com/users/davidandreoletti/received_events","type":"User","site_admin":false},"repo":{"id":73048338,"name":"pandas-datareader","full_name":"davidandreoletti/pandas-datareader","owner":{"login":"davidandreoletti","id":1195702,"avatar_url":"https://avatars.githubusercontent.com/u/1195702?v=3","gravatar_id":"","url":"https://api.github.com/users/davidandreoletti","html_url":"https://github.com/davidandreoletti","followers_url":"https://api.github.com/users/davidandreoletti/followers","following_url":"https://api.github.com/users/davidandreoletti/following{/other_user}","gists_url":"https://api.github.com/users/davidandreoletti/gists{/gist_id}","starred_url":"https://api.github.com/users/davidandreoletti/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/davidandreoletti/subscriptions","organizations_url":"https://api.github.com/users/davidandreoletti/orgs","repos_url":"https://api.github.com/users/davidandreoletti/repos","events_url":"https://api.github.com/users/davidandreoletti/events{/privacy}","received_events_url":"https://api.github.com/users/davidandreoletti/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/davidandreoletti/pandas-datareader","description":null,"fork":true,"url":"https://api.github.com/repos/davidandreoletti/pandas-datareader","forks_url":"https://api.github.com/repos/davidandreoletti/pandas-datareader/forks","keys_url":"https://api.github.com/repos/davidandreoletti/pandas-datareader/keys{/key_id}","collaborators_url":"https://api.github.com/repos/davidandreoletti/pandas-datareader/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/davidandreoletti/pandas-datareader/teams","hooks_url":"https://api.github.com/repos/davidandreoletti/pandas-datareader/hooks","issue_events_url":"https://api.github.com/repos/davidandreoletti/pandas-datareader/issues/events{/number}","events_url":"https://api.github.com/repos/davidandreoletti/pandas-datareader/events","assignees_url":"https://api.github.com/repos/davidandreoletti/pandas-datareader/assignees{/user}","branches_url":"https://api.github.com/repos/davidandreoletti/pandas-datareader/branches{/branch}","tags_url":"https://api.github.com/repos/davidandreoletti/pandas-datareader/tags","blobs_url":"https://api.github.com/repos/davidandreoletti/pandas-datareader/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/davidandreoletti/pandas-datareader/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/davidandreoletti/pandas-datareader/git/refs{/sha}","trees_url":"https://api.github.com/repos/davidandreoletti/pandas-datareader/git/trees{/sha}","statuses_url":"https://api.github.com/repos/davidandreoletti/pandas-datareader/statuses/{sha}","languages_url":"https://api.github.com/repos/davidandreoletti/pandas-datareader/languages","stargazers_url":"https://api.github.com/repos/davidandreoletti/pandas-datareader/stargazers","contributors_url":"https://api.github.com/repos/davidandreoletti/pandas-datareader/contributors","subscribers_url":"https://api.github.com/repos/davidandreoletti/pandas-datareader/subscribers","subscription_url":"https://api.github.com/repos/davidandreoletti/pandas-datareader/subscription","commits_url":"https://api.github.com/repos/davidandreoletti/pandas-datareader/commits{/sha}","git_commits_url":"https://api.github.com/repos/davidandreoletti/pandas-datareader/git/commits{/sha}","comments_url":"https://api.github.com/repos/davidandreoletti/pandas-datareader/comments{/number}","issue_comment_url":"https://api.github.com/repos/davidandreoletti/pandas-datareader/issues/comments{/number}","contents_url":"https://api.github.com/repos/davidandreoletti/pandas-datareader/contents/{+path}","compare_url":"https://api.github.com/repos/davidandreoletti/pandas-datareader/compare/{base}...{head}","merges_url":"https://api.github.com/repos/davidandreoletti/pandas-datareader/merges","archive_url":"https://api.github.com/repos/davidandreoletti/pandas-datareader/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/davidandreoletti/pandas-datareader/downloads","issues_url":"https://api.github.com/repos/davidandreoletti/pandas-datareader/issues{/number}","pulls_url":"https://api.github.com/repos/davidandreoletti/pandas-datareader/pulls{/number}","milestones_url":"https://api.github.com/repos/davidandreoletti/pandas-datareader/milestones{/number}","notifications_url":"https://api.github.com/repos/davidandreoletti/pandas-datareader/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/davidandreoletti/pandas-datareader/labels{/name}","releases_url":"https://api.github.com/repos/davidandreoletti/pandas-datareader/releases{/id}","deployments_url":"https://api.github.com/repos/davidandreoletti/pandas-datareader/deployments","created_at":"2016-11-07T06:23:04Z","updated_at":"2016-11-07T06:23:05Z","pushed_at":"2016-11-08T09:45:13Z","git_url":"git://github.com/davidandreoletti/pandas-datareader.git","ssh_url":"git@github.com:davidandreoletti/pandas-datareader.git","clone_url":"https://github.com/davidandreoletti/pandas-datareader.git","svn_url":"https://github.com/davidandreoletti/pandas-datareader","homepage":null,"size":483,"stargazers_count":0,"watchers_count":0,"language":"HTML","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"base":{"label":"pydata:master","ref":"master","sha":"9797c9cda0328b674a5a7f0d08f76c5252ae8c9c","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":29273084,"name":"pandas-datareader","full_name":"pydata/pandas-datareader","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-datareader","description":null,"fork":false,"url":"https://api.github.com/repos/pydata/pandas-datareader","forks_url":"https://api.github.com/repos/pydata/pandas-datareader/forks","keys_url":"https://api.github.com/repos/pydata/pandas-datareader/keys{/key_id}","collaborators_url":"https://api.github.com/repos/pydata/pandas-datareader/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/pydata/pandas-datareader/teams","hooks_url":"https://api.github.com/repos/pydata/pandas-datareader/hooks","issue_events_url":"https://api.github.com/repos/pydata/pandas-datareader/issues/events{/number}","events_url":"https://api.github.com/repos/pydata/pandas-datareader/events","assignees_url":"https://api.github.com/repos/pydata/pandas-datareader/assignees{/user}","branches_url":"https://api.github.com/repos/pydata/pandas-datareader/branches{/branch}","tags_url":"https://api.github.com/repos/pydata/pandas-datareader/tags","blobs_url":"https://api.github.com/repos/pydata/pandas-datareader/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/pydata/pandas-datareader/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/pydata/pandas-datareader/git/refs{/sha}","trees_url":"https://api.github.com/repos/pydata/pandas-datareader/git/trees{/sha}","statuses_url":"https://api.github.com/repos/pydata/pandas-datareader/statuses/{sha}","languages_url":"https://api.github.com/repos/pydata/pandas-datareader/languages","stargazers_url":"https://api.github.com/repos/pydata/pandas-datareader/stargazers","contributors_url":"https://api.github.com/repos/pydata/pandas-datareader/contributors","subscribers_url":"https://api.github.com/repos/pydata/pandas-datareader/subscribers","subscription_url":"https://api.github.com/repos/pydata/pandas-datareader/subscription","commits_url":"https://api.github.com/repos/pydata/pandas-datareader/commits{/sha}","git_commits_url":"https://api.github.com/repos/pydata/pandas-datareader/git/commits{/sha}","comments_url":"https://api.github.com/repos/pydata/pandas-datareader/comments{/number}","issue_comment_url":"https://api.github.com/repos/pydata/pandas-datareader/issues/comments{/number}","contents_url":"https://api.github.com/repos/pydata/pandas-datareader/contents/{+path}","compare_url":"https://api.github.com/repos/pydata/pandas-datareader/compare/{base}...{head}","merges_url":"https://api.github.com/repos/pydata/pandas-datareader/merges","archive_url":"https://api.github.com/repos/pydata/pandas-datareader/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/pydata/pandas-datareader/downloads","issues_url":"https://api.github.com/repos/pydata/pandas-datareader/issues{/number}","pulls_url":"https://api.github.com/repos/pydata/pandas-datareader/pulls{/number}","milestones_url":"https://api.github.com/repos/pydata/pandas-datareader/milestones{/number}","notifications_url":"https://api.github.com/repos/pydata/pandas-datareader/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/pydata/pandas-datareader/labels{/name}","releases_url":"https://api.github.com/repos/pydata/pandas-datareader/releases{/id}","deployments_url":"https://api.github.com/repos/pydata/pandas-datareader/deployments","created_at":"2015-01-15T00:34:19Z","updated_at":"2016-11-05T21:33:16Z","pushed_at":"2016-11-08T09:45:13Z","git_url":"git://github.com/pydata/pandas-datareader.git","ssh_url":"git@github.com:pydata/pandas-datareader.git","clone_url":"https://github.com/pydata/pandas-datareader.git","svn_url":"https://github.com/pydata/pandas-datareader","homepage":null,"size":586,"stargazers_count":158,"watchers_count":158,"language":"HTML","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":72,"mirror_url":null,"open_issues_count":55,"forks":72,"open_issues":55,"watchers":158,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/pydata/pandas-datareader/pulls/257"},"html":{"href":"https://github.com/pydata/pandas-datareader/pull/257"},"issue":{"href":"https://api.github.com/repos/pydata/pandas-datareader/issues/257"},"comments":{"href":"https://api.github.com/repos/pydata/pandas-datareader/issues/257/comments"},"review_comments":{"href":"https://api.github.com/repos/pydata/pandas-datareader/pulls/257/comments"},"review_comment":{"href":"https://api.github.com/repos/pydata/pandas-datareader/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/pydata/pandas-datareader/pulls/257/commits"},"statuses":{"href":"https://api.github.com/repos/pydata/pandas-datareader/statuses/383d007678add403d6723b70c7c8131791374888"}}}}
{"actor":{"display_login":"femtotrader"}}