--- a/mercurial/archival.py Thu Jun 16 15:15:03 2022 +0200
+++ b/mercurial/archival.py Thu Jun 16 15:28:54 2022 +0200
@@ -5,7 +5,6 @@
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.
-from __future__ import absolute_import
import gzip
import os
@@ -76,7 +75,7 @@
def guesskind(dest):
- for kind, extensions in pycompat.iteritems(exts):
+ for kind, extensions in exts.items():
if any(dest.endswith(ext) for ext in extensions):
return kind
return None
@@ -133,43 +132,10 @@
return out.getvalue()
-class tarit(object):
+class tarit:
"""write archive to tar file or stream. can write uncompressed,
or compress with gzip or bzip2."""
- if pycompat.ispy3:
- GzipFileWithTime = gzip.GzipFile # camelcase-required
- else:
-
- class GzipFileWithTime(gzip.GzipFile):
- def __init__(self, *args, **kw):
- timestamp = None
- if 'mtime' in kw:
- timestamp = kw.pop('mtime')
- if timestamp is None:
- self.timestamp = time.time()
- else:
- self.timestamp = timestamp
- gzip.GzipFile.__init__(self, *args, **kw)
-
- def _write_gzip_header(self):
- self.fileobj.write(b'\037\213') # magic header
- self.fileobj.write(b'\010') # compression method
- fname = self.name
- if fname and fname.endswith(b'.gz'):
- fname = fname[:-3]
- flags = 0
- if fname:
- flags = gzip.FNAME # pytype: disable=module-attr
- self.fileobj.write(pycompat.bytechr(flags))
- gzip.write32u( # pytype: disable=module-attr
- self.fileobj, int(self.timestamp)
- )
- self.fileobj.write(b'\002')
- self.fileobj.write(b'\377')
- if fname:
- self.fileobj.write(fname + b'\000')
-
def __init__(self, dest, mtime, kind=b''):
self.mtime = mtime
self.fileobj = None
@@ -179,7 +145,7 @@
mode = mode[0:1]
if not fileobj:
fileobj = open(name, mode + b'b')
- gzfileobj = self.GzipFileWithTime(
+ gzfileobj = gzip.GzipFile(
name,
pycompat.sysstr(mode + b'b'),
zlib.Z_BEST_COMPRESSION,
@@ -227,7 +193,7 @@
self.fileobj.close()
-class zipit(object):
+class zipit:
"""write archive to zip file or stream. can write uncompressed,
or compressed with deflate."""
@@ -274,7 +240,7 @@
self.z.close()
-class fileit(object):
+class fileit:
'''write archive as files in directory.'''
def __init__(self, name, mtime):
@@ -339,9 +305,6 @@
subrepos tells whether to include subrepos.
"""
- if kind == b'txz' and not pycompat.ispy3:
- raise error.Abort(_(b'xz compression is only available in Python 3'))
-
if kind == b'files':
if prefix:
raise error.Abort(_(b'cannot give prefix when archiving to files'))