patool 3.0.2__tar.gz → 3.0.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {patool-3.0.2 → patool-3.0.3}/Makefile +12 -5
- {patool-3.0.2/patool.egg-info → patool-3.0.3}/PKG-INFO +1 -1
- {patool-3.0.2 → patool-3.0.3}/doc/changelog.txt +9 -0
- {patool-3.0.2 → patool-3.0.3}/doc/development.md +6 -12
- {patool-3.0.2 → patool-3.0.3/patool.egg-info}/PKG-INFO +1 -1
- {patool-3.0.2 → patool-3.0.3}/patool.egg-info/SOURCES.txt +2 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/__init__.py +5 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/configuration.py +1 -1
- {patool-3.0.2 → patool-3.0.3}/patoolib/log.py +1 -1
- {patool-3.0.2 → patool-3.0.3}/patoolib/mime.py +6 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/p7zip.py +20 -6
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/p7zz.py +13 -6
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/rar.py +1 -1
- {patool-3.0.2 → patool-3.0.3}/patoolib/util.py +4 -4
- {patool-3.0.2 → patool-3.0.3}/pyproject.toml +12 -3
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_7z.py +2 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_7zz.py +2 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_7zzs.py +2 -0
- patool-3.0.3/tests/data/t.wim +0 -0
- patool-3.0.3/tests/data/t.wim.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/test_mime.py +4 -0
- {patool-3.0.2 → patool-3.0.3}/COPYING +0 -0
- {patool-3.0.2 → patool-3.0.3}/MANIFEST.in +0 -0
- {patool-3.0.2 → patool-3.0.3}/README.md +0 -0
- {patool-3.0.2 → patool-3.0.3}/doc/api.md +0 -0
- {patool-3.0.2 → patool-3.0.3}/doc/icon/Makefile +0 -0
- {patool-3.0.2 → patool-3.0.3}/doc/icon/favicon.ico +0 -0
- {patool-3.0.2 → patool-3.0.3}/doc/icon/logo16x16.png +0 -0
- {patool-3.0.2 → patool-3.0.3}/doc/icon/logo32x32.png +0 -0
- {patool-3.0.2 → patool-3.0.3}/doc/install.md +0 -0
- {patool-3.0.2 → patool-3.0.3}/doc/patool.1 +0 -0
- {patool-3.0.2 → patool-3.0.3}/doc/patool.txt +0 -0
- {patool-3.0.2 → patool-3.0.3}/patool.egg-info/dependency_links.txt +0 -0
- {patool-3.0.2 → patool-3.0.3}/patool.egg-info/entry_points.txt +0 -0
- {patool-3.0.2 → patool-3.0.3}/patool.egg-info/requires.txt +0 -0
- {patool-3.0.2 → patool-3.0.3}/patool.egg-info/top_level.txt +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/cli.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/fileutil.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/__init__.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/ar.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/arc.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/archmage.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/arj.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/bsdcpio.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/bsdtar.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/bzip2.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/bzip3.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/cabextract.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/chmlib.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/clzip.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/compress.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/cpio.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/dpkg.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/flac.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/genisoimage.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/gzip.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/isoinfo.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/jar.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/lbzip2.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/lcab.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/lha.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/lhasa.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/lrzip.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/lz4.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/lzip.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/lzma.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/lzop.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/mac.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/nomarch.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/p7azip.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/p7rzip.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/p7zzs.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/pbzip2.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/pdlzip.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/pigz.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/plzip.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/py_bz2.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/py_echo.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/py_gzip.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/py_lzma.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/py_tarfile.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/py_zipfile.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/rpm.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/rpm2cpio.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/rzip.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/shar.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/shorten.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/star.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/tar.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/unace.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/unadf.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/unalz.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/unar.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/uncompress.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/unrar.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/unshar.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/unzip.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/xdms.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/xz.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/zip.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/zoo.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/zopfli.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/zpaq.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/patoolib/programs/zstd.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/setup.cfg +0 -0
- {patool-3.0.2 → patool-3.0.3}/setup.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/__init__.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/__init__.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_7za.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_7zr.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_ar.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_arc.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_archmage.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_arj.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_bsdcpio.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_bsdtar.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_bzip2.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_bzip3.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_cabextract.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_chmlib.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_clzip.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_compress.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_cpio.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_dpkg.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_flac.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_genisoimage.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_gzip.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_isoinfo.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_jar.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_lbzip2.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_lcab.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_lha.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_lhasa.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_lrzip.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_lz4.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_lzip.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_lzma.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_lzop.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_mac.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_nomarch.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_pbzip2.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_pdlzip.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_pigz.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_plzip.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_pybz2.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_pyecho.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_pygzip.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_pylzma.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_pytarfile.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_pyzipfile.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_rar.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_rpm.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_rpm2cpio.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_rzip.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_shar.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_shorten.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_star.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_tar.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_unace.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_unadf.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_unalz.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_unar.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_uncompressreal.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_unrar.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_unshar.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_unzip.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_xdms.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_xz.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_zip.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_zoo.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_zopfli.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/archives/test_zpaq.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/p .7z +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/p.7z.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/p.arc +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/p.arc.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/p.arj +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/p.arj.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/p.cbz +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/p.cbz.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/p.rar +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/p.rar.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/p.zip +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/p.zip.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t/t.txt +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t .7z +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t .cb7 +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.7z.001 +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.7z.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.ace +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.ace.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.adf +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.adf.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.alz +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.alz.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.ape +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.ape.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.apk +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.apk.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.arc +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.arc.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.arj +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.arj.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.cab +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.cab.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.cb7.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.cba +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.cba.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.cbr +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.cbr.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.cbt +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.cbt.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.cbz +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.cbz.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.chm +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.chm.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.cpio +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.cpio.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.deb +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.deb.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.dms +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.dms.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.epub +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.epub.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.flac +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.flac.flac +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.flac.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.flac.wav +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.iso +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.iso.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.jar +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.jar.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.lha +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.lha.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.lzh +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.rar +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.rar.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.rar.gz +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.rar.gz.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.rpm +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.rpm.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.shar +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.shn +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.tar +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.tar.Z +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.tar.Z.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.tar.bz2 +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.tar.bz2.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.tar.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.tar.gz +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.tar.gz.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.tar.lz +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.tar.lz.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.tar.lzma +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.tar.lzma.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.tar.xz +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.tar.xz.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.tar.zst +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.tar.zst.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.taz +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.taz.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.tbz2 +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.tbz2.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.tgz +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.tgz.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.Z +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.Z.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.a +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.a.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.bz2 +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.bz2.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.bz3 +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.bz3.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.gz +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.gz.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.lrz +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.lrz.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.lz +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.lz.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.lz4 +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.lz4.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.lzma +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.lzma.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.lzo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.lzo.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.rz +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.rz.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.xz +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.xz.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.zst +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.zst.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.vhd +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.wav +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.zip +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.zip.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.zoo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.zoo.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.zpaq +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t.zpaq.foo +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/data/t2.txt +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/test_cli.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/test_config.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/test_create.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/test_diff.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/test_extract.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/test_fileutil.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/test_formats.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/test_help.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/test_list.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/test_repack.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/test_search.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/test_test.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/test_util.py +0 -0
- {patool-3.0.2 → patool-3.0.3}/tests/test_version.py +0 -0
|
@@ -32,7 +32,8 @@ GIT_MAIN_BRANCH:=master
|
|
|
32
32
|
# -s: do not capture stdout/stderr (some tests fail otherwise)
|
|
33
33
|
# --full-trace: print full stacktrace on keyboard interrupts
|
|
34
34
|
# --log-file: write test output to file for easier inspection
|
|
35
|
-
|
|
35
|
+
# --numprocesses auto: run tests in parallel on available CPU cores (uses pytest-xdist)
|
|
36
|
+
PYTESTOPTS?=-s --full-trace --log-file=build/test.log --numprocesses auto
|
|
36
37
|
# which test modules to run
|
|
37
38
|
TESTS ?= tests/
|
|
38
39
|
# set test options
|
|
@@ -107,7 +108,7 @@ release-gh: ## upload a new release to github
|
|
|
107
108
|
# anything screwed up.
|
|
108
109
|
.PHONY: release
|
|
109
110
|
release: distclean releasecheck ## release a new version of patool
|
|
110
|
-
$(MAKE) dist release-gh release-pypi homepage github-issues
|
|
111
|
+
$(MAKE) dist release-gh release-pypi release-homepage github-issues
|
|
111
112
|
|
|
112
113
|
.PHONY: releasecheck
|
|
113
114
|
releasecheck: update_webmeta checkgit checkchangelog lint test typecheck checkgitreleasetag ## check that repo is ready for release
|
|
@@ -206,7 +207,13 @@ checkoutdatedgh: ## check for outedated github tools
|
|
|
206
207
|
|
|
207
208
|
.PHONY: test
|
|
208
209
|
test: ## run tests
|
|
209
|
-
pytest $(PYTESTOPTS) $(TESTOPTS) $(TESTS)
|
|
210
|
+
uv run pytest $(PYTESTOPTS) $(TESTOPTS) $(TESTS)
|
|
211
|
+
|
|
212
|
+
# Needs https://nektosact.com/ and docker
|
|
213
|
+
# Uses https://github.com/catthehacker/docker_images
|
|
214
|
+
.PHONY: test-github
|
|
215
|
+
test-github: ## run github workflow actions
|
|
216
|
+
act -P ubuntu-latest=ghcr.io/catthehacker/ubuntu:act-latest --matrix os:ubuntu-latest
|
|
210
217
|
|
|
211
218
|
.PHONY: typecheck
|
|
212
219
|
typecheck: ## run pytype
|
|
@@ -227,6 +234,6 @@ update_webmeta: ## update package metadata for the homepage
|
|
|
227
234
|
sed -i -e 's/version =.*/version = "$(VERSION)"/g' $(WEBMETA)
|
|
228
235
|
sed -i -e 's/author =.*/author = "$(AUTHOR)"/g' $(WEBMETA)
|
|
229
236
|
|
|
230
|
-
.PHONY: homepage
|
|
231
|
-
homepage: update_webmeta ## update the homepage after a release
|
|
237
|
+
.PHONY: release-homepage
|
|
238
|
+
release-homepage: update_webmeta ## update the homepage after a release
|
|
232
239
|
$(MAKE) -C doc/web release
|
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
3.0.3 (released 04.11.2024)
|
|
2
|
+
* Fix UnicodeDecode errors when logging, especially on windows systems.
|
|
3
|
+
Closes: GH bug #170
|
|
4
|
+
* Added support for WIM (windows image) archives with 7z.
|
|
5
|
+
* If the MIME database cannot detect the file type, check again with a lowercase filenanme extension.
|
|
6
|
+
* Use 7z option -aou to rename files when extracting instead of overwriting them.
|
|
7
|
+
* Use rar option -or to rename files when extracting instead of overwriting them.
|
|
8
|
+
* Use rar option -kb to keep files when extracting broken RAR archives.
|
|
9
|
+
|
|
1
10
|
3.0.2 (released 21.10.2024)
|
|
2
11
|
* When running in verbose mode (-vv), print mime and compression info.
|
|
3
12
|
* Use official github command line client "gh" for releases.
|
|
@@ -3,13 +3,11 @@ Development
|
|
|
3
3
|
|
|
4
4
|
Development for patool needs the following environment:
|
|
5
5
|
|
|
6
|
-
1.
|
|
6
|
+
1. Debian Linux or a similar distribution like Ubuntu
|
|
7
7
|
|
|
8
|
-
2.
|
|
8
|
+
2. GNU make
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
3. GNU make
|
|
10
|
+
3. A user with sudo permissions.
|
|
13
11
|
|
|
14
12
|
|
|
15
13
|
To start developing, run the following commands:
|
|
@@ -20,14 +18,10 @@ To start developing, run the following commands:
|
|
|
20
18
|
|
|
21
19
|
2. Initialize the source directory
|
|
22
20
|
|
|
23
|
-
$
|
|
24
|
-
|
|
25
|
-
This creates a virtual Python environment in the directory `.venv/` and installs
|
|
26
|
-
required modules for development.
|
|
27
|
-
|
|
28
|
-
You should add the virtual Python environment binaries to PATH
|
|
21
|
+
$ scripts/install_dev.sh
|
|
29
22
|
|
|
30
|
-
|
|
23
|
+
This installs required packages, creates a virtual Python environment in the directory `.venv/`
|
|
24
|
+
and installs required modules for development.
|
|
31
25
|
|
|
32
26
|
3. Run the tests
|
|
33
27
|
|
|
@@ -83,6 +83,7 @@ ArchiveFormats: tuple[str, ...] = (
|
|
|
83
83
|
'shn',
|
|
84
84
|
'tar',
|
|
85
85
|
'vhd',
|
|
86
|
+
'wim',
|
|
86
87
|
'xz',
|
|
87
88
|
'zip',
|
|
88
89
|
'zoo',
|
|
@@ -134,6 +135,7 @@ ArchiveMimetypes: dict[str, str] = {
|
|
|
134
135
|
'application/x-lha': 'lzh',
|
|
135
136
|
'application/x-lrzip': 'lrzip',
|
|
136
137
|
'application/x-lzh': 'lzh',
|
|
138
|
+
'application/x-ms-wim': 'wim',
|
|
137
139
|
'application/x-rar': 'rar',
|
|
138
140
|
'application/x-redhat-package-manager': 'rpm',
|
|
139
141
|
'application/x-rpm': 'rpm',
|
|
@@ -344,6 +346,9 @@ ArchivePrograms: dict[str, dict[str | None, tuple[str, ...]]] = {
|
|
|
344
346
|
'7zzs',
|
|
345
347
|
),
|
|
346
348
|
},
|
|
349
|
+
'wim': {
|
|
350
|
+
None: ('7z', '7zz', '7zzs'),
|
|
351
|
+
},
|
|
347
352
|
'xz': {
|
|
348
353
|
None: ('xz', '7z', '7zz', '7zzs'),
|
|
349
354
|
'extract': (
|
|
@@ -47,7 +47,7 @@ def encode_safe(*args, encoding=default_encoding):
|
|
|
47
47
|
with the given encoding
|
|
48
48
|
"""
|
|
49
49
|
return " ".join(
|
|
50
|
-
[str(arg).encode(encoding, errors="replace").decode() for arg in args]
|
|
50
|
+
[str(arg).encode(encoding, errors="replace").decode(encoding) for arg in args]
|
|
51
51
|
)
|
|
52
52
|
|
|
53
53
|
|
|
@@ -73,6 +73,7 @@ def add_mimedb_data(mimedb: mimetypes.MimeTypes) -> None:
|
|
|
73
73
|
add_mimetype(mimedb, 'application/x-rzip', '.rz')
|
|
74
74
|
add_mimetype(mimedb, 'application/x-zoo', '.zoo')
|
|
75
75
|
add_mimetype(mimedb, 'application/x-dms', '.dms')
|
|
76
|
+
add_mimetype(mimedb, 'application/x-ms-wim', '.wim')
|
|
76
77
|
add_mimetype(mimedb, 'application/x-zip-compressed', '.crx')
|
|
77
78
|
add_mimetype(mimedb, 'application/x-shar', '.shar')
|
|
78
79
|
add_mimetype(mimedb, 'application/x-tar', '.cbt')
|
|
@@ -145,6 +146,11 @@ def guess_mime_mimedb(filename: str) -> tuple[str | None, str | None]:
|
|
|
145
146
|
mime, encoding = None, None
|
|
146
147
|
if mimedb is not None:
|
|
147
148
|
mime, encoding = mimedb.guess_type(filename, strict=False)
|
|
149
|
+
if mime is None and encoding is None:
|
|
150
|
+
# try with lowercase extension, since we configure our mimedb entries only with lowercase
|
|
151
|
+
# this way, files like "t.GZ" are recognized
|
|
152
|
+
root, ext = os.path.splitext(filename)
|
|
153
|
+
mime, encoding = mimedb.guess_type(root + ext.lower(), strict=False)
|
|
148
154
|
if mime not in ArchiveMimetypes and encoding in ArchiveCompressions:
|
|
149
155
|
# Files like 't.txt.gz' are recognized with encoding as format, and
|
|
150
156
|
# an unsupported mime-type like 'text/plain'. Fix this.
|
|
@@ -26,7 +26,7 @@ def extract_7z(
|
|
|
26
26
|
cmdlist.append(f'-p{password}')
|
|
27
27
|
elif not interactive:
|
|
28
28
|
cmdlist.append('-p-')
|
|
29
|
-
cmdlist.extend([f'-o{outdir}', '--', archive])
|
|
29
|
+
cmdlist.extend(['-aou', f'-o{outdir}', '--', archive])
|
|
30
30
|
return cmdlist
|
|
31
31
|
|
|
32
32
|
|
|
@@ -54,7 +54,7 @@ extract_bzip2 = extract_gzip = extract_compress = extract_xz = extract_lzma = (
|
|
|
54
54
|
|
|
55
55
|
extract_zip = extract_rar = extract_cab = extract_chm = extract_arj = extract_cpio = (
|
|
56
56
|
extract_rpm
|
|
57
|
-
) = extract_deb = extract_iso = extract_vhd = extract_7z
|
|
57
|
+
) = extract_deb = extract_iso = extract_vhd = extract_wim = extract_7z
|
|
58
58
|
|
|
59
59
|
|
|
60
60
|
def list_7z(archive, compression, cmd, verbosity, interactive, password=None):
|
|
@@ -73,8 +73,8 @@ def list_7z(archive, compression, cmd, verbosity, interactive, password=None):
|
|
|
73
73
|
list_bzip2 = list_gzip = list_zip = list_compress = list_rar = list_cab = list_chm = (
|
|
74
74
|
list_arj
|
|
75
75
|
) = list_cpio = list_rpm = list_deb = list_iso = list_xz = list_lzma = list_vhd = (
|
|
76
|
-
|
|
77
|
-
)
|
|
76
|
+
list_wim
|
|
77
|
+
) = list_7z
|
|
78
78
|
|
|
79
79
|
|
|
80
80
|
def test_7z(archive, compression, cmd, verbosity, interactive, password=None):
|
|
@@ -93,8 +93,8 @@ def test_7z(archive, compression, cmd, verbosity, interactive, password=None):
|
|
|
93
93
|
test_bzip2 = test_gzip = test_zip = test_compress = test_rar = test_cab = test_chm = (
|
|
94
94
|
test_arj
|
|
95
95
|
) = test_cpio = test_rpm = test_deb = test_iso = test_xz = test_lzma = test_vhd = (
|
|
96
|
-
|
|
97
|
-
)
|
|
96
|
+
test_wim
|
|
97
|
+
) = test_7z
|
|
98
98
|
|
|
99
99
|
|
|
100
100
|
def create_7z(
|
|
@@ -167,3 +167,17 @@ def create_bzip2(
|
|
|
167
167
|
cmdlist.extend(['-tbzip2', '--', archive])
|
|
168
168
|
cmdlist.extend(filenames)
|
|
169
169
|
return cmdlist
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
def create_wim(
|
|
173
|
+
archive, compression, cmd, verbosity, interactive, filenames, password=None
|
|
174
|
+
):
|
|
175
|
+
"""Create a WIM archive."""
|
|
176
|
+
cmdlist = [cmd, 'a']
|
|
177
|
+
if not interactive:
|
|
178
|
+
cmdlist.append('-y')
|
|
179
|
+
if password:
|
|
180
|
+
cmdlist.append(f'-p{password}')
|
|
181
|
+
cmdlist.extend(['-twim', '--', archive])
|
|
182
|
+
cmdlist.extend(filenames)
|
|
183
|
+
return cmdlist
|
|
@@ -28,23 +28,30 @@ extract_bzip2 = extract_gzip = extract_compress = extract_xz = extract_lzma = (
|
|
|
28
28
|
|
|
29
29
|
extract_zip = extract_rar = extract_cab = extract_chm = extract_arj = extract_cpio = (
|
|
30
30
|
extract_rpm
|
|
31
|
-
) = extract_deb = extract_iso = extract_vhd = extract_7z
|
|
31
|
+
) = extract_deb = extract_iso = extract_vhd = extract_wim = extract_7z
|
|
32
32
|
|
|
33
33
|
from .p7zip import list_7z
|
|
34
34
|
|
|
35
35
|
list_bzip2 = list_gzip = list_zip = list_compress = list_rar = list_cab = list_chm = (
|
|
36
36
|
list_arj
|
|
37
37
|
) = list_cpio = list_rpm = list_deb = list_iso = list_xz = list_lzma = list_vhd = (
|
|
38
|
-
|
|
39
|
-
)
|
|
38
|
+
list_wim
|
|
39
|
+
) = list_7z
|
|
40
40
|
|
|
41
41
|
from .p7zip import test_7z
|
|
42
42
|
|
|
43
43
|
test_bzip2 = test_gzip = test_zip = test_compress = test_rar = test_cab = test_chm = (
|
|
44
44
|
test_arj
|
|
45
45
|
) = test_cpio = test_rpm = test_deb = test_iso = test_xz = test_lzma = test_vhd = (
|
|
46
|
-
|
|
47
|
-
)
|
|
46
|
+
test_wim
|
|
47
|
+
) = test_7z
|
|
48
48
|
|
|
49
49
|
# ruff: noqa: F401
|
|
50
|
-
from .p7zip import
|
|
50
|
+
from .p7zip import (
|
|
51
|
+
create_7z,
|
|
52
|
+
create_zip,
|
|
53
|
+
create_xz,
|
|
54
|
+
create_gzip,
|
|
55
|
+
create_bzip2,
|
|
56
|
+
create_wim,
|
|
57
|
+
)
|
|
@@ -26,7 +26,7 @@ def extract_rar(
|
|
|
26
26
|
cmdlist.extend(['-p-', '-y'])
|
|
27
27
|
if password:
|
|
28
28
|
cmdlist.append(f'-p{password}')
|
|
29
|
-
cmdlist.extend(['--', os.path.abspath(archive)])
|
|
29
|
+
cmdlist.extend(['-kb', '-or', '--', os.path.abspath(archive)])
|
|
30
30
|
return (cmdlist, {'cwd': outdir})
|
|
31
31
|
|
|
32
32
|
|
|
@@ -61,16 +61,16 @@ def run(cmd: Sequence[str], verbosity: int = 0, **kwargs) -> int:
|
|
|
61
61
|
)
|
|
62
62
|
# try to prevent hangs for programs requiring input
|
|
63
63
|
kwargs["input"] = ""
|
|
64
|
+
if verbosity < 1:
|
|
65
|
+
# hide command output on stdout
|
|
66
|
+
kwargs['stdout'] = subprocess.DEVNULL
|
|
64
67
|
if kwargs:
|
|
65
|
-
if verbosity
|
|
68
|
+
if verbosity > 0:
|
|
66
69
|
info = ", ".join(f"{k}={shell_quote(str(v))}" for k, v in kwargs.items())
|
|
67
70
|
log_info(f" with {info}")
|
|
68
71
|
if kwargs.get("shell"):
|
|
69
72
|
# for shell calls the command must be a string
|
|
70
73
|
cmd = " ".join(cmd)
|
|
71
|
-
if verbosity < 1:
|
|
72
|
-
# hide command output on stdout
|
|
73
|
-
kwargs['stdout'] = subprocess.DEVNULL
|
|
74
74
|
res = subprocess.run(cmd, **kwargs)
|
|
75
75
|
return res.returncode
|
|
76
76
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "patool"
|
|
3
|
-
version = "3.0.
|
|
3
|
+
version = "3.0.3"
|
|
4
4
|
requires-python = ">=3.10"
|
|
5
5
|
dependencies = []
|
|
6
6
|
# these values are set by setup.py
|
|
@@ -20,13 +20,17 @@ argcompletion = [
|
|
|
20
20
|
[tool.uv]
|
|
21
21
|
dev-dependencies = [
|
|
22
22
|
# for using setuptools.setup() in setup.py
|
|
23
|
-
"setuptools==75.
|
|
23
|
+
"setuptools==75.3.0",
|
|
24
24
|
|
|
25
25
|
# for testing
|
|
26
26
|
"pytest==8.3.3",
|
|
27
|
+
# plugin to run tests in parallel
|
|
28
|
+
"pytest-xdist[psutil]==3.6.1",
|
|
29
|
+
# plugin to run tests in random order
|
|
30
|
+
"pytest-randomly==3.16.0",
|
|
27
31
|
|
|
28
32
|
# for python code linting
|
|
29
|
-
"ruff==0.7.
|
|
33
|
+
"ruff==0.7.2",
|
|
30
34
|
|
|
31
35
|
# for python type checking
|
|
32
36
|
"pytype==2024.10.11",
|
|
@@ -44,3 +48,8 @@ dev-dependencies = [
|
|
|
44
48
|
# test optional functionality
|
|
45
49
|
"patool[argcompletion]",
|
|
46
50
|
]
|
|
51
|
+
|
|
52
|
+
[tool.patool]
|
|
53
|
+
# pin versions of Python and uv for development
|
|
54
|
+
python_version_dev = "3.12.7"
|
|
55
|
+
uv_version_dev = "0.4.29"
|
|
@@ -31,6 +31,7 @@ class Test7z(ArchiveTest):
|
|
|
31
31
|
self.archive_commands('t.zip')
|
|
32
32
|
self.archive_commands('t.cbz')
|
|
33
33
|
self.archive_commands('t.txt.xz', check=Content.Singlefile)
|
|
34
|
+
self.archive_commands('t.wim')
|
|
34
35
|
self.archive_list('t.txt.gz')
|
|
35
36
|
self.archive_list('t.txt.bz2')
|
|
36
37
|
self.archive_list('t.txt.lzma')
|
|
@@ -93,6 +94,7 @@ class Test7z(ArchiveTest):
|
|
|
93
94
|
self.archive_commands(
|
|
94
95
|
't.txt.xz.foo', skip_create=True, check=Content.Singlefile
|
|
95
96
|
)
|
|
97
|
+
self.archive_commands('t.wim.foo', skip_create=True)
|
|
96
98
|
self.archive_list('t.txt.gz.foo')
|
|
97
99
|
self.archive_list('t.txt.bz2.foo')
|
|
98
100
|
self.archive_list('t.jar.foo')
|
|
@@ -31,6 +31,7 @@ class Test7zz(ArchiveTest):
|
|
|
31
31
|
self.archive_commands('t.zip')
|
|
32
32
|
self.archive_commands('t.cbz')
|
|
33
33
|
self.archive_commands('t.txt.xz', check=Content.Singlefile)
|
|
34
|
+
self.archive_commands('t.wim')
|
|
34
35
|
self.archive_list('t.txt.gz')
|
|
35
36
|
self.archive_list('t.txt.bz2')
|
|
36
37
|
self.archive_list('t.txt.lzma')
|
|
@@ -92,6 +93,7 @@ class Test7zz(ArchiveTest):
|
|
|
92
93
|
self.archive_commands(
|
|
93
94
|
't.txt.xz.foo', skip_create=True, check=Content.Singlefile
|
|
94
95
|
)
|
|
96
|
+
self.archive_commands('t.wim.foo', skip_create=True)
|
|
95
97
|
self.archive_list('t.txt.gz.foo')
|
|
96
98
|
self.archive_list('t.txt.bz2.foo')
|
|
97
99
|
self.archive_list('t.jar.foo')
|
|
@@ -31,6 +31,7 @@ class Test7zzs(ArchiveTest):
|
|
|
31
31
|
self.archive_commands('t.zip')
|
|
32
32
|
self.archive_commands('t.cbz')
|
|
33
33
|
self.archive_commands('t.txt.xz', check=Content.Singlefile)
|
|
34
|
+
self.archive_commands('t.wim')
|
|
34
35
|
self.archive_list('t.txt.gz')
|
|
35
36
|
self.archive_list('t.txt.bz2')
|
|
36
37
|
self.archive_list('t.txt.lzma')
|
|
@@ -92,6 +93,7 @@ class Test7zzs(ArchiveTest):
|
|
|
92
93
|
self.archive_commands(
|
|
93
94
|
't.txt.xz.foo', skip_create=True, check=Content.Singlefile
|
|
94
95
|
)
|
|
96
|
+
self.archive_commands('t.wim.foo', skip_create=True)
|
|
95
97
|
self.archive_list('t.txt.gz.foo')
|
|
96
98
|
self.archive_list('t.txt.bz2.foo')
|
|
97
99
|
self.archive_list('t.jar.foo')
|
|
Binary file
|
|
Binary file
|
|
@@ -174,6 +174,8 @@ class TestMime(unittest.TestCase):
|
|
|
174
174
|
"application/vnd.android.package-archive",
|
|
175
175
|
),
|
|
176
176
|
)
|
|
177
|
+
self.mime_test_file("t.wim", "application/x-ms-wim")
|
|
178
|
+
self.mime_test_file("t.wim.foo", "application/x-ms-wim")
|
|
177
179
|
self.mime_test_file("t.zpaq", "application/zpaq")
|
|
178
180
|
self.mime_test_file("t.zpaq.foo", "application/zpaq")
|
|
179
181
|
|
|
@@ -239,6 +241,7 @@ class TestMime(unittest.TestCase):
|
|
|
239
241
|
self.mime_test_mimedb("t.cpio", "application/x-cpio")
|
|
240
242
|
self.mime_test_mimedb("t.deb", "application/x-debian-package")
|
|
241
243
|
self.mime_test_mimedb("t.gz", "application/gzip")
|
|
244
|
+
self.mime_test_mimedb("t.GZ", "application/gzip")
|
|
242
245
|
self.mime_test_mimedb("t.jar", "application/java-archive")
|
|
243
246
|
self.mime_test_mimedb("t.lzma", "application/x-lzma")
|
|
244
247
|
self.mime_test_mimedb("t.txt.lz", "application/x-lzip")
|
|
@@ -293,4 +296,5 @@ class TestMime(unittest.TestCase):
|
|
|
293
296
|
self.mime_test_mimedb("t.epub", "application/zip")
|
|
294
297
|
self.mime_test_mimedb("t.apk", "application/zip")
|
|
295
298
|
self.mime_test_mimedb("t.vhd", "application/x-vhd")
|
|
299
|
+
self.mime_test_mimedb("t.wim", "application/x-ms-wim")
|
|
296
300
|
self.mime_test_mimedb("t.zpaq", "application/zpaq")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|