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.
Files changed (315) hide show
  1. {patool-3.0.2 → patool-3.0.3}/Makefile +12 -5
  2. {patool-3.0.2/patool.egg-info → patool-3.0.3}/PKG-INFO +1 -1
  3. {patool-3.0.2 → patool-3.0.3}/doc/changelog.txt +9 -0
  4. {patool-3.0.2 → patool-3.0.3}/doc/development.md +6 -12
  5. {patool-3.0.2 → patool-3.0.3/patool.egg-info}/PKG-INFO +1 -1
  6. {patool-3.0.2 → patool-3.0.3}/patool.egg-info/SOURCES.txt +2 -0
  7. {patool-3.0.2 → patool-3.0.3}/patoolib/__init__.py +5 -0
  8. {patool-3.0.2 → patool-3.0.3}/patoolib/configuration.py +1 -1
  9. {patool-3.0.2 → patool-3.0.3}/patoolib/log.py +1 -1
  10. {patool-3.0.2 → patool-3.0.3}/patoolib/mime.py +6 -0
  11. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/p7zip.py +20 -6
  12. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/p7zz.py +13 -6
  13. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/rar.py +1 -1
  14. {patool-3.0.2 → patool-3.0.3}/patoolib/util.py +4 -4
  15. {patool-3.0.2 → patool-3.0.3}/pyproject.toml +12 -3
  16. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_7z.py +2 -0
  17. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_7zz.py +2 -0
  18. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_7zzs.py +2 -0
  19. patool-3.0.3/tests/data/t.wim +0 -0
  20. patool-3.0.3/tests/data/t.wim.foo +0 -0
  21. {patool-3.0.2 → patool-3.0.3}/tests/test_mime.py +4 -0
  22. {patool-3.0.2 → patool-3.0.3}/COPYING +0 -0
  23. {patool-3.0.2 → patool-3.0.3}/MANIFEST.in +0 -0
  24. {patool-3.0.2 → patool-3.0.3}/README.md +0 -0
  25. {patool-3.0.2 → patool-3.0.3}/doc/api.md +0 -0
  26. {patool-3.0.2 → patool-3.0.3}/doc/icon/Makefile +0 -0
  27. {patool-3.0.2 → patool-3.0.3}/doc/icon/favicon.ico +0 -0
  28. {patool-3.0.2 → patool-3.0.3}/doc/icon/logo16x16.png +0 -0
  29. {patool-3.0.2 → patool-3.0.3}/doc/icon/logo32x32.png +0 -0
  30. {patool-3.0.2 → patool-3.0.3}/doc/install.md +0 -0
  31. {patool-3.0.2 → patool-3.0.3}/doc/patool.1 +0 -0
  32. {patool-3.0.2 → patool-3.0.3}/doc/patool.txt +0 -0
  33. {patool-3.0.2 → patool-3.0.3}/patool.egg-info/dependency_links.txt +0 -0
  34. {patool-3.0.2 → patool-3.0.3}/patool.egg-info/entry_points.txt +0 -0
  35. {patool-3.0.2 → patool-3.0.3}/patool.egg-info/requires.txt +0 -0
  36. {patool-3.0.2 → patool-3.0.3}/patool.egg-info/top_level.txt +0 -0
  37. {patool-3.0.2 → patool-3.0.3}/patoolib/cli.py +0 -0
  38. {patool-3.0.2 → patool-3.0.3}/patoolib/fileutil.py +0 -0
  39. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/__init__.py +0 -0
  40. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/ar.py +0 -0
  41. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/arc.py +0 -0
  42. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/archmage.py +0 -0
  43. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/arj.py +0 -0
  44. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/bsdcpio.py +0 -0
  45. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/bsdtar.py +0 -0
  46. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/bzip2.py +0 -0
  47. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/bzip3.py +0 -0
  48. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/cabextract.py +0 -0
  49. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/chmlib.py +0 -0
  50. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/clzip.py +0 -0
  51. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/compress.py +0 -0
  52. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/cpio.py +0 -0
  53. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/dpkg.py +0 -0
  54. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/flac.py +0 -0
  55. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/genisoimage.py +0 -0
  56. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/gzip.py +0 -0
  57. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/isoinfo.py +0 -0
  58. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/jar.py +0 -0
  59. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/lbzip2.py +0 -0
  60. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/lcab.py +0 -0
  61. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/lha.py +0 -0
  62. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/lhasa.py +0 -0
  63. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/lrzip.py +0 -0
  64. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/lz4.py +0 -0
  65. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/lzip.py +0 -0
  66. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/lzma.py +0 -0
  67. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/lzop.py +0 -0
  68. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/mac.py +0 -0
  69. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/nomarch.py +0 -0
  70. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/p7azip.py +0 -0
  71. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/p7rzip.py +0 -0
  72. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/p7zzs.py +0 -0
  73. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/pbzip2.py +0 -0
  74. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/pdlzip.py +0 -0
  75. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/pigz.py +0 -0
  76. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/plzip.py +0 -0
  77. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/py_bz2.py +0 -0
  78. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/py_echo.py +0 -0
  79. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/py_gzip.py +0 -0
  80. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/py_lzma.py +0 -0
  81. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/py_tarfile.py +0 -0
  82. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/py_zipfile.py +0 -0
  83. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/rpm.py +0 -0
  84. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/rpm2cpio.py +0 -0
  85. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/rzip.py +0 -0
  86. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/shar.py +0 -0
  87. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/shorten.py +0 -0
  88. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/star.py +0 -0
  89. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/tar.py +0 -0
  90. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/unace.py +0 -0
  91. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/unadf.py +0 -0
  92. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/unalz.py +0 -0
  93. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/unar.py +0 -0
  94. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/uncompress.py +0 -0
  95. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/unrar.py +0 -0
  96. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/unshar.py +0 -0
  97. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/unzip.py +0 -0
  98. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/xdms.py +0 -0
  99. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/xz.py +0 -0
  100. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/zip.py +0 -0
  101. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/zoo.py +0 -0
  102. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/zopfli.py +0 -0
  103. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/zpaq.py +0 -0
  104. {patool-3.0.2 → patool-3.0.3}/patoolib/programs/zstd.py +0 -0
  105. {patool-3.0.2 → patool-3.0.3}/setup.cfg +0 -0
  106. {patool-3.0.2 → patool-3.0.3}/setup.py +0 -0
  107. {patool-3.0.2 → patool-3.0.3}/tests/__init__.py +0 -0
  108. {patool-3.0.2 → patool-3.0.3}/tests/archives/__init__.py +0 -0
  109. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_7za.py +0 -0
  110. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_7zr.py +0 -0
  111. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_ar.py +0 -0
  112. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_arc.py +0 -0
  113. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_archmage.py +0 -0
  114. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_arj.py +0 -0
  115. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_bsdcpio.py +0 -0
  116. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_bsdtar.py +0 -0
  117. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_bzip2.py +0 -0
  118. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_bzip3.py +0 -0
  119. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_cabextract.py +0 -0
  120. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_chmlib.py +0 -0
  121. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_clzip.py +0 -0
  122. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_compress.py +0 -0
  123. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_cpio.py +0 -0
  124. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_dpkg.py +0 -0
  125. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_flac.py +0 -0
  126. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_genisoimage.py +0 -0
  127. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_gzip.py +0 -0
  128. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_isoinfo.py +0 -0
  129. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_jar.py +0 -0
  130. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_lbzip2.py +0 -0
  131. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_lcab.py +0 -0
  132. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_lha.py +0 -0
  133. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_lhasa.py +0 -0
  134. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_lrzip.py +0 -0
  135. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_lz4.py +0 -0
  136. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_lzip.py +0 -0
  137. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_lzma.py +0 -0
  138. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_lzop.py +0 -0
  139. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_mac.py +0 -0
  140. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_nomarch.py +0 -0
  141. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_pbzip2.py +0 -0
  142. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_pdlzip.py +0 -0
  143. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_pigz.py +0 -0
  144. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_plzip.py +0 -0
  145. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_pybz2.py +0 -0
  146. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_pyecho.py +0 -0
  147. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_pygzip.py +0 -0
  148. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_pylzma.py +0 -0
  149. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_pytarfile.py +0 -0
  150. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_pyzipfile.py +0 -0
  151. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_rar.py +0 -0
  152. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_rpm.py +0 -0
  153. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_rpm2cpio.py +0 -0
  154. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_rzip.py +0 -0
  155. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_shar.py +0 -0
  156. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_shorten.py +0 -0
  157. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_star.py +0 -0
  158. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_tar.py +0 -0
  159. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_unace.py +0 -0
  160. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_unadf.py +0 -0
  161. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_unalz.py +0 -0
  162. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_unar.py +0 -0
  163. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_uncompressreal.py +0 -0
  164. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_unrar.py +0 -0
  165. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_unshar.py +0 -0
  166. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_unzip.py +0 -0
  167. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_xdms.py +0 -0
  168. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_xz.py +0 -0
  169. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_zip.py +0 -0
  170. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_zoo.py +0 -0
  171. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_zopfli.py +0 -0
  172. {patool-3.0.2 → patool-3.0.3}/tests/archives/test_zpaq.py +0 -0
  173. {patool-3.0.2 → patool-3.0.3}/tests/data/p .7z +0 -0
  174. {patool-3.0.2 → patool-3.0.3}/tests/data/p.7z.foo +0 -0
  175. {patool-3.0.2 → patool-3.0.3}/tests/data/p.arc +0 -0
  176. {patool-3.0.2 → patool-3.0.3}/tests/data/p.arc.foo +0 -0
  177. {patool-3.0.2 → patool-3.0.3}/tests/data/p.arj +0 -0
  178. {patool-3.0.2 → patool-3.0.3}/tests/data/p.arj.foo +0 -0
  179. {patool-3.0.2 → patool-3.0.3}/tests/data/p.cbz +0 -0
  180. {patool-3.0.2 → patool-3.0.3}/tests/data/p.cbz.foo +0 -0
  181. {patool-3.0.2 → patool-3.0.3}/tests/data/p.rar +0 -0
  182. {patool-3.0.2 → patool-3.0.3}/tests/data/p.rar.foo +0 -0
  183. {patool-3.0.2 → patool-3.0.3}/tests/data/p.zip +0 -0
  184. {patool-3.0.2 → patool-3.0.3}/tests/data/p.zip.foo +0 -0
  185. {patool-3.0.2 → patool-3.0.3}/tests/data/t/t.txt +0 -0
  186. {patool-3.0.2 → patool-3.0.3}/tests/data/t .7z +0 -0
  187. {patool-3.0.2 → patool-3.0.3}/tests/data/t .cb7 +0 -0
  188. {patool-3.0.2 → patool-3.0.3}/tests/data/t.7z.001 +0 -0
  189. {patool-3.0.2 → patool-3.0.3}/tests/data/t.7z.foo +0 -0
  190. {patool-3.0.2 → patool-3.0.3}/tests/data/t.ace +0 -0
  191. {patool-3.0.2 → patool-3.0.3}/tests/data/t.ace.foo +0 -0
  192. {patool-3.0.2 → patool-3.0.3}/tests/data/t.adf +0 -0
  193. {patool-3.0.2 → patool-3.0.3}/tests/data/t.adf.foo +0 -0
  194. {patool-3.0.2 → patool-3.0.3}/tests/data/t.alz +0 -0
  195. {patool-3.0.2 → patool-3.0.3}/tests/data/t.alz.foo +0 -0
  196. {patool-3.0.2 → patool-3.0.3}/tests/data/t.ape +0 -0
  197. {patool-3.0.2 → patool-3.0.3}/tests/data/t.ape.foo +0 -0
  198. {patool-3.0.2 → patool-3.0.3}/tests/data/t.apk +0 -0
  199. {patool-3.0.2 → patool-3.0.3}/tests/data/t.apk.foo +0 -0
  200. {patool-3.0.2 → patool-3.0.3}/tests/data/t.arc +0 -0
  201. {patool-3.0.2 → patool-3.0.3}/tests/data/t.arc.foo +0 -0
  202. {patool-3.0.2 → patool-3.0.3}/tests/data/t.arj +0 -0
  203. {patool-3.0.2 → patool-3.0.3}/tests/data/t.arj.foo +0 -0
  204. {patool-3.0.2 → patool-3.0.3}/tests/data/t.cab +0 -0
  205. {patool-3.0.2 → patool-3.0.3}/tests/data/t.cab.foo +0 -0
  206. {patool-3.0.2 → patool-3.0.3}/tests/data/t.cb7.foo +0 -0
  207. {patool-3.0.2 → patool-3.0.3}/tests/data/t.cba +0 -0
  208. {patool-3.0.2 → patool-3.0.3}/tests/data/t.cba.foo +0 -0
  209. {patool-3.0.2 → patool-3.0.3}/tests/data/t.cbr +0 -0
  210. {patool-3.0.2 → patool-3.0.3}/tests/data/t.cbr.foo +0 -0
  211. {patool-3.0.2 → patool-3.0.3}/tests/data/t.cbt +0 -0
  212. {patool-3.0.2 → patool-3.0.3}/tests/data/t.cbt.foo +0 -0
  213. {patool-3.0.2 → patool-3.0.3}/tests/data/t.cbz +0 -0
  214. {patool-3.0.2 → patool-3.0.3}/tests/data/t.cbz.foo +0 -0
  215. {patool-3.0.2 → patool-3.0.3}/tests/data/t.chm +0 -0
  216. {patool-3.0.2 → patool-3.0.3}/tests/data/t.chm.foo +0 -0
  217. {patool-3.0.2 → patool-3.0.3}/tests/data/t.cpio +0 -0
  218. {patool-3.0.2 → patool-3.0.3}/tests/data/t.cpio.foo +0 -0
  219. {patool-3.0.2 → patool-3.0.3}/tests/data/t.deb +0 -0
  220. {patool-3.0.2 → patool-3.0.3}/tests/data/t.deb.foo +0 -0
  221. {patool-3.0.2 → patool-3.0.3}/tests/data/t.dms +0 -0
  222. {patool-3.0.2 → patool-3.0.3}/tests/data/t.dms.foo +0 -0
  223. {patool-3.0.2 → patool-3.0.3}/tests/data/t.epub +0 -0
  224. {patool-3.0.2 → patool-3.0.3}/tests/data/t.epub.foo +0 -0
  225. {patool-3.0.2 → patool-3.0.3}/tests/data/t.flac +0 -0
  226. {patool-3.0.2 → patool-3.0.3}/tests/data/t.flac.flac +0 -0
  227. {patool-3.0.2 → patool-3.0.3}/tests/data/t.flac.foo +0 -0
  228. {patool-3.0.2 → patool-3.0.3}/tests/data/t.flac.wav +0 -0
  229. {patool-3.0.2 → patool-3.0.3}/tests/data/t.iso +0 -0
  230. {patool-3.0.2 → patool-3.0.3}/tests/data/t.iso.foo +0 -0
  231. {patool-3.0.2 → patool-3.0.3}/tests/data/t.jar +0 -0
  232. {patool-3.0.2 → patool-3.0.3}/tests/data/t.jar.foo +0 -0
  233. {patool-3.0.2 → patool-3.0.3}/tests/data/t.lha +0 -0
  234. {patool-3.0.2 → patool-3.0.3}/tests/data/t.lha.foo +0 -0
  235. {patool-3.0.2 → patool-3.0.3}/tests/data/t.lzh +0 -0
  236. {patool-3.0.2 → patool-3.0.3}/tests/data/t.rar +0 -0
  237. {patool-3.0.2 → patool-3.0.3}/tests/data/t.rar.foo +0 -0
  238. {patool-3.0.2 → patool-3.0.3}/tests/data/t.rar.gz +0 -0
  239. {patool-3.0.2 → patool-3.0.3}/tests/data/t.rar.gz.foo +0 -0
  240. {patool-3.0.2 → patool-3.0.3}/tests/data/t.rpm +0 -0
  241. {patool-3.0.2 → patool-3.0.3}/tests/data/t.rpm.foo +0 -0
  242. {patool-3.0.2 → patool-3.0.3}/tests/data/t.shar +0 -0
  243. {patool-3.0.2 → patool-3.0.3}/tests/data/t.shn +0 -0
  244. {patool-3.0.2 → patool-3.0.3}/tests/data/t.tar +0 -0
  245. {patool-3.0.2 → patool-3.0.3}/tests/data/t.tar.Z +0 -0
  246. {patool-3.0.2 → patool-3.0.3}/tests/data/t.tar.Z.foo +0 -0
  247. {patool-3.0.2 → patool-3.0.3}/tests/data/t.tar.bz2 +0 -0
  248. {patool-3.0.2 → patool-3.0.3}/tests/data/t.tar.bz2.foo +0 -0
  249. {patool-3.0.2 → patool-3.0.3}/tests/data/t.tar.foo +0 -0
  250. {patool-3.0.2 → patool-3.0.3}/tests/data/t.tar.gz +0 -0
  251. {patool-3.0.2 → patool-3.0.3}/tests/data/t.tar.gz.foo +0 -0
  252. {patool-3.0.2 → patool-3.0.3}/tests/data/t.tar.lz +0 -0
  253. {patool-3.0.2 → patool-3.0.3}/tests/data/t.tar.lz.foo +0 -0
  254. {patool-3.0.2 → patool-3.0.3}/tests/data/t.tar.lzma +0 -0
  255. {patool-3.0.2 → patool-3.0.3}/tests/data/t.tar.lzma.foo +0 -0
  256. {patool-3.0.2 → patool-3.0.3}/tests/data/t.tar.xz +0 -0
  257. {patool-3.0.2 → patool-3.0.3}/tests/data/t.tar.xz.foo +0 -0
  258. {patool-3.0.2 → patool-3.0.3}/tests/data/t.tar.zst +0 -0
  259. {patool-3.0.2 → patool-3.0.3}/tests/data/t.tar.zst.foo +0 -0
  260. {patool-3.0.2 → patool-3.0.3}/tests/data/t.taz +0 -0
  261. {patool-3.0.2 → patool-3.0.3}/tests/data/t.taz.foo +0 -0
  262. {patool-3.0.2 → patool-3.0.3}/tests/data/t.tbz2 +0 -0
  263. {patool-3.0.2 → patool-3.0.3}/tests/data/t.tbz2.foo +0 -0
  264. {patool-3.0.2 → patool-3.0.3}/tests/data/t.tgz +0 -0
  265. {patool-3.0.2 → patool-3.0.3}/tests/data/t.tgz.foo +0 -0
  266. {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt +0 -0
  267. {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.Z +0 -0
  268. {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.Z.foo +0 -0
  269. {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.a +0 -0
  270. {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.a.foo +0 -0
  271. {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.bz2 +0 -0
  272. {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.bz2.foo +0 -0
  273. {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.bz3 +0 -0
  274. {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.bz3.foo +0 -0
  275. {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.gz +0 -0
  276. {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.gz.foo +0 -0
  277. {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.lrz +0 -0
  278. {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.lrz.foo +0 -0
  279. {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.lz +0 -0
  280. {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.lz.foo +0 -0
  281. {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.lz4 +0 -0
  282. {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.lz4.foo +0 -0
  283. {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.lzma +0 -0
  284. {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.lzma.foo +0 -0
  285. {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.lzo +0 -0
  286. {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.lzo.foo +0 -0
  287. {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.rz +0 -0
  288. {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.rz.foo +0 -0
  289. {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.xz +0 -0
  290. {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.xz.foo +0 -0
  291. {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.zst +0 -0
  292. {patool-3.0.2 → patool-3.0.3}/tests/data/t.txt.zst.foo +0 -0
  293. {patool-3.0.2 → patool-3.0.3}/tests/data/t.vhd +0 -0
  294. {patool-3.0.2 → patool-3.0.3}/tests/data/t.wav +0 -0
  295. {patool-3.0.2 → patool-3.0.3}/tests/data/t.zip +0 -0
  296. {patool-3.0.2 → patool-3.0.3}/tests/data/t.zip.foo +0 -0
  297. {patool-3.0.2 → patool-3.0.3}/tests/data/t.zoo +0 -0
  298. {patool-3.0.2 → patool-3.0.3}/tests/data/t.zoo.foo +0 -0
  299. {patool-3.0.2 → patool-3.0.3}/tests/data/t.zpaq +0 -0
  300. {patool-3.0.2 → patool-3.0.3}/tests/data/t.zpaq.foo +0 -0
  301. {patool-3.0.2 → patool-3.0.3}/tests/data/t2.txt +0 -0
  302. {patool-3.0.2 → patool-3.0.3}/tests/test_cli.py +0 -0
  303. {patool-3.0.2 → patool-3.0.3}/tests/test_config.py +0 -0
  304. {patool-3.0.2 → patool-3.0.3}/tests/test_create.py +0 -0
  305. {patool-3.0.2 → patool-3.0.3}/tests/test_diff.py +0 -0
  306. {patool-3.0.2 → patool-3.0.3}/tests/test_extract.py +0 -0
  307. {patool-3.0.2 → patool-3.0.3}/tests/test_fileutil.py +0 -0
  308. {patool-3.0.2 → patool-3.0.3}/tests/test_formats.py +0 -0
  309. {patool-3.0.2 → patool-3.0.3}/tests/test_help.py +0 -0
  310. {patool-3.0.2 → patool-3.0.3}/tests/test_list.py +0 -0
  311. {patool-3.0.2 → patool-3.0.3}/tests/test_repack.py +0 -0
  312. {patool-3.0.2 → patool-3.0.3}/tests/test_search.py +0 -0
  313. {patool-3.0.2 → patool-3.0.3}/tests/test_test.py +0 -0
  314. {patool-3.0.2 → patool-3.0.3}/tests/test_util.py +0 -0
  315. {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
- PYTESTOPTS?=-s --full-trace --log-file=build/test.log
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,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: patool
3
- Version: 3.0.2
3
+ Version: 3.0.3
4
4
  Summary: portable archive file manager
5
5
  Home-page: https://github.com/wummel/patool
6
6
  Author: Bastian Kleineidam
@@ -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. Python >= 3.10 from https://www.python.org/
6
+ 1. Debian Linux or a similar distribution like Ubuntu
7
7
 
8
- 2. uv from https://github.com/astral-sh/uv
8
+ 2. GNU make
9
9
 
10
- Install the `uv` binary into a local directory in your PATH.
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
- $ make init
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
- $ export PATH=.venv/bin:$PATH
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
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: patool
3
- Version: 3.0.2
3
+ Version: 3.0.3
4
4
  Summary: portable archive file manager
5
5
  Home-page: https://github.com/wummel/patool
6
6
  Author: Bastian Kleineidam
@@ -302,6 +302,8 @@ tests/data/t.txt.zst
302
302
  tests/data/t.txt.zst.foo
303
303
  tests/data/t.vhd
304
304
  tests/data/t.wav
305
+ tests/data/t.wim
306
+ tests/data/t.wim.foo
305
307
  tests/data/t.zip
306
308
  tests/data/t.zip.foo
307
309
  tests/data/t.zoo
@@ -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': (
@@ -2,7 +2,7 @@
2
2
  """Define basic configuration data like version or application name."""
3
3
 
4
4
  AppName: str = "patool"
5
- Version: str = "3.0.2"
5
+ Version: str = "3.0.3"
6
6
  MyName: str = "Bastian Kleineidam"
7
7
  MyEmail: str = "bastian.kleineidam@web.de"
8
8
 
@@ -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
- list_7z
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
- test_7z
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
- list_7z
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
- test_7z
47
- )
46
+ test_wim
47
+ ) = test_7z
48
48
 
49
49
  # ruff: noqa: F401
50
- from .p7zip import create_7z, create_zip, create_xz, create_gzip, create_bzip2
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 >= 0:
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.2"
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.2.0",
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.0",
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