diff options
author | Tim Peters <tim.peters@gmail.com> | 2004-07-27 21:02:02 (GMT) |
---|---|---|
committer | Tim Peters <tim.peters@gmail.com> | 2004-07-27 21:02:02 (GMT) |
commit | 5cfb05eef04707679077a45ebbe2b096840261a0 (patch) | |
tree | 57bcd4e40f31a8b3a36bffee8931e6244006bec1 | |
parent | fe393f47c662c307d2d3e90f785edf5821d54a8d (diff) | |
download | cpython-5cfb05eef04707679077a45ebbe2b096840261a0.zip cpython-5cfb05eef04707679077a45ebbe2b096840261a0.tar.gz cpython-5cfb05eef04707679077a45ebbe2b096840261a0.tar.bz2 |
Added a new fileno() method. ZODB's repozo.py wants this so it can
apply os.fsync() to the GzipFile backup files it creates.
-rw-r--r-- | Lib/gzip.py | 10 | ||||
-rw-r--r-- | Lib/test/test_gzip.py | 10 | ||||
-rw-r--r-- | Misc/NEWS | 4 |
3 files changed, 22 insertions, 2 deletions
diff --git a/Lib/gzip.py b/Lib/gzip.py index d51b7db..9cab995 100644 --- a/Lib/gzip.py +++ b/Lib/gzip.py @@ -5,7 +5,7 @@ but random access is not allowed.""" # based on Andrew Kuchling's minigzip.py distributed with the zlib module -import struct, sys, time +import os, struct, sys, time import zlib import __builtin__ @@ -334,6 +334,14 @@ class GzipFile: def flush(self): self.fileobj.flush() + def fileno(self): + """Invoke the underlying file object's fileno() method. + + This will raise AttributeError if the underlying file object + doesn't support fileno(). + """ + return self.fileobj.fileno() + def isatty(self): return False diff --git a/Lib/test/test_gzip.py b/Lib/test/test_gzip.py index bb4ed49..81a4865 100644 --- a/Lib/test/test_gzip.py +++ b/Lib/test/test_gzip.py @@ -16,8 +16,16 @@ data2 = """/* zlibmodule.c -- gzip-compatible data compression */ /* See http://www.winimage.com/zLibDll for Windows */ """ -f = gzip.GzipFile(filename, 'wb') ; f.write(data1 * 50) ; f.close() +f = gzip.GzipFile(filename, 'wb') ; f.write(data1 * 50) +# Try flush and fileno. +f.flush() +f.fileno() +if hasattr(os, 'fsync'): + os.fsync(f.fileno()) +f.close() + +# Try reading. f = gzip.GzipFile(filename, 'r') ; d = f.read() ; f.close() verify(d == data1*50) @@ -46,6 +46,10 @@ Extension modules Library ------- +- gzip.GzipFile has a new fileno() method, to retrieve the handle of the + underlying file object (provided it has a fileno() method). This is + needed if you want to use os.fsync() on a GzipFile. + - imaplib has two new methods: deleteacl and myrights. - nntplib has two new methods: description and descriptions. They |