{"action":"created","comment":{"url":"https://api.github.com/repos/sympy/sympy/pulls/comments/27833134","id":27833134,"diff_hunk":"@@ -2325,14 +2325,12 @@ def test_replace_map():\n     assert N == K\n \n def test_atoms():\n-    from sympy.abc import x\n     m = Matrix([[1, 2], [x, 1 - 1/x]])\n     assert m.atoms() == set([S(1),S(2),S(-1), x])\n     assert m.atoms(Symbol) == set([x])\n \n @slow\n def test_pinv():\n-    from sympy.abc import a, b, c, d","path":"sympy/matrices/tests/test_matrices.py","position":20,"original_position":20,"commit_id":"f3f2bbc0215dee306cad0e7b89a90070dacf9958","original_commit_id":"f3f2bbc0215dee306cad0e7b89a90070dacf9958","user":{"login":"toolforger","id":915906,"avatar_url":"https://avatars.githubusercontent.com/u/915906?v=3","gravatar_id":"","url":"https://api.github.com/users/toolforger","html_url":"https://github.com/toolforger","followers_url":"https://api.github.com/users/toolforger/followers","following_url":"https://api.github.com/users/toolforger/following{/other_user}","gists_url":"https://api.github.com/users/toolforger/gists{/gist_id}","starred_url":"https://api.github.com/users/toolforger/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/toolforger/subscriptions","organizations_url":"https://api.github.com/users/toolforger/orgs","repos_url":"https://api.github.com/users/toolforger/repos","events_url":"https://api.github.com/users/toolforger/events{/privacy}","received_events_url":"https://api.github.com/users/toolforger/received_events","type":"User","site_admin":false},"body":"... it's okay to import locally.\r\nIt's not really important either way though. The knee-jerk reaction is \"avoid gratuitious change because we want to be able to pinpoint semantic changes in the history\", but then imports are mere housekeeping so that particular history isn't very important.","created_at":"2015-04-06T21:36:52Z","updated_at":"2015-04-06T21:36:52Z","html_url":"https://github.com/sympy/sympy/pull/9221#discussion_r27833134","pull_request_url":"https://api.github.com/repos/sympy/sympy/pulls/9221","_links":{"self":{"href":"https://api.github.com/repos/sympy/sympy/pulls/comments/27833134"},"html":{"href":"https://github.com/sympy/sympy/pull/9221#discussion_r27833134"},"pull_request":{"href":"https://api.github.com/repos/sympy/sympy/pulls/9221"}}},"pull_request":{"url":"https://api.github.com/repos/sympy/sympy/pulls/9221","id":32217538,"html_url":"https://github.com/sympy/sympy/pull/9221","diff_url":"https://github.com/sympy/sympy/pull/9221.diff","patch_url":"https://github.com/sympy/sympy/pull/9221.patch","issue_url":"https://api.github.com/repos/sympy/sympy/issues/9221","number":9221,"state":"open","locked":false,"title":"Humanise @slow","user":{"login":"pzrq","id":1217010,"avatar_url":"https://avatars.githubusercontent.com/u/1217010?v=3","gravatar_id":"","url":"https://api.github.com/users/pzrq","html_url":"https://github.com/pzrq","followers_url":"https://api.github.com/users/pzrq/followers","following_url":"https://api.github.com/users/pzrq/following{/other_user}","gists_url":"https://api.github.com/users/pzrq/gists{/gist_id}","starred_url":"https://api.github.com/users/pzrq/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pzrq/subscriptions","organizations_url":"https://api.github.com/users/pzrq/orgs","repos_url":"https://api.github.com/users/pzrq/repos","events_url":"https://api.github.com/users/pzrq/events{/privacy}","received_events_url":"https://api.github.com/users/pzrq/received_events","type":"User","site_admin":false},"body":"This builds on the discussion in https://github.com/sympy/sympy/pull/9197\r\n\r\nBasically the idea is we should be able to make a better trade off when running the majority of the test suite on a local machine for refactoring or development (and have Travis let us know about the really slow final 1%, or alternately use `sympy.test(slow=True)`).\r\n\r\nThe current trade off is the `@slow` tests on master, after excluding the `ON_TRAVIS` extra-slow tests, take around one hour to run, and the main test suite also takes around one hour to run, i.e. **around 2 hours total** if you really want to know what the Travis output is for at least one Python interpreter before sending it to Travis. \r\n\r\nI think a better trade off would be to make around 1% of those, which happens to be around 49 additional tests, also `@slow`, which reduces the test suite run time to **around 30 minutes**. This branch also finds several tests are probably not worth leaving as `@slow` in the context of their modules where other tests often take >10x longer to run, and removes those `@slow`.\r\n\r\nTesting was performed under OSX Python 2.7, Late 2012 Mac Mini, 2.3GHz Intel Core i7, 16GB RAM.\r\n\r\nThis branch also includes additions to the test framework which print the slowest 3 tests if they took more than 10 seconds each to run, and the symmetric print that if a `@slow` test runs in under 100ms it is considered fast, though others are of course free to determine that something slower than 100ms is fast enough given the context of what is being attempted and that having test coverage by default is more important. 10s and 0.1s (100ms) are based on:\r\nhttp://www.nngroup.com/articles/response-times-3-important-limits/\r\n\r\nObviously there are exceptions to these, they are hopefully in the commit messages though I would welcome feedback from anyone else in case I've inadvertently made some things `@slow` that really should not be or if there are any other concerns.\r\n\r\nMy plan is to use this branch whether or not it is ultimately merged in, as I have several other SymPy bugs and regressions I'd like to try to fix, so I expect it to work out as a better trade off for me even if not for anyone else. That said hopefully it is useful :)","created_at":"2015-03-30T11:22:39Z","updated_at":"2015-04-06T21:36:52Z","closed_at":null,"merged_at":null,"merge_commit_sha":"7505f6cd601f5ceb30f9c268110239b2ecb2e568","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/sympy/sympy/pulls/9221/commits","review_comments_url":"https://api.github.com/repos/sympy/sympy/pulls/9221/comments","review_comment_url":"https://api.github.com/repos/sympy/sympy/pulls/comments{/number}","comments_url":"https://api.github.com/repos/sympy/sympy/issues/9221/comments","statuses_url":"https://api.github.com/repos/sympy/sympy/statuses/f3f2bbc0215dee306cad0e7b89a90070dacf9958","head":{"label":"mathspace:humanise-slow","ref":"humanise-slow","sha":"f3f2bbc0215dee306cad0e7b89a90070dacf9958","user":{"login":"mathspace","id":6166775,"avatar_url":"https://avatars.githubusercontent.com/u/6166775?v=3","gravatar_id":"","url":"https://api.github.com/users/mathspace","html_url":"https://github.com/mathspace","followers_url":"https://api.github.com/users/mathspace/followers","following_url":"https://api.github.com/users/mathspace/following{/other_user}","gists_url":"https://api.github.com/users/mathspace/gists{/gist_id}","starred_url":"https://api.github.com/users/mathspace/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mathspace/subscriptions","organizations_url":"https://api.github.com/users/mathspace/orgs","repos_url":"https://api.github.com/users/mathspace/repos","events_url":"https://api.github.com/users/mathspace/events{/privacy}","received_events_url":"https://api.github.com/users/mathspace/received_events","type":"Organization","site_admin":false},"repo":{"id":30692827,"name":"sympy","full_name":"mathspace/sympy","owner":{"login":"mathspace","id":6166775,"avatar_url":"https://avatars.githubusercontent.com/u/6166775?v=3","gravatar_id":"","url":"https://api.github.com/users/mathspace","html_url":"https://github.com/mathspace","followers_url":"https://api.github.com/users/mathspace/followers","following_url":"https://api.github.com/users/mathspace/following{/other_user}","gists_url":"https://api.github.com/users/mathspace/gists{/gist_id}","starred_url":"https://api.github.com/users/mathspace/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mathspace/subscriptions","organizations_url":"https://api.github.com/users/mathspace/orgs","repos_url":"https://api.github.com/users/mathspace/repos","events_url":"https://api.github.com/users/mathspace/events{/privacy}","received_events_url":"https://api.github.com/users/mathspace/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/mathspace/sympy","description":"A computer algebra system written in pure Python","fork":true,"url":"https://api.github.com/repos/mathspace/sympy","forks_url":"https://api.github.com/repos/mathspace/sympy/forks","keys_url":"https://api.github.com/repos/mathspace/sympy/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mathspace/sympy/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mathspace/sympy/teams","hooks_url":"https://api.github.com/repos/mathspace/sympy/hooks","issue_events_url":"https://api.github.com/repos/mathspace/sympy/issues/events{/number}","events_url":"https://api.github.com/repos/mathspace/sympy/events","assignees_url":"https://api.github.com/repos/mathspace/sympy/assignees{/user}","branches_url":"https://api.github.com/repos/mathspace/sympy/branches{/branch}","tags_url":"https://api.github.com/repos/mathspace/sympy/tags","blobs_url":"https://api.github.com/repos/mathspace/sympy/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mathspace/sympy/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mathspace/sympy/git/refs{/sha}","trees_url":"https://api.github.com/repos/mathspace/sympy/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mathspace/sympy/statuses/{sha}","languages_url":"https://api.github.com/repos/mathspace/sympy/languages","stargazers_url":"https://api.github.com/repos/mathspace/sympy/stargazers","contributors_url":"https://api.github.com/repos/mathspace/sympy/contributors","subscribers_url":"https://api.github.com/repos/mathspace/sympy/subscribers","subscription_url":"https://api.github.com/repos/mathspace/sympy/subscription","commits_url":"https://api.github.com/repos/mathspace/sympy/commits{/sha}","git_commits_url":"https://api.github.com/repos/mathspace/sympy/git/commits{/sha}","comments_url":"https://api.github.com/repos/mathspace/sympy/comments{/number}","issue_comment_url":"https://api.github.com/repos/mathspace/sympy/issues/comments{/number}","contents_url":"https://api.github.com/repos/mathspace/sympy/contents/{+path}","compare_url":"https://api.github.com/repos/mathspace/sympy/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mathspace/sympy/merges","archive_url":"https://api.github.com/repos/mathspace/sympy/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mathspace/sympy/downloads","issues_url":"https://api.github.com/repos/mathspace/sympy/issues{/number}","pulls_url":"https://api.github.com/repos/mathspace/sympy/pulls{/number}","milestones_url":"https://api.github.com/repos/mathspace/sympy/milestones{/number}","notifications_url":"https://api.github.com/repos/mathspace/sympy/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mathspace/sympy/labels{/name}","releases_url":"https://api.github.com/repos/mathspace/sympy/releases{/id}","created_at":"2015-02-12T08:26:27Z","updated_at":"2015-04-02T06:30:32Z","pushed_at":"2015-04-02T06:30:28Z","git_url":"git://github.com/mathspace/sympy.git","ssh_url":"git@github.com:mathspace/sympy.git","clone_url":"https://github.com/mathspace/sympy.git","svn_url":"https://github.com/mathspace/sympy","homepage":"http://sympy.org/","size":68490,"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":"sympy:master","ref":"master","sha":"0e9e62c2890e480845bed8c297dee554a8defc48","user":{"login":"sympy","id":260832,"avatar_url":"https://avatars.githubusercontent.com/u/260832?v=3","gravatar_id":"","url":"https://api.github.com/users/sympy","html_url":"https://github.com/sympy","followers_url":"https://api.github.com/users/sympy/followers","following_url":"https://api.github.com/users/sympy/following{/other_user}","gists_url":"https://api.github.com/users/sympy/gists{/gist_id}","starred_url":"https://api.github.com/users/sympy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sympy/subscriptions","organizations_url":"https://api.github.com/users/sympy/orgs","repos_url":"https://api.github.com/users/sympy/repos","events_url":"https://api.github.com/users/sympy/events{/privacy}","received_events_url":"https://api.github.com/users/sympy/received_events","type":"Organization","site_admin":false},"repo":{"id":640534,"name":"sympy","full_name":"sympy/sympy","owner":{"login":"sympy","id":260832,"avatar_url":"https://avatars.githubusercontent.com/u/260832?v=3","gravatar_id":"","url":"https://api.github.com/users/sympy","html_url":"https://github.com/sympy","followers_url":"https://api.github.com/users/sympy/followers","following_url":"https://api.github.com/users/sympy/following{/other_user}","gists_url":"https://api.github.com/users/sympy/gists{/gist_id}","starred_url":"https://api.github.com/users/sympy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sympy/subscriptions","organizations_url":"https://api.github.com/users/sympy/orgs","repos_url":"https://api.github.com/users/sympy/repos","events_url":"https://api.github.com/users/sympy/events{/privacy}","received_events_url":"https://api.github.com/users/sympy/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/sympy/sympy","description":"A computer algebra system written in pure Python","fork":false,"url":"https://api.github.com/repos/sympy/sympy","forks_url":"https://api.github.com/repos/sympy/sympy/forks","keys_url":"https://api.github.com/repos/sympy/sympy/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sympy/sympy/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sympy/sympy/teams","hooks_url":"https://api.github.com/repos/sympy/sympy/hooks","issue_events_url":"https://api.github.com/repos/sympy/sympy/issues/events{/number}","events_url":"https://api.github.com/repos/sympy/sympy/events","assignees_url":"https://api.github.com/repos/sympy/sympy/assignees{/user}","branches_url":"https://api.github.com/repos/sympy/sympy/branches{/branch}","tags_url":"https://api.github.com/repos/sympy/sympy/tags","blobs_url":"https://api.github.com/repos/sympy/sympy/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sympy/sympy/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sympy/sympy/git/refs{/sha}","trees_url":"https://api.github.com/repos/sympy/sympy/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sympy/sympy/statuses/{sha}","languages_url":"https://api.github.com/repos/sympy/sympy/languages","stargazers_url":"https://api.github.com/repos/sympy/sympy/stargazers","contributors_url":"https://api.github.com/repos/sympy/sympy/contributors","subscribers_url":"https://api.github.com/repos/sympy/sympy/subscribers","subscription_url":"https://api.github.com/repos/sympy/sympy/subscription","commits_url":"https://api.github.com/repos/sympy/sympy/commits{/sha}","git_commits_url":"https://api.github.com/repos/sympy/sympy/git/commits{/sha}","comments_url":"https://api.github.com/repos/sympy/sympy/comments{/number}","issue_comment_url":"https://api.github.com/repos/sympy/sympy/issues/comments{/number}","contents_url":"https://api.github.com/repos/sympy/sympy/contents/{+path}","compare_url":"https://api.github.com/repos/sympy/sympy/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sympy/sympy/merges","archive_url":"https://api.github.com/repos/sympy/sympy/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sympy/sympy/downloads","issues_url":"https://api.github.com/repos/sympy/sympy/issues{/number}","pulls_url":"https://api.github.com/repos/sympy/sympy/pulls{/number}","milestones_url":"https://api.github.com/repos/sympy/sympy/milestones{/number}","notifications_url":"https://api.github.com/repos/sympy/sympy/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sympy/sympy/labels{/name}","releases_url":"https://api.github.com/repos/sympy/sympy/releases{/id}","created_at":"2010-04-30T20:37:14Z","updated_at":"2015-04-06T17:40:15Z","pushed_at":"2015-04-06T17:40:13Z","git_url":"git://github.com/sympy/sympy.git","ssh_url":"git@github.com:sympy/sympy.git","clone_url":"https://github.com/sympy/sympy.git","svn_url":"https://github.com/sympy/sympy","homepage":"http://sympy.org/","size":146843,"stargazers_count":2050,"watchers_count":2050,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1011,"mirror_url":null,"open_issues_count":1901,"forks":1011,"open_issues":1901,"watchers":2050,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/sympy/sympy/pulls/9221"},"html":{"href":"https://github.com/sympy/sympy/pull/9221"},"issue":{"href":"https://api.github.com/repos/sympy/sympy/issues/9221"},"comments":{"href":"https://api.github.com/repos/sympy/sympy/issues/9221/comments"},"review_comments":{"href":"https://api.github.com/repos/sympy/sympy/pulls/9221/comments"},"review_comment":{"href":"https://api.github.com/repos/sympy/sympy/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/sympy/sympy/pulls/9221/commits"},"statuses":{"href":"https://api.github.com/repos/sympy/sympy/statuses/f3f2bbc0215dee306cad0e7b89a90070dacf9958"}}}}