Patch #1647484: Renamed GzipFile's filename attribute to name. The
filename attribute is still accessible as a property that emits a DeprecationWarning.
This commit is contained in:
parent
b1cc1d407b
commit
5b1a785702
21
Lib/gzip.py
21
Lib/gzip.py
|
@ -106,7 +106,7 @@ class GzipFile:
|
||||||
self._new_member = True
|
self._new_member = True
|
||||||
self.extrabuf = ""
|
self.extrabuf = ""
|
||||||
self.extrasize = 0
|
self.extrasize = 0
|
||||||
self.filename = filename
|
self.name = filename
|
||||||
# Starts small, scales exponentially
|
# Starts small, scales exponentially
|
||||||
self.min_readsize = 100
|
self.min_readsize = 100
|
||||||
|
|
||||||
|
@ -127,14 +127,20 @@ class GzipFile:
|
||||||
if self.mode == WRITE:
|
if self.mode == WRITE:
|
||||||
self._write_gzip_header()
|
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):
|
def __repr__(self):
|
||||||
s = repr(self.fileobj)
|
s = repr(self.fileobj)
|
||||||
return '<gzip ' + s[1:-1] + ' ' + hex(id(self)) + '>'
|
return '<gzip ' + s[1:-1] + ' ' + hex(id(self)) + '>'
|
||||||
|
|
||||||
def _init_write(self, filename):
|
def _init_write(self, filename):
|
||||||
if filename[-3:] != '.gz':
|
self.name = filename
|
||||||
filename = filename + '.gz'
|
|
||||||
self.filename = filename
|
|
||||||
self.crc = zlib.crc32("")
|
self.crc = zlib.crc32("")
|
||||||
self.size = 0
|
self.size = 0
|
||||||
self.writebuf = []
|
self.writebuf = []
|
||||||
|
@ -143,16 +149,15 @@ class GzipFile:
|
||||||
def _write_gzip_header(self):
|
def _write_gzip_header(self):
|
||||||
self.fileobj.write('\037\213') # magic header
|
self.fileobj.write('\037\213') # magic header
|
||||||
self.fileobj.write('\010') # compression method
|
self.fileobj.write('\010') # compression method
|
||||||
fname = self.filename[:-3]
|
|
||||||
flags = 0
|
flags = 0
|
||||||
if fname:
|
if self.name:
|
||||||
flags = FNAME
|
flags = FNAME
|
||||||
self.fileobj.write(chr(flags))
|
self.fileobj.write(chr(flags))
|
||||||
write32u(self.fileobj, long(time.time()))
|
write32u(self.fileobj, long(time.time()))
|
||||||
self.fileobj.write('\002')
|
self.fileobj.write('\002')
|
||||||
self.fileobj.write('\377')
|
self.fileobj.write('\377')
|
||||||
if fname:
|
if self.name:
|
||||||
self.fileobj.write(fname + '\000')
|
self.fileobj.write(self.name + '\000')
|
||||||
|
|
||||||
def _init_read(self):
|
def _init_read(self):
|
||||||
self.crc = zlib.crc32("")
|
self.crc = zlib.crc32("")
|
||||||
|
|
|
@ -153,6 +153,13 @@ class TestGzip(unittest.TestCase):
|
||||||
self.assertEqual(f.myfileobj.mode, 'rb')
|
self.assertEqual(f.myfileobj.mode, 'rb')
|
||||||
f.close()
|
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):
|
def test_main(verbose=None):
|
||||||
test_support.run_unittest(TestGzip)
|
test_support.run_unittest(TestGzip)
|
||||||
|
|
||||||
|
|
|
@ -128,6 +128,8 @@ Core and builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Patch #1647484: Renamed GzipFile's filename attribute to name.
|
||||||
|
|
||||||
- Patch #1517891: Mode 'a' for ZipFile now creates the file if it
|
- Patch #1517891: Mode 'a' for ZipFile now creates the file if it
|
||||||
doesn't exist.
|
doesn't exist.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue