From 5b1a7857023d15a2f51467c765bade1d6f349c5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lars=20Gust=C3=A4bel?= Date: Tue, 13 Feb 2007 16:09:24 +0000 Subject: [PATCH] Patch #1647484: Renamed GzipFile's filename attribute to name. The filename attribute is still accessible as a property that emits a DeprecationWarning. --- Lib/gzip.py | 21 +++++++++++++-------- Lib/test/test_gzip.py | 7 +++++++ Misc/NEWS | 2 ++ 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/Lib/gzip.py b/Lib/gzip.py index c37d5a18c27..ea3656f81c9 100644 --- a/Lib/gzip.py +++ b/Lib/gzip.py @@ -106,7 +106,7 @@ class GzipFile: self._new_member = True self.extrabuf = "" self.extrasize = 0 - self.filename = filename + self.name = filename # Starts small, scales exponentially self.min_readsize = 100 @@ -127,14 +127,20 @@ class GzipFile: if self.mode == WRITE: self._write_gzip_header() + @property + def filename(self): + import warnings + warnings.warn("use the name attribute", DeprecationWarning) + if self.mode == WRITE and self.name[-3:] != ".gz": + return self.name + ".gz" + return self.name + def __repr__(self): s = repr(self.fileobj) return '' def _init_write(self, filename): - if filename[-3:] != '.gz': - filename = filename + '.gz' - self.filename = filename + self.name = filename self.crc = zlib.crc32("") self.size = 0 self.writebuf = [] @@ -143,16 +149,15 @@ class GzipFile: def _write_gzip_header(self): self.fileobj.write('\037\213') # magic header self.fileobj.write('\010') # compression method - fname = self.filename[:-3] flags = 0 - if fname: + if self.name: flags = FNAME self.fileobj.write(chr(flags)) write32u(self.fileobj, long(time.time())) self.fileobj.write('\002') self.fileobj.write('\377') - if fname: - self.fileobj.write(fname + '\000') + if self.name: + self.fileobj.write(self.name + '\000') def _init_read(self): self.crc = zlib.crc32("") diff --git a/Lib/test/test_gzip.py b/Lib/test/test_gzip.py index fbdbc304a17..124a4692b1d 100644 --- a/Lib/test/test_gzip.py +++ b/Lib/test/test_gzip.py @@ -153,6 +153,13 @@ class TestGzip(unittest.TestCase): self.assertEqual(f.myfileobj.mode, 'rb') f.close() + def test_1647484(self): + for mode in ('wb', 'rb'): + f = gzip.GzipFile(self.filename, mode) + self.assert_(hasattr(f, "name")) + self.assertEqual(f.name, self.filename) + f.close() + def test_main(verbose=None): test_support.run_unittest(TestGzip) diff --git a/Misc/NEWS b/Misc/NEWS index 355e9817727..9cd7070e9bc 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -128,6 +128,8 @@ Core and builtins Library ------- +- Patch #1647484: Renamed GzipFile's filename attribute to name. + - Patch #1517891: Mode 'a' for ZipFile now creates the file if it doesn't exist.