Skip to content

Commit 3445dee

Browse files
committed
address feedback from felixfontein
1 parent d1ba9f8 commit 3445dee

File tree

1 file changed

+18
-16
lines changed

1 file changed

+18
-16
lines changed

plugins/modules/archive.py

+18-16
Original file line numberDiff line numberDiff line change
@@ -552,29 +552,31 @@ def _get_checksums(self, path):
552552

553553
class ReproducibleTGZFile(tarfile.TarFile):
554554
def __init__(
555-
self, name=None, mode=None, compresslevel=-1, fileobj=None, mtime=None, **kwargs
555+
self, name=None, mode=None, compresslevel=9, fileobj=None, mtime=None, **kwargs
556556
):
557-
if fileobj is None:
558-
fileobj = open(name, mode + "b")
557+
self._fileobj = fileobj or open(name, mode + "b")
559558

560559
try:
561-
# output filename intentionally empty exclude it from gzip header
562-
gzipfileobj = gzip.GzipFile("", mode, compresslevel, fileobj, mtime)
563-
except Exception:
564-
fileobj.close()
565-
raise
560+
# filename intentionally empty to exclude it from gzip header
561+
self._gzipfileobj = gzip.GzipFile("", mode, compresslevel, self._fileobj, mtime)
566562

567-
# Allow GzipFile to close fileobj as needed
568-
gzipfileobj.myfileobj = fileobj
569-
570-
try:
571-
super(ReproducibleTGZFile, self).__init__(mode=mode, fileobj=gzipfileobj, **kwargs)
563+
try:
564+
super(ReproducibleTGZFile, self).__init__(mode=mode, fileobj=self._gzipfileobj, **kwargs)
565+
except Exception:
566+
self._gzipfileobj.close()
567+
raise
572568
except Exception:
573-
gzipfileobj.close()
569+
self._fileobj.close()
574570
raise
575571

576-
# Allow TarFile to close GzipFile as needed
577-
self._extfileobj = False
572+
def close(self) -> None:
573+
try:
574+
super(ReproducibleTGZFile, self).close()
575+
finally:
576+
try:
577+
self._gzipfileobj.close()
578+
finally:
579+
self._fileobj.close()
578580

579581

580582
class TarArchive(Archive):

0 commit comments

Comments
 (0)