Skip to content

Commit 1bb4070

Browse files
committed
Added support for Python 3.14
Added support for Python 3.14 compression module and zstd module Happy Python Pie Day :P
1 parent 27b99c8 commit 1bb4070

File tree

1 file changed

+44
-49
lines changed

1 file changed

+44
-49
lines changed

pyarchivefile.py

Lines changed: 44 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
import sys
2525
import time
2626
import stat
27-
import zlib
2827
import mmap
2928
import hmac
3029
import base64
@@ -822,13 +821,19 @@ def check_version_number(myversion=__version__, proname=__program_alt_name__, ne
822821

823822
compressionsupport = []
824823
try:
825-
import gzip
824+
try:
825+
import compression.gzip as gzip
826+
except ImportError:
827+
import gzip
826828
compressionsupport.append("gz")
827829
compressionsupport.append("gzip")
828830
except ImportError:
829831
pass
830832
try:
831-
import bz2
833+
try:
834+
import compression.bz2 as bz2
835+
except ImportError:
836+
import bz2
832837
compressionsupport.append("bz2")
833838
compressionsupport.append("bzip2")
834839
except ImportError:
@@ -849,20 +854,20 @@ def check_version_number(myversion=__version__, proname=__program_alt_name__, ne
849854
pass
850855
'''
851856
try:
852-
import zstandard
857+
try:
858+
import compression.zstd as zstd
859+
except ImportError:
860+
import pyzstd.zstdfile as zstd
853861
compressionsupport.append("zst")
854862
compressionsupport.append("zstd")
855863
compressionsupport.append("zstandard")
856864
except ImportError:
865+
pass
866+
try:
857867
try:
858-
import pyzstd.zstdfile
859-
compressionsupport.append("zst")
860-
compressionsupport.append("zstd")
861-
compressionsupport.append("zstandard")
868+
import compression.lzma as lzma
862869
except ImportError:
863-
pass
864-
try:
865-
import lzma
870+
import lzma
866871
compressionsupport.append("lzma")
867872
compressionsupport.append("xz")
868873
except ImportError:
@@ -872,12 +877,18 @@ def check_version_number(myversion=__version__, proname=__program_alt_name__, ne
872877
compressionsupport.append("xz")
873878
except ImportError:
874879
pass
875-
compressionsupport.append("zlib")
876-
compressionsupport.append("zl")
877-
compressionsupport.append("zz")
878-
compressionsupport.append("Z")
879-
compressionsupport.append("z")
880-
880+
try:
881+
try:
882+
import compression.zlib as zlib
883+
except ImportError:
884+
import zlib
885+
compressionsupport.append("zlib")
886+
compressionsupport.append("zl")
887+
compressionsupport.append("zz")
888+
compressionsupport.append("Z")
889+
compressionsupport.append("z")
890+
except ImportError:
891+
pass
881892
compressionlist = ['auto']
882893
compressionlistalt = []
883894
outextlist = []
@@ -6378,10 +6389,8 @@ def AppendFilesWithContentFromTarFile(infile, fp, extradata=[], jsondata={}, com
63786389
if(IsNestedDict(formatspecs) and compresscheck in formatspecs):
63796390
formatspecs = formatspecs[compresscheck]
63806391
if(compresscheck=="zstd"):
6381-
if 'zstandard' in sys.modules:
6382-
infile = ZstdFile(fileobj=infile, mode="rb")
6383-
elif 'pyzstd' in sys.modules:
6384-
infile = pyzstd.zstdfile.ZstdFile(fileobj=infile, mode="rb")
6392+
if 'zstd' in compressionsupport:
6393+
infile = zstd.ZstdFile(infile, mode="rb")
63856394
tarfp = tarfile.open(fileobj=infile, mode="r")
63866395
else:
63876396
tarfp = tarfile.open(fileobj=infile, mode="r")
@@ -6390,10 +6399,8 @@ def AppendFilesWithContentFromTarFile(infile, fp, extradata=[], jsondata={}, com
63906399
if(IsNestedDict(formatspecs) and compresscheck in formatspecs):
63916400
formatspecs = formatspecs[compresscheck]
63926401
if(compresscheck=="zstd"):
6393-
if 'zstandard' in sys.modules:
6394-
infile = ZstdFile(fileobj=infile, mode="rb")
6395-
elif 'pyzstd' in sys.modules:
6396-
infile = pyzstd.zstdfile.ZstdFile(fileobj=infile, mode="rb")
6402+
if 'zstd' in compressionsupport:
6403+
infile = zstd.ZstdFile(infile, mode="rb")
63976404
tarfp = tarfile.open(fileobj=infile, mode="r")
63986405
else:
63996406
tarfp = tarfile.open(infile, "r")
@@ -8460,10 +8467,8 @@ def CheckCompressionSubType(infile, formatspecs=__file_format_multi_dict__, file
84608467
elif(compresscheck == "lz4" and compresscheck in compressionsupport):
84618468
fp = lz4.frame.open(infile, "rb")
84628469
elif(compresscheck == "zstd" and compresscheck in compressionsupport):
8463-
if 'zstandard' in sys.modules:
8464-
fp = ZstdFile(infile, mode="rb")
8465-
elif 'pyzstd' in sys.modules:
8466-
fp = pyzstd.zstdfile.ZstdFile(infile, mode="rb")
8470+
if 'zstd' in compressionsupport:
8471+
fp = zstd.ZstdFile(infile, mode="rb")
84678472
else:
84688473
return Flase
84698474
elif((compresscheck == "lzma" or compresscheck == "xz") and compresscheck in compressionsupport):
@@ -8580,10 +8585,8 @@ def UncompressFileAlt(fp, formatspecs=__file_format_multi_dict__, filestart=0,
85808585
elif kind in ("lzma","xz") and (("lzma" in compressionsupport) or ("xz" in compressionsupport)):
85818586
wrapped = lzma.LZMAFile(src)
85828587
elif kind == "zstd" and ("zstd" in compressionsupport or "zstandard" in compressionsupport):
8583-
if 'zstandard' in sys.modules:
8584-
wrapped = ZstdFile(fileobj=src, mode="rb")
8585-
elif 'pyzstd' in sys.modules:
8586-
wrapped = pyzstd.zstdfile.ZstdFile(fileobj=src, mode="rb")
8588+
if 'zstd' in compressionsupport:
8589+
wrapped = zstd.ZstdFile(src, mode="rb")
85878590
else:
85888591
return False
85898592
elif kind == "lz4" and "lz4" in compressionsupport:
@@ -8651,10 +8654,8 @@ def UncompressFile(infile, formatspecs=__file_format_multi_dict__, mode="rb",
86518654
elif (compresscheck == "bzip2" and "bzip2" in compressionsupport):
86528655
fp = bz2.open(infile, mode)
86538656
elif (compresscheck == "zstd" and "zstandard" in compressionsupport):
8654-
if 'zstandard' in sys.modules:
8655-
fp = ZstdFile(infile, mode=mode)
8656-
elif 'pyzstd' in sys.modules:
8657-
fp = pyzstd.zstdfile.ZstdFile(infile, mode=mode)
8657+
if 'zstd' in compressionsupport:
8658+
fp = zstd.ZstdFile(infile, mode=mode)
86588659
else:
86598660
return False
86608661
elif (compresscheck == "lz4" and "lz4" in compressionsupport):
@@ -9423,10 +9424,8 @@ def CompressOpenFile(outfile, compressionenable=True, compressionlevel=None,
94239424
outfp = FileLikeAdapter(bz2.open(outfile, mode, compressionlevel), mode="wb")
94249425

94259426
elif (fextname == ".zst" and "zstandard" in compressionsupport):
9426-
if 'zstandard' in sys.modules:
9427-
outfp = FileLikeAdapter(ZstdFile(outfile, mode=mode, level=compressionlevel), mode="wb")
9428-
elif 'pyzstd' in sys.modules:
9429-
outfp = FileLikeAdapter(pyzstd.zstdfile.ZstdFile(outfile, mode=mode, level=compressionlevel), mode="wb")
9427+
if 'zstd' in compressionsupport:
9428+
outfp = FileLikeAdapter(zstd.ZstdFile(outfile, mode=mode, level=compressionlevel), mode="wb")
94309429
else:
94319430
return False # fix: 'Flase' -> False
94329431

@@ -11066,10 +11065,8 @@ def TarFileListFiles(infile, verbose=False, returnfp=False):
1106611065
if(IsNestedDict(formatspecs) and compresscheck in formatspecs):
1106711066
formatspecs = formatspecs[compresscheck]
1106811067
if(compresscheck=="zstd"):
11069-
if 'zstandard' in sys.modules:
11070-
infile = ZstdFile(fileobj=infile, mode="rb")
11071-
elif 'pyzstd' in sys.modules:
11072-
infile = pyzstd.zstdfile.ZstdFile(fileobj=infile, mode="rb")
11068+
if 'zstd' in compressionsupport:
11069+
infile = zstd.ZstdFile(infile, mode="rb")
1107311070
tarfp = tarfile.open(fileobj=infile, mode="r")
1107411071
else:
1107511072
tarfp = tarfile.open(fileobj=infile, mode="r")
@@ -11078,10 +11075,8 @@ def TarFileListFiles(infile, verbose=False, returnfp=False):
1107811075
if(IsNestedDict(formatspecs) and compresscheck in formatspecs):
1107911076
formatspecs = formatspecs[compresscheck]
1108011077
if(compresscheck=="zstd"):
11081-
if 'zstandard' in sys.modules:
11082-
infile = ZstdFile(fileobj=infile, mode="rb")
11083-
elif 'pyzstd' in sys.modules:
11084-
infile = pyzstd.zstdfile.ZstdFile(fileobj=infile, mode="rb")
11078+
if 'zstd' in compressionsupport:
11079+
infile = zstd.ZstdFile(infile, mode="rb")
1108511080
tarfp = tarfile.open(fileobj=infile, mode="r")
1108611081
else:
1108711082
tarfp = tarfile.open(infile, "r")

0 commit comments

Comments
 (0)