Skip to content

Commit 01349af

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 ec45fbd commit 01349af

1 file changed

Lines changed: 44 additions & 49 deletions

File tree

pycatfile.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
@@ -828,13 +827,19 @@ def check_version_number(myversion=__version__, proname=__program_alt_name__, ne
828827

829828
compressionsupport = []
830829
try:
831-
import gzip
830+
try:
831+
import compression.gzip as gzip
832+
except ImportError:
833+
import gzip
832834
compressionsupport.append("gz")
833835
compressionsupport.append("gzip")
834836
except ImportError:
835837
pass
836838
try:
837-
import bz2
839+
try:
840+
import compression.bz2 as bz2
841+
except ImportError:
842+
import bz2
838843
compressionsupport.append("bz2")
839844
compressionsupport.append("bzip2")
840845
except ImportError:
@@ -855,20 +860,20 @@ def check_version_number(myversion=__version__, proname=__program_alt_name__, ne
855860
pass
856861
'''
857862
try:
858-
import zstandard
863+
try:
864+
import compression.zstd as zstd
865+
except ImportError:
866+
import pyzstd.zstdfile as zstd
859867
compressionsupport.append("zst")
860868
compressionsupport.append("zstd")
861869
compressionsupport.append("zstandard")
862870
except ImportError:
871+
pass
872+
try:
863873
try:
864-
import pyzstd.zstdfile
865-
compressionsupport.append("zst")
866-
compressionsupport.append("zstd")
867-
compressionsupport.append("zstandard")
874+
import compression.lzma as lzma
868875
except ImportError:
869-
pass
870-
try:
871-
import lzma
876+
import lzma
872877
compressionsupport.append("lzma")
873878
compressionsupport.append("xz")
874879
except ImportError:
@@ -878,12 +883,18 @@ def check_version_number(myversion=__version__, proname=__program_alt_name__, ne
878883
compressionsupport.append("xz")
879884
except ImportError:
880885
pass
881-
compressionsupport.append("zlib")
882-
compressionsupport.append("zl")
883-
compressionsupport.append("zz")
884-
compressionsupport.append("Z")
885-
compressionsupport.append("z")
886-
886+
try:
887+
try:
888+
import compression.zlib as zlib
889+
except ImportError:
890+
import zlib
891+
compressionsupport.append("zlib")
892+
compressionsupport.append("zl")
893+
compressionsupport.append("zz")
894+
compressionsupport.append("Z")
895+
compressionsupport.append("z")
896+
except ImportError:
897+
pass
887898
compressionlist = ['auto']
888899
compressionlistalt = []
889900
outextlist = []
@@ -6384,10 +6395,8 @@ def AppendFilesWithContentFromTarFile(infile, fp, extradata=[], jsondata={}, com
63846395
if(IsNestedDict(formatspecs) and compresscheck in formatspecs):
63856396
formatspecs = formatspecs[compresscheck]
63866397
if(compresscheck=="zstd"):
6387-
if 'zstandard' in sys.modules:
6388-
infile = ZstdFile(fileobj=infile, mode="rb")
6389-
elif 'pyzstd' in sys.modules:
6390-
infile = pyzstd.zstdfile.ZstdFile(fileobj=infile, mode="rb")
6398+
if 'zstd' in compressionsupport:
6399+
infile = zstd.ZstdFile(infile, mode="rb")
63916400
tarfp = tarfile.open(fileobj=infile, mode="r")
63926401
else:
63936402
tarfp = tarfile.open(fileobj=infile, mode="r")
@@ -6396,10 +6405,8 @@ def AppendFilesWithContentFromTarFile(infile, fp, extradata=[], jsondata={}, com
63966405
if(IsNestedDict(formatspecs) and compresscheck in formatspecs):
63976406
formatspecs = formatspecs[compresscheck]
63986407
if(compresscheck=="zstd"):
6399-
if 'zstandard' in sys.modules:
6400-
infile = ZstdFile(fileobj=infile, mode="rb")
6401-
elif 'pyzstd' in sys.modules:
6402-
infile = pyzstd.zstdfile.ZstdFile(fileobj=infile, mode="rb")
6408+
if 'zstd' in compressionsupport:
6409+
infile = zstd.ZstdFile(infile, mode="rb")
64036410
tarfp = tarfile.open(fileobj=infile, mode="r")
64046411
else:
64056412
tarfp = tarfile.open(infile, "r")
@@ -8466,10 +8473,8 @@ def CheckCompressionSubType(infile, formatspecs=__file_format_multi_dict__, file
84668473
elif(compresscheck == "lz4" and compresscheck in compressionsupport):
84678474
fp = lz4.frame.open(infile, "rb")
84688475
elif(compresscheck == "zstd" and compresscheck in compressionsupport):
8469-
if 'zstandard' in sys.modules:
8470-
fp = ZstdFile(infile, mode="rb")
8471-
elif 'pyzstd' in sys.modules:
8472-
fp = pyzstd.zstdfile.ZstdFile(infile, mode="rb")
8476+
if 'zstd' in compressionsupport:
8477+
fp = zstd.ZstdFile(infile, mode="rb")
84738478
else:
84748479
return Flase
84758480
elif((compresscheck == "lzma" or compresscheck == "xz") and compresscheck in compressionsupport):
@@ -8586,10 +8591,8 @@ def UncompressFileAlt(fp, formatspecs=__file_format_multi_dict__, filestart=0,
85868591
elif kind in ("lzma","xz") and (("lzma" in compressionsupport) or ("xz" in compressionsupport)):
85878592
wrapped = lzma.LZMAFile(src)
85888593
elif kind == "zstd" and ("zstd" in compressionsupport or "zstandard" in compressionsupport):
8589-
if 'zstandard' in sys.modules:
8590-
wrapped = ZstdFile(fileobj=src, mode="rb")
8591-
elif 'pyzstd' in sys.modules:
8592-
wrapped = pyzstd.zstdfile.ZstdFile(fileobj=src, mode="rb")
8594+
if 'zstd' in compressionsupport:
8595+
wrapped = zstd.ZstdFile(src, mode="rb")
85938596
else:
85948597
return False
85958598
elif kind == "lz4" and "lz4" in compressionsupport:
@@ -8657,10 +8660,8 @@ def UncompressFile(infile, formatspecs=__file_format_multi_dict__, mode="rb",
86578660
elif (compresscheck == "bzip2" and "bzip2" in compressionsupport):
86588661
fp = bz2.open(infile, mode)
86598662
elif (compresscheck == "zstd" and "zstandard" in compressionsupport):
8660-
if 'zstandard' in sys.modules:
8661-
fp = ZstdFile(infile, mode=mode)
8662-
elif 'pyzstd' in sys.modules:
8663-
fp = pyzstd.zstdfile.ZstdFile(infile, mode=mode)
8663+
if 'zstd' in compressionsupport:
8664+
fp = zstd.ZstdFile(infile, mode=mode)
86648665
else:
86658666
return False
86668667
elif (compresscheck == "lz4" and "lz4" in compressionsupport):
@@ -9429,10 +9430,8 @@ def CompressOpenFile(outfile, compressionenable=True, compressionlevel=None,
94299430
outfp = FileLikeAdapter(bz2.open(outfile, mode, compressionlevel), mode="wb")
94309431

94319432
elif (fextname == ".zst" and "zstandard" in compressionsupport):
9432-
if 'zstandard' in sys.modules:
9433-
outfp = FileLikeAdapter(ZstdFile(outfile, mode=mode, level=compressionlevel), mode="wb")
9434-
elif 'pyzstd' in sys.modules:
9435-
outfp = FileLikeAdapter(pyzstd.zstdfile.ZstdFile(outfile, mode=mode, level=compressionlevel), mode="wb")
9433+
if 'zstd' in compressionsupport:
9434+
outfp = FileLikeAdapter(zstd.ZstdFile(outfile, mode=mode, level=compressionlevel), mode="wb")
94369435
else:
94379436
return False # fix: 'Flase' -> False
94389437

@@ -11072,10 +11071,8 @@ def TarFileListFiles(infile, verbose=False, returnfp=False):
1107211071
if(IsNestedDict(formatspecs) and compresscheck in formatspecs):
1107311072
formatspecs = formatspecs[compresscheck]
1107411073
if(compresscheck=="zstd"):
11075-
if 'zstandard' in sys.modules:
11076-
infile = ZstdFile(fileobj=infile, mode="rb")
11077-
elif 'pyzstd' in sys.modules:
11078-
infile = pyzstd.zstdfile.ZstdFile(fileobj=infile, mode="rb")
11074+
if 'zstd' in compressionsupport:
11075+
infile = zstd.ZstdFile(infile, mode="rb")
1107911076
tarfp = tarfile.open(fileobj=infile, mode="r")
1108011077
else:
1108111078
tarfp = tarfile.open(fileobj=infile, mode="r")
@@ -11084,10 +11081,8 @@ def TarFileListFiles(infile, verbose=False, returnfp=False):
1108411081
if(IsNestedDict(formatspecs) and compresscheck in formatspecs):
1108511082
formatspecs = formatspecs[compresscheck]
1108611083
if(compresscheck=="zstd"):
11087-
if 'zstandard' in sys.modules:
11088-
infile = ZstdFile(fileobj=infile, mode="rb")
11089-
elif 'pyzstd' in sys.modules:
11090-
infile = pyzstd.zstdfile.ZstdFile(fileobj=infile, mode="rb")
11084+
if 'zstd' in compressionsupport:
11085+
infile = zstd.ZstdFile(infile, mode="rb")
1109111086
tarfp = tarfile.open(fileobj=infile, mode="r")
1109211087
else:
1109311088
tarfp = tarfile.open(infile, "r")

0 commit comments

Comments
 (0)