]> granicus.if.org Git - python/commitdiff
Patch #1355023: support whence argument for GzipFile.seek.
authorMartin v. Löwis <martin@v.loewis.de>
Sun, 12 Nov 2006 10:41:39 +0000 (10:41 +0000)
committerMartin v. Löwis <martin@v.loewis.de>
Sun, 12 Nov 2006 10:41:39 +0000 (10:41 +0000)
Lib/gzip.py
Lib/test/test_gzip.py
Misc/NEWS

index 0bf29e86bb5dcc4d521e21eb5bc891c91fb0a729..c37d5a18c27033e03b4747f88ae796b533e7e30d 100644 (file)
@@ -371,7 +371,12 @@ class GzipFile:
         self.extrasize = 0
         self.offset = 0
 
-    def seek(self, offset):
+    def seek(self, offset, whence=0):
+        if whence:
+            if whence == 1:
+                offset = self.offset + offset
+            else:
+                raise ValueError('Seek from end not supported')
         if self.mode == WRITE:
             if offset < self.offset:
                 raise IOError('Negative seek in write mode')
index 0f8e03e0a45cb3b49391b3fa6c78108b3467ff74..9989a92b70ac7dd82118e551c0afd4409fa81d66 100644 (file)
@@ -128,6 +128,17 @@ class TestGzip(unittest.TestCase):
             f.seek(newpos)  # positive seek
         f.close()
 
+    def test_seek_whence(self):
+        self.test_write()
+        # Try seek(whence=1), read test
+
+        f = gzip.GzipFile(self.filename)
+        f.read(10)
+        f.seek(10, whence=1)
+        y = f.read(10)
+        f.close()
+        self.assertEquals(y, data1[20:30])
+        
     def test_seek_write(self):
         # Try seek, write test
         f = gzip.GzipFile(self.filename, 'w')
index 3062bd528a4d073fec398ca4a9d92e579c6d2903..39b698515a96bae1ccbaa4a47621c0337c4ff1a1 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -96,6 +96,8 @@ Core and builtins
 Library
 -------
 
+- Patch #1355023: support whence argument for GzipFile.seek.
+
 - Patch #1065257: Support passing open files as body in 
   HTTPConnection.request().