{"action":"created","comment":{"url":"https://api.github.com/repos/taskcluster/taskcluster-client.py/pulls/comments/53320439","id":53320439,"diff_hunk":"@@ -19,6 +21,8 @@\n     'psutil==2.1.3',\n     'hypothesis',\n     'pgpy',\n+    'tox==2.3.1',\n+    'coverage==4.0.3',","path":"setup.py","position":14,"original_position":14,"commit_id":"e5f0b6225668f86df41f01a651ebddee161d7bf1","original_commit_id":"e5f0b6225668f86df41f01a651ebddee161d7bf1","user":{"login":"armenzg","id":44410,"avatar_url":"https://avatars.githubusercontent.com/u/44410?v=3","gravatar_id":"","url":"https://api.github.com/users/armenzg","html_url":"https://github.com/armenzg","followers_url":"https://api.github.com/users/armenzg/followers","following_url":"https://api.github.com/users/armenzg/following{/other_user}","gists_url":"https://api.github.com/users/armenzg/gists{/gist_id}","starred_url":"https://api.github.com/users/armenzg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/armenzg/subscriptions","organizations_url":"https://api.github.com/users/armenzg/orgs","repos_url":"https://api.github.com/users/armenzg/repos","events_url":"https://api.github.com/users/armenzg/events{/privacy}","received_events_url":"https://api.github.com/users/armenzg/received_events","type":"User","site_admin":false},"body":"Should this be added as optional packages? (e.g. pip install taskcluster-client[tests])\r\nOtherwise, users of this package would be forced to get these two packages installed.","created_at":"2016-02-18T14:31:55Z","updated_at":"2016-02-18T14:31:55Z","html_url":"https://github.com/taskcluster/taskcluster-client.py/pull/41#discussion_r53320439","pull_request_url":"https://api.github.com/repos/taskcluster/taskcluster-client.py/pulls/41","_links":{"self":{"href":"https://api.github.com/repos/taskcluster/taskcluster-client.py/pulls/comments/53320439"},"html":{"href":"https://github.com/taskcluster/taskcluster-client.py/pull/41#discussion_r53320439"},"pull_request":{"href":"https://api.github.com/repos/taskcluster/taskcluster-client.py/pulls/41"}}},"pull_request":{"url":"https://api.github.com/repos/taskcluster/taskcluster-client.py/pulls/41","id":59739609,"html_url":"https://github.com/taskcluster/taskcluster-client.py/pull/41","diff_url":"https://github.com/taskcluster/taskcluster-client.py/pull/41.diff","patch_url":"https://github.com/taskcluster/taskcluster-client.py/pull/41.patch","issue_url":"https://api.github.com/repos/taskcluster/taskcluster-client.py/issues/41","number":41,"state":"open","locked":false,"title":"testAuthenticate","user":{"login":"escapewindow","id":826343,"avatar_url":"https://avatars.githubusercontent.com/u/826343?v=3","gravatar_id":"","url":"https://api.github.com/users/escapewindow","html_url":"https://github.com/escapewindow","followers_url":"https://api.github.com/users/escapewindow/followers","following_url":"https://api.github.com/users/escapewindow/following{/other_user}","gists_url":"https://api.github.com/users/escapewindow/gists{/gist_id}","starred_url":"https://api.github.com/users/escapewindow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/escapewindow/subscriptions","organizations_url":"https://api.github.com/users/escapewindow/orgs","repos_url":"https://api.github.com/users/escapewindow/repos","events_url":"https://api.github.com/users/escapewindow/events{/privacy}","received_events_url":"https://api.github.com/users/escapewindow/received_events","type":"User","site_admin":false},"body":"@jhford - This PR:\r\n\r\n* calls the tests via tox and coverage, instead of calling nosetests directly\r\n * this will allow for multiple python version tests in my py3 branch\r\n* `python setup.py test [args]` will now call tox with the optionally specified args\r\n* linting happens after tox, so we get test output before formatting errors.\r\n * (I was commenting out code and having to fix the formatting before I could see test output)\r\n* we run `coverage html` after the tests, so we can see test coverage in htmlcov/\r\n* ProductionTest has been replaced by TestTestAuthenticate, which does a get and a post.\r\n* test_has_no_spaces now works no matter how the output is sorted\r\n\r\nGreen on my linux docker image.  I still get a segfault on the encrypt call on osx, but I don't think that blocks.","created_at":"2016-02-18T01:53:52Z","updated_at":"2016-02-18T14:31:55Z","closed_at":null,"merged_at":null,"merge_commit_sha":"76714cadb21f808714eccf064e141ed731297e74","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/taskcluster/taskcluster-client.py/pulls/41/commits","review_comments_url":"https://api.github.com/repos/taskcluster/taskcluster-client.py/pulls/41/comments","review_comment_url":"https://api.github.com/repos/taskcluster/taskcluster-client.py/pulls/comments{/number}","comments_url":"https://api.github.com/repos/taskcluster/taskcluster-client.py/issues/41/comments","statuses_url":"https://api.github.com/repos/taskcluster/taskcluster-client.py/statuses/e5f0b6225668f86df41f01a651ebddee161d7bf1","head":{"label":"escapewindow:testAuth","ref":"testAuth","sha":"e5f0b6225668f86df41f01a651ebddee161d7bf1","user":{"login":"escapewindow","id":826343,"avatar_url":"https://avatars.githubusercontent.com/u/826343?v=3","gravatar_id":"","url":"https://api.github.com/users/escapewindow","html_url":"https://github.com/escapewindow","followers_url":"https://api.github.com/users/escapewindow/followers","following_url":"https://api.github.com/users/escapewindow/following{/other_user}","gists_url":"https://api.github.com/users/escapewindow/gists{/gist_id}","starred_url":"https://api.github.com/users/escapewindow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/escapewindow/subscriptions","organizations_url":"https://api.github.com/users/escapewindow/orgs","repos_url":"https://api.github.com/users/escapewindow/repos","events_url":"https://api.github.com/users/escapewindow/events{/privacy}","received_events_url":"https://api.github.com/users/escapewindow/received_events","type":"User","site_admin":false},"repo":{"id":51029527,"name":"taskcluster-client.py","full_name":"escapewindow/taskcluster-client.py","owner":{"login":"escapewindow","id":826343,"avatar_url":"https://avatars.githubusercontent.com/u/826343?v=3","gravatar_id":"","url":"https://api.github.com/users/escapewindow","html_url":"https://github.com/escapewindow","followers_url":"https://api.github.com/users/escapewindow/followers","following_url":"https://api.github.com/users/escapewindow/following{/other_user}","gists_url":"https://api.github.com/users/escapewindow/gists{/gist_id}","starred_url":"https://api.github.com/users/escapewindow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/escapewindow/subscriptions","organizations_url":"https://api.github.com/users/escapewindow/orgs","repos_url":"https://api.github.com/users/escapewindow/repos","events_url":"https://api.github.com/users/escapewindow/events{/privacy}","received_events_url":"https://api.github.com/users/escapewindow/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/escapewindow/taskcluster-client.py","description":"A python implementation of the Taskcluster Client Library","fork":true,"url":"https://api.github.com/repos/escapewindow/taskcluster-client.py","forks_url":"https://api.github.com/repos/escapewindow/taskcluster-client.py/forks","keys_url":"https://api.github.com/repos/escapewindow/taskcluster-client.py/keys{/key_id}","collaborators_url":"https://api.github.com/repos/escapewindow/taskcluster-client.py/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/escapewindow/taskcluster-client.py/teams","hooks_url":"https://api.github.com/repos/escapewindow/taskcluster-client.py/hooks","issue_events_url":"https://api.github.com/repos/escapewindow/taskcluster-client.py/issues/events{/number}","events_url":"https://api.github.com/repos/escapewindow/taskcluster-client.py/events","assignees_url":"https://api.github.com/repos/escapewindow/taskcluster-client.py/assignees{/user}","branches_url":"https://api.github.com/repos/escapewindow/taskcluster-client.py/branches{/branch}","tags_url":"https://api.github.com/repos/escapewindow/taskcluster-client.py/tags","blobs_url":"https://api.github.com/repos/escapewindow/taskcluster-client.py/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/escapewindow/taskcluster-client.py/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/escapewindow/taskcluster-client.py/git/refs{/sha}","trees_url":"https://api.github.com/repos/escapewindow/taskcluster-client.py/git/trees{/sha}","statuses_url":"https://api.github.com/repos/escapewindow/taskcluster-client.py/statuses/{sha}","languages_url":"https://api.github.com/repos/escapewindow/taskcluster-client.py/languages","stargazers_url":"https://api.github.com/repos/escapewindow/taskcluster-client.py/stargazers","contributors_url":"https://api.github.com/repos/escapewindow/taskcluster-client.py/contributors","subscribers_url":"https://api.github.com/repos/escapewindow/taskcluster-client.py/subscribers","subscription_url":"https://api.github.com/repos/escapewindow/taskcluster-client.py/subscription","commits_url":"https://api.github.com/repos/escapewindow/taskcluster-client.py/commits{/sha}","git_commits_url":"https://api.github.com/repos/escapewindow/taskcluster-client.py/git/commits{/sha}","comments_url":"https://api.github.com/repos/escapewindow/taskcluster-client.py/comments{/number}","issue_comment_url":"https://api.github.com/repos/escapewindow/taskcluster-client.py/issues/comments{/number}","contents_url":"https://api.github.com/repos/escapewindow/taskcluster-client.py/contents/{+path}","compare_url":"https://api.github.com/repos/escapewindow/taskcluster-client.py/compare/{base}...{head}","merges_url":"https://api.github.com/repos/escapewindow/taskcluster-client.py/merges","archive_url":"https://api.github.com/repos/escapewindow/taskcluster-client.py/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/escapewindow/taskcluster-client.py/downloads","issues_url":"https://api.github.com/repos/escapewindow/taskcluster-client.py/issues{/number}","pulls_url":"https://api.github.com/repos/escapewindow/taskcluster-client.py/pulls{/number}","milestones_url":"https://api.github.com/repos/escapewindow/taskcluster-client.py/milestones{/number}","notifications_url":"https://api.github.com/repos/escapewindow/taskcluster-client.py/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/escapewindow/taskcluster-client.py/labels{/name}","releases_url":"https://api.github.com/repos/escapewindow/taskcluster-client.py/releases{/id}","deployments_url":"https://api.github.com/repos/escapewindow/taskcluster-client.py/deployments","created_at":"2016-02-03T20:48:09Z","updated_at":"2016-02-03T20:48:10Z","pushed_at":"2016-02-18T01:50:39Z","git_url":"git://github.com/escapewindow/taskcluster-client.py.git","ssh_url":"git@github.com:escapewindow/taskcluster-client.py.git","clone_url":"https://github.com/escapewindow/taskcluster-client.py.git","svn_url":"https://github.com/escapewindow/taskcluster-client.py","homepage":"https://pypi.python.org/pypi/taskcluster","size":366,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"taskcluster:master","ref":"master","sha":"118ace746653074c4bcaa790e4e21f8891fdd217","user":{"login":"taskcluster","id":6257436,"avatar_url":"https://avatars.githubusercontent.com/u/6257436?v=3","gravatar_id":"","url":"https://api.github.com/users/taskcluster","html_url":"https://github.com/taskcluster","followers_url":"https://api.github.com/users/taskcluster/followers","following_url":"https://api.github.com/users/taskcluster/following{/other_user}","gists_url":"https://api.github.com/users/taskcluster/gists{/gist_id}","starred_url":"https://api.github.com/users/taskcluster/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/taskcluster/subscriptions","organizations_url":"https://api.github.com/users/taskcluster/orgs","repos_url":"https://api.github.com/users/taskcluster/repos","events_url":"https://api.github.com/users/taskcluster/events{/privacy}","received_events_url":"https://api.github.com/users/taskcluster/received_events","type":"Organization","site_admin":false},"repo":{"id":24991592,"name":"taskcluster-client.py","full_name":"taskcluster/taskcluster-client.py","owner":{"login":"taskcluster","id":6257436,"avatar_url":"https://avatars.githubusercontent.com/u/6257436?v=3","gravatar_id":"","url":"https://api.github.com/users/taskcluster","html_url":"https://github.com/taskcluster","followers_url":"https://api.github.com/users/taskcluster/followers","following_url":"https://api.github.com/users/taskcluster/following{/other_user}","gists_url":"https://api.github.com/users/taskcluster/gists{/gist_id}","starred_url":"https://api.github.com/users/taskcluster/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/taskcluster/subscriptions","organizations_url":"https://api.github.com/users/taskcluster/orgs","repos_url":"https://api.github.com/users/taskcluster/repos","events_url":"https://api.github.com/users/taskcluster/events{/privacy}","received_events_url":"https://api.github.com/users/taskcluster/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/taskcluster/taskcluster-client.py","description":"A python implementation of the Taskcluster Client Library","fork":false,"url":"https://api.github.com/repos/taskcluster/taskcluster-client.py","forks_url":"https://api.github.com/repos/taskcluster/taskcluster-client.py/forks","keys_url":"https://api.github.com/repos/taskcluster/taskcluster-client.py/keys{/key_id}","collaborators_url":"https://api.github.com/repos/taskcluster/taskcluster-client.py/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/taskcluster/taskcluster-client.py/teams","hooks_url":"https://api.github.com/repos/taskcluster/taskcluster-client.py/hooks","issue_events_url":"https://api.github.com/repos/taskcluster/taskcluster-client.py/issues/events{/number}","events_url":"https://api.github.com/repos/taskcluster/taskcluster-client.py/events","assignees_url":"https://api.github.com/repos/taskcluster/taskcluster-client.py/assignees{/user}","branches_url":"https://api.github.com/repos/taskcluster/taskcluster-client.py/branches{/branch}","tags_url":"https://api.github.com/repos/taskcluster/taskcluster-client.py/tags","blobs_url":"https://api.github.com/repos/taskcluster/taskcluster-client.py/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/taskcluster/taskcluster-client.py/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/taskcluster/taskcluster-client.py/git/refs{/sha}","trees_url":"https://api.github.com/repos/taskcluster/taskcluster-client.py/git/trees{/sha}","statuses_url":"https://api.github.com/repos/taskcluster/taskcluster-client.py/statuses/{sha}","languages_url":"https://api.github.com/repos/taskcluster/taskcluster-client.py/languages","stargazers_url":"https://api.github.com/repos/taskcluster/taskcluster-client.py/stargazers","contributors_url":"https://api.github.com/repos/taskcluster/taskcluster-client.py/contributors","subscribers_url":"https://api.github.com/repos/taskcluster/taskcluster-client.py/subscribers","subscription_url":"https://api.github.com/repos/taskcluster/taskcluster-client.py/subscription","commits_url":"https://api.github.com/repos/taskcluster/taskcluster-client.py/commits{/sha}","git_commits_url":"https://api.github.com/repos/taskcluster/taskcluster-client.py/git/commits{/sha}","comments_url":"https://api.github.com/repos/taskcluster/taskcluster-client.py/comments{/number}","issue_comment_url":"https://api.github.com/repos/taskcluster/taskcluster-client.py/issues/comments{/number}","contents_url":"https://api.github.com/repos/taskcluster/taskcluster-client.py/contents/{+path}","compare_url":"https://api.github.com/repos/taskcluster/taskcluster-client.py/compare/{base}...{head}","merges_url":"https://api.github.com/repos/taskcluster/taskcluster-client.py/merges","archive_url":"https://api.github.com/repos/taskcluster/taskcluster-client.py/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/taskcluster/taskcluster-client.py/downloads","issues_url":"https://api.github.com/repos/taskcluster/taskcluster-client.py/issues{/number}","pulls_url":"https://api.github.com/repos/taskcluster/taskcluster-client.py/pulls{/number}","milestones_url":"https://api.github.com/repos/taskcluster/taskcluster-client.py/milestones{/number}","notifications_url":"https://api.github.com/repos/taskcluster/taskcluster-client.py/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/taskcluster/taskcluster-client.py/labels{/name}","releases_url":"https://api.github.com/repos/taskcluster/taskcluster-client.py/releases{/id}","deployments_url":"https://api.github.com/repos/taskcluster/taskcluster-client.py/deployments","created_at":"2014-10-09T13:58:54Z","updated_at":"2016-02-10T18:21:45Z","pushed_at":"2016-02-18T01:53:52Z","git_url":"git://github.com/taskcluster/taskcluster-client.py.git","ssh_url":"git@github.com:taskcluster/taskcluster-client.py.git","clone_url":"https://github.com/taskcluster/taskcluster-client.py.git","svn_url":"https://github.com/taskcluster/taskcluster-client.py","homepage":"https://pypi.python.org/pypi/taskcluster","size":353,"stargazers_count":6,"watchers_count":6,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":12,"mirror_url":null,"open_issues_count":3,"forks":12,"open_issues":3,"watchers":6,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/taskcluster/taskcluster-client.py/pulls/41"},"html":{"href":"https://github.com/taskcluster/taskcluster-client.py/pull/41"},"issue":{"href":"https://api.github.com/repos/taskcluster/taskcluster-client.py/issues/41"},"comments":{"href":"https://api.github.com/repos/taskcluster/taskcluster-client.py/issues/41/comments"},"review_comments":{"href":"https://api.github.com/repos/taskcluster/taskcluster-client.py/pulls/41/comments"},"review_comment":{"href":"https://api.github.com/repos/taskcluster/taskcluster-client.py/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/taskcluster/taskcluster-client.py/pulls/41/commits"},"statuses":{"href":"https://api.github.com/repos/taskcluster/taskcluster-client.py/statuses/e5f0b6225668f86df41f01a651ebddee161d7bf1"}}}}