diff -r 0f7b602d1b1f Lib/zipfile.py --- a/Lib/zipfile.py Fri Jul 25 22:40:12 2014 +0200 +++ b/Lib/zipfile.py Sat Jul 26 22:17:14 2014 +0300 @@ -355,6 +355,28 @@ # compress_size Size of the compressed file # file_size Size of the uncompressed file + def __repr__(self): + result = ['<%s filename=%r' % (self.__class__.__name__, self.filename)] + if self.compress_type != ZIP_STORED: + result.append(' compress_type=%s' % + (compressor_names.get(self.compress_type, + self.compress_type),)) + hi = self.external_attr >> 16 + lo = self.external_attr & 0xFFFF + if hi: + result.append(' filemode=%s' % (stat.filemode(hi),)) + if lo: + result.append(' external_attr=%#x' % (lo,)) + isdir = self.filename[-1:] == '/' + if not isdir or self.file_size: + result.append(' file_size=%r' % (self.file_size,)) + if ((not isdir or self.compress_size) and + (self.compress_type != ZIP_STORED or + self.file_size != self.compress_size)): + result.append(' compress_size=%r' % (self.compress_size,)) + result.append('>') + return ''.join(result) + def FileHeader(self, zip64=None): """Return the per-file header as a string.""" dt = self.date_time @@ -671,6 +693,20 @@ else: self._expected_crc = None + def __repr__(self): + result = ['<%s.%s' % (self.__class__.__module__, + self.__class__.__qualname__)] + if not self.closed: + result.append(' name=%r mode=%r' % (self.name, self.mode)) + if self._compress_type != ZIP_STORED: + result.append(' compress_type=%s' % + (compressor_names.get(self._compress_type, + self._compress_type),)) + else: + result.append(' [closed]') + result.append('>') + return ''.join(result) + def readline(self, limit=-1): """Read and return a line from the stream. @@ -967,6 +1003,20 @@ def __exit__(self, type, value, traceback): self.close() + def __repr__(self): + result = ['<%s.%s' % (self.__class__.__module__, + self.__class__.__qualname__)] + if self.fp is not None: + if self._filePassed: + result.append(' file=%r' % (self.fp,)) + elif self.filename is not None: + result.append(' filename=%r' % (self.filename,)) + result.append(' mode=%r' % (self.mode,)) + else: + result.append(' [closed]') + result.append('>') + return ''.join(result) + def _RealGetContents(self): """Read in the table of contents for the ZIP file.""" fp = self.fp