Skip to content

Commit

Permalink
Patch #1647484: Renamed GzipFile's filename attribute to name. The
Browse files Browse the repository at this point in the history
filename attribute is still accessible as a property that emits a
DeprecationWarning.
  • Loading branch information
gustaebel committed Feb 13, 2007
1 parent b1cc1d4 commit 5b1a785
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 8 deletions.
21 changes: 13 additions & 8 deletions Lib/gzip.py
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ def __init__(self, filename=None, mode=None,
self._new_member = True
self.extrabuf = ""
self.extrasize = 0
self.filename = filename
self.name = filename
# Starts small, scales exponentially
self.min_readsize = 100

Expand All @@ -127,14 +127,20 @@ def __init__(self, filename=None, mode=None,
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 '<gzip ' + s[1:-1] + ' ' + hex(id(self)) + '>'

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 = []
Expand All @@ -143,16 +149,15 @@ def _init_write(self, filename):
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("")
Expand Down
7 changes: 7 additions & 0 deletions Lib/test/test_gzip.py
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,13 @@ def test_mode(self):
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)

Expand Down
2 changes: 2 additions & 0 deletions Misc/NEWS
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand Down

0 comments on commit 5b1a785

Please sign in to comment.