{"action":"created","comment":{"url":"https://api.github.com/repos/pydata/pandas/pulls/comments/66721480","id":66721480,"diff_hunk":"@@ -0,0 +1,306 @@\n+import nose\n+import os\n+\n+import numpy as np\n+import pandas as pd\n+from pandas import (merge_asof, read_csv,\n+                    to_datetime, Timedelta)\n+from pandas.tools.merge import MergeError\n+from pandas.util import testing as tm\n+from pandas.util.testing import assert_frame_equal\n+\n+\n+class TestAsOfMerge(tm.TestCase):\n+    _multiprocess_can_split_ = True\n+\n+    def read_data(self, name, dedupe=False):\n+        path = os.path.join(tm.get_data_path(), name)\n+        x = read_csv(path)\n+        if dedupe:\n+            x = x.drop_duplicates(['time', 'ticker'], keep='last')\n+        x.time = to_datetime(x.time)\n+        return x\n+\n+    def setUp(self):\n+\n+        self.trades = self.read_data('trades.csv')\n+        self.quotes = self.read_data('quotes.csv', dedupe=True)\n+        self.asof = self.read_data('asof.csv')\n+        self.tolerance = self.read_data('tolerance.csv')\n+        self.allow_exact_matches = self.read_data('allow_exact_matches.csv')\n+        self.allow_exact_matches_and_tolerance = self.read_data(\n+            'allow_exact_matches_and_tolerance.csv')\n+\n+    def test_examples1(self):\n+        \"\"\" doc-string examples \"\"\"\n+\n+        left = pd.DataFrame({'a': [1, 5, 10],\n+                             'left_val': ['a', 'b', 'c']})\n+        right = pd.DataFrame({'a': [1, 2, 3, 6, 7],\n+                              'right_val': [1, 2, 3, 6, 7]})\n+\n+        pd.merge_asof(left, right, on='a')\n+\n+    def test_examples2(self):\n+        \"\"\" doc-string examples \"\"\"\n+\n+        trades = pd.DataFrame({\n+            'time': pd.to_datetime(['20160525 13:30:00.023',\n+                                    '20160525 13:30:00.038',\n+                                    '20160525 13:30:00.048',\n+                                    '20160525 13:30:00.048',\n+                                    '20160525 13:30:00.048']),\n+            'ticker': ['MSFT', 'MSFT',\n+                       'GOOG', 'GOOG', 'AAPL'],\n+            'price': [51.95, 51.95,\n+                      720.77, 720.92, 98.00],\n+            'quantity': [75, 155,\n+                         100, 100, 100]},\n+            columns=['time', 'ticker', 'price', 'quantity'])\n+\n+        quotes = pd.DataFrame({\n+            'time': pd.to_datetime(['20160525 13:30:00.023',\n+                                    '20160525 13:30:00.023',\n+                                    '20160525 13:30:00.030',\n+                                    '20160525 13:30:00.041',\n+                                    '20160525 13:30:00.048',\n+                                    '20160525 13:30:00.049',\n+                                    '20160525 13:30:00.072',\n+                                    '20160525 13:30:00.075']),\n+            'ticker': ['GOOG', 'MSFT', 'MSFT',\n+                       'MSFT', 'GOOG', 'AAPL', 'GOOG',\n+                       'MSFT'],\n+            'bid': [720.50, 51.95, 51.97, 51.99,\n+                    720.50, 97.99, 720.50, 52.01],\n+            'ask': [720.93, 51.96, 51.98, 52.00,\n+                    720.93, 98.01, 720.88, 52.03]},\n+            columns=['time', 'ticker', 'bid', 'ask'])\n+\n+        pd.merge_asof(trades, quotes,\n+                      on='time',\n+                      by='ticker')\n+\n+        pd.merge_asof(trades, quotes,\n+                      on='time',\n+                      by='ticker',\n+                      tolerance=pd.Timedelta('2ms'))\n+\n+        pd.merge_asof(trades, quotes,\n+                      on='time',\n+                      by='ticker',\n+                      tolerance=pd.Timedelta('10ms'),\n+                      allow_exact_matches=False)\n+\n+    def test_basic(self):\n+\n+        expected = self.asof\n+        trades = self.trades\n+        quotes = self.quotes\n+\n+        result = merge_asof(trades, quotes,\n+                            on='time',\n+                            by='ticker')\n+        assert_frame_equal(result, expected)\n+\n+    def test_basic_categorical(self):\n+\n+        expected = self.asof\n+        trades = self.trades.copy()\n+        trades.ticker = trades.ticker.astype('category')\n+        quotes = self.quotes.copy()\n+        quotes.ticker = quotes.ticker.astype('category')\n+\n+        result = merge_asof(trades, quotes,\n+                            on='time',\n+                            by='ticker')\n+        assert_frame_equal(result, expected)\n+\n+    def test_missing_right_by(self):\n+\n+        expected = self.asof\n+        trades = self.trades\n+        quotes = self.quotes\n+\n+        q = quotes[quotes.ticker != 'MSFT']\n+        result = merge_asof(trades, q,\n+                            on='time',\n+                            by='ticker')\n+        expected.loc[expected.ticker == 'MSFT', ['bid', 'ask']] = np.nan\n+        assert_frame_equal(result, expected)\n+\n+    def test_basic2(self):\n+\n+        expected = self.read_data('asof2.csv')\n+        trades = self.read_data('trades2.csv')\n+        quotes = self.read_data('quotes2.csv', dedupe=True)\n+\n+        result = merge_asof(trades, quotes,\n+                            on='time',\n+                            by='ticker')\n+        assert_frame_equal(result, expected)\n+\n+    def test_basic_no_by(self):\n+        f = lambda x: x[x.ticker == 'MSFT'].drop('ticker', axis=1) \\\n+            .reset_index(drop=True)\n+\n+        # just use a single ticker\n+        expected = f(self.asof)\n+        trades = f(self.trades)\n+        quotes = f(self.quotes)\n+\n+        result = merge_asof(trades, quotes,\n+                            on='time')\n+        assert_frame_equal(result, expected)\n+\n+    def test_valid_join_keys(self):\n+\n+        trades = self.trades\n+        quotes = self.quotes\n+\n+        with self.assertRaises(MergeError):\n+            merge_asof(trades, quotes,\n+                       left_on='time',\n+                       right_on='bid',\n+                       by='ticker')\n+\n+        with self.assertRaises(MergeError):\n+            merge_asof(trades, quotes,\n+                       on=['time', 'ticker'],\n+                       by='ticker')\n+\n+    def test_with_duplicates(self):\n+\n+        q = pd.concat([self.quotes, self.quotes],\n+                      ignore_index=True).sort_values('time')\n+        result = merge_asof(self.trades, q,\n+                            on='time',\n+                            by='ticker')\n+        expected = self.read_data('asof.csv')\n+        assert_frame_equal(result, expected)\n+\n+        result = merge_asof(self.trades, q,\n+                            on='time',\n+                            by='ticker',\n+                            check_duplicates=False)\n+        expected = self.read_data('asof.csv')\n+        self.assertEqual(len(result), len(expected))","path":"pandas/tools/tests/test_merge_asof.py","position":186,"original_position":186,"commit_id":"da4770d57780a1a155daa81c95c07bd71fe5d661","original_commit_id":"4a9fd4997e9885ee9349c29701adc1e0cef09d59","user":{"login":"jorisvandenbossche","id":1020496,"avatar_url":"https://avatars.githubusercontent.com/u/1020496?v=3","gravatar_id":"","url":"https://api.github.com/users/jorisvandenbossche","html_url":"https://github.com/jorisvandenbossche","followers_url":"https://api.github.com/users/jorisvandenbossche/followers","following_url":"https://api.github.com/users/jorisvandenbossche/following{/other_user}","gists_url":"https://api.github.com/users/jorisvandenbossche/gists{/gist_id}","starred_url":"https://api.github.com/users/jorisvandenbossche/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jorisvandenbossche/subscriptions","organizations_url":"https://api.github.com/users/jorisvandenbossche/orgs","repos_url":"https://api.github.com/users/jorisvandenbossche/repos","events_url":"https://api.github.com/users/jorisvandenbossche/events{/privacy}","received_events_url":"https://api.github.com/users/jorisvandenbossche/received_events","type":"User","site_admin":false},"body":"What do you mean with differing order? I tested it with a small example, but do not see any difference.\r\n\r\n> That's why it is default True. A power user could turn it off if they are sure they don't have dupliacates. \r\n\r\nCan you add something like this to the docstring? (that's what I meant with clarify the docstring)\r\n","created_at":"2016-06-12T14:14:52Z","updated_at":"2016-06-12T14:14:52Z","html_url":"https://github.com/pydata/pandas/pull/13358#discussion_r66721480","pull_request_url":"https://api.github.com/repos/pydata/pandas/pulls/13358","_links":{"self":{"href":"https://api.github.com/repos/pydata/pandas/pulls/comments/66721480"},"html":{"href":"https://github.com/pydata/pandas/pull/13358#discussion_r66721480"},"pull_request":{"href":"https://api.github.com/repos/pydata/pandas/pulls/13358"}}},"pull_request":{"url":"https://api.github.com/repos/pydata/pandas/pulls/13358","id":72558551,"html_url":"https://github.com/pydata/pandas/pull/13358","diff_url":"https://github.com/pydata/pandas/pull/13358.diff","patch_url":"https://github.com/pydata/pandas/pull/13358.patch","issue_url":"https://api.github.com/repos/pydata/pandas/issues/13358","number":13358,"state":"open","locked":false,"title":"ENH: add pd.asof_merge","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":"closes #1870\r\nxref #2941 \r\n\r\n[Here](http://nbviewer.jupyter.org/gist/jreback/5f089d308750c89b2a7d7446b790c056) is a notebook of example usage and timings\r\n\r\n","created_at":"2016-06-03T19:34:49Z","updated_at":"2016-06-12T14:14:52Z","closed_at":null,"merged_at":null,"merge_commit_sha":"4d9532ca93dcea7f6f966ff2b5537bae5e16c75e","assignee":null,"milestone":{"url":"https://api.github.com/repos/pydata/pandas/milestones/40","html_url":"https://github.com/pydata/pandas/milestones/0.18.2","labels_url":"https://api.github.com/repos/pydata/pandas/milestones/40/labels","id":1639795,"number":40,"title":"0.18.2","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":190,"closed_issues":175,"state":"open","created_at":"2016-03-11T21:24:45Z","updated_at":"2016-06-12T12:23:36Z","due_on":"2016-06-14T04:00:00Z","closed_at":null},"commits_url":"https://api.github.com/repos/pydata/pandas/pulls/13358/commits","review_comments_url":"https://api.github.com/repos/pydata/pandas/pulls/13358/comments","review_comment_url":"https://api.github.com/repos/pydata/pandas/pulls/comments{/number}","comments_url":"https://api.github.com/repos/pydata/pandas/issues/13358/comments","statuses_url":"https://api.github.com/repos/pydata/pandas/statuses/da4770d57780a1a155daa81c95c07bd71fe5d661","head":{"label":"jreback:asof","ref":"asof","sha":"da4770d57780a1a155daa81c95c07bd71fe5d661","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},"repo":{"id":2142250,"name":"pandas","full_name":"jreback/pandas","owner":{"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},"private":false,"html_url":"https://github.com/jreback/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/jreback/pandas","forks_url":"https://api.github.com/repos/jreback/pandas/forks","keys_url":"https://api.github.com/repos/jreback/pandas/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jreback/pandas/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jreback/pandas/teams","hooks_url":"https://api.github.com/repos/jreback/pandas/hooks","issue_events_url":"https://api.github.com/repos/jreback/pandas/issues/events{/number}","events_url":"https://api.github.com/repos/jreback/pandas/events","assignees_url":"https://api.github.com/repos/jreback/pandas/assignees{/user}","branches_url":"https://api.github.com/repos/jreback/pandas/branches{/branch}","tags_url":"https://api.github.com/repos/jreback/pandas/tags","blobs_url":"https://api.github.com/repos/jreback/pandas/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jreback/pandas/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jreback/pandas/git/refs{/sha}","trees_url":"https://api.github.com/repos/jreback/pandas/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jreback/pandas/statuses/{sha}","languages_url":"https://api.github.com/repos/jreback/pandas/languages","stargazers_url":"https://api.github.com/repos/jreback/pandas/stargazers","contributors_url":"https://api.github.com/repos/jreback/pandas/contributors","subscribers_url":"https://api.github.com/repos/jreback/pandas/subscribers","subscription_url":"https://api.github.com/repos/jreback/pandas/subscription","commits_url":"https://api.github.com/repos/jreback/pandas/commits{/sha}","git_commits_url":"https://api.github.com/repos/jreback/pandas/git/commits{/sha}","comments_url":"https://api.github.com/repos/jreback/pandas/comments{/number}","issue_comment_url":"https://api.github.com/repos/jreback/pandas/issues/comments{/number}","contents_url":"https://api.github.com/repos/jreback/pandas/contents/{+path}","compare_url":"https://api.github.com/repos/jreback/pandas/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jreback/pandas/merges","archive_url":"https://api.github.com/repos/jreback/pandas/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jreback/pandas/downloads","issues_url":"https://api.github.com/repos/jreback/pandas/issues{/number}","pulls_url":"https://api.github.com/repos/jreback/pandas/pulls{/number}","milestones_url":"https://api.github.com/repos/jreback/pandas/milestones{/number}","notifications_url":"https://api.github.com/repos/jreback/pandas/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jreback/pandas/labels{/name}","releases_url":"https://api.github.com/repos/jreback/pandas/releases{/id}","deployments_url":"https://api.github.com/repos/jreback/pandas/deployments","created_at":"2011-08-02T12:17:07Z","updated_at":"2016-05-25T11:14:46Z","pushed_at":"2016-06-12T14:01:15Z","git_url":"git://github.com/jreback/pandas.git","ssh_url":"git@github.com:jreback/pandas.git","clone_url":"https://github.com/jreback/pandas.git","svn_url":"https://github.com/jreback/pandas","homepage":"http://pandas.sourceforge.net","size":82573,"stargazers_count":6,"watchers_count":6,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":5,"mirror_url":null,"open_issues_count":0,"forks":5,"open_issues":0,"watchers":6,"default_branch":"master"}},"base":{"label":"pydata:master","ref":"master","sha":"62b4327c9b60d890b1d404cddf3a4244254346a8","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}","deployments_url":"https://api.github.com/repos/pydata/pandas/deployments","created_at":"2010-08-24T01:37:33Z","updated_at":"2016-06-12T13:16:59Z","pushed_at":"2016-06-12T14:01:16Z","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":149732,"stargazers_count":6436,"watchers_count":6436,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":2646,"mirror_url":null,"open_issues_count":1773,"forks":2646,"open_issues":1773,"watchers":6436,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/pydata/pandas/pulls/13358"},"html":{"href":"https://github.com/pydata/pandas/pull/13358"},"issue":{"href":"https://api.github.com/repos/pydata/pandas/issues/13358"},"comments":{"href":"https://api.github.com/repos/pydata/pandas/issues/13358/comments"},"review_comments":{"href":"https://api.github.com/repos/pydata/pandas/pulls/13358/comments"},"review_comment":{"href":"https://api.github.com/repos/pydata/pandas/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/pydata/pandas/pulls/13358/commits"},"statuses":{"href":"https://api.github.com/repos/pydata/pandas/statuses/da4770d57780a1a155daa81c95c07bd71fe5d661"}}}}
{"actor":{"display_login":"jorisvandenbossche"}}