{"action":"created","comment":{"url":"https://api.github.com/repos/DataDog/dd-trace-py/pulls/comments/207884672","pull_request_review_id":143580842,"id":207884672,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIwNzg4NDY3Mg==","diff_hunk":"@@ -25,11 +26,27 @@ def run(self, *args, **kwargs):\n                     return\n                 CelerySubClass.apply_async(args=[], kwargs={\"stop\": True})\n \n-        @patch_task_with_pin(pin=self.pin)\n         class CelerySubClass(CelerySuperClass):\n             pass\n \n         t = CelerySubClass()\n-        t.run()\n-        spans = self.tracer.writer.pop()\n-        self.assertEqual(len(spans), 2)\n+        res = t.apply()","path":"tests/contrib/celery/test_old_style_task.py","position":22,"original_position":22,"commit_id":"b7f55987ec03dbacc2b0e59e2fa4fdfe611225b4","original_commit_id":"b7f55987ec03dbacc2b0e59e2fa4fdfe611225b4","user":{"login":"palazzem","id":1560405,"node_id":"MDQ6VXNlcjE1NjA0MDU=","avatar_url":"https://avatars2.githubusercontent.com/u/1560405?v=4","gravatar_id":"","url":"https://api.github.com/users/palazzem","html_url":"https://github.com/palazzem","followers_url":"https://api.github.com/users/palazzem/followers","following_url":"https://api.github.com/users/palazzem/following{/other_user}","gists_url":"https://api.github.com/users/palazzem/gists{/gist_id}","starred_url":"https://api.github.com/users/palazzem/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/palazzem/subscriptions","organizations_url":"https://api.github.com/users/palazzem/orgs","repos_url":"https://api.github.com/users/palazzem/repos","events_url":"https://api.github.com/users/palazzem/events{/privacy}","received_events_url":"https://api.github.com/users/palazzem/received_events","type":"User","site_admin":false},"body":"Test changed to use `apply()` instead of `run()` because of the considerations above.","created_at":"2018-08-06T13:08:46Z","updated_at":"2018-08-06T13:12:21Z","html_url":"https://github.com/DataDog/dd-trace-py/pull/530#discussion_r207884672","pull_request_url":"https://api.github.com/repos/DataDog/dd-trace-py/pulls/530","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/DataDog/dd-trace-py/pulls/comments/207884672"},"html":{"href":"https://github.com/DataDog/dd-trace-py/pull/530#discussion_r207884672"},"pull_request":{"href":"https://api.github.com/repos/DataDog/dd-trace-py/pulls/530"}}},"pull_request":{"url":"https://api.github.com/repos/DataDog/dd-trace-py/pulls/530","id":206390388,"node_id":"MDExOlB1bGxSZXF1ZXN0MjA2MzkwMzg4","html_url":"https://github.com/DataDog/dd-trace-py/pull/530","diff_url":"https://github.com/DataDog/dd-trace-py/pull/530.diff","patch_url":"https://github.com/DataDog/dd-trace-py/pull/530.patch","issue_url":"https://api.github.com/repos/DataDog/dd-trace-py/issues/530","number":530,"state":"open","locked":false,"title":"[celery] use Celery signals instead of patch","user":{"login":"palazzem","id":1560405,"node_id":"MDQ6VXNlcjE1NjA0MDU=","avatar_url":"https://avatars2.githubusercontent.com/u/1560405?v=4","gravatar_id":"","url":"https://api.github.com/users/palazzem","html_url":"https://github.com/palazzem","followers_url":"https://api.github.com/users/palazzem/followers","following_url":"https://api.github.com/users/palazzem/following{/other_user}","gists_url":"https://api.github.com/users/palazzem/gists{/gist_id}","starred_url":"https://api.github.com/users/palazzem/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/palazzem/subscriptions","organizations_url":"https://api.github.com/users/palazzem/orgs","repos_url":"https://api.github.com/users/palazzem/repos","events_url":"https://api.github.com/users/palazzem/events{/privacy}","received_events_url":"https://api.github.com/users/palazzem/received_events","type":"User","site_admin":false},"body":"### Overview\r\n\r\nCloses #495\r\n\r\nThe previous approach used a monkey-patch mechanism to instrument the base `Celery()` app, including any registered tasks. Unfortunately, the patch mechanism altered the way Celery registers old-style `Task` (for `abstract` classes), making complicated the signature match for the `task` decorator. The approach introduced many problems with synchronous Celery calls (#495).\r\n\r\nThis PR removes the old monkey-patch mechanism in favor of [Celery signals](http://docs.celeryproject.org/en/latest/userguide/signals.html). The new approach uses the internal tracing system to detect when tasks are executed via Celery API.\r\n\r\n### Caveats\r\n\r\nSignals are not emitted when a plain function is called. It means if we have a task defined as:\r\n```python\r\n@app.task\r\ndef my_task():\r\n    pass\r\n```\r\n\r\ncalling `my_task()` will not generate any traces. This may be considered a breaking change in the integration behavior that cannot be achieved without reintroducing monkey-patch again (causing other problems with old-style tasks and signatures matching).\r\n\r\n### Backward Compatibility\r\n\r\nThis PR introduces the following changes:\r\n* if a task function is called directly (`my_task()` or via the `.run()` method), no traces are generated. Synchronous calls done via `.apply()` work as expected. It could be considered more common using the Celery API (`.delay()`, `.apply_async([])`, `.apply()`),  even though it could stop working on some systems\r\n* this PR doesn't introduce a filtering to decide if a task is instrumented or not. With OOTB instrumentation, all tasks are instrumented and it's not possible anymore to decide to instrument only a subset of tasks\r\n* any methods available in the previous API (`patch_task()` and `unpatch_task()`) are preserved, so there are no breaking changes in the API. The first API adds instrumentation to all tasks, while the other is a no-op.","created_at":"2018-08-06T12:57:49Z","updated_at":"2018-08-06T13:12:21Z","closed_at":null,"merged_at":null,"merge_commit_sha":"069dabd9c230a55f563b3087848b2ba14dcda53f","assignee":null,"assignees":[],"requested_reviewers":[{"login":"SeanOC","id":7662,"node_id":"MDQ6VXNlcjc2NjI=","avatar_url":"https://avatars3.githubusercontent.com/u/7662?v=4","gravatar_id":"","url":"https://api.github.com/users/SeanOC","html_url":"https://github.com/SeanOC","followers_url":"https://api.github.com/users/SeanOC/followers","following_url":"https://api.github.com/users/SeanOC/following{/other_user}","gists_url":"https://api.github.com/users/SeanOC/gists{/gist_id}","starred_url":"https://api.github.com/users/SeanOC/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SeanOC/subscriptions","organizations_url":"https://api.github.com/users/SeanOC/orgs","repos_url":"https://api.github.com/users/SeanOC/repos","events_url":"https://api.github.com/users/SeanOC/events{/privacy}","received_events_url":"https://api.github.com/users/SeanOC/received_events","type":"User","site_admin":false},{"login":"LotharSee","id":2720261,"node_id":"MDQ6VXNlcjI3MjAyNjE=","avatar_url":"https://avatars1.githubusercontent.com/u/2720261?v=4","gravatar_id":"","url":"https://api.github.com/users/LotharSee","html_url":"https://github.com/LotharSee","followers_url":"https://api.github.com/users/LotharSee/followers","following_url":"https://api.github.com/users/LotharSee/following{/other_user}","gists_url":"https://api.github.com/users/LotharSee/gists{/gist_id}","starred_url":"https://api.github.com/users/LotharSee/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/LotharSee/subscriptions","organizations_url":"https://api.github.com/users/LotharSee/orgs","repos_url":"https://api.github.com/users/LotharSee/repos","events_url":"https://api.github.com/users/LotharSee/events{/privacy}","received_events_url":"https://api.github.com/users/LotharSee/received_events","type":"User","site_admin":false},{"login":"Kyle-Verhoog","id":6321485,"node_id":"MDQ6VXNlcjYzMjE0ODU=","avatar_url":"https://avatars1.githubusercontent.com/u/6321485?v=4","gravatar_id":"","url":"https://api.github.com/users/Kyle-Verhoog","html_url":"https://github.com/Kyle-Verhoog","followers_url":"https://api.github.com/users/Kyle-Verhoog/followers","following_url":"https://api.github.com/users/Kyle-Verhoog/following{/other_user}","gists_url":"https://api.github.com/users/Kyle-Verhoog/gists{/gist_id}","starred_url":"https://api.github.com/users/Kyle-Verhoog/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Kyle-Verhoog/subscriptions","organizations_url":"https://api.github.com/users/Kyle-Verhoog/orgs","repos_url":"https://api.github.com/users/Kyle-Verhoog/repos","events_url":"https://api.github.com/users/Kyle-Verhoog/events{/privacy}","received_events_url":"https://api.github.com/users/Kyle-Verhoog/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":443002993,"node_id":"MDU6TGFiZWw0NDMwMDI5OTM=","url":"https://api.github.com/repos/DataDog/dd-trace-py/labels/integrations","name":"integrations","color":"c2e0c6","default":false}],"milestone":{"url":"https://api.github.com/repos/DataDog/dd-trace-py/milestones/21","html_url":"https://github.com/DataDog/dd-trace-py/milestone/21","labels_url":"https://api.github.com/repos/DataDog/dd-trace-py/milestones/21/labels","id":3421455,"node_id":"MDk6TWlsZXN0b25lMzQyMTQ1NQ==","number":21,"title":"0.13.0","description":"","creator":{"login":"palazzem","id":1560405,"node_id":"MDQ6VXNlcjE1NjA0MDU=","avatar_url":"https://avatars2.githubusercontent.com/u/1560405?v=4","gravatar_id":"","url":"https://api.github.com/users/palazzem","html_url":"https://github.com/palazzem","followers_url":"https://api.github.com/users/palazzem/followers","following_url":"https://api.github.com/users/palazzem/following{/other_user}","gists_url":"https://api.github.com/users/palazzem/gists{/gist_id}","starred_url":"https://api.github.com/users/palazzem/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/palazzem/subscriptions","organizations_url":"https://api.github.com/users/palazzem/orgs","repos_url":"https://api.github.com/users/palazzem/repos","events_url":"https://api.github.com/users/palazzem/events{/privacy}","received_events_url":"https://api.github.com/users/palazzem/received_events","type":"User","site_admin":false},"open_issues":6,"closed_issues":2,"state":"open","created_at":"2018-06-13T10:05:33Z","updated_at":"2018-08-06T12:59:12Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/DataDog/dd-trace-py/pulls/530/commits","review_comments_url":"https://api.github.com/repos/DataDog/dd-trace-py/pulls/530/comments","review_comment_url":"https://api.github.com/repos/DataDog/dd-trace-py/pulls/comments{/number}","comments_url":"https://api.github.com/repos/DataDog/dd-trace-py/issues/530/comments","statuses_url":"https://api.github.com/repos/DataDog/dd-trace-py/statuses/b7f55987ec03dbacc2b0e59e2fa4fdfe611225b4","head":{"label":"DataDog:palazzem/celery-signals","ref":"palazzem/celery-signals","sha":"b7f55987ec03dbacc2b0e59e2fa4fdfe611225b4","user":{"login":"DataDog","id":365230,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM2NTIzMA==","avatar_url":"https://avatars1.githubusercontent.com/u/365230?v=4","gravatar_id":"","url":"https://api.github.com/users/DataDog","html_url":"https://github.com/DataDog","followers_url":"https://api.github.com/users/DataDog/followers","following_url":"https://api.github.com/users/DataDog/following{/other_user}","gists_url":"https://api.github.com/users/DataDog/gists{/gist_id}","starred_url":"https://api.github.com/users/DataDog/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DataDog/subscriptions","organizations_url":"https://api.github.com/users/DataDog/orgs","repos_url":"https://api.github.com/users/DataDog/repos","events_url":"https://api.github.com/users/DataDog/events{/privacy}","received_events_url":"https://api.github.com/users/DataDog/received_events","type":"Organization","site_admin":false},"repo":{"id":61572326,"node_id":"MDEwOlJlcG9zaXRvcnk2MTU3MjMyNg==","name":"dd-trace-py","full_name":"DataDog/dd-trace-py","owner":{"login":"DataDog","id":365230,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM2NTIzMA==","avatar_url":"https://avatars1.githubusercontent.com/u/365230?v=4","gravatar_id":"","url":"https://api.github.com/users/DataDog","html_url":"https://github.com/DataDog","followers_url":"https://api.github.com/users/DataDog/followers","following_url":"https://api.github.com/users/DataDog/following{/other_user}","gists_url":"https://api.github.com/users/DataDog/gists{/gist_id}","starred_url":"https://api.github.com/users/DataDog/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DataDog/subscriptions","organizations_url":"https://api.github.com/users/DataDog/orgs","repos_url":"https://api.github.com/users/DataDog/repos","events_url":"https://api.github.com/users/DataDog/events{/privacy}","received_events_url":"https://api.github.com/users/DataDog/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/DataDog/dd-trace-py","description":"Datadog Tracing Python Client","fork":false,"url":"https://api.github.com/repos/DataDog/dd-trace-py","forks_url":"https://api.github.com/repos/DataDog/dd-trace-py/forks","keys_url":"https://api.github.com/repos/DataDog/dd-trace-py/keys{/key_id}","collaborators_url":"https://api.github.com/repos/DataDog/dd-trace-py/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/DataDog/dd-trace-py/teams","hooks_url":"https://api.github.com/repos/DataDog/dd-trace-py/hooks","issue_events_url":"https://api.github.com/repos/DataDog/dd-trace-py/issues/events{/number}","events_url":"https://api.github.com/repos/DataDog/dd-trace-py/events","assignees_url":"https://api.github.com/repos/DataDog/dd-trace-py/assignees{/user}","branches_url":"https://api.github.com/repos/DataDog/dd-trace-py/branches{/branch}","tags_url":"https://api.github.com/repos/DataDog/dd-trace-py/tags","blobs_url":"https://api.github.com/repos/DataDog/dd-trace-py/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/DataDog/dd-trace-py/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/DataDog/dd-trace-py/git/refs{/sha}","trees_url":"https://api.github.com/repos/DataDog/dd-trace-py/git/trees{/sha}","statuses_url":"https://api.github.com/repos/DataDog/dd-trace-py/statuses/{sha}","languages_url":"https://api.github.com/repos/DataDog/dd-trace-py/languages","stargazers_url":"https://api.github.com/repos/DataDog/dd-trace-py/stargazers","contributors_url":"https://api.github.com/repos/DataDog/dd-trace-py/contributors","subscribers_url":"https://api.github.com/repos/DataDog/dd-trace-py/subscribers","subscription_url":"https://api.github.com/repos/DataDog/dd-trace-py/subscription","commits_url":"https://api.github.com/repos/DataDog/dd-trace-py/commits{/sha}","git_commits_url":"https://api.github.com/repos/DataDog/dd-trace-py/git/commits{/sha}","comments_url":"https://api.github.com/repos/DataDog/dd-trace-py/comments{/number}","issue_comment_url":"https://api.github.com/repos/DataDog/dd-trace-py/issues/comments{/number}","contents_url":"https://api.github.com/repos/DataDog/dd-trace-py/contents/{+path}","compare_url":"https://api.github.com/repos/DataDog/dd-trace-py/compare/{base}...{head}","merges_url":"https://api.github.com/repos/DataDog/dd-trace-py/merges","archive_url":"https://api.github.com/repos/DataDog/dd-trace-py/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/DataDog/dd-trace-py/downloads","issues_url":"https://api.github.com/repos/DataDog/dd-trace-py/issues{/number}","pulls_url":"https://api.github.com/repos/DataDog/dd-trace-py/pulls{/number}","milestones_url":"https://api.github.com/repos/DataDog/dd-trace-py/milestones{/number}","notifications_url":"https://api.github.com/repos/DataDog/dd-trace-py/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/DataDog/dd-trace-py/labels{/name}","releases_url":"https://api.github.com/repos/DataDog/dd-trace-py/releases{/id}","deployments_url":"https://api.github.com/repos/DataDog/dd-trace-py/deployments","created_at":"2016-06-20T18:52:23Z","updated_at":"2018-08-03T20:15:33Z","pushed_at":"2018-08-06T12:59:12Z","git_url":"git://github.com/DataDog/dd-trace-py.git","ssh_url":"git@github.com:DataDog/dd-trace-py.git","clone_url":"https://github.com/DataDog/dd-trace-py.git","svn_url":"https://github.com/DataDog/dd-trace-py","homepage":"http://pypi.datadoghq.com/trace/docs/","size":1982,"stargazers_count":70,"watchers_count":70,"language":"Python","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":74,"mirror_url":null,"archived":false,"open_issues_count":59,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":74,"open_issues":59,"watchers":70,"default_branch":"master"}},"base":{"label":"DataDog:palazzem/celery-integration","ref":"palazzem/celery-integration","sha":"fe9d7f21ebfef5f8d63cc7fcb8792d3bdc66768f","user":{"login":"DataDog","id":365230,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM2NTIzMA==","avatar_url":"https://avatars1.githubusercontent.com/u/365230?v=4","gravatar_id":"","url":"https://api.github.com/users/DataDog","html_url":"https://github.com/DataDog","followers_url":"https://api.github.com/users/DataDog/followers","following_url":"https://api.github.com/users/DataDog/following{/other_user}","gists_url":"https://api.github.com/users/DataDog/gists{/gist_id}","starred_url":"https://api.github.com/users/DataDog/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DataDog/subscriptions","organizations_url":"https://api.github.com/users/DataDog/orgs","repos_url":"https://api.github.com/users/DataDog/repos","events_url":"https://api.github.com/users/DataDog/events{/privacy}","received_events_url":"https://api.github.com/users/DataDog/received_events","type":"Organization","site_admin":false},"repo":{"id":61572326,"node_id":"MDEwOlJlcG9zaXRvcnk2MTU3MjMyNg==","name":"dd-trace-py","full_name":"DataDog/dd-trace-py","owner":{"login":"DataDog","id":365230,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM2NTIzMA==","avatar_url":"https://avatars1.githubusercontent.com/u/365230?v=4","gravatar_id":"","url":"https://api.github.com/users/DataDog","html_url":"https://github.com/DataDog","followers_url":"https://api.github.com/users/DataDog/followers","following_url":"https://api.github.com/users/DataDog/following{/other_user}","gists_url":"https://api.github.com/users/DataDog/gists{/gist_id}","starred_url":"https://api.github.com/users/DataDog/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DataDog/subscriptions","organizations_url":"https://api.github.com/users/DataDog/orgs","repos_url":"https://api.github.com/users/DataDog/repos","events_url":"https://api.github.com/users/DataDog/events{/privacy}","received_events_url":"https://api.github.com/users/DataDog/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/DataDog/dd-trace-py","description":"Datadog Tracing Python Client","fork":false,"url":"https://api.github.com/repos/DataDog/dd-trace-py","forks_url":"https://api.github.com/repos/DataDog/dd-trace-py/forks","keys_url":"https://api.github.com/repos/DataDog/dd-trace-py/keys{/key_id}","collaborators_url":"https://api.github.com/repos/DataDog/dd-trace-py/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/DataDog/dd-trace-py/teams","hooks_url":"https://api.github.com/repos/DataDog/dd-trace-py/hooks","issue_events_url":"https://api.github.com/repos/DataDog/dd-trace-py/issues/events{/number}","events_url":"https://api.github.com/repos/DataDog/dd-trace-py/events","assignees_url":"https://api.github.com/repos/DataDog/dd-trace-py/assignees{/user}","branches_url":"https://api.github.com/repos/DataDog/dd-trace-py/branches{/branch}","tags_url":"https://api.github.com/repos/DataDog/dd-trace-py/tags","blobs_url":"https://api.github.com/repos/DataDog/dd-trace-py/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/DataDog/dd-trace-py/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/DataDog/dd-trace-py/git/refs{/sha}","trees_url":"https://api.github.com/repos/DataDog/dd-trace-py/git/trees{/sha}","statuses_url":"https://api.github.com/repos/DataDog/dd-trace-py/statuses/{sha}","languages_url":"https://api.github.com/repos/DataDog/dd-trace-py/languages","stargazers_url":"https://api.github.com/repos/DataDog/dd-trace-py/stargazers","contributors_url":"https://api.github.com/repos/DataDog/dd-trace-py/contributors","subscribers_url":"https://api.github.com/repos/DataDog/dd-trace-py/subscribers","subscription_url":"https://api.github.com/repos/DataDog/dd-trace-py/subscription","commits_url":"https://api.github.com/repos/DataDog/dd-trace-py/commits{/sha}","git_commits_url":"https://api.github.com/repos/DataDog/dd-trace-py/git/commits{/sha}","comments_url":"https://api.github.com/repos/DataDog/dd-trace-py/comments{/number}","issue_comment_url":"https://api.github.com/repos/DataDog/dd-trace-py/issues/comments{/number}","contents_url":"https://api.github.com/repos/DataDog/dd-trace-py/contents/{+path}","compare_url":"https://api.github.com/repos/DataDog/dd-trace-py/compare/{base}...{head}","merges_url":"https://api.github.com/repos/DataDog/dd-trace-py/merges","archive_url":"https://api.github.com/repos/DataDog/dd-trace-py/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/DataDog/dd-trace-py/downloads","issues_url":"https://api.github.com/repos/DataDog/dd-trace-py/issues{/number}","pulls_url":"https://api.github.com/repos/DataDog/dd-trace-py/pulls{/number}","milestones_url":"https://api.github.com/repos/DataDog/dd-trace-py/milestones{/number}","notifications_url":"https://api.github.com/repos/DataDog/dd-trace-py/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/DataDog/dd-trace-py/labels{/name}","releases_url":"https://api.github.com/repos/DataDog/dd-trace-py/releases{/id}","deployments_url":"https://api.github.com/repos/DataDog/dd-trace-py/deployments","created_at":"2016-06-20T18:52:23Z","updated_at":"2018-08-03T20:15:33Z","pushed_at":"2018-08-06T12:59:12Z","git_url":"git://github.com/DataDog/dd-trace-py.git","ssh_url":"git@github.com:DataDog/dd-trace-py.git","clone_url":"https://github.com/DataDog/dd-trace-py.git","svn_url":"https://github.com/DataDog/dd-trace-py","homepage":"http://pypi.datadoghq.com/trace/docs/","size":1982,"stargazers_count":70,"watchers_count":70,"language":"Python","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":74,"mirror_url":null,"archived":false,"open_issues_count":59,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":74,"open_issues":59,"watchers":70,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/DataDog/dd-trace-py/pulls/530"},"html":{"href":"https://github.com/DataDog/dd-trace-py/pull/530"},"issue":{"href":"https://api.github.com/repos/DataDog/dd-trace-py/issues/530"},"comments":{"href":"https://api.github.com/repos/DataDog/dd-trace-py/issues/530/comments"},"review_comments":{"href":"https://api.github.com/repos/DataDog/dd-trace-py/pulls/530/comments"},"review_comment":{"href":"https://api.github.com/repos/DataDog/dd-trace-py/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/DataDog/dd-trace-py/pulls/530/commits"},"statuses":{"href":"https://api.github.com/repos/DataDog/dd-trace-py/statuses/b7f55987ec03dbacc2b0e59e2fa4fdfe611225b4"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"palazzem"}}