{"action":"created","comment":{"url":"https://api.github.com/repos/pypa/pip/pulls/comments/190946804","pull_request_review_id":123437488,"id":190946804,"diff_hunk":"@@ -23,6 +23,7 @@ htmlcov/\n .coverage\n .coverage.*\n .cache\n+.pytest_cache","path":".gitignore","position":4,"original_position":4,"commit_id":"c3d1437498965753d095aea170272930ca7149ab","original_commit_id":"c3d1437498965753d095aea170272930ca7149ab","user":{"login":"pradyunsg","id":3275593,"avatar_url":"https://avatars1.githubusercontent.com/u/3275593?v=4","gravatar_id":"","url":"https://api.github.com/users/pradyunsg","html_url":"https://github.com/pradyunsg","followers_url":"https://api.github.com/users/pradyunsg/followers","following_url":"https://api.github.com/users/pradyunsg/following{/other_user}","gists_url":"https://api.github.com/users/pradyunsg/gists{/gist_id}","starred_url":"https://api.github.com/users/pradyunsg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pradyunsg/subscriptions","organizations_url":"https://api.github.com/users/pradyunsg/orgs","repos_url":"https://api.github.com/users/pradyunsg/repos","events_url":"https://api.github.com/users/pradyunsg/events{/privacy}","received_events_url":"https://api.github.com/users/pradyunsg/received_events","type":"User","site_admin":false},"body":"nit: make the previous line `.*cache` -- it'll cover everything. :)","created_at":"2018-05-25T16:30:53Z","updated_at":"2018-05-25T17:03:02Z","html_url":"https://github.com/pypa/pip/pull/5436#discussion_r190946804","pull_request_url":"https://api.github.com/repos/pypa/pip/pulls/5436","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/pypa/pip/pulls/comments/190946804"},"html":{"href":"https://github.com/pypa/pip/pull/5436#discussion_r190946804"},"pull_request":{"href":"https://api.github.com/repos/pypa/pip/pulls/5436"}}},"pull_request":{"url":"https://api.github.com/repos/pypa/pip/pulls/5436","id":190245879,"html_url":"https://github.com/pypa/pip/pull/5436","diff_url":"https://github.com/pypa/pip/pull/5436.diff","patch_url":"https://github.com/pypa/pip/pull/5436.patch","issue_url":"https://api.github.com/repos/pypa/pip/issues/5436","number":5436,"state":"open","locked":false,"title":"CI: Split PyPy tests to speed up end-to-end running time","user":{"login":"hugovk","id":1324225,"avatar_url":"https://avatars2.githubusercontent.com/u/1324225?v=4","gravatar_id":"","url":"https://api.github.com/users/hugovk","html_url":"https://github.com/hugovk","followers_url":"https://api.github.com/users/hugovk/followers","following_url":"https://api.github.com/users/hugovk/following{/other_user}","gists_url":"https://api.github.com/users/hugovk/gists{/gist_id}","starred_url":"https://api.github.com/users/hugovk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hugovk/subscriptions","organizations_url":"https://api.github.com/users/hugovk/orgs","repos_url":"https://api.github.com/users/hugovk/repos","events_url":"https://api.github.com/users/hugovk/events{/privacy}","received_events_url":"https://api.github.com/users/hugovk/received_events","type":"User","site_admin":false},"body":"<!---\r\nThank you for your soon to be pull request. Before you submit this, please\r\ndouble check to make sure that you've added a news file fragment. In pip we\r\ngenerate our NEWS.rst from multiple news fragment files, and all pull requests\r\nrequire either a news file fragment or a marker to indicate they don't require\r\none.\r\n\r\nTo read more about adding a news file fragment for your PR, please check out\r\nour documentation at: https://pip.pypa.io/en/latest/development/#adding-a-news-entry\r\n-->\r\n\r\n\r\nFor https://github.com/pypa/pip/issues/4497.\r\n\r\nThis doesn't reduce the _total_ build time of all jobs, but rather aims to reduce the _start-to-finish_ waiting time for a whole build by making better use of parallel jobs.\r\n\r\n* Currently, the CI takes about 35 minutes to run (start-to-finish), because the PyPy3 job takes nearly 35 minutes to run. This is the main bottleneck (in start-to-finish running times).\r\nhttps://travis-ci.org/pypa/pip/builds/382752906\r\n\r\n   * The PyPy job takes about 24 minutes, the next slowest\r\n\r\n* In this PR, the 50 slowest functional tests PyPy3 have been marked with `@pytest.mark.pypy_slow`.\r\n\r\n* New `pypy-slow` and `pypy3-slow` build jobs have been added to the matrix\r\n\r\n* These 50 slow ones are run in there, and to share more of the load, those with `@pytest.mark.network`\r\n\r\n* The unit tests, and the remaining functional tests, are run in the `pypy` and `pypy3` jobs\r\n\r\n* Based on https://docs.pytest.org/en/latest/example/simple.html#control-skipping-of-tests-according-to-command-line-option\r\n\r\nAlso:\r\n\r\n* I noticed the CPython 3.5 job sometimes takes up to 5 minutes longer than 3.4, so move the slower one first\r\n\r\n* Finally, [#dropthedot](https://twitter.com/search?q=%23dropthedot): use `pytest` rather than `pytest` https://docs.pytest.org/en/latest/faq.html#why-can-i-use-both-pytest-and-py-test-commands\r\n\r\nThis reduces the start-to-finish time from 32/35/38 minutes (last three builds on master) to 27/30/31 minutes (these three commits on my branch) or 22 minutes (this PR build).\r\n\r\nWould something along these lines be useful?\r\n\r\n(I've not added a news file fragment, let me know if needed.)","created_at":"2018-05-24T10:46:04Z","updated_at":"2018-05-25T17:03:02Z","closed_at":null,"merged_at":null,"merge_commit_sha":"6c9efd8f47ea4430ea5a6023a0acf27db52fdeee","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":634454122,"url":"https://api.github.com/repos/pypa/pip/labels/C:%20automation","name":"C: automation","color":"0052cc","default":false},{"id":83514,"url":"https://api.github.com/repos/pypa/pip/labels/C:%20tests","name":"C: tests","color":"0052cc","default":false},{"id":634500093,"url":"https://api.github.com/repos/pypa/pip/labels/T:%20DevOps","name":"T: DevOps","color":"fef2c0","default":false},{"id":564349503,"url":"https://api.github.com/repos/pypa/pip/labels/trivial","name":"trivial","color":"eeeeee","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/pypa/pip/pulls/5436/commits","review_comments_url":"https://api.github.com/repos/pypa/pip/pulls/5436/comments","review_comment_url":"https://api.github.com/repos/pypa/pip/pulls/comments{/number}","comments_url":"https://api.github.com/repos/pypa/pip/issues/5436/comments","statuses_url":"https://api.github.com/repos/pypa/pip/statuses/c3d1437498965753d095aea170272930ca7149ab","head":{"label":"hugovk:split-pypy-tests","ref":"split-pypy-tests","sha":"c3d1437498965753d095aea170272930ca7149ab","user":{"login":"hugovk","id":1324225,"avatar_url":"https://avatars2.githubusercontent.com/u/1324225?v=4","gravatar_id":"","url":"https://api.github.com/users/hugovk","html_url":"https://github.com/hugovk","followers_url":"https://api.github.com/users/hugovk/followers","following_url":"https://api.github.com/users/hugovk/following{/other_user}","gists_url":"https://api.github.com/users/hugovk/gists{/gist_id}","starred_url":"https://api.github.com/users/hugovk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hugovk/subscriptions","organizations_url":"https://api.github.com/users/hugovk/orgs","repos_url":"https://api.github.com/users/hugovk/repos","events_url":"https://api.github.com/users/hugovk/events{/privacy}","received_events_url":"https://api.github.com/users/hugovk/received_events","type":"User","site_admin":false},"repo":{"id":79130550,"name":"pip","full_name":"hugovk/pip","owner":{"login":"hugovk","id":1324225,"avatar_url":"https://avatars2.githubusercontent.com/u/1324225?v=4","gravatar_id":"","url":"https://api.github.com/users/hugovk","html_url":"https://github.com/hugovk","followers_url":"https://api.github.com/users/hugovk/followers","following_url":"https://api.github.com/users/hugovk/following{/other_user}","gists_url":"https://api.github.com/users/hugovk/gists{/gist_id}","starred_url":"https://api.github.com/users/hugovk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hugovk/subscriptions","organizations_url":"https://api.github.com/users/hugovk/orgs","repos_url":"https://api.github.com/users/hugovk/repos","events_url":"https://api.github.com/users/hugovk/events{/privacy}","received_events_url":"https://api.github.com/users/hugovk/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/hugovk/pip","description":"The PyPA recommended tool for installing Python packages","fork":true,"url":"https://api.github.com/repos/hugovk/pip","forks_url":"https://api.github.com/repos/hugovk/pip/forks","keys_url":"https://api.github.com/repos/hugovk/pip/keys{/key_id}","collaborators_url":"https://api.github.com/repos/hugovk/pip/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/hugovk/pip/teams","hooks_url":"https://api.github.com/repos/hugovk/pip/hooks","issue_events_url":"https://api.github.com/repos/hugovk/pip/issues/events{/number}","events_url":"https://api.github.com/repos/hugovk/pip/events","assignees_url":"https://api.github.com/repos/hugovk/pip/assignees{/user}","branches_url":"https://api.github.com/repos/hugovk/pip/branches{/branch}","tags_url":"https://api.github.com/repos/hugovk/pip/tags","blobs_url":"https://api.github.com/repos/hugovk/pip/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/hugovk/pip/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/hugovk/pip/git/refs{/sha}","trees_url":"https://api.github.com/repos/hugovk/pip/git/trees{/sha}","statuses_url":"https://api.github.com/repos/hugovk/pip/statuses/{sha}","languages_url":"https://api.github.com/repos/hugovk/pip/languages","stargazers_url":"https://api.github.com/repos/hugovk/pip/stargazers","contributors_url":"https://api.github.com/repos/hugovk/pip/contributors","subscribers_url":"https://api.github.com/repos/hugovk/pip/subscribers","subscription_url":"https://api.github.com/repos/hugovk/pip/subscription","commits_url":"https://api.github.com/repos/hugovk/pip/commits{/sha}","git_commits_url":"https://api.github.com/repos/hugovk/pip/git/commits{/sha}","comments_url":"https://api.github.com/repos/hugovk/pip/comments{/number}","issue_comment_url":"https://api.github.com/repos/hugovk/pip/issues/comments{/number}","contents_url":"https://api.github.com/repos/hugovk/pip/contents/{+path}","compare_url":"https://api.github.com/repos/hugovk/pip/compare/{base}...{head}","merges_url":"https://api.github.com/repos/hugovk/pip/merges","archive_url":"https://api.github.com/repos/hugovk/pip/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/hugovk/pip/downloads","issues_url":"https://api.github.com/repos/hugovk/pip/issues{/number}","pulls_url":"https://api.github.com/repos/hugovk/pip/pulls{/number}","milestones_url":"https://api.github.com/repos/hugovk/pip/milestones{/number}","notifications_url":"https://api.github.com/repos/hugovk/pip/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/hugovk/pip/labels{/name}","releases_url":"https://api.github.com/repos/hugovk/pip/releases{/id}","deployments_url":"https://api.github.com/repos/hugovk/pip/deployments","created_at":"2017-01-16T15:15:15Z","updated_at":"2018-05-22T13:23:13Z","pushed_at":"2018-05-25T10:43:15Z","git_url":"git://github.com/hugovk/pip.git","ssh_url":"git@github.com:hugovk/pip.git","clone_url":"https://github.com/hugovk/pip.git","svn_url":"https://github.com/hugovk/pip","homepage":"https://pip.pypa.io/","size":47984,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit"},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"pypa:master","ref":"master","sha":"8619e3edea410606b4449d10175a89bdda0936c8","user":{"login":"pypa","id":647025,"avatar_url":"https://avatars2.githubusercontent.com/u/647025?v=4","gravatar_id":"","url":"https://api.github.com/users/pypa","html_url":"https://github.com/pypa","followers_url":"https://api.github.com/users/pypa/followers","following_url":"https://api.github.com/users/pypa/following{/other_user}","gists_url":"https://api.github.com/users/pypa/gists{/gist_id}","starred_url":"https://api.github.com/users/pypa/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pypa/subscriptions","organizations_url":"https://api.github.com/users/pypa/orgs","repos_url":"https://api.github.com/users/pypa/repos","events_url":"https://api.github.com/users/pypa/events{/privacy}","received_events_url":"https://api.github.com/users/pypa/received_events","type":"Organization","site_admin":false},"repo":{"id":1446467,"name":"pip","full_name":"pypa/pip","owner":{"login":"pypa","id":647025,"avatar_url":"https://avatars2.githubusercontent.com/u/647025?v=4","gravatar_id":"","url":"https://api.github.com/users/pypa","html_url":"https://github.com/pypa","followers_url":"https://api.github.com/users/pypa/followers","following_url":"https://api.github.com/users/pypa/following{/other_user}","gists_url":"https://api.github.com/users/pypa/gists{/gist_id}","starred_url":"https://api.github.com/users/pypa/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pypa/subscriptions","organizations_url":"https://api.github.com/users/pypa/orgs","repos_url":"https://api.github.com/users/pypa/repos","events_url":"https://api.github.com/users/pypa/events{/privacy}","received_events_url":"https://api.github.com/users/pypa/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/pypa/pip","description":"The PyPA recommended tool for installing Python packages","fork":false,"url":"https://api.github.com/repos/pypa/pip","forks_url":"https://api.github.com/repos/pypa/pip/forks","keys_url":"https://api.github.com/repos/pypa/pip/keys{/key_id}","collaborators_url":"https://api.github.com/repos/pypa/pip/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/pypa/pip/teams","hooks_url":"https://api.github.com/repos/pypa/pip/hooks","issue_events_url":"https://api.github.com/repos/pypa/pip/issues/events{/number}","events_url":"https://api.github.com/repos/pypa/pip/events","assignees_url":"https://api.github.com/repos/pypa/pip/assignees{/user}","branches_url":"https://api.github.com/repos/pypa/pip/branches{/branch}","tags_url":"https://api.github.com/repos/pypa/pip/tags","blobs_url":"https://api.github.com/repos/pypa/pip/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/pypa/pip/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/pypa/pip/git/refs{/sha}","trees_url":"https://api.github.com/repos/pypa/pip/git/trees{/sha}","statuses_url":"https://api.github.com/repos/pypa/pip/statuses/{sha}","languages_url":"https://api.github.com/repos/pypa/pip/languages","stargazers_url":"https://api.github.com/repos/pypa/pip/stargazers","contributors_url":"https://api.github.com/repos/pypa/pip/contributors","subscribers_url":"https://api.github.com/repos/pypa/pip/subscribers","subscription_url":"https://api.github.com/repos/pypa/pip/subscription","commits_url":"https://api.github.com/repos/pypa/pip/commits{/sha}","git_commits_url":"https://api.github.com/repos/pypa/pip/git/commits{/sha}","comments_url":"https://api.github.com/repos/pypa/pip/comments{/number}","issue_comment_url":"https://api.github.com/repos/pypa/pip/issues/comments{/number}","contents_url":"https://api.github.com/repos/pypa/pip/contents/{+path}","compare_url":"https://api.github.com/repos/pypa/pip/compare/{base}...{head}","merges_url":"https://api.github.com/repos/pypa/pip/merges","archive_url":"https://api.github.com/repos/pypa/pip/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/pypa/pip/downloads","issues_url":"https://api.github.com/repos/pypa/pip/issues{/number}","pulls_url":"https://api.github.com/repos/pypa/pip/pulls{/number}","milestones_url":"https://api.github.com/repos/pypa/pip/milestones{/number}","notifications_url":"https://api.github.com/repos/pypa/pip/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/pypa/pip/labels{/name}","releases_url":"https://api.github.com/repos/pypa/pip/releases{/id}","deployments_url":"https://api.github.com/repos/pypa/pip/deployments","created_at":"2011-03-06T14:30:46Z","updated_at":"2018-05-25T14:27:25Z","pushed_at":"2018-05-25T10:43:17Z","git_url":"git://github.com/pypa/pip.git","ssh_url":"git@github.com:pypa/pip.git","clone_url":"https://github.com/pypa/pip.git","svn_url":"https://github.com/pypa/pip","homepage":"https://pip.pypa.io/","size":51093,"stargazers_count":4451,"watchers_count":4451,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":1514,"mirror_url":null,"archived":false,"open_issues_count":513,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit"},"forks":1514,"open_issues":513,"watchers":4451,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/pypa/pip/pulls/5436"},"html":{"href":"https://github.com/pypa/pip/pull/5436"},"issue":{"href":"https://api.github.com/repos/pypa/pip/issues/5436"},"comments":{"href":"https://api.github.com/repos/pypa/pip/issues/5436/comments"},"review_comments":{"href":"https://api.github.com/repos/pypa/pip/pulls/5436/comments"},"review_comment":{"href":"https://api.github.com/repos/pypa/pip/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/pypa/pip/pulls/5436/commits"},"statuses":{"href":"https://api.github.com/repos/pypa/pip/statuses/c3d1437498965753d095aea170272930ca7149ab"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"pradyunsg"}}