{"action":"created","comment":{"url":"https://api.github.com/repos/pydata/pandas/pulls/comments/53656345","id":53656345,"diff_hunk":"@@ -2636,7 +2630,145 @@ def test_eof_states(self):\n                           StringIO(data), escapechar='\\\\')\n \n \n-class TestPythonParser(ParserTests, tm.TestCase):\n+class CompressionTests(object):\n+    def test_zip(self):\n+        try:\n+            import zipfile\n+        except ImportError:\n+            raise nose.SkipTest('need zipfile to run')\n+\n+        with open(self.csv1, 'rb') as data_file:\n+            data = data_file.read()\n+            expected = self.read_csv(self.csv1)\n+\n+            with tm.ensure_clean() as path:\n+                file_name = 'test_file'\n+                tmp = zipfile.ZipFile(path, mode='w')\n+                tmp.writestr(file_name, data)\n+                tmp.close()\n+\n+                result = self.read_csv(path, compression='zip')\n+                tm.assert_frame_equal(result, expected)\n+\n+                if self.engine is not 'python':\n+                    with open(path, 'rb') as f:\n+                        result = self.read_csv(f, compression='zip')\n+                        tm.assert_frame_equal(result, expected)\n+\n+            with tm.ensure_clean() as path:\n+                file_names = ['test_file', 'second_file']\n+                tmp = zipfile.ZipFile(path, mode='w')\n+                for file_name in file_names:\n+                    tmp.writestr(file_name, data)\n+                tmp.close()\n+\n+                self.assertRaises(ValueError, self.read_csv,\n+                                  path, compression='zip')\n+\n+            with tm.ensure_clean() as path:\n+                tmp = zipfile.ZipFile(path, mode='w')\n+                tmp.close()\n+\n+                self.assertRaises(ValueError, self.read_csv,\n+                                  path, compression='zip')\n+            with tm.ensure_clean() as path:\n+                with open(path, 'wb') as f:\n+                    self.assertRaises(zipfile.BadZipfile,\n+                                      self.read_csv,\n+                                      f, compression='zip')\n+\n+    def test_gzip(self):\n+        try:\n+            import gzip\n+        except ImportError:\n+            raise nose.SkipTest('need gzip to run')\n+\n+        with open(self.csv1, 'rb') as data_file:\n+            data = data_file.read()\n+            expected = self.read_csv(self.csv1)\n+            with tm.ensure_clean() as path:\n+                tmp = gzip.GzipFile(path, mode='wb')\n+                tmp.write(data)\n+                tmp.close()\n+\n+                result = self.read_csv(path, compression='gzip')\n+                tm.assert_frame_equal(result, expected)\n+\n+                with open(path, 'rb') as f:\n+                    result = self.read_csv(f, compression='gzip')\n+                    tm.assert_frame_equal(result, expected)\n+\n+    def test_bz2(self):\n+        try:\n+            import bz2\n+        except ImportError:\n+            raise nose.SkipTest('need bz2 to run')\n+\n+        with open(self.csv1, 'rb') as data_file:\n+            data = data_file.read()\n+            expected = self.read_csv(self.csv1)\n+            with tm.ensure_clean() as path:\n+                tmp = bz2.BZ2File(path, mode='wb')\n+                tmp.write(data)\n+                tmp.close()\n+\n+                result = self.read_csv(path, compression='bz2')\n+                tm.assert_frame_equal(result, expected)\n+\n+                self.assertRaises(ValueError, self.read_csv,\n+                                  path, compression='bz3')\n+\n+                with open(path, 'rb') as fin:\n+                    if compat.PY3:\n+                        result = self.read_csv(fin, compression='bz2')\n+                        tm.assert_frame_equal(result, expected)\n+                    elif self.engine is not 'python':\n+                        self.assertRaises(ValueError, self.read_csv,\n+                                          fin, compression='bz2')\n+\n+    def test_decompression_regex_sep(self):\n+        try:\n+            import gzip\n+            import bz2\n+        except ImportError:\n+            raise nose.SkipTest('need gzip and bz2 to run')\n+\n+        with open(self.csv1, 'rb') as data_file:\n+            data = data_file.read()\n+            data = data.replace(b',', b'::')","path":"pandas/io/tests/test_parsers.py","position":171,"original_position":171,"commit_id":"4a679719192625633a44e02f82f5a9e98197d439","original_commit_id":"4a679719192625633a44e02f82f5a9e98197d439","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":"same here","created_at":"2016-02-22T17:06:13Z","updated_at":"2016-02-22T17:06:13Z","html_url":"https://github.com/pydata/pandas/pull/12175#discussion_r53656345","pull_request_url":"https://api.github.com/repos/pydata/pandas/pulls/12175","_links":{"self":{"href":"https://api.github.com/repos/pydata/pandas/pulls/comments/53656345"},"html":{"href":"https://github.com/pydata/pandas/pull/12175#discussion_r53656345"},"pull_request":{"href":"https://api.github.com/repos/pydata/pandas/pulls/12175"}}},"pull_request":{"url":"https://api.github.com/repos/pydata/pandas/pulls/12175","id":57659409,"html_url":"https://github.com/pydata/pandas/pull/12175","diff_url":"https://github.com/pydata/pandas/pull/12175.diff","patch_url":"https://github.com/pydata/pandas/pull/12175.patch","issue_url":"https://api.github.com/repos/pydata/pandas/issues/12175","number":12175,"state":"open","locked":false,"title":"Add ZIP file decompression and TestCompression.","user":{"login":"lababidi","id":495399,"avatar_url":"https://avatars.githubusercontent.com/u/495399?v=3","gravatar_id":"","url":"https://api.github.com/users/lababidi","html_url":"https://github.com/lababidi","followers_url":"https://api.github.com/users/lababidi/followers","following_url":"https://api.github.com/users/lababidi/following{/other_user}","gists_url":"https://api.github.com/users/lababidi/gists{/gist_id}","starred_url":"https://api.github.com/users/lababidi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lababidi/subscriptions","organizations_url":"https://api.github.com/users/lababidi/orgs","repos_url":"https://api.github.com/users/lababidi/repos","events_url":"https://api.github.com/users/lababidi/events{/privacy}","received_events_url":"https://api.github.com/users/lababidi/received_events","type":"User","site_admin":false},"body":"Closes #11413","created_at":"2016-01-29T15:15:25Z","updated_at":"2016-02-22T17:06:13Z","closed_at":null,"merged_at":null,"merge_commit_sha":"f48e35defcc4e7d3d042895b5ccfaf745f2227b9","assignee":null,"milestone":{"url":"https://api.github.com/repos/pydata/pandas/milestones/38","html_url":"https://github.com/pydata/pandas/milestones/0.18.1","labels_url":"https://api.github.com/repos/pydata/pandas/milestones/38/labels","id":1570594,"number":38,"title":"0.18.1","description":"after 0.18.0 of course!","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":49,"closed_issues":2,"state":"open","created_at":"2016-02-08T15:29:59Z","updated_at":"2016-02-22T02:07:08Z","due_on":"2016-03-31T04:00:00Z","closed_at":null},"commits_url":"https://api.github.com/repos/pydata/pandas/pulls/12175/commits","review_comments_url":"https://api.github.com/repos/pydata/pandas/pulls/12175/comments","review_comment_url":"https://api.github.com/repos/pydata/pandas/pulls/comments{/number}","comments_url":"https://api.github.com/repos/pydata/pandas/issues/12175/comments","statuses_url":"https://api.github.com/repos/pydata/pandas/statuses/4a679719192625633a44e02f82f5a9e98197d439","head":{"label":"lababidi:feature_zip","ref":"feature_zip","sha":"4a679719192625633a44e02f82f5a9e98197d439","user":{"login":"lababidi","id":495399,"avatar_url":"https://avatars.githubusercontent.com/u/495399?v=3","gravatar_id":"","url":"https://api.github.com/users/lababidi","html_url":"https://github.com/lababidi","followers_url":"https://api.github.com/users/lababidi/followers","following_url":"https://api.github.com/users/lababidi/following{/other_user}","gists_url":"https://api.github.com/users/lababidi/gists{/gist_id}","starred_url":"https://api.github.com/users/lababidi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lababidi/subscriptions","organizations_url":"https://api.github.com/users/lababidi/orgs","repos_url":"https://api.github.com/users/lababidi/repos","events_url":"https://api.github.com/users/lababidi/events{/privacy}","received_events_url":"https://api.github.com/users/lababidi/received_events","type":"User","site_admin":false},"repo":{"id":50669226,"name":"pandas","full_name":"lababidi/pandas","owner":{"login":"lababidi","id":495399,"avatar_url":"https://avatars.githubusercontent.com/u/495399?v=3","gravatar_id":"","url":"https://api.github.com/users/lababidi","html_url":"https://github.com/lababidi","followers_url":"https://api.github.com/users/lababidi/followers","following_url":"https://api.github.com/users/lababidi/following{/other_user}","gists_url":"https://api.github.com/users/lababidi/gists{/gist_id}","starred_url":"https://api.github.com/users/lababidi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lababidi/subscriptions","organizations_url":"https://api.github.com/users/lababidi/orgs","repos_url":"https://api.github.com/users/lababidi/repos","events_url":"https://api.github.com/users/lababidi/events{/privacy}","received_events_url":"https://api.github.com/users/lababidi/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/lababidi/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/lababidi/pandas","forks_url":"https://api.github.com/repos/lababidi/pandas/forks","keys_url":"https://api.github.com/repos/lababidi/pandas/keys{/key_id}","collaborators_url":"https://api.github.com/repos/lababidi/pandas/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/lababidi/pandas/teams","hooks_url":"https://api.github.com/repos/lababidi/pandas/hooks","issue_events_url":"https://api.github.com/repos/lababidi/pandas/issues/events{/number}","events_url":"https://api.github.com/repos/lababidi/pandas/events","assignees_url":"https://api.github.com/repos/lababidi/pandas/assignees{/user}","branches_url":"https://api.github.com/repos/lababidi/pandas/branches{/branch}","tags_url":"https://api.github.com/repos/lababidi/pandas/tags","blobs_url":"https://api.github.com/repos/lababidi/pandas/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/lababidi/pandas/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/lababidi/pandas/git/refs{/sha}","trees_url":"https://api.github.com/repos/lababidi/pandas/git/trees{/sha}","statuses_url":"https://api.github.com/repos/lababidi/pandas/statuses/{sha}","languages_url":"https://api.github.com/repos/lababidi/pandas/languages","stargazers_url":"https://api.github.com/repos/lababidi/pandas/stargazers","contributors_url":"https://api.github.com/repos/lababidi/pandas/contributors","subscribers_url":"https://api.github.com/repos/lababidi/pandas/subscribers","subscription_url":"https://api.github.com/repos/lababidi/pandas/subscription","commits_url":"https://api.github.com/repos/lababidi/pandas/commits{/sha}","git_commits_url":"https://api.github.com/repos/lababidi/pandas/git/commits{/sha}","comments_url":"https://api.github.com/repos/lababidi/pandas/comments{/number}","issue_comment_url":"https://api.github.com/repos/lababidi/pandas/issues/comments{/number}","contents_url":"https://api.github.com/repos/lababidi/pandas/contents/{+path}","compare_url":"https://api.github.com/repos/lababidi/pandas/compare/{base}...{head}","merges_url":"https://api.github.com/repos/lababidi/pandas/merges","archive_url":"https://api.github.com/repos/lababidi/pandas/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/lababidi/pandas/downloads","issues_url":"https://api.github.com/repos/lababidi/pandas/issues{/number}","pulls_url":"https://api.github.com/repos/lababidi/pandas/pulls{/number}","milestones_url":"https://api.github.com/repos/lababidi/pandas/milestones{/number}","notifications_url":"https://api.github.com/repos/lababidi/pandas/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/lababidi/pandas/labels{/name}","releases_url":"https://api.github.com/repos/lababidi/pandas/releases{/id}","deployments_url":"https://api.github.com/repos/lababidi/pandas/deployments","created_at":"2016-01-29T14:58:31Z","updated_at":"2016-01-29T14:58:36Z","pushed_at":"2016-02-22T15:12:40Z","git_url":"git://github.com/lababidi/pandas.git","ssh_url":"git@github.com:lababidi/pandas.git","clone_url":"https://github.com/lababidi/pandas.git","svn_url":"https://github.com/lababidi/pandas","homepage":"http://pandas.pydata.org","size":74680,"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":"pydata:master","ref":"master","sha":"8975e7c8916ff459b1666465731a66a66472816e","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-02-22T16:43:59Z","pushed_at":"2016-02-22T16:50:42Z","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":135519,"stargazers_count":5752,"watchers_count":5752,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":2286,"mirror_url":null,"open_issues_count":1619,"forks":2286,"open_issues":1619,"watchers":5752,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/pydata/pandas/pulls/12175"},"html":{"href":"https://github.com/pydata/pandas/pull/12175"},"issue":{"href":"https://api.github.com/repos/pydata/pandas/issues/12175"},"comments":{"href":"https://api.github.com/repos/pydata/pandas/issues/12175/comments"},"review_comments":{"href":"https://api.github.com/repos/pydata/pandas/pulls/12175/comments"},"review_comment":{"href":"https://api.github.com/repos/pydata/pandas/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/pydata/pandas/pulls/12175/commits"},"statuses":{"href":"https://api.github.com/repos/pydata/pandas/statuses/4a679719192625633a44e02f82f5a9e98197d439"}}}}