@ai-ecoverse/wasix-python 3.14.2-2

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 (2512) hide show
  1. package/LICENSE +277 -0
  2. package/README.md +22 -0
  3. package/bin/python.wasm +0 -0
  4. package/include/python3.14/Python.h +155 -0
  5. package/include/python3.14/README.rst +14 -0
  6. package/include/python3.14/abstract.h +915 -0
  7. package/include/python3.14/audit.h +30 -0
  8. package/include/python3.14/bltinmodule.h +14 -0
  9. package/include/python3.14/boolobject.h +54 -0
  10. package/include/python3.14/bytearrayobject.h +44 -0
  11. package/include/python3.14/bytesobject.h +66 -0
  12. package/include/python3.14/ceval.h +145 -0
  13. package/include/python3.14/codecs.h +176 -0
  14. package/include/python3.14/compile.h +22 -0
  15. package/include/python3.14/complexobject.h +30 -0
  16. package/include/python3.14/cpython/abstract.h +104 -0
  17. package/include/python3.14/cpython/audit.h +8 -0
  18. package/include/python3.14/cpython/bytearrayobject.h +38 -0
  19. package/include/python3.14/cpython/bytesobject.h +42 -0
  20. package/include/python3.14/cpython/cellobject.h +50 -0
  21. package/include/python3.14/cpython/ceval.h +43 -0
  22. package/include/python3.14/cpython/classobject.h +71 -0
  23. package/include/python3.14/cpython/code.h +340 -0
  24. package/include/python3.14/cpython/compile.h +50 -0
  25. package/include/python3.14/cpython/complexobject.h +33 -0
  26. package/include/python3.14/cpython/context.h +107 -0
  27. package/include/python3.14/cpython/critical_section.h +154 -0
  28. package/include/python3.14/cpython/descrobject.h +62 -0
  29. package/include/python3.14/cpython/dictobject.h +105 -0
  30. package/include/python3.14/cpython/fileobject.h +16 -0
  31. package/include/python3.14/cpython/fileutils.h +16 -0
  32. package/include/python3.14/cpython/floatobject.h +27 -0
  33. package/include/python3.14/cpython/frameobject.h +35 -0
  34. package/include/python3.14/cpython/funcobject.h +185 -0
  35. package/include/python3.14/cpython/genobject.h +56 -0
  36. package/include/python3.14/cpython/import.h +30 -0
  37. package/include/python3.14/cpython/initconfig.h +334 -0
  38. package/include/python3.14/cpython/listobject.h +53 -0
  39. package/include/python3.14/cpython/lock.h +74 -0
  40. package/include/python3.14/cpython/longintrepr.h +184 -0
  41. package/include/python3.14/cpython/longobject.h +89 -0
  42. package/include/python3.14/cpython/memoryobject.h +50 -0
  43. package/include/python3.14/cpython/methodobject.h +66 -0
  44. package/include/python3.14/cpython/modsupport.h +26 -0
  45. package/include/python3.14/cpython/monitoring.h +269 -0
  46. package/include/python3.14/cpython/object.h +493 -0
  47. package/include/python3.14/cpython/objimpl.h +104 -0
  48. package/include/python3.14/cpython/odictobject.h +43 -0
  49. package/include/python3.14/cpython/picklebufobject.h +31 -0
  50. package/include/python3.14/cpython/pthread_stubs.h +105 -0
  51. package/include/python3.14/cpython/pyatomic.h +614 -0
  52. package/include/python3.14/cpython/pyatomic_gcc.h +615 -0
  53. package/include/python3.14/cpython/pyatomic_msc.h +1197 -0
  54. package/include/python3.14/cpython/pyatomic_std.h +1112 -0
  55. package/include/python3.14/cpython/pyctype.h +39 -0
  56. package/include/python3.14/cpython/pydebug.h +38 -0
  57. package/include/python3.14/cpython/pyerrors.h +132 -0
  58. package/include/python3.14/cpython/pyfpe.h +15 -0
  59. package/include/python3.14/cpython/pyframe.h +45 -0
  60. package/include/python3.14/cpython/pyhash.h +54 -0
  61. package/include/python3.14/cpython/pylifecycle.h +89 -0
  62. package/include/python3.14/cpython/pymem.h +84 -0
  63. package/include/python3.14/cpython/pystate.h +275 -0
  64. package/include/python3.14/cpython/pystats.h +194 -0
  65. package/include/python3.14/cpython/pythonrun.h +96 -0
  66. package/include/python3.14/cpython/pythread.h +43 -0
  67. package/include/python3.14/cpython/pytime.h +27 -0
  68. package/include/python3.14/cpython/setobject.h +71 -0
  69. package/include/python3.14/cpython/traceback.h +13 -0
  70. package/include/python3.14/cpython/tracemalloc.h +32 -0
  71. package/include/python3.14/cpython/tupleobject.h +40 -0
  72. package/include/python3.14/cpython/unicodeobject.h +773 -0
  73. package/include/python3.14/cpython/warnings.h +20 -0
  74. package/include/python3.14/cpython/weakrefobject.h +66 -0
  75. package/include/python3.14/critical_section.h +16 -0
  76. package/include/python3.14/datetime.h +267 -0
  77. package/include/python3.14/descrobject.h +100 -0
  78. package/include/python3.14/dictobject.h +108 -0
  79. package/include/python3.14/dynamic_annotations.h +499 -0
  80. package/include/python3.14/enumobject.h +17 -0
  81. package/include/python3.14/errcode.h +45 -0
  82. package/include/python3.14/exports.h +105 -0
  83. package/include/python3.14/fileobject.h +41 -0
  84. package/include/python3.14/fileutils.h +62 -0
  85. package/include/python3.14/floatobject.h +54 -0
  86. package/include/python3.14/frameobject.h +20 -0
  87. package/include/python3.14/genericaliasobject.h +14 -0
  88. package/include/python3.14/import.h +103 -0
  89. package/include/python3.14/internal/mimalloc/mimalloc/atomic.h +392 -0
  90. package/include/python3.14/internal/mimalloc/mimalloc/internal.h +969 -0
  91. package/include/python3.14/internal/mimalloc/mimalloc/prim.h +329 -0
  92. package/include/python3.14/internal/mimalloc/mimalloc/track.h +147 -0
  93. package/include/python3.14/internal/mimalloc/mimalloc/types.h +721 -0
  94. package/include/python3.14/internal/mimalloc/mimalloc.h +565 -0
  95. package/include/python3.14/internal/pycore_abstract.h +61 -0
  96. package/include/python3.14/internal/pycore_asdl.h +112 -0
  97. package/include/python3.14/internal/pycore_ast.h +945 -0
  98. package/include/python3.14/internal/pycore_ast_state.h +271 -0
  99. package/include/python3.14/internal/pycore_atexit.h +31 -0
  100. package/include/python3.14/internal/pycore_audit.h +35 -0
  101. package/include/python3.14/internal/pycore_backoff.h +133 -0
  102. package/include/python3.14/internal/pycore_bitutils.h +186 -0
  103. package/include/python3.14/internal/pycore_blocks_output_buffer.h +321 -0
  104. package/include/python3.14/internal/pycore_brc.h +73 -0
  105. package/include/python3.14/internal/pycore_bytes_methods.h +82 -0
  106. package/include/python3.14/internal/pycore_bytesobject.h +149 -0
  107. package/include/python3.14/internal/pycore_c_array.h +39 -0
  108. package/include/python3.14/internal/pycore_call.h +206 -0
  109. package/include/python3.14/internal/pycore_capsule.h +17 -0
  110. package/include/python3.14/internal/pycore_cell.h +75 -0
  111. package/include/python3.14/internal/pycore_ceval.h +390 -0
  112. package/include/python3.14/internal/pycore_ceval_state.h +48 -0
  113. package/include/python3.14/internal/pycore_code.h +671 -0
  114. package/include/python3.14/internal/pycore_codecs.h +76 -0
  115. package/include/python3.14/internal/pycore_compile.h +230 -0
  116. package/include/python3.14/internal/pycore_complexobject.h +34 -0
  117. package/include/python3.14/internal/pycore_condvar.h +93 -0
  118. package/include/python3.14/internal/pycore_context.h +59 -0
  119. package/include/python3.14/internal/pycore_critical_section.h +237 -0
  120. package/include/python3.14/internal/pycore_crossinterp.h +406 -0
  121. package/include/python3.14/internal/pycore_crossinterp_data_registry.h +41 -0
  122. package/include/python3.14/internal/pycore_debug_offsets.h +379 -0
  123. package/include/python3.14/internal/pycore_descrobject.h +28 -0
  124. package/include/python3.14/internal/pycore_dict.h +410 -0
  125. package/include/python3.14/internal/pycore_dict_state.h +28 -0
  126. package/include/python3.14/internal/pycore_dtoa.h +40 -0
  127. package/include/python3.14/internal/pycore_emscripten_signal.h +30 -0
  128. package/include/python3.14/internal/pycore_emscripten_trampoline.h +70 -0
  129. package/include/python3.14/internal/pycore_exceptions.h +40 -0
  130. package/include/python3.14/internal/pycore_faulthandler.h +100 -0
  131. package/include/python3.14/internal/pycore_fileutils.h +320 -0
  132. package/include/python3.14/internal/pycore_fileutils_windows.h +98 -0
  133. package/include/python3.14/internal/pycore_floatobject.h +49 -0
  134. package/include/python3.14/internal/pycore_flowgraph.h +47 -0
  135. package/include/python3.14/internal/pycore_format.h +27 -0
  136. package/include/python3.14/internal/pycore_frame.h +61 -0
  137. package/include/python3.14/internal/pycore_freelist.h +111 -0
  138. package/include/python3.14/internal/pycore_freelist_state.h +70 -0
  139. package/include/python3.14/internal/pycore_function.h +53 -0
  140. package/include/python3.14/internal/pycore_gc.h +378 -0
  141. package/include/python3.14/internal/pycore_genobject.h +43 -0
  142. package/include/python3.14/internal/pycore_getopt.h +22 -0
  143. package/include/python3.14/internal/pycore_gil.h +66 -0
  144. package/include/python3.14/internal/pycore_global_objects.h +34 -0
  145. package/include/python3.14/internal/pycore_global_objects_fini_generated.h +1592 -0
  146. package/include/python3.14/internal/pycore_global_strings.h +854 -0
  147. package/include/python3.14/internal/pycore_hamt.h +113 -0
  148. package/include/python3.14/internal/pycore_hashtable.h +150 -0
  149. package/include/python3.14/internal/pycore_import.h +141 -0
  150. package/include/python3.14/internal/pycore_importdl.h +139 -0
  151. package/include/python3.14/internal/pycore_index_pool.h +36 -0
  152. package/include/python3.14/internal/pycore_initconfig.h +197 -0
  153. package/include/python3.14/internal/pycore_instruction_sequence.h +83 -0
  154. package/include/python3.14/internal/pycore_instruments.h +127 -0
  155. package/include/python3.14/internal/pycore_interp.h +109 -0
  156. package/include/python3.14/internal/pycore_interp_structs.h +977 -0
  157. package/include/python3.14/internal/pycore_interpframe.h +401 -0
  158. package/include/python3.14/internal/pycore_interpframe_structs.h +95 -0
  159. package/include/python3.14/internal/pycore_interpolation.h +26 -0
  160. package/include/python3.14/internal/pycore_intrinsics.h +51 -0
  161. package/include/python3.14/internal/pycore_jit.h +29 -0
  162. package/include/python3.14/internal/pycore_list.h +81 -0
  163. package/include/python3.14/internal/pycore_llist.h +106 -0
  164. package/include/python3.14/internal/pycore_lock.h +236 -0
  165. package/include/python3.14/internal/pycore_long.h +319 -0
  166. package/include/python3.14/internal/pycore_magic_number.h +305 -0
  167. package/include/python3.14/internal/pycore_memoryobject.h +20 -0
  168. package/include/python3.14/internal/pycore_mimalloc.h +69 -0
  169. package/include/python3.14/internal/pycore_modsupport.h +99 -0
  170. package/include/python3.14/internal/pycore_moduleobject.h +62 -0
  171. package/include/python3.14/internal/pycore_namespace.h +21 -0
  172. package/include/python3.14/internal/pycore_object.h +1029 -0
  173. package/include/python3.14/internal/pycore_object_alloc.h +71 -0
  174. package/include/python3.14/internal/pycore_object_deferred.h +32 -0
  175. package/include/python3.14/internal/pycore_object_stack.h +95 -0
  176. package/include/python3.14/internal/pycore_object_state.h +49 -0
  177. package/include/python3.14/internal/pycore_obmalloc.h +702 -0
  178. package/include/python3.14/internal/pycore_obmalloc_init.h +66 -0
  179. package/include/python3.14/internal/pycore_opcode_metadata.h +2117 -0
  180. package/include/python3.14/internal/pycore_opcode_utils.h +90 -0
  181. package/include/python3.14/internal/pycore_optimizer.h +318 -0
  182. package/include/python3.14/internal/pycore_parking_lot.h +97 -0
  183. package/include/python3.14/internal/pycore_parser.h +78 -0
  184. package/include/python3.14/internal/pycore_pathconfig.h +26 -0
  185. package/include/python3.14/internal/pycore_pyarena.h +68 -0
  186. package/include/python3.14/internal/pycore_pyatomic_ft_wrappers.h +174 -0
  187. package/include/python3.14/internal/pycore_pybuffer.h +21 -0
  188. package/include/python3.14/internal/pycore_pyerrors.h +213 -0
  189. package/include/python3.14/internal/pycore_pyhash.h +91 -0
  190. package/include/python3.14/internal/pycore_pylifecycle.h +136 -0
  191. package/include/python3.14/internal/pycore_pymath.h +205 -0
  192. package/include/python3.14/internal/pycore_pymem.h +145 -0
  193. package/include/python3.14/internal/pycore_pymem_init.h +103 -0
  194. package/include/python3.14/internal/pycore_pystate.h +339 -0
  195. package/include/python3.14/internal/pycore_pystats.h +21 -0
  196. package/include/python3.14/internal/pycore_pythonrun.h +68 -0
  197. package/include/python3.14/internal/pycore_pythread.h +172 -0
  198. package/include/python3.14/internal/pycore_qsbr.h +172 -0
  199. package/include/python3.14/internal/pycore_range.h +21 -0
  200. package/include/python3.14/internal/pycore_runtime.h +63 -0
  201. package/include/python3.14/internal/pycore_runtime_init.h +239 -0
  202. package/include/python3.14/internal/pycore_runtime_init_generated.h +1589 -0
  203. package/include/python3.14/internal/pycore_runtime_structs.h +310 -0
  204. package/include/python3.14/internal/pycore_semaphore.h +67 -0
  205. package/include/python3.14/internal/pycore_setobject.h +41 -0
  206. package/include/python3.14/internal/pycore_signal.h +108 -0
  207. package/include/python3.14/internal/pycore_sliceobject.h +20 -0
  208. package/include/python3.14/internal/pycore_stackref.h +791 -0
  209. package/include/python3.14/internal/pycore_stats.h +97 -0
  210. package/include/python3.14/internal/pycore_strhex.h +39 -0
  211. package/include/python3.14/internal/pycore_structs.h +88 -0
  212. package/include/python3.14/internal/pycore_structseq.h +40 -0
  213. package/include/python3.14/internal/pycore_symtable.h +201 -0
  214. package/include/python3.14/internal/pycore_sysmodule.h +32 -0
  215. package/include/python3.14/internal/pycore_template.h +26 -0
  216. package/include/python3.14/internal/pycore_time.h +334 -0
  217. package/include/python3.14/internal/pycore_token.h +110 -0
  218. package/include/python3.14/internal/pycore_traceback.h +111 -0
  219. package/include/python3.14/internal/pycore_tracemalloc.h +164 -0
  220. package/include/python3.14/internal/pycore_tstate.h +88 -0
  221. package/include/python3.14/internal/pycore_tuple.h +75 -0
  222. package/include/python3.14/internal/pycore_typedefs.h +18 -0
  223. package/include/python3.14/internal/pycore_typeobject.h +155 -0
  224. package/include/python3.14/internal/pycore_typevarobject.h +28 -0
  225. package/include/python3.14/internal/pycore_ucnhash.h +36 -0
  226. package/include/python3.14/internal/pycore_unicodeobject.h +308 -0
  227. package/include/python3.14/internal/pycore_unicodeobject_generated.h +3132 -0
  228. package/include/python3.14/internal/pycore_unionobject.h +26 -0
  229. package/include/python3.14/internal/pycore_uniqueid.h +57 -0
  230. package/include/python3.14/internal/pycore_uop_ids.h +335 -0
  231. package/include/python3.14/internal/pycore_uop_metadata.h +1204 -0
  232. package/include/python3.14/internal/pycore_warnings.h +21 -0
  233. package/include/python3.14/internal/pycore_weakref.h +133 -0
  234. package/include/python3.14/intrcheck.h +23 -0
  235. package/include/python3.14/iterobject.h +24 -0
  236. package/include/python3.14/listobject.h +55 -0
  237. package/include/python3.14/lock.h +16 -0
  238. package/include/python3.14/longobject.h +178 -0
  239. package/include/python3.14/marshal.h +31 -0
  240. package/include/python3.14/memoryobject.h +34 -0
  241. package/include/python3.14/methodobject.h +146 -0
  242. package/include/python3.14/modsupport.h +146 -0
  243. package/include/python3.14/moduleobject.h +122 -0
  244. package/include/python3.14/monitoring.h +18 -0
  245. package/include/python3.14/object.h +828 -0
  246. package/include/python3.14/objimpl.h +211 -0
  247. package/include/python3.14/opcode.h +43 -0
  248. package/include/python3.14/opcode_ids.h +259 -0
  249. package/include/python3.14/osdefs.h +57 -0
  250. package/include/python3.14/osmodule.h +17 -0
  251. package/include/python3.14/patchlevel.h +49 -0
  252. package/include/python3.14/py_curses.h +117 -0
  253. package/include/python3.14/pyatomic.h +16 -0
  254. package/include/python3.14/pybuffer.h +145 -0
  255. package/include/python3.14/pycapsule.h +58 -0
  256. package/include/python3.14/pyconfig.h +2087 -0
  257. package/include/python3.14/pydtrace.d +22 -0
  258. package/include/python3.14/pydtrace.h +59 -0
  259. package/include/python3.14/pyerrors.h +335 -0
  260. package/include/python3.14/pyexpat.h +62 -0
  261. package/include/python3.14/pyframe.h +26 -0
  262. package/include/python3.14/pyhash.h +59 -0
  263. package/include/python3.14/pylifecycle.h +80 -0
  264. package/include/python3.14/pymacconfig.h +91 -0
  265. package/include/python3.14/pymacro.h +243 -0
  266. package/include/python3.14/pymath.h +65 -0
  267. package/include/python3.14/pymem.h +110 -0
  268. package/include/python3.14/pyport.h +710 -0
  269. package/include/python3.14/pystate.h +132 -0
  270. package/include/python3.14/pystats.h +28 -0
  271. package/include/python3.14/pystrcmp.h +23 -0
  272. package/include/python3.14/pystrtod.h +37 -0
  273. package/include/python3.14/pythonrun.h +42 -0
  274. package/include/python3.14/pythread.h +131 -0
  275. package/include/python3.14/pytypedefs.h +30 -0
  276. package/include/python3.14/rangeobject.h +27 -0
  277. package/include/python3.14/refcount.h +555 -0
  278. package/include/python3.14/setobject.h +49 -0
  279. package/include/python3.14/sliceobject.h +69 -0
  280. package/include/python3.14/structmember.h +56 -0
  281. package/include/python3.14/structseq.h +46 -0
  282. package/include/python3.14/sysmodule.h +27 -0
  283. package/include/python3.14/traceback.h +26 -0
  284. package/include/python3.14/tupleobject.h +46 -0
  285. package/include/python3.14/typeslots.h +96 -0
  286. package/include/python3.14/unicodeobject.h +1029 -0
  287. package/include/python3.14/warnings.h +45 -0
  288. package/include/python3.14/weakrefobject.h +46 -0
  289. package/lib/libpython3.14.a +4 -0
  290. package/lib/pkgconfig/python-3.14-embed.pc +13 -0
  291. package/lib/pkgconfig/python-3.14.pc +13 -0
  292. package/lib/python3.14/LICENSE.txt +277 -0
  293. package/lib/python3.14/__future__.py +147 -0
  294. package/lib/python3.14/__hello__.py +16 -0
  295. package/lib/python3.14/__phello__/__init__.py +7 -0
  296. package/lib/python3.14/__phello__/__pycache__/__init__.cpython-314.pyc +0 -0
  297. package/lib/python3.14/__phello__/__pycache__/spam.cpython-314.pyc +0 -0
  298. package/lib/python3.14/__phello__/spam.py +7 -0
  299. package/lib/python3.14/__pycache__/__future__.cpython-314.pyc +0 -0
  300. package/lib/python3.14/__pycache__/__hello__.cpython-314.pyc +0 -0
  301. package/lib/python3.14/__pycache__/_aix_support.cpython-314.pyc +0 -0
  302. package/lib/python3.14/__pycache__/_android_support.cpython-314.pyc +0 -0
  303. package/lib/python3.14/__pycache__/_apple_support.cpython-314.pyc +0 -0
  304. package/lib/python3.14/__pycache__/_ast_unparse.cpython-314.pyc +0 -0
  305. package/lib/python3.14/__pycache__/_collections_abc.cpython-314.pyc +0 -0
  306. package/lib/python3.14/__pycache__/_colorize.cpython-314.pyc +0 -0
  307. package/lib/python3.14/__pycache__/_compat_pickle.cpython-314.pyc +0 -0
  308. package/lib/python3.14/__pycache__/_ios_support.cpython-314.pyc +0 -0
  309. package/lib/python3.14/__pycache__/_markupbase.cpython-314.pyc +0 -0
  310. package/lib/python3.14/__pycache__/_opcode_metadata.cpython-314.pyc +0 -0
  311. package/lib/python3.14/__pycache__/_osx_support.cpython-314.pyc +0 -0
  312. package/lib/python3.14/__pycache__/_py_abc.cpython-314.pyc +0 -0
  313. package/lib/python3.14/__pycache__/_py_warnings.cpython-314.pyc +0 -0
  314. package/lib/python3.14/__pycache__/_pydatetime.cpython-314.pyc +0 -0
  315. package/lib/python3.14/__pycache__/_pydecimal.cpython-314.pyc +0 -0
  316. package/lib/python3.14/__pycache__/_pyio.cpython-314.pyc +0 -0
  317. package/lib/python3.14/__pycache__/_pylong.cpython-314.pyc +0 -0
  318. package/lib/python3.14/__pycache__/_sitebuiltins.cpython-314.pyc +0 -0
  319. package/lib/python3.14/__pycache__/_strptime.cpython-314.pyc +0 -0
  320. package/lib/python3.14/__pycache__/_sysconfigdata__wasi_wasm32-wasi-threads.cpython-314.pyc +0 -0
  321. package/lib/python3.14/__pycache__/_threading_local.cpython-314.pyc +0 -0
  322. package/lib/python3.14/__pycache__/_weakrefset.cpython-314.pyc +0 -0
  323. package/lib/python3.14/__pycache__/abc.cpython-314.pyc +0 -0
  324. package/lib/python3.14/__pycache__/annotationlib.cpython-314.pyc +0 -0
  325. package/lib/python3.14/__pycache__/antigravity.cpython-314.pyc +0 -0
  326. package/lib/python3.14/__pycache__/argparse.cpython-314.pyc +0 -0
  327. package/lib/python3.14/__pycache__/ast.cpython-314.pyc +0 -0
  328. package/lib/python3.14/__pycache__/base64.cpython-314.pyc +0 -0
  329. package/lib/python3.14/__pycache__/bdb.cpython-314.pyc +0 -0
  330. package/lib/python3.14/__pycache__/bisect.cpython-314.pyc +0 -0
  331. package/lib/python3.14/__pycache__/bz2.cpython-314.pyc +0 -0
  332. package/lib/python3.14/__pycache__/cProfile.cpython-314.pyc +0 -0
  333. package/lib/python3.14/__pycache__/calendar.cpython-314.pyc +0 -0
  334. package/lib/python3.14/__pycache__/cmd.cpython-314.pyc +0 -0
  335. package/lib/python3.14/__pycache__/code.cpython-314.pyc +0 -0
  336. package/lib/python3.14/__pycache__/codecs.cpython-314.pyc +0 -0
  337. package/lib/python3.14/__pycache__/codeop.cpython-314.pyc +0 -0
  338. package/lib/python3.14/__pycache__/colorsys.cpython-314.pyc +0 -0
  339. package/lib/python3.14/__pycache__/compileall.cpython-314.pyc +0 -0
  340. package/lib/python3.14/__pycache__/configparser.cpython-314.pyc +0 -0
  341. package/lib/python3.14/__pycache__/contextlib.cpython-314.pyc +0 -0
  342. package/lib/python3.14/__pycache__/contextvars.cpython-314.pyc +0 -0
  343. package/lib/python3.14/__pycache__/copy.cpython-314.pyc +0 -0
  344. package/lib/python3.14/__pycache__/copyreg.cpython-314.pyc +0 -0
  345. package/lib/python3.14/__pycache__/csv.cpython-314.pyc +0 -0
  346. package/lib/python3.14/__pycache__/dataclasses.cpython-314.pyc +0 -0
  347. package/lib/python3.14/__pycache__/datetime.cpython-314.pyc +0 -0
  348. package/lib/python3.14/__pycache__/decimal.cpython-314.pyc +0 -0
  349. package/lib/python3.14/__pycache__/difflib.cpython-314.pyc +0 -0
  350. package/lib/python3.14/__pycache__/dis.cpython-314.pyc +0 -0
  351. package/lib/python3.14/__pycache__/doctest.cpython-314.pyc +0 -0
  352. package/lib/python3.14/__pycache__/enum.cpython-314.pyc +0 -0
  353. package/lib/python3.14/__pycache__/filecmp.cpython-314.pyc +0 -0
  354. package/lib/python3.14/__pycache__/fileinput.cpython-314.pyc +0 -0
  355. package/lib/python3.14/__pycache__/fnmatch.cpython-314.pyc +0 -0
  356. package/lib/python3.14/__pycache__/fractions.cpython-314.pyc +0 -0
  357. package/lib/python3.14/__pycache__/ftplib.cpython-314.pyc +0 -0
  358. package/lib/python3.14/__pycache__/functools.cpython-314.pyc +0 -0
  359. package/lib/python3.14/__pycache__/genericpath.cpython-314.pyc +0 -0
  360. package/lib/python3.14/__pycache__/getopt.cpython-314.pyc +0 -0
  361. package/lib/python3.14/__pycache__/getpass.cpython-314.pyc +0 -0
  362. package/lib/python3.14/__pycache__/gettext.cpython-314.pyc +0 -0
  363. package/lib/python3.14/__pycache__/glob.cpython-314.pyc +0 -0
  364. package/lib/python3.14/__pycache__/graphlib.cpython-314.pyc +0 -0
  365. package/lib/python3.14/__pycache__/gzip.cpython-314.pyc +0 -0
  366. package/lib/python3.14/__pycache__/hashlib.cpython-314.pyc +0 -0
  367. package/lib/python3.14/__pycache__/heapq.cpython-314.pyc +0 -0
  368. package/lib/python3.14/__pycache__/hmac.cpython-314.pyc +0 -0
  369. package/lib/python3.14/__pycache__/imaplib.cpython-314.pyc +0 -0
  370. package/lib/python3.14/__pycache__/inspect.cpython-314.pyc +0 -0
  371. package/lib/python3.14/__pycache__/io.cpython-314.pyc +0 -0
  372. package/lib/python3.14/__pycache__/ipaddress.cpython-314.pyc +0 -0
  373. package/lib/python3.14/__pycache__/keyword.cpython-314.pyc +0 -0
  374. package/lib/python3.14/__pycache__/linecache.cpython-314.pyc +0 -0
  375. package/lib/python3.14/__pycache__/locale.cpython-314.pyc +0 -0
  376. package/lib/python3.14/__pycache__/lzma.cpython-314.pyc +0 -0
  377. package/lib/python3.14/__pycache__/mailbox.cpython-314.pyc +0 -0
  378. package/lib/python3.14/__pycache__/mimetypes.cpython-314.pyc +0 -0
  379. package/lib/python3.14/__pycache__/modulefinder.cpython-314.pyc +0 -0
  380. package/lib/python3.14/__pycache__/netrc.cpython-314.pyc +0 -0
  381. package/lib/python3.14/__pycache__/ntpath.cpython-314.pyc +0 -0
  382. package/lib/python3.14/__pycache__/nturl2path.cpython-314.pyc +0 -0
  383. package/lib/python3.14/__pycache__/numbers.cpython-314.pyc +0 -0
  384. package/lib/python3.14/__pycache__/opcode.cpython-314.pyc +0 -0
  385. package/lib/python3.14/__pycache__/operator.cpython-314.pyc +0 -0
  386. package/lib/python3.14/__pycache__/optparse.cpython-314.pyc +0 -0
  387. package/lib/python3.14/__pycache__/os.cpython-314.pyc +0 -0
  388. package/lib/python3.14/__pycache__/pdb.cpython-314.pyc +0 -0
  389. package/lib/python3.14/__pycache__/pickle.cpython-314.pyc +0 -0
  390. package/lib/python3.14/__pycache__/pickletools.cpython-314.pyc +0 -0
  391. package/lib/python3.14/__pycache__/pkgutil.cpython-314.pyc +0 -0
  392. package/lib/python3.14/__pycache__/platform.cpython-314.pyc +0 -0
  393. package/lib/python3.14/__pycache__/plistlib.cpython-314.pyc +0 -0
  394. package/lib/python3.14/__pycache__/poplib.cpython-314.pyc +0 -0
  395. package/lib/python3.14/__pycache__/posixpath.cpython-314.pyc +0 -0
  396. package/lib/python3.14/__pycache__/pprint.cpython-314.pyc +0 -0
  397. package/lib/python3.14/__pycache__/profile.cpython-314.pyc +0 -0
  398. package/lib/python3.14/__pycache__/pstats.cpython-314.pyc +0 -0
  399. package/lib/python3.14/__pycache__/pty.cpython-314.pyc +0 -0
  400. package/lib/python3.14/__pycache__/py_compile.cpython-314.pyc +0 -0
  401. package/lib/python3.14/__pycache__/pyclbr.cpython-314.pyc +0 -0
  402. package/lib/python3.14/__pycache__/pydoc.cpython-314.pyc +0 -0
  403. package/lib/python3.14/__pycache__/queue.cpython-314.pyc +0 -0
  404. package/lib/python3.14/__pycache__/quopri.cpython-314.pyc +0 -0
  405. package/lib/python3.14/__pycache__/random.cpython-314.pyc +0 -0
  406. package/lib/python3.14/__pycache__/reprlib.cpython-314.pyc +0 -0
  407. package/lib/python3.14/__pycache__/rlcompleter.cpython-314.pyc +0 -0
  408. package/lib/python3.14/__pycache__/runpy.cpython-314.pyc +0 -0
  409. package/lib/python3.14/__pycache__/sched.cpython-314.pyc +0 -0
  410. package/lib/python3.14/__pycache__/secrets.cpython-314.pyc +0 -0
  411. package/lib/python3.14/__pycache__/selectors.cpython-314.pyc +0 -0
  412. package/lib/python3.14/__pycache__/shelve.cpython-314.pyc +0 -0
  413. package/lib/python3.14/__pycache__/shlex.cpython-314.pyc +0 -0
  414. package/lib/python3.14/__pycache__/shutil.cpython-314.pyc +0 -0
  415. package/lib/python3.14/__pycache__/signal.cpython-314.pyc +0 -0
  416. package/lib/python3.14/__pycache__/site.cpython-314.pyc +0 -0
  417. package/lib/python3.14/__pycache__/smtplib.cpython-314.pyc +0 -0
  418. package/lib/python3.14/__pycache__/socket.cpython-314.pyc +0 -0
  419. package/lib/python3.14/__pycache__/socketserver.cpython-314.pyc +0 -0
  420. package/lib/python3.14/__pycache__/sre_compile.cpython-314.pyc +0 -0
  421. package/lib/python3.14/__pycache__/sre_constants.cpython-314.pyc +0 -0
  422. package/lib/python3.14/__pycache__/sre_parse.cpython-314.pyc +0 -0
  423. package/lib/python3.14/__pycache__/ssl.cpython-314.pyc +0 -0
  424. package/lib/python3.14/__pycache__/stat.cpython-314.pyc +0 -0
  425. package/lib/python3.14/__pycache__/statistics.cpython-314.pyc +0 -0
  426. package/lib/python3.14/__pycache__/stringprep.cpython-314.pyc +0 -0
  427. package/lib/python3.14/__pycache__/struct.cpython-314.pyc +0 -0
  428. package/lib/python3.14/__pycache__/subprocess.cpython-314.pyc +0 -0
  429. package/lib/python3.14/__pycache__/symtable.cpython-314.pyc +0 -0
  430. package/lib/python3.14/__pycache__/tabnanny.cpython-314.pyc +0 -0
  431. package/lib/python3.14/__pycache__/tarfile.cpython-314.pyc +0 -0
  432. package/lib/python3.14/__pycache__/tempfile.cpython-314.pyc +0 -0
  433. package/lib/python3.14/__pycache__/textwrap.cpython-314.pyc +0 -0
  434. package/lib/python3.14/__pycache__/this.cpython-314.pyc +0 -0
  435. package/lib/python3.14/__pycache__/threading.cpython-314.pyc +0 -0
  436. package/lib/python3.14/__pycache__/timeit.cpython-314.pyc +0 -0
  437. package/lib/python3.14/__pycache__/token.cpython-314.pyc +0 -0
  438. package/lib/python3.14/__pycache__/tokenize.cpython-314.pyc +0 -0
  439. package/lib/python3.14/__pycache__/trace.cpython-314.pyc +0 -0
  440. package/lib/python3.14/__pycache__/traceback.cpython-314.pyc +0 -0
  441. package/lib/python3.14/__pycache__/tracemalloc.cpython-314.pyc +0 -0
  442. package/lib/python3.14/__pycache__/tty.cpython-314.pyc +0 -0
  443. package/lib/python3.14/__pycache__/turtle.cpython-314.pyc +0 -0
  444. package/lib/python3.14/__pycache__/types.cpython-314.pyc +0 -0
  445. package/lib/python3.14/__pycache__/typing.cpython-314.pyc +0 -0
  446. package/lib/python3.14/__pycache__/uuid.cpython-314.pyc +0 -0
  447. package/lib/python3.14/__pycache__/warnings.cpython-314.pyc +0 -0
  448. package/lib/python3.14/__pycache__/wave.cpython-314.pyc +0 -0
  449. package/lib/python3.14/__pycache__/weakref.cpython-314.pyc +0 -0
  450. package/lib/python3.14/__pycache__/webbrowser.cpython-314.pyc +0 -0
  451. package/lib/python3.14/__pycache__/zipapp.cpython-314.pyc +0 -0
  452. package/lib/python3.14/__pycache__/zipimport.cpython-314.pyc +0 -0
  453. package/lib/python3.14/_aix_support.py +108 -0
  454. package/lib/python3.14/_android_support.py +185 -0
  455. package/lib/python3.14/_apple_support.py +66 -0
  456. package/lib/python3.14/_ast_unparse.py +1161 -0
  457. package/lib/python3.14/_collections_abc.py +1167 -0
  458. package/lib/python3.14/_colorize.py +355 -0
  459. package/lib/python3.14/_compat_pickle.py +251 -0
  460. package/lib/python3.14/_ios_support.py +71 -0
  461. package/lib/python3.14/_markupbase.py +396 -0
  462. package/lib/python3.14/_opcode_metadata.py +371 -0
  463. package/lib/python3.14/_osx_support.py +579 -0
  464. package/lib/python3.14/_py_abc.py +147 -0
  465. package/lib/python3.14/_py_warnings.py +869 -0
  466. package/lib/python3.14/_pydatetime.py +2723 -0
  467. package/lib/python3.14/_pydecimal.py +6401 -0
  468. package/lib/python3.14/_pyio.py +2752 -0
  469. package/lib/python3.14/_pylong.py +729 -0
  470. package/lib/python3.14/_pyrepl/__init__.py +19 -0
  471. package/lib/python3.14/_pyrepl/__main__.py +10 -0
  472. package/lib/python3.14/_pyrepl/__pycache__/__init__.cpython-314.pyc +0 -0
  473. package/lib/python3.14/_pyrepl/__pycache__/__main__.cpython-314.pyc +0 -0
  474. package/lib/python3.14/_pyrepl/__pycache__/_module_completer.cpython-314.pyc +0 -0
  475. package/lib/python3.14/_pyrepl/__pycache__/_threading_handler.cpython-314.pyc +0 -0
  476. package/lib/python3.14/_pyrepl/__pycache__/base_eventqueue.cpython-314.pyc +0 -0
  477. package/lib/python3.14/_pyrepl/__pycache__/commands.cpython-314.pyc +0 -0
  478. package/lib/python3.14/_pyrepl/__pycache__/completing_reader.cpython-314.pyc +0 -0
  479. package/lib/python3.14/_pyrepl/__pycache__/console.cpython-314.pyc +0 -0
  480. package/lib/python3.14/_pyrepl/__pycache__/fancy_termios.cpython-314.pyc +0 -0
  481. package/lib/python3.14/_pyrepl/__pycache__/historical_reader.cpython-314.pyc +0 -0
  482. package/lib/python3.14/_pyrepl/__pycache__/input.cpython-314.pyc +0 -0
  483. package/lib/python3.14/_pyrepl/__pycache__/keymap.cpython-314.pyc +0 -0
  484. package/lib/python3.14/_pyrepl/__pycache__/main.cpython-314.pyc +0 -0
  485. package/lib/python3.14/_pyrepl/__pycache__/pager.cpython-314.pyc +0 -0
  486. package/lib/python3.14/_pyrepl/__pycache__/reader.cpython-314.pyc +0 -0
  487. package/lib/python3.14/_pyrepl/__pycache__/readline.cpython-314.pyc +0 -0
  488. package/lib/python3.14/_pyrepl/__pycache__/simple_interact.cpython-314.pyc +0 -0
  489. package/lib/python3.14/_pyrepl/__pycache__/terminfo.cpython-314.pyc +0 -0
  490. package/lib/python3.14/_pyrepl/__pycache__/trace.cpython-314.pyc +0 -0
  491. package/lib/python3.14/_pyrepl/__pycache__/types.cpython-314.pyc +0 -0
  492. package/lib/python3.14/_pyrepl/__pycache__/unix_console.cpython-314.pyc +0 -0
  493. package/lib/python3.14/_pyrepl/__pycache__/unix_eventqueue.cpython-314.pyc +0 -0
  494. package/lib/python3.14/_pyrepl/__pycache__/utils.cpython-314.pyc +0 -0
  495. package/lib/python3.14/_pyrepl/__pycache__/windows_console.cpython-314.pyc +0 -0
  496. package/lib/python3.14/_pyrepl/__pycache__/windows_eventqueue.cpython-314.pyc +0 -0
  497. package/lib/python3.14/_pyrepl/_module_completer.py +415 -0
  498. package/lib/python3.14/_pyrepl/_threading_handler.py +74 -0
  499. package/lib/python3.14/_pyrepl/base_eventqueue.py +110 -0
  500. package/lib/python3.14/_pyrepl/commands.py +505 -0
  501. package/lib/python3.14/_pyrepl/completing_reader.py +299 -0
  502. package/lib/python3.14/_pyrepl/console.py +229 -0
  503. package/lib/python3.14/_pyrepl/fancy_termios.py +82 -0
  504. package/lib/python3.14/_pyrepl/historical_reader.py +419 -0
  505. package/lib/python3.14/_pyrepl/input.py +114 -0
  506. package/lib/python3.14/_pyrepl/keymap.py +213 -0
  507. package/lib/python3.14/_pyrepl/main.py +58 -0
  508. package/lib/python3.14/_pyrepl/mypy.ini +25 -0
  509. package/lib/python3.14/_pyrepl/pager.py +175 -0
  510. package/lib/python3.14/_pyrepl/reader.py +762 -0
  511. package/lib/python3.14/_pyrepl/readline.py +620 -0
  512. package/lib/python3.14/_pyrepl/simple_interact.py +181 -0
  513. package/lib/python3.14/_pyrepl/terminfo.py +488 -0
  514. package/lib/python3.14/_pyrepl/trace.py +34 -0
  515. package/lib/python3.14/_pyrepl/types.py +10 -0
  516. package/lib/python3.14/_pyrepl/unix_console.py +842 -0
  517. package/lib/python3.14/_pyrepl/unix_eventqueue.py +77 -0
  518. package/lib/python3.14/_pyrepl/utils.py +391 -0
  519. package/lib/python3.14/_pyrepl/windows_console.py +725 -0
  520. package/lib/python3.14/_pyrepl/windows_eventqueue.py +42 -0
  521. package/lib/python3.14/_sitebuiltins.py +103 -0
  522. package/lib/python3.14/_strptime.py +822 -0
  523. package/lib/python3.14/_sysconfig_vars__wasi_wasm32-wasi-threads.json +1097 -0
  524. package/lib/python3.14/_sysconfigdata__wasi_wasm32-wasi-threads.py +1084 -0
  525. package/lib/python3.14/_threading_local.py +120 -0
  526. package/lib/python3.14/_weakrefset.py +147 -0
  527. package/lib/python3.14/abc.py +188 -0
  528. package/lib/python3.14/annotationlib.py +1143 -0
  529. package/lib/python3.14/antigravity.py +17 -0
  530. package/lib/python3.14/argparse.py +2777 -0
  531. package/lib/python3.14/ast.py +680 -0
  532. package/lib/python3.14/asyncio/__init__.py +74 -0
  533. package/lib/python3.14/asyncio/__main__.py +239 -0
  534. package/lib/python3.14/asyncio/__pycache__/__init__.cpython-314.pyc +0 -0
  535. package/lib/python3.14/asyncio/__pycache__/__main__.cpython-314.pyc +0 -0
  536. package/lib/python3.14/asyncio/__pycache__/base_events.cpython-314.pyc +0 -0
  537. package/lib/python3.14/asyncio/__pycache__/base_futures.cpython-314.pyc +0 -0
  538. package/lib/python3.14/asyncio/__pycache__/base_subprocess.cpython-314.pyc +0 -0
  539. package/lib/python3.14/asyncio/__pycache__/base_tasks.cpython-314.pyc +0 -0
  540. package/lib/python3.14/asyncio/__pycache__/constants.cpython-314.pyc +0 -0
  541. package/lib/python3.14/asyncio/__pycache__/coroutines.cpython-314.pyc +0 -0
  542. package/lib/python3.14/asyncio/__pycache__/events.cpython-314.pyc +0 -0
  543. package/lib/python3.14/asyncio/__pycache__/exceptions.cpython-314.pyc +0 -0
  544. package/lib/python3.14/asyncio/__pycache__/format_helpers.cpython-314.pyc +0 -0
  545. package/lib/python3.14/asyncio/__pycache__/futures.cpython-314.pyc +0 -0
  546. package/lib/python3.14/asyncio/__pycache__/graph.cpython-314.pyc +0 -0
  547. package/lib/python3.14/asyncio/__pycache__/locks.cpython-314.pyc +0 -0
  548. package/lib/python3.14/asyncio/__pycache__/log.cpython-314.pyc +0 -0
  549. package/lib/python3.14/asyncio/__pycache__/mixins.cpython-314.pyc +0 -0
  550. package/lib/python3.14/asyncio/__pycache__/proactor_events.cpython-314.pyc +0 -0
  551. package/lib/python3.14/asyncio/__pycache__/protocols.cpython-314.pyc +0 -0
  552. package/lib/python3.14/asyncio/__pycache__/queues.cpython-314.pyc +0 -0
  553. package/lib/python3.14/asyncio/__pycache__/runners.cpython-314.pyc +0 -0
  554. package/lib/python3.14/asyncio/__pycache__/selector_events.cpython-314.pyc +0 -0
  555. package/lib/python3.14/asyncio/__pycache__/sslproto.cpython-314.pyc +0 -0
  556. package/lib/python3.14/asyncio/__pycache__/staggered.cpython-314.pyc +0 -0
  557. package/lib/python3.14/asyncio/__pycache__/streams.cpython-314.pyc +0 -0
  558. package/lib/python3.14/asyncio/__pycache__/subprocess.cpython-314.pyc +0 -0
  559. package/lib/python3.14/asyncio/__pycache__/taskgroups.cpython-314.pyc +0 -0
  560. package/lib/python3.14/asyncio/__pycache__/tasks.cpython-314.pyc +0 -0
  561. package/lib/python3.14/asyncio/__pycache__/threads.cpython-314.pyc +0 -0
  562. package/lib/python3.14/asyncio/__pycache__/timeouts.cpython-314.pyc +0 -0
  563. package/lib/python3.14/asyncio/__pycache__/tools.cpython-314.pyc +0 -0
  564. package/lib/python3.14/asyncio/__pycache__/transports.cpython-314.pyc +0 -0
  565. package/lib/python3.14/asyncio/__pycache__/trsock.cpython-314.pyc +0 -0
  566. package/lib/python3.14/asyncio/__pycache__/unix_events.cpython-314.pyc +0 -0
  567. package/lib/python3.14/asyncio/__pycache__/windows_events.cpython-314.pyc +0 -0
  568. package/lib/python3.14/asyncio/__pycache__/windows_utils.cpython-314.pyc +0 -0
  569. package/lib/python3.14/asyncio/base_events.py +2071 -0
  570. package/lib/python3.14/asyncio/base_futures.py +67 -0
  571. package/lib/python3.14/asyncio/base_subprocess.py +319 -0
  572. package/lib/python3.14/asyncio/base_tasks.py +94 -0
  573. package/lib/python3.14/asyncio/constants.py +41 -0
  574. package/lib/python3.14/asyncio/coroutines.py +118 -0
  575. package/lib/python3.14/asyncio/events.py +878 -0
  576. package/lib/python3.14/asyncio/exceptions.py +62 -0
  577. package/lib/python3.14/asyncio/format_helpers.py +84 -0
  578. package/lib/python3.14/asyncio/futures.py +481 -0
  579. package/lib/python3.14/asyncio/graph.py +276 -0
  580. package/lib/python3.14/asyncio/locks.py +617 -0
  581. package/lib/python3.14/asyncio/log.py +7 -0
  582. package/lib/python3.14/asyncio/mixins.py +21 -0
  583. package/lib/python3.14/asyncio/proactor_events.py +896 -0
  584. package/lib/python3.14/asyncio/protocols.py +216 -0
  585. package/lib/python3.14/asyncio/queues.py +307 -0
  586. package/lib/python3.14/asyncio/runners.py +225 -0
  587. package/lib/python3.14/asyncio/selector_events.py +1326 -0
  588. package/lib/python3.14/asyncio/sslproto.py +929 -0
  589. package/lib/python3.14/asyncio/staggered.py +179 -0
  590. package/lib/python3.14/asyncio/streams.py +787 -0
  591. package/lib/python3.14/asyncio/subprocess.py +229 -0
  592. package/lib/python3.14/asyncio/taskgroups.py +280 -0
  593. package/lib/python3.14/asyncio/tasks.py +1141 -0
  594. package/lib/python3.14/asyncio/threads.py +25 -0
  595. package/lib/python3.14/asyncio/timeouts.py +182 -0
  596. package/lib/python3.14/asyncio/tools.py +276 -0
  597. package/lib/python3.14/asyncio/transports.py +337 -0
  598. package/lib/python3.14/asyncio/trsock.py +98 -0
  599. package/lib/python3.14/asyncio/unix_events.py +972 -0
  600. package/lib/python3.14/asyncio/windows_events.py +903 -0
  601. package/lib/python3.14/asyncio/windows_utils.py +173 -0
  602. package/lib/python3.14/base64.py +618 -0
  603. package/lib/python3.14/bdb.py +1206 -0
  604. package/lib/python3.14/bisect.py +118 -0
  605. package/lib/python3.14/build-details.json +53 -0
  606. package/lib/python3.14/bz2.py +352 -0
  607. package/lib/python3.14/cProfile.py +205 -0
  608. package/lib/python3.14/calendar.py +926 -0
  609. package/lib/python3.14/cmd.py +414 -0
  610. package/lib/python3.14/code.py +396 -0
  611. package/lib/python3.14/codecs.py +1125 -0
  612. package/lib/python3.14/codeop.py +154 -0
  613. package/lib/python3.14/collections/__init__.py +1609 -0
  614. package/lib/python3.14/collections/__pycache__/__init__.cpython-314.pyc +0 -0
  615. package/lib/python3.14/colorsys.py +166 -0
  616. package/lib/python3.14/compileall.py +472 -0
  617. package/lib/python3.14/compression/__init__.py +0 -0
  618. package/lib/python3.14/compression/__pycache__/__init__.cpython-314.pyc +0 -0
  619. package/lib/python3.14/compression/__pycache__/bz2.cpython-314.pyc +0 -0
  620. package/lib/python3.14/compression/__pycache__/gzip.cpython-314.pyc +0 -0
  621. package/lib/python3.14/compression/__pycache__/lzma.cpython-314.pyc +0 -0
  622. package/lib/python3.14/compression/__pycache__/zlib.cpython-314.pyc +0 -0
  623. package/lib/python3.14/compression/_common/__init__.py +0 -0
  624. package/lib/python3.14/compression/_common/__pycache__/__init__.cpython-314.pyc +0 -0
  625. package/lib/python3.14/compression/_common/__pycache__/_streams.cpython-314.pyc +0 -0
  626. package/lib/python3.14/compression/_common/_streams.py +162 -0
  627. package/lib/python3.14/compression/bz2.py +5 -0
  628. package/lib/python3.14/compression/gzip.py +5 -0
  629. package/lib/python3.14/compression/lzma.py +5 -0
  630. package/lib/python3.14/compression/zlib.py +5 -0
  631. package/lib/python3.14/compression/zstd/__init__.py +242 -0
  632. package/lib/python3.14/compression/zstd/__pycache__/__init__.cpython-314.pyc +0 -0
  633. package/lib/python3.14/compression/zstd/__pycache__/_zstdfile.cpython-314.pyc +0 -0
  634. package/lib/python3.14/compression/zstd/_zstdfile.py +345 -0
  635. package/lib/python3.14/concurrent/__init__.py +1 -0
  636. package/lib/python3.14/concurrent/__pycache__/__init__.cpython-314.pyc +0 -0
  637. package/lib/python3.14/concurrent/futures/__init__.py +65 -0
  638. package/lib/python3.14/concurrent/futures/__pycache__/__init__.cpython-314.pyc +0 -0
  639. package/lib/python3.14/concurrent/futures/__pycache__/_base.cpython-314.pyc +0 -0
  640. package/lib/python3.14/concurrent/futures/__pycache__/interpreter.cpython-314.pyc +0 -0
  641. package/lib/python3.14/concurrent/futures/__pycache__/process.cpython-314.pyc +0 -0
  642. package/lib/python3.14/concurrent/futures/__pycache__/thread.cpython-314.pyc +0 -0
  643. package/lib/python3.14/concurrent/futures/_base.py +674 -0
  644. package/lib/python3.14/concurrent/futures/interpreter.py +123 -0
  645. package/lib/python3.14/concurrent/futures/process.py +939 -0
  646. package/lib/python3.14/concurrent/futures/thread.py +274 -0
  647. package/lib/python3.14/concurrent/interpreters/__init__.py +247 -0
  648. package/lib/python3.14/concurrent/interpreters/__pycache__/__init__.cpython-314.pyc +0 -0
  649. package/lib/python3.14/concurrent/interpreters/__pycache__/_crossinterp.cpython-314.pyc +0 -0
  650. package/lib/python3.14/concurrent/interpreters/__pycache__/_queues.cpython-314.pyc +0 -0
  651. package/lib/python3.14/concurrent/interpreters/_crossinterp.py +107 -0
  652. package/lib/python3.14/concurrent/interpreters/_queues.py +289 -0
  653. package/lib/python3.14/configparser.py +1414 -0
  654. package/lib/python3.14/contextlib.py +814 -0
  655. package/lib/python3.14/contextvars.py +8 -0
  656. package/lib/python3.14/copy.py +286 -0
  657. package/lib/python3.14/copyreg.py +222 -0
  658. package/lib/python3.14/csv.py +513 -0
  659. package/lib/python3.14/ctypes/__init__.py +681 -0
  660. package/lib/python3.14/ctypes/__pycache__/__init__.cpython-314.pyc +0 -0
  661. package/lib/python3.14/ctypes/__pycache__/_aix.cpython-314.pyc +0 -0
  662. package/lib/python3.14/ctypes/__pycache__/_endian.cpython-314.pyc +0 -0
  663. package/lib/python3.14/ctypes/__pycache__/_layout.cpython-314.pyc +0 -0
  664. package/lib/python3.14/ctypes/__pycache__/util.cpython-314.pyc +0 -0
  665. package/lib/python3.14/ctypes/__pycache__/wintypes.cpython-314.pyc +0 -0
  666. package/lib/python3.14/ctypes/_aix.py +327 -0
  667. package/lib/python3.14/ctypes/_endian.py +78 -0
  668. package/lib/python3.14/ctypes/_layout.py +330 -0
  669. package/lib/python3.14/ctypes/macholib/README.ctypes +7 -0
  670. package/lib/python3.14/ctypes/macholib/__init__.py +9 -0
  671. package/lib/python3.14/ctypes/macholib/__pycache__/__init__.cpython-314.pyc +0 -0
  672. package/lib/python3.14/ctypes/macholib/__pycache__/dyld.cpython-314.pyc +0 -0
  673. package/lib/python3.14/ctypes/macholib/__pycache__/dylib.cpython-314.pyc +0 -0
  674. package/lib/python3.14/ctypes/macholib/__pycache__/framework.cpython-314.pyc +0 -0
  675. package/lib/python3.14/ctypes/macholib/dyld.py +165 -0
  676. package/lib/python3.14/ctypes/macholib/dylib.py +42 -0
  677. package/lib/python3.14/ctypes/macholib/fetch_macholib +2 -0
  678. package/lib/python3.14/ctypes/macholib/fetch_macholib.bat +1 -0
  679. package/lib/python3.14/ctypes/macholib/framework.py +42 -0
  680. package/lib/python3.14/ctypes/util.py +538 -0
  681. package/lib/python3.14/ctypes/wintypes.py +210 -0
  682. package/lib/python3.14/curses/__init__.py +101 -0
  683. package/lib/python3.14/curses/__pycache__/__init__.cpython-314.pyc +0 -0
  684. package/lib/python3.14/curses/__pycache__/ascii.cpython-314.pyc +0 -0
  685. package/lib/python3.14/curses/__pycache__/has_key.cpython-314.pyc +0 -0
  686. package/lib/python3.14/curses/__pycache__/panel.cpython-314.pyc +0 -0
  687. package/lib/python3.14/curses/__pycache__/textpad.cpython-314.pyc +0 -0
  688. package/lib/python3.14/curses/ascii.py +99 -0
  689. package/lib/python3.14/curses/has_key.py +192 -0
  690. package/lib/python3.14/curses/panel.py +6 -0
  691. package/lib/python3.14/curses/textpad.py +204 -0
  692. package/lib/python3.14/dataclasses.py +1804 -0
  693. package/lib/python3.14/datetime.py +13 -0
  694. package/lib/python3.14/dbm/__init__.py +194 -0
  695. package/lib/python3.14/dbm/__pycache__/__init__.cpython-314.pyc +0 -0
  696. package/lib/python3.14/dbm/__pycache__/dumb.cpython-314.pyc +0 -0
  697. package/lib/python3.14/dbm/__pycache__/gnu.cpython-314.pyc +0 -0
  698. package/lib/python3.14/dbm/__pycache__/ndbm.cpython-314.pyc +0 -0
  699. package/lib/python3.14/dbm/__pycache__/sqlite3.cpython-314.pyc +0 -0
  700. package/lib/python3.14/dbm/dumb.py +319 -0
  701. package/lib/python3.14/dbm/gnu.py +3 -0
  702. package/lib/python3.14/dbm/ndbm.py +3 -0
  703. package/lib/python3.14/dbm/sqlite3.py +144 -0
  704. package/lib/python3.14/decimal.py +109 -0
  705. package/lib/python3.14/difflib.py +2064 -0
  706. package/lib/python3.14/dis.py +1157 -0
  707. package/lib/python3.14/doctest.py +2921 -0
  708. package/lib/python3.14/email/__init__.py +61 -0
  709. package/lib/python3.14/email/__pycache__/__init__.cpython-314.pyc +0 -0
  710. package/lib/python3.14/email/__pycache__/_encoded_words.cpython-314.pyc +0 -0
  711. package/lib/python3.14/email/__pycache__/_header_value_parser.cpython-314.pyc +0 -0
  712. package/lib/python3.14/email/__pycache__/_parseaddr.cpython-314.pyc +0 -0
  713. package/lib/python3.14/email/__pycache__/_policybase.cpython-314.pyc +0 -0
  714. package/lib/python3.14/email/__pycache__/base64mime.cpython-314.pyc +0 -0
  715. package/lib/python3.14/email/__pycache__/charset.cpython-314.pyc +0 -0
  716. package/lib/python3.14/email/__pycache__/contentmanager.cpython-314.pyc +0 -0
  717. package/lib/python3.14/email/__pycache__/encoders.cpython-314.pyc +0 -0
  718. package/lib/python3.14/email/__pycache__/errors.cpython-314.pyc +0 -0
  719. package/lib/python3.14/email/__pycache__/feedparser.cpython-314.pyc +0 -0
  720. package/lib/python3.14/email/__pycache__/generator.cpython-314.pyc +0 -0
  721. package/lib/python3.14/email/__pycache__/header.cpython-314.pyc +0 -0
  722. package/lib/python3.14/email/__pycache__/headerregistry.cpython-314.pyc +0 -0
  723. package/lib/python3.14/email/__pycache__/iterators.cpython-314.pyc +0 -0
  724. package/lib/python3.14/email/__pycache__/message.cpython-314.pyc +0 -0
  725. package/lib/python3.14/email/__pycache__/parser.cpython-314.pyc +0 -0
  726. package/lib/python3.14/email/__pycache__/policy.cpython-314.pyc +0 -0
  727. package/lib/python3.14/email/__pycache__/quoprimime.cpython-314.pyc +0 -0
  728. package/lib/python3.14/email/__pycache__/utils.cpython-314.pyc +0 -0
  729. package/lib/python3.14/email/_encoded_words.py +233 -0
  730. package/lib/python3.14/email/_header_value_parser.py +3097 -0
  731. package/lib/python3.14/email/_parseaddr.py +563 -0
  732. package/lib/python3.14/email/_policybase.py +392 -0
  733. package/lib/python3.14/email/architecture.rst +216 -0
  734. package/lib/python3.14/email/base64mime.py +115 -0
  735. package/lib/python3.14/email/charset.py +398 -0
  736. package/lib/python3.14/email/contentmanager.py +253 -0
  737. package/lib/python3.14/email/encoders.py +65 -0
  738. package/lib/python3.14/email/errors.py +117 -0
  739. package/lib/python3.14/email/feedparser.py +537 -0
  740. package/lib/python3.14/email/generator.py +520 -0
  741. package/lib/python3.14/email/header.py +582 -0
  742. package/lib/python3.14/email/headerregistry.py +604 -0
  743. package/lib/python3.14/email/iterators.py +68 -0
  744. package/lib/python3.14/email/message.py +1217 -0
  745. package/lib/python3.14/email/mime/__init__.py +0 -0
  746. package/lib/python3.14/email/mime/__pycache__/__init__.cpython-314.pyc +0 -0
  747. package/lib/python3.14/email/mime/__pycache__/application.cpython-314.pyc +0 -0
  748. package/lib/python3.14/email/mime/__pycache__/audio.cpython-314.pyc +0 -0
  749. package/lib/python3.14/email/mime/__pycache__/base.cpython-314.pyc +0 -0
  750. package/lib/python3.14/email/mime/__pycache__/image.cpython-314.pyc +0 -0
  751. package/lib/python3.14/email/mime/__pycache__/message.cpython-314.pyc +0 -0
  752. package/lib/python3.14/email/mime/__pycache__/multipart.cpython-314.pyc +0 -0
  753. package/lib/python3.14/email/mime/__pycache__/nonmultipart.cpython-314.pyc +0 -0
  754. package/lib/python3.14/email/mime/__pycache__/text.cpython-314.pyc +0 -0
  755. package/lib/python3.14/email/mime/application.py +37 -0
  756. package/lib/python3.14/email/mime/audio.py +97 -0
  757. package/lib/python3.14/email/mime/base.py +29 -0
  758. package/lib/python3.14/email/mime/image.py +152 -0
  759. package/lib/python3.14/email/mime/message.py +33 -0
  760. package/lib/python3.14/email/mime/multipart.py +47 -0
  761. package/lib/python3.14/email/mime/nonmultipart.py +21 -0
  762. package/lib/python3.14/email/mime/text.py +40 -0
  763. package/lib/python3.14/email/parser.py +127 -0
  764. package/lib/python3.14/email/policy.py +239 -0
  765. package/lib/python3.14/email/quoprimime.py +300 -0
  766. package/lib/python3.14/email/utils.py +486 -0
  767. package/lib/python3.14/encodings/__init__.py +177 -0
  768. package/lib/python3.14/encodings/__pycache__/__init__.cpython-314.pyc +0 -0
  769. package/lib/python3.14/encodings/__pycache__/_win_cp_codecs.cpython-314.pyc +0 -0
  770. package/lib/python3.14/encodings/__pycache__/aliases.cpython-314.pyc +0 -0
  771. package/lib/python3.14/encodings/__pycache__/ascii.cpython-314.pyc +0 -0
  772. package/lib/python3.14/encodings/__pycache__/base64_codec.cpython-314.pyc +0 -0
  773. package/lib/python3.14/encodings/__pycache__/big5.cpython-314.pyc +0 -0
  774. package/lib/python3.14/encodings/__pycache__/big5hkscs.cpython-314.pyc +0 -0
  775. package/lib/python3.14/encodings/__pycache__/bz2_codec.cpython-314.pyc +0 -0
  776. package/lib/python3.14/encodings/__pycache__/charmap.cpython-314.pyc +0 -0
  777. package/lib/python3.14/encodings/__pycache__/cp037.cpython-314.pyc +0 -0
  778. package/lib/python3.14/encodings/__pycache__/cp1006.cpython-314.pyc +0 -0
  779. package/lib/python3.14/encodings/__pycache__/cp1026.cpython-314.pyc +0 -0
  780. package/lib/python3.14/encodings/__pycache__/cp1125.cpython-314.pyc +0 -0
  781. package/lib/python3.14/encodings/__pycache__/cp1140.cpython-314.pyc +0 -0
  782. package/lib/python3.14/encodings/__pycache__/cp1250.cpython-314.pyc +0 -0
  783. package/lib/python3.14/encodings/__pycache__/cp1251.cpython-314.pyc +0 -0
  784. package/lib/python3.14/encodings/__pycache__/cp1252.cpython-314.pyc +0 -0
  785. package/lib/python3.14/encodings/__pycache__/cp1253.cpython-314.pyc +0 -0
  786. package/lib/python3.14/encodings/__pycache__/cp1254.cpython-314.pyc +0 -0
  787. package/lib/python3.14/encodings/__pycache__/cp1255.cpython-314.pyc +0 -0
  788. package/lib/python3.14/encodings/__pycache__/cp1256.cpython-314.pyc +0 -0
  789. package/lib/python3.14/encodings/__pycache__/cp1257.cpython-314.pyc +0 -0
  790. package/lib/python3.14/encodings/__pycache__/cp1258.cpython-314.pyc +0 -0
  791. package/lib/python3.14/encodings/__pycache__/cp273.cpython-314.pyc +0 -0
  792. package/lib/python3.14/encodings/__pycache__/cp424.cpython-314.pyc +0 -0
  793. package/lib/python3.14/encodings/__pycache__/cp437.cpython-314.pyc +0 -0
  794. package/lib/python3.14/encodings/__pycache__/cp500.cpython-314.pyc +0 -0
  795. package/lib/python3.14/encodings/__pycache__/cp720.cpython-314.pyc +0 -0
  796. package/lib/python3.14/encodings/__pycache__/cp737.cpython-314.pyc +0 -0
  797. package/lib/python3.14/encodings/__pycache__/cp775.cpython-314.pyc +0 -0
  798. package/lib/python3.14/encodings/__pycache__/cp850.cpython-314.pyc +0 -0
  799. package/lib/python3.14/encodings/__pycache__/cp852.cpython-314.pyc +0 -0
  800. package/lib/python3.14/encodings/__pycache__/cp855.cpython-314.pyc +0 -0
  801. package/lib/python3.14/encodings/__pycache__/cp856.cpython-314.pyc +0 -0
  802. package/lib/python3.14/encodings/__pycache__/cp857.cpython-314.pyc +0 -0
  803. package/lib/python3.14/encodings/__pycache__/cp858.cpython-314.pyc +0 -0
  804. package/lib/python3.14/encodings/__pycache__/cp860.cpython-314.pyc +0 -0
  805. package/lib/python3.14/encodings/__pycache__/cp861.cpython-314.pyc +0 -0
  806. package/lib/python3.14/encodings/__pycache__/cp862.cpython-314.pyc +0 -0
  807. package/lib/python3.14/encodings/__pycache__/cp863.cpython-314.pyc +0 -0
  808. package/lib/python3.14/encodings/__pycache__/cp864.cpython-314.pyc +0 -0
  809. package/lib/python3.14/encodings/__pycache__/cp865.cpython-314.pyc +0 -0
  810. package/lib/python3.14/encodings/__pycache__/cp866.cpython-314.pyc +0 -0
  811. package/lib/python3.14/encodings/__pycache__/cp869.cpython-314.pyc +0 -0
  812. package/lib/python3.14/encodings/__pycache__/cp874.cpython-314.pyc +0 -0
  813. package/lib/python3.14/encodings/__pycache__/cp875.cpython-314.pyc +0 -0
  814. package/lib/python3.14/encodings/__pycache__/cp932.cpython-314.pyc +0 -0
  815. package/lib/python3.14/encodings/__pycache__/cp949.cpython-314.pyc +0 -0
  816. package/lib/python3.14/encodings/__pycache__/cp950.cpython-314.pyc +0 -0
  817. package/lib/python3.14/encodings/__pycache__/euc_jis_2004.cpython-314.pyc +0 -0
  818. package/lib/python3.14/encodings/__pycache__/euc_jisx0213.cpython-314.pyc +0 -0
  819. package/lib/python3.14/encodings/__pycache__/euc_jp.cpython-314.pyc +0 -0
  820. package/lib/python3.14/encodings/__pycache__/euc_kr.cpython-314.pyc +0 -0
  821. package/lib/python3.14/encodings/__pycache__/gb18030.cpython-314.pyc +0 -0
  822. package/lib/python3.14/encodings/__pycache__/gb2312.cpython-314.pyc +0 -0
  823. package/lib/python3.14/encodings/__pycache__/gbk.cpython-314.pyc +0 -0
  824. package/lib/python3.14/encodings/__pycache__/hex_codec.cpython-314.pyc +0 -0
  825. package/lib/python3.14/encodings/__pycache__/hp_roman8.cpython-314.pyc +0 -0
  826. package/lib/python3.14/encodings/__pycache__/hz.cpython-314.pyc +0 -0
  827. package/lib/python3.14/encodings/__pycache__/idna.cpython-314.pyc +0 -0
  828. package/lib/python3.14/encodings/__pycache__/iso2022_jp.cpython-314.pyc +0 -0
  829. package/lib/python3.14/encodings/__pycache__/iso2022_jp_1.cpython-314.pyc +0 -0
  830. package/lib/python3.14/encodings/__pycache__/iso2022_jp_2.cpython-314.pyc +0 -0
  831. package/lib/python3.14/encodings/__pycache__/iso2022_jp_2004.cpython-314.pyc +0 -0
  832. package/lib/python3.14/encodings/__pycache__/iso2022_jp_3.cpython-314.pyc +0 -0
  833. package/lib/python3.14/encodings/__pycache__/iso2022_jp_ext.cpython-314.pyc +0 -0
  834. package/lib/python3.14/encodings/__pycache__/iso2022_kr.cpython-314.pyc +0 -0
  835. package/lib/python3.14/encodings/__pycache__/iso8859_1.cpython-314.pyc +0 -0
  836. package/lib/python3.14/encodings/__pycache__/iso8859_10.cpython-314.pyc +0 -0
  837. package/lib/python3.14/encodings/__pycache__/iso8859_11.cpython-314.pyc +0 -0
  838. package/lib/python3.14/encodings/__pycache__/iso8859_13.cpython-314.pyc +0 -0
  839. package/lib/python3.14/encodings/__pycache__/iso8859_14.cpython-314.pyc +0 -0
  840. package/lib/python3.14/encodings/__pycache__/iso8859_15.cpython-314.pyc +0 -0
  841. package/lib/python3.14/encodings/__pycache__/iso8859_16.cpython-314.pyc +0 -0
  842. package/lib/python3.14/encodings/__pycache__/iso8859_2.cpython-314.pyc +0 -0
  843. package/lib/python3.14/encodings/__pycache__/iso8859_3.cpython-314.pyc +0 -0
  844. package/lib/python3.14/encodings/__pycache__/iso8859_4.cpython-314.pyc +0 -0
  845. package/lib/python3.14/encodings/__pycache__/iso8859_5.cpython-314.pyc +0 -0
  846. package/lib/python3.14/encodings/__pycache__/iso8859_6.cpython-314.pyc +0 -0
  847. package/lib/python3.14/encodings/__pycache__/iso8859_7.cpython-314.pyc +0 -0
  848. package/lib/python3.14/encodings/__pycache__/iso8859_8.cpython-314.pyc +0 -0
  849. package/lib/python3.14/encodings/__pycache__/iso8859_9.cpython-314.pyc +0 -0
  850. package/lib/python3.14/encodings/__pycache__/johab.cpython-314.pyc +0 -0
  851. package/lib/python3.14/encodings/__pycache__/koi8_r.cpython-314.pyc +0 -0
  852. package/lib/python3.14/encodings/__pycache__/koi8_t.cpython-314.pyc +0 -0
  853. package/lib/python3.14/encodings/__pycache__/koi8_u.cpython-314.pyc +0 -0
  854. package/lib/python3.14/encodings/__pycache__/kz1048.cpython-314.pyc +0 -0
  855. package/lib/python3.14/encodings/__pycache__/latin_1.cpython-314.pyc +0 -0
  856. package/lib/python3.14/encodings/__pycache__/mac_arabic.cpython-314.pyc +0 -0
  857. package/lib/python3.14/encodings/__pycache__/mac_croatian.cpython-314.pyc +0 -0
  858. package/lib/python3.14/encodings/__pycache__/mac_cyrillic.cpython-314.pyc +0 -0
  859. package/lib/python3.14/encodings/__pycache__/mac_farsi.cpython-314.pyc +0 -0
  860. package/lib/python3.14/encodings/__pycache__/mac_greek.cpython-314.pyc +0 -0
  861. package/lib/python3.14/encodings/__pycache__/mac_iceland.cpython-314.pyc +0 -0
  862. package/lib/python3.14/encodings/__pycache__/mac_latin2.cpython-314.pyc +0 -0
  863. package/lib/python3.14/encodings/__pycache__/mac_roman.cpython-314.pyc +0 -0
  864. package/lib/python3.14/encodings/__pycache__/mac_romanian.cpython-314.pyc +0 -0
  865. package/lib/python3.14/encodings/__pycache__/mac_turkish.cpython-314.pyc +0 -0
  866. package/lib/python3.14/encodings/__pycache__/mbcs.cpython-314.pyc +0 -0
  867. package/lib/python3.14/encodings/__pycache__/oem.cpython-314.pyc +0 -0
  868. package/lib/python3.14/encodings/__pycache__/palmos.cpython-314.pyc +0 -0
  869. package/lib/python3.14/encodings/__pycache__/ptcp154.cpython-314.pyc +0 -0
  870. package/lib/python3.14/encodings/__pycache__/punycode.cpython-314.pyc +0 -0
  871. package/lib/python3.14/encodings/__pycache__/quopri_codec.cpython-314.pyc +0 -0
  872. package/lib/python3.14/encodings/__pycache__/raw_unicode_escape.cpython-314.pyc +0 -0
  873. package/lib/python3.14/encodings/__pycache__/rot_13.cpython-314.pyc +0 -0
  874. package/lib/python3.14/encodings/__pycache__/shift_jis.cpython-314.pyc +0 -0
  875. package/lib/python3.14/encodings/__pycache__/shift_jis_2004.cpython-314.pyc +0 -0
  876. package/lib/python3.14/encodings/__pycache__/shift_jisx0213.cpython-314.pyc +0 -0
  877. package/lib/python3.14/encodings/__pycache__/tis_620.cpython-314.pyc +0 -0
  878. package/lib/python3.14/encodings/__pycache__/undefined.cpython-314.pyc +0 -0
  879. package/lib/python3.14/encodings/__pycache__/unicode_escape.cpython-314.pyc +0 -0
  880. package/lib/python3.14/encodings/__pycache__/utf_16.cpython-314.pyc +0 -0
  881. package/lib/python3.14/encodings/__pycache__/utf_16_be.cpython-314.pyc +0 -0
  882. package/lib/python3.14/encodings/__pycache__/utf_16_le.cpython-314.pyc +0 -0
  883. package/lib/python3.14/encodings/__pycache__/utf_32.cpython-314.pyc +0 -0
  884. package/lib/python3.14/encodings/__pycache__/utf_32_be.cpython-314.pyc +0 -0
  885. package/lib/python3.14/encodings/__pycache__/utf_32_le.cpython-314.pyc +0 -0
  886. package/lib/python3.14/encodings/__pycache__/utf_7.cpython-314.pyc +0 -0
  887. package/lib/python3.14/encodings/__pycache__/utf_8.cpython-314.pyc +0 -0
  888. package/lib/python3.14/encodings/__pycache__/utf_8_sig.cpython-314.pyc +0 -0
  889. package/lib/python3.14/encodings/__pycache__/uu_codec.cpython-314.pyc +0 -0
  890. package/lib/python3.14/encodings/__pycache__/zlib_codec.cpython-314.pyc +0 -0
  891. package/lib/python3.14/encodings/_win_cp_codecs.py +36 -0
  892. package/lib/python3.14/encodings/aliases.py +560 -0
  893. package/lib/python3.14/encodings/ascii.py +50 -0
  894. package/lib/python3.14/encodings/base64_codec.py +55 -0
  895. package/lib/python3.14/encodings/big5.py +39 -0
  896. package/lib/python3.14/encodings/big5hkscs.py +39 -0
  897. package/lib/python3.14/encodings/bz2_codec.py +78 -0
  898. package/lib/python3.14/encodings/charmap.py +69 -0
  899. package/lib/python3.14/encodings/cp037.py +307 -0
  900. package/lib/python3.14/encodings/cp1006.py +307 -0
  901. package/lib/python3.14/encodings/cp1026.py +307 -0
  902. package/lib/python3.14/encodings/cp1125.py +698 -0
  903. package/lib/python3.14/encodings/cp1140.py +307 -0
  904. package/lib/python3.14/encodings/cp1250.py +307 -0
  905. package/lib/python3.14/encodings/cp1251.py +307 -0
  906. package/lib/python3.14/encodings/cp1252.py +307 -0
  907. package/lib/python3.14/encodings/cp1253.py +307 -0
  908. package/lib/python3.14/encodings/cp1254.py +307 -0
  909. package/lib/python3.14/encodings/cp1255.py +307 -0
  910. package/lib/python3.14/encodings/cp1256.py +307 -0
  911. package/lib/python3.14/encodings/cp1257.py +307 -0
  912. package/lib/python3.14/encodings/cp1258.py +307 -0
  913. package/lib/python3.14/encodings/cp273.py +307 -0
  914. package/lib/python3.14/encodings/cp424.py +307 -0
  915. package/lib/python3.14/encodings/cp437.py +698 -0
  916. package/lib/python3.14/encodings/cp500.py +307 -0
  917. package/lib/python3.14/encodings/cp720.py +309 -0
  918. package/lib/python3.14/encodings/cp737.py +698 -0
  919. package/lib/python3.14/encodings/cp775.py +697 -0
  920. package/lib/python3.14/encodings/cp850.py +698 -0
  921. package/lib/python3.14/encodings/cp852.py +698 -0
  922. package/lib/python3.14/encodings/cp855.py +698 -0
  923. package/lib/python3.14/encodings/cp856.py +307 -0
  924. package/lib/python3.14/encodings/cp857.py +694 -0
  925. package/lib/python3.14/encodings/cp858.py +698 -0
  926. package/lib/python3.14/encodings/cp860.py +698 -0
  927. package/lib/python3.14/encodings/cp861.py +698 -0
  928. package/lib/python3.14/encodings/cp862.py +698 -0
  929. package/lib/python3.14/encodings/cp863.py +698 -0
  930. package/lib/python3.14/encodings/cp864.py +690 -0
  931. package/lib/python3.14/encodings/cp865.py +698 -0
  932. package/lib/python3.14/encodings/cp866.py +698 -0
  933. package/lib/python3.14/encodings/cp869.py +689 -0
  934. package/lib/python3.14/encodings/cp874.py +307 -0
  935. package/lib/python3.14/encodings/cp875.py +307 -0
  936. package/lib/python3.14/encodings/cp932.py +39 -0
  937. package/lib/python3.14/encodings/cp949.py +39 -0
  938. package/lib/python3.14/encodings/cp950.py +39 -0
  939. package/lib/python3.14/encodings/euc_jis_2004.py +39 -0
  940. package/lib/python3.14/encodings/euc_jisx0213.py +39 -0
  941. package/lib/python3.14/encodings/euc_jp.py +39 -0
  942. package/lib/python3.14/encodings/euc_kr.py +39 -0
  943. package/lib/python3.14/encodings/gb18030.py +39 -0
  944. package/lib/python3.14/encodings/gb2312.py +39 -0
  945. package/lib/python3.14/encodings/gbk.py +39 -0
  946. package/lib/python3.14/encodings/hex_codec.py +55 -0
  947. package/lib/python3.14/encodings/hp_roman8.py +314 -0
  948. package/lib/python3.14/encodings/hz.py +39 -0
  949. package/lib/python3.14/encodings/idna.py +387 -0
  950. package/lib/python3.14/encodings/iso2022_jp.py +39 -0
  951. package/lib/python3.14/encodings/iso2022_jp_1.py +39 -0
  952. package/lib/python3.14/encodings/iso2022_jp_2.py +39 -0
  953. package/lib/python3.14/encodings/iso2022_jp_2004.py +39 -0
  954. package/lib/python3.14/encodings/iso2022_jp_3.py +39 -0
  955. package/lib/python3.14/encodings/iso2022_jp_ext.py +39 -0
  956. package/lib/python3.14/encodings/iso2022_kr.py +39 -0
  957. package/lib/python3.14/encodings/iso8859_1.py +307 -0
  958. package/lib/python3.14/encodings/iso8859_10.py +307 -0
  959. package/lib/python3.14/encodings/iso8859_11.py +307 -0
  960. package/lib/python3.14/encodings/iso8859_13.py +307 -0
  961. package/lib/python3.14/encodings/iso8859_14.py +307 -0
  962. package/lib/python3.14/encodings/iso8859_15.py +307 -0
  963. package/lib/python3.14/encodings/iso8859_16.py +307 -0
  964. package/lib/python3.14/encodings/iso8859_2.py +307 -0
  965. package/lib/python3.14/encodings/iso8859_3.py +307 -0
  966. package/lib/python3.14/encodings/iso8859_4.py +307 -0
  967. package/lib/python3.14/encodings/iso8859_5.py +307 -0
  968. package/lib/python3.14/encodings/iso8859_6.py +307 -0
  969. package/lib/python3.14/encodings/iso8859_7.py +307 -0
  970. package/lib/python3.14/encodings/iso8859_8.py +307 -0
  971. package/lib/python3.14/encodings/iso8859_9.py +307 -0
  972. package/lib/python3.14/encodings/johab.py +39 -0
  973. package/lib/python3.14/encodings/koi8_r.py +307 -0
  974. package/lib/python3.14/encodings/koi8_t.py +308 -0
  975. package/lib/python3.14/encodings/koi8_u.py +307 -0
  976. package/lib/python3.14/encodings/kz1048.py +307 -0
  977. package/lib/python3.14/encodings/latin_1.py +50 -0
  978. package/lib/python3.14/encodings/mac_arabic.py +698 -0
  979. package/lib/python3.14/encodings/mac_croatian.py +307 -0
  980. package/lib/python3.14/encodings/mac_cyrillic.py +307 -0
  981. package/lib/python3.14/encodings/mac_farsi.py +307 -0
  982. package/lib/python3.14/encodings/mac_greek.py +307 -0
  983. package/lib/python3.14/encodings/mac_iceland.py +307 -0
  984. package/lib/python3.14/encodings/mac_latin2.py +312 -0
  985. package/lib/python3.14/encodings/mac_roman.py +307 -0
  986. package/lib/python3.14/encodings/mac_romanian.py +307 -0
  987. package/lib/python3.14/encodings/mac_turkish.py +307 -0
  988. package/lib/python3.14/encodings/mbcs.py +47 -0
  989. package/lib/python3.14/encodings/oem.py +41 -0
  990. package/lib/python3.14/encodings/palmos.py +308 -0
  991. package/lib/python3.14/encodings/ptcp154.py +312 -0
  992. package/lib/python3.14/encodings/punycode.py +253 -0
  993. package/lib/python3.14/encodings/quopri_codec.py +56 -0
  994. package/lib/python3.14/encodings/raw_unicode_escape.py +46 -0
  995. package/lib/python3.14/encodings/rot_13.py +113 -0
  996. package/lib/python3.14/encodings/shift_jis.py +39 -0
  997. package/lib/python3.14/encodings/shift_jis_2004.py +39 -0
  998. package/lib/python3.14/encodings/shift_jisx0213.py +39 -0
  999. package/lib/python3.14/encodings/tis_620.py +307 -0
  1000. package/lib/python3.14/encodings/undefined.py +49 -0
  1001. package/lib/python3.14/encodings/unicode_escape.py +46 -0
  1002. package/lib/python3.14/encodings/utf_16.py +155 -0
  1003. package/lib/python3.14/encodings/utf_16_be.py +42 -0
  1004. package/lib/python3.14/encodings/utf_16_le.py +42 -0
  1005. package/lib/python3.14/encodings/utf_32.py +150 -0
  1006. package/lib/python3.14/encodings/utf_32_be.py +37 -0
  1007. package/lib/python3.14/encodings/utf_32_le.py +37 -0
  1008. package/lib/python3.14/encodings/utf_7.py +38 -0
  1009. package/lib/python3.14/encodings/utf_8.py +42 -0
  1010. package/lib/python3.14/encodings/utf_8_sig.py +130 -0
  1011. package/lib/python3.14/encodings/uu_codec.py +103 -0
  1012. package/lib/python3.14/encodings/zlib_codec.py +77 -0
  1013. package/lib/python3.14/ensurepip/__init__.py +264 -0
  1014. package/lib/python3.14/ensurepip/__main__.py +5 -0
  1015. package/lib/python3.14/ensurepip/__pycache__/__init__.cpython-314.pyc +0 -0
  1016. package/lib/python3.14/ensurepip/__pycache__/__main__.cpython-314.pyc +0 -0
  1017. package/lib/python3.14/ensurepip/__pycache__/_uninstall.cpython-314.pyc +0 -0
  1018. package/lib/python3.14/ensurepip/_bundled/pip-25.3-py3-none-any.whl +0 -0
  1019. package/lib/python3.14/ensurepip/_uninstall.py +31 -0
  1020. package/lib/python3.14/enum.py +2167 -0
  1021. package/lib/python3.14/filecmp.py +320 -0
  1022. package/lib/python3.14/fileinput.py +442 -0
  1023. package/lib/python3.14/fnmatch.py +209 -0
  1024. package/lib/python3.14/fractions.py +1078 -0
  1025. package/lib/python3.14/ftplib.py +966 -0
  1026. package/lib/python3.14/functools.py +1165 -0
  1027. package/lib/python3.14/genericpath.py +200 -0
  1028. package/lib/python3.14/getopt.py +232 -0
  1029. package/lib/python3.14/getpass.py +256 -0
  1030. package/lib/python3.14/gettext.py +657 -0
  1031. package/lib/python3.14/glob.py +553 -0
  1032. package/lib/python3.14/graphlib.py +254 -0
  1033. package/lib/python3.14/gzip.py +717 -0
  1034. package/lib/python3.14/hashlib.py +255 -0
  1035. package/lib/python3.14/heapq.py +611 -0
  1036. package/lib/python3.14/hmac.py +268 -0
  1037. package/lib/python3.14/html/__init__.py +132 -0
  1038. package/lib/python3.14/html/__pycache__/__init__.cpython-314.pyc +0 -0
  1039. package/lib/python3.14/html/__pycache__/entities.cpython-314.pyc +0 -0
  1040. package/lib/python3.14/html/__pycache__/parser.cpython-314.pyc +0 -0
  1041. package/lib/python3.14/html/entities.py +2513 -0
  1042. package/lib/python3.14/html/parser.py +553 -0
  1043. package/lib/python3.14/http/__init__.py +213 -0
  1044. package/lib/python3.14/http/__pycache__/__init__.cpython-314.pyc +0 -0
  1045. package/lib/python3.14/http/__pycache__/client.cpython-314.pyc +0 -0
  1046. package/lib/python3.14/http/__pycache__/cookiejar.cpython-314.pyc +0 -0
  1047. package/lib/python3.14/http/__pycache__/cookies.cpython-314.pyc +0 -0
  1048. package/lib/python3.14/http/__pycache__/server.cpython-314.pyc +0 -0
  1049. package/lib/python3.14/http/client.py +1570 -0
  1050. package/lib/python3.14/http/cookiejar.py +2122 -0
  1051. package/lib/python3.14/http/cookies.py +598 -0
  1052. package/lib/python3.14/http/server.py +1441 -0
  1053. package/lib/python3.14/idlelib/CREDITS.txt +48 -0
  1054. package/lib/python3.14/idlelib/ChangeLog +1591 -0
  1055. package/lib/python3.14/idlelib/HISTORY.txt +296 -0
  1056. package/lib/python3.14/idlelib/Icons/README.txt +51 -0
  1057. package/lib/python3.14/idlelib/Icons/folder.gif +0 -0
  1058. package/lib/python3.14/idlelib/Icons/idle.ico +0 -0
  1059. package/lib/python3.14/idlelib/Icons/idle_16.gif +0 -0
  1060. package/lib/python3.14/idlelib/Icons/idle_16.png +0 -0
  1061. package/lib/python3.14/idlelib/Icons/idle_256.png +0 -0
  1062. package/lib/python3.14/idlelib/Icons/idle_32.gif +0 -0
  1063. package/lib/python3.14/idlelib/Icons/idle_32.png +0 -0
  1064. package/lib/python3.14/idlelib/Icons/idle_48.gif +0 -0
  1065. package/lib/python3.14/idlelib/Icons/idle_48.png +0 -0
  1066. package/lib/python3.14/idlelib/Icons/minusnode.gif +0 -0
  1067. package/lib/python3.14/idlelib/Icons/openfolder.gif +0 -0
  1068. package/lib/python3.14/idlelib/Icons/plusnode.gif +0 -0
  1069. package/lib/python3.14/idlelib/Icons/python.gif +0 -0
  1070. package/lib/python3.14/idlelib/Icons/tk.gif +0 -0
  1071. package/lib/python3.14/idlelib/NEWS2x.txt +660 -0
  1072. package/lib/python3.14/idlelib/News3.txt +1404 -0
  1073. package/lib/python3.14/idlelib/README.txt +290 -0
  1074. package/lib/python3.14/idlelib/TODO.txt +210 -0
  1075. package/lib/python3.14/idlelib/__init__.py +10 -0
  1076. package/lib/python3.14/idlelib/__main__.py +7 -0
  1077. package/lib/python3.14/idlelib/__pycache__/__init__.cpython-314.pyc +0 -0
  1078. package/lib/python3.14/idlelib/__pycache__/__main__.cpython-314.pyc +0 -0
  1079. package/lib/python3.14/idlelib/__pycache__/autocomplete.cpython-314.pyc +0 -0
  1080. package/lib/python3.14/idlelib/__pycache__/autocomplete_w.cpython-314.pyc +0 -0
  1081. package/lib/python3.14/idlelib/__pycache__/autoexpand.cpython-314.pyc +0 -0
  1082. package/lib/python3.14/idlelib/__pycache__/browser.cpython-314.pyc +0 -0
  1083. package/lib/python3.14/idlelib/__pycache__/calltip.cpython-314.pyc +0 -0
  1084. package/lib/python3.14/idlelib/__pycache__/calltip_w.cpython-314.pyc +0 -0
  1085. package/lib/python3.14/idlelib/__pycache__/codecontext.cpython-314.pyc +0 -0
  1086. package/lib/python3.14/idlelib/__pycache__/colorizer.cpython-314.pyc +0 -0
  1087. package/lib/python3.14/idlelib/__pycache__/config.cpython-314.pyc +0 -0
  1088. package/lib/python3.14/idlelib/__pycache__/config_key.cpython-314.pyc +0 -0
  1089. package/lib/python3.14/idlelib/__pycache__/configdialog.cpython-314.pyc +0 -0
  1090. package/lib/python3.14/idlelib/__pycache__/debugger.cpython-314.pyc +0 -0
  1091. package/lib/python3.14/idlelib/__pycache__/debugger_r.cpython-314.pyc +0 -0
  1092. package/lib/python3.14/idlelib/__pycache__/debugobj.cpython-314.pyc +0 -0
  1093. package/lib/python3.14/idlelib/__pycache__/debugobj_r.cpython-314.pyc +0 -0
  1094. package/lib/python3.14/idlelib/__pycache__/delegator.cpython-314.pyc +0 -0
  1095. package/lib/python3.14/idlelib/__pycache__/dynoption.cpython-314.pyc +0 -0
  1096. package/lib/python3.14/idlelib/__pycache__/editor.cpython-314.pyc +0 -0
  1097. package/lib/python3.14/idlelib/__pycache__/filelist.cpython-314.pyc +0 -0
  1098. package/lib/python3.14/idlelib/__pycache__/format.cpython-314.pyc +0 -0
  1099. package/lib/python3.14/idlelib/__pycache__/grep.cpython-314.pyc +0 -0
  1100. package/lib/python3.14/idlelib/__pycache__/help.cpython-314.pyc +0 -0
  1101. package/lib/python3.14/idlelib/__pycache__/help_about.cpython-314.pyc +0 -0
  1102. package/lib/python3.14/idlelib/__pycache__/history.cpython-314.pyc +0 -0
  1103. package/lib/python3.14/idlelib/__pycache__/hyperparser.cpython-314.pyc +0 -0
  1104. package/lib/python3.14/idlelib/__pycache__/idle.cpython-314.pyc +0 -0
  1105. package/lib/python3.14/idlelib/__pycache__/iomenu.cpython-314.pyc +0 -0
  1106. package/lib/python3.14/idlelib/__pycache__/macosx.cpython-314.pyc +0 -0
  1107. package/lib/python3.14/idlelib/__pycache__/mainmenu.cpython-314.pyc +0 -0
  1108. package/lib/python3.14/idlelib/__pycache__/multicall.cpython-314.pyc +0 -0
  1109. package/lib/python3.14/idlelib/__pycache__/outwin.cpython-314.pyc +0 -0
  1110. package/lib/python3.14/idlelib/__pycache__/parenmatch.cpython-314.pyc +0 -0
  1111. package/lib/python3.14/idlelib/__pycache__/pathbrowser.cpython-314.pyc +0 -0
  1112. package/lib/python3.14/idlelib/__pycache__/percolator.cpython-314.pyc +0 -0
  1113. package/lib/python3.14/idlelib/__pycache__/pyparse.cpython-314.pyc +0 -0
  1114. package/lib/python3.14/idlelib/__pycache__/pyshell.cpython-314.pyc +0 -0
  1115. package/lib/python3.14/idlelib/__pycache__/query.cpython-314.pyc +0 -0
  1116. package/lib/python3.14/idlelib/__pycache__/redirector.cpython-314.pyc +0 -0
  1117. package/lib/python3.14/idlelib/__pycache__/replace.cpython-314.pyc +0 -0
  1118. package/lib/python3.14/idlelib/__pycache__/rpc.cpython-314.pyc +0 -0
  1119. package/lib/python3.14/idlelib/__pycache__/run.cpython-314.pyc +0 -0
  1120. package/lib/python3.14/idlelib/__pycache__/runscript.cpython-314.pyc +0 -0
  1121. package/lib/python3.14/idlelib/__pycache__/scrolledlist.cpython-314.pyc +0 -0
  1122. package/lib/python3.14/idlelib/__pycache__/search.cpython-314.pyc +0 -0
  1123. package/lib/python3.14/idlelib/__pycache__/searchbase.cpython-314.pyc +0 -0
  1124. package/lib/python3.14/idlelib/__pycache__/searchengine.cpython-314.pyc +0 -0
  1125. package/lib/python3.14/idlelib/__pycache__/sidebar.cpython-314.pyc +0 -0
  1126. package/lib/python3.14/idlelib/__pycache__/squeezer.cpython-314.pyc +0 -0
  1127. package/lib/python3.14/idlelib/__pycache__/stackviewer.cpython-314.pyc +0 -0
  1128. package/lib/python3.14/idlelib/__pycache__/statusbar.cpython-314.pyc +0 -0
  1129. package/lib/python3.14/idlelib/__pycache__/textview.cpython-314.pyc +0 -0
  1130. package/lib/python3.14/idlelib/__pycache__/tooltip.cpython-314.pyc +0 -0
  1131. package/lib/python3.14/idlelib/__pycache__/tree.cpython-314.pyc +0 -0
  1132. package/lib/python3.14/idlelib/__pycache__/undo.cpython-314.pyc +0 -0
  1133. package/lib/python3.14/idlelib/__pycache__/util.cpython-314.pyc +0 -0
  1134. package/lib/python3.14/idlelib/__pycache__/window.cpython-314.pyc +0 -0
  1135. package/lib/python3.14/idlelib/__pycache__/zoomheight.cpython-314.pyc +0 -0
  1136. package/lib/python3.14/idlelib/__pycache__/zzdummy.cpython-314.pyc +0 -0
  1137. package/lib/python3.14/idlelib/autocomplete.py +228 -0
  1138. package/lib/python3.14/idlelib/autocomplete_w.py +498 -0
  1139. package/lib/python3.14/idlelib/autoexpand.py +96 -0
  1140. package/lib/python3.14/idlelib/browser.py +260 -0
  1141. package/lib/python3.14/idlelib/calltip.py +205 -0
  1142. package/lib/python3.14/idlelib/calltip_w.py +202 -0
  1143. package/lib/python3.14/idlelib/codecontext.py +270 -0
  1144. package/lib/python3.14/idlelib/colorizer.py +384 -0
  1145. package/lib/python3.14/idlelib/config-extensions.def +62 -0
  1146. package/lib/python3.14/idlelib/config-highlight.def +105 -0
  1147. package/lib/python3.14/idlelib/config-keys.def +309 -0
  1148. package/lib/python3.14/idlelib/config-main.def +93 -0
  1149. package/lib/python3.14/idlelib/config.py +917 -0
  1150. package/lib/python3.14/idlelib/config_key.py +354 -0
  1151. package/lib/python3.14/idlelib/configdialog.py +2408 -0
  1152. package/lib/python3.14/idlelib/debugger.py +602 -0
  1153. package/lib/python3.14/idlelib/debugger_r.py +390 -0
  1154. package/lib/python3.14/idlelib/debugobj.py +146 -0
  1155. package/lib/python3.14/idlelib/debugobj_r.py +41 -0
  1156. package/lib/python3.14/idlelib/delegator.py +34 -0
  1157. package/lib/python3.14/idlelib/dynoption.py +57 -0
  1158. package/lib/python3.14/idlelib/editor.py +1734 -0
  1159. package/lib/python3.14/idlelib/extend.txt +83 -0
  1160. package/lib/python3.14/idlelib/filelist.py +132 -0
  1161. package/lib/python3.14/idlelib/format.py +426 -0
  1162. package/lib/python3.14/idlelib/grep.py +223 -0
  1163. package/lib/python3.14/idlelib/help.html +851 -0
  1164. package/lib/python3.14/idlelib/help.py +343 -0
  1165. package/lib/python3.14/idlelib/help_about.py +211 -0
  1166. package/lib/python3.14/idlelib/history.py +106 -0
  1167. package/lib/python3.14/idlelib/hyperparser.py +312 -0
  1168. package/lib/python3.14/idlelib/idle.bat +4 -0
  1169. package/lib/python3.14/idlelib/idle.py +14 -0
  1170. package/lib/python3.14/idlelib/idle.pyw +17 -0
  1171. package/lib/python3.14/idlelib/iomenu.py +441 -0
  1172. package/lib/python3.14/idlelib/macosx.py +278 -0
  1173. package/lib/python3.14/idlelib/mainmenu.py +126 -0
  1174. package/lib/python3.14/idlelib/multicall.py +451 -0
  1175. package/lib/python3.14/idlelib/outwin.py +188 -0
  1176. package/lib/python3.14/idlelib/parenmatch.py +183 -0
  1177. package/lib/python3.14/idlelib/pathbrowser.py +107 -0
  1178. package/lib/python3.14/idlelib/percolator.py +120 -0
  1179. package/lib/python3.14/idlelib/pyparse.py +589 -0
  1180. package/lib/python3.14/idlelib/pyshell.py +1699 -0
  1181. package/lib/python3.14/idlelib/query.py +392 -0
  1182. package/lib/python3.14/idlelib/redirector.py +174 -0
  1183. package/lib/python3.14/idlelib/replace.py +299 -0
  1184. package/lib/python3.14/idlelib/rpc.py +635 -0
  1185. package/lib/python3.14/idlelib/run.py +653 -0
  1186. package/lib/python3.14/idlelib/runscript.py +213 -0
  1187. package/lib/python3.14/idlelib/scrolledlist.py +151 -0
  1188. package/lib/python3.14/idlelib/search.py +165 -0
  1189. package/lib/python3.14/idlelib/searchbase.py +210 -0
  1190. package/lib/python3.14/idlelib/searchengine.py +234 -0
  1191. package/lib/python3.14/idlelib/sidebar.py +543 -0
  1192. package/lib/python3.14/idlelib/squeezer.py +345 -0
  1193. package/lib/python3.14/idlelib/stackviewer.py +134 -0
  1194. package/lib/python3.14/idlelib/statusbar.py +52 -0
  1195. package/lib/python3.14/idlelib/textview.py +193 -0
  1196. package/lib/python3.14/idlelib/tooltip.py +190 -0
  1197. package/lib/python3.14/idlelib/tree.py +509 -0
  1198. package/lib/python3.14/idlelib/undo.py +367 -0
  1199. package/lib/python3.14/idlelib/util.py +37 -0
  1200. package/lib/python3.14/idlelib/window.py +98 -0
  1201. package/lib/python3.14/idlelib/zoomheight.py +124 -0
  1202. package/lib/python3.14/idlelib/zzdummy.py +73 -0
  1203. package/lib/python3.14/imaplib.py +1967 -0
  1204. package/lib/python3.14/importlib/__init__.py +136 -0
  1205. package/lib/python3.14/importlib/__pycache__/__init__.cpython-314.pyc +0 -0
  1206. package/lib/python3.14/importlib/__pycache__/_abc.cpython-314.pyc +0 -0
  1207. package/lib/python3.14/importlib/__pycache__/_bootstrap.cpython-314.pyc +0 -0
  1208. package/lib/python3.14/importlib/__pycache__/_bootstrap_external.cpython-314.pyc +0 -0
  1209. package/lib/python3.14/importlib/__pycache__/abc.cpython-314.pyc +0 -0
  1210. package/lib/python3.14/importlib/__pycache__/machinery.cpython-314.pyc +0 -0
  1211. package/lib/python3.14/importlib/__pycache__/readers.cpython-314.pyc +0 -0
  1212. package/lib/python3.14/importlib/__pycache__/simple.cpython-314.pyc +0 -0
  1213. package/lib/python3.14/importlib/__pycache__/util.cpython-314.pyc +0 -0
  1214. package/lib/python3.14/importlib/_abc.py +39 -0
  1215. package/lib/python3.14/importlib/_bootstrap.py +1562 -0
  1216. package/lib/python3.14/importlib/_bootstrap_external.py +1562 -0
  1217. package/lib/python3.14/importlib/abc.py +234 -0
  1218. package/lib/python3.14/importlib/machinery.py +50 -0
  1219. package/lib/python3.14/importlib/metadata/__init__.py +1093 -0
  1220. package/lib/python3.14/importlib/metadata/__pycache__/__init__.cpython-314.pyc +0 -0
  1221. package/lib/python3.14/importlib/metadata/__pycache__/_adapters.cpython-314.pyc +0 -0
  1222. package/lib/python3.14/importlib/metadata/__pycache__/_collections.cpython-314.pyc +0 -0
  1223. package/lib/python3.14/importlib/metadata/__pycache__/_functools.cpython-314.pyc +0 -0
  1224. package/lib/python3.14/importlib/metadata/__pycache__/_itertools.cpython-314.pyc +0 -0
  1225. package/lib/python3.14/importlib/metadata/__pycache__/_meta.cpython-314.pyc +0 -0
  1226. package/lib/python3.14/importlib/metadata/__pycache__/_text.cpython-314.pyc +0 -0
  1227. package/lib/python3.14/importlib/metadata/__pycache__/diagnose.cpython-314.pyc +0 -0
  1228. package/lib/python3.14/importlib/metadata/_adapters.py +89 -0
  1229. package/lib/python3.14/importlib/metadata/_collections.py +30 -0
  1230. package/lib/python3.14/importlib/metadata/_functools.py +104 -0
  1231. package/lib/python3.14/importlib/metadata/_itertools.py +73 -0
  1232. package/lib/python3.14/importlib/metadata/_meta.py +67 -0
  1233. package/lib/python3.14/importlib/metadata/_text.py +99 -0
  1234. package/lib/python3.14/importlib/metadata/diagnose.py +21 -0
  1235. package/lib/python3.14/importlib/readers.py +12 -0
  1236. package/lib/python3.14/importlib/resources/__init__.py +43 -0
  1237. package/lib/python3.14/importlib/resources/__pycache__/__init__.cpython-314.pyc +0 -0
  1238. package/lib/python3.14/importlib/resources/__pycache__/_adapters.cpython-314.pyc +0 -0
  1239. package/lib/python3.14/importlib/resources/__pycache__/_common.cpython-314.pyc +0 -0
  1240. package/lib/python3.14/importlib/resources/__pycache__/_functional.cpython-314.pyc +0 -0
  1241. package/lib/python3.14/importlib/resources/__pycache__/_itertools.cpython-314.pyc +0 -0
  1242. package/lib/python3.14/importlib/resources/__pycache__/abc.cpython-314.pyc +0 -0
  1243. package/lib/python3.14/importlib/resources/__pycache__/readers.cpython-314.pyc +0 -0
  1244. package/lib/python3.14/importlib/resources/__pycache__/simple.cpython-314.pyc +0 -0
  1245. package/lib/python3.14/importlib/resources/_adapters.py +168 -0
  1246. package/lib/python3.14/importlib/resources/_common.py +211 -0
  1247. package/lib/python3.14/importlib/resources/_functional.py +81 -0
  1248. package/lib/python3.14/importlib/resources/_itertools.py +38 -0
  1249. package/lib/python3.14/importlib/resources/abc.py +173 -0
  1250. package/lib/python3.14/importlib/resources/readers.py +203 -0
  1251. package/lib/python3.14/importlib/resources/simple.py +106 -0
  1252. package/lib/python3.14/importlib/simple.py +14 -0
  1253. package/lib/python3.14/importlib/util.py +279 -0
  1254. package/lib/python3.14/inspect.py +3407 -0
  1255. package/lib/python3.14/io.py +150 -0
  1256. package/lib/python3.14/ipaddress.py +2417 -0
  1257. package/lib/python3.14/json/__init__.py +365 -0
  1258. package/lib/python3.14/json/__main__.py +20 -0
  1259. package/lib/python3.14/json/__pycache__/__init__.cpython-314.pyc +0 -0
  1260. package/lib/python3.14/json/__pycache__/__main__.cpython-314.pyc +0 -0
  1261. package/lib/python3.14/json/__pycache__/decoder.cpython-314.pyc +0 -0
  1262. package/lib/python3.14/json/__pycache__/encoder.cpython-314.pyc +0 -0
  1263. package/lib/python3.14/json/__pycache__/scanner.cpython-314.pyc +0 -0
  1264. package/lib/python3.14/json/__pycache__/tool.cpython-314.pyc +0 -0
  1265. package/lib/python3.14/json/decoder.py +364 -0
  1266. package/lib/python3.14/json/encoder.py +461 -0
  1267. package/lib/python3.14/json/scanner.py +73 -0
  1268. package/lib/python3.14/json/tool.py +121 -0
  1269. package/lib/python3.14/keyword.py +64 -0
  1270. package/lib/python3.14/linecache.py +251 -0
  1271. package/lib/python3.14/locale.py +1783 -0
  1272. package/lib/python3.14/logging/__init__.py +2326 -0
  1273. package/lib/python3.14/logging/__pycache__/__init__.cpython-314.pyc +0 -0
  1274. package/lib/python3.14/logging/__pycache__/config.cpython-314.pyc +0 -0
  1275. package/lib/python3.14/logging/__pycache__/handlers.cpython-314.pyc +0 -0
  1276. package/lib/python3.14/logging/config.py +1077 -0
  1277. package/lib/python3.14/logging/handlers.py +1641 -0
  1278. package/lib/python3.14/lzma.py +364 -0
  1279. package/lib/python3.14/mailbox.py +2223 -0
  1280. package/lib/python3.14/mimetypes.py +747 -0
  1281. package/lib/python3.14/modulefinder.py +671 -0
  1282. package/lib/python3.14/multiprocessing/__init__.py +37 -0
  1283. package/lib/python3.14/multiprocessing/__pycache__/__init__.cpython-314.pyc +0 -0
  1284. package/lib/python3.14/multiprocessing/__pycache__/connection.cpython-314.pyc +0 -0
  1285. package/lib/python3.14/multiprocessing/__pycache__/context.cpython-314.pyc +0 -0
  1286. package/lib/python3.14/multiprocessing/__pycache__/forkserver.cpython-314.pyc +0 -0
  1287. package/lib/python3.14/multiprocessing/__pycache__/heap.cpython-314.pyc +0 -0
  1288. package/lib/python3.14/multiprocessing/__pycache__/managers.cpython-314.pyc +0 -0
  1289. package/lib/python3.14/multiprocessing/__pycache__/pool.cpython-314.pyc +0 -0
  1290. package/lib/python3.14/multiprocessing/__pycache__/popen_fork.cpython-314.pyc +0 -0
  1291. package/lib/python3.14/multiprocessing/__pycache__/popen_forkserver.cpython-314.pyc +0 -0
  1292. package/lib/python3.14/multiprocessing/__pycache__/popen_spawn_posix.cpython-314.pyc +0 -0
  1293. package/lib/python3.14/multiprocessing/__pycache__/popen_spawn_win32.cpython-314.pyc +0 -0
  1294. package/lib/python3.14/multiprocessing/__pycache__/process.cpython-314.pyc +0 -0
  1295. package/lib/python3.14/multiprocessing/__pycache__/queues.cpython-314.pyc +0 -0
  1296. package/lib/python3.14/multiprocessing/__pycache__/reduction.cpython-314.pyc +0 -0
  1297. package/lib/python3.14/multiprocessing/__pycache__/resource_sharer.cpython-314.pyc +0 -0
  1298. package/lib/python3.14/multiprocessing/__pycache__/resource_tracker.cpython-314.pyc +0 -0
  1299. package/lib/python3.14/multiprocessing/__pycache__/shared_memory.cpython-314.pyc +0 -0
  1300. package/lib/python3.14/multiprocessing/__pycache__/sharedctypes.cpython-314.pyc +0 -0
  1301. package/lib/python3.14/multiprocessing/__pycache__/spawn.cpython-314.pyc +0 -0
  1302. package/lib/python3.14/multiprocessing/__pycache__/synchronize.cpython-314.pyc +0 -0
  1303. package/lib/python3.14/multiprocessing/__pycache__/util.cpython-314.pyc +0 -0
  1304. package/lib/python3.14/multiprocessing/connection.py +1207 -0
  1305. package/lib/python3.14/multiprocessing/context.py +377 -0
  1306. package/lib/python3.14/multiprocessing/dummy/__init__.py +126 -0
  1307. package/lib/python3.14/multiprocessing/dummy/__pycache__/__init__.cpython-314.pyc +0 -0
  1308. package/lib/python3.14/multiprocessing/dummy/__pycache__/connection.cpython-314.pyc +0 -0
  1309. package/lib/python3.14/multiprocessing/dummy/connection.py +75 -0
  1310. package/lib/python3.14/multiprocessing/forkserver.py +416 -0
  1311. package/lib/python3.14/multiprocessing/heap.py +337 -0
  1312. package/lib/python3.14/multiprocessing/managers.py +1438 -0
  1313. package/lib/python3.14/multiprocessing/pool.py +957 -0
  1314. package/lib/python3.14/multiprocessing/popen_fork.py +90 -0
  1315. package/lib/python3.14/multiprocessing/popen_forkserver.py +74 -0
  1316. package/lib/python3.14/multiprocessing/popen_spawn_posix.py +76 -0
  1317. package/lib/python3.14/multiprocessing/popen_spawn_win32.py +147 -0
  1318. package/lib/python3.14/multiprocessing/process.py +443 -0
  1319. package/lib/python3.14/multiprocessing/queues.py +399 -0
  1320. package/lib/python3.14/multiprocessing/reduction.py +281 -0
  1321. package/lib/python3.14/multiprocessing/resource_sharer.py +154 -0
  1322. package/lib/python3.14/multiprocessing/resource_tracker.py +416 -0
  1323. package/lib/python3.14/multiprocessing/shared_memory.py +544 -0
  1324. package/lib/python3.14/multiprocessing/sharedctypes.py +240 -0
  1325. package/lib/python3.14/multiprocessing/spawn.py +307 -0
  1326. package/lib/python3.14/multiprocessing/synchronize.py +411 -0
  1327. package/lib/python3.14/multiprocessing/util.py +560 -0
  1328. package/lib/python3.14/netrc.py +199 -0
  1329. package/lib/python3.14/ntpath.py +870 -0
  1330. package/lib/python3.14/nturl2path.py +74 -0
  1331. package/lib/python3.14/numbers.py +427 -0
  1332. package/lib/python3.14/opcode.py +122 -0
  1333. package/lib/python3.14/operator.py +475 -0
  1334. package/lib/python3.14/optparse.py +1671 -0
  1335. package/lib/python3.14/os.py +1191 -0
  1336. package/lib/python3.14/pathlib/__init__.py +1307 -0
  1337. package/lib/python3.14/pathlib/__pycache__/__init__.cpython-314.pyc +0 -0
  1338. package/lib/python3.14/pathlib/__pycache__/_local.cpython-314.pyc +0 -0
  1339. package/lib/python3.14/pathlib/__pycache__/_os.cpython-314.pyc +0 -0
  1340. package/lib/python3.14/pathlib/__pycache__/types.cpython-314.pyc +0 -0
  1341. package/lib/python3.14/pathlib/_local.py +12 -0
  1342. package/lib/python3.14/pathlib/_os.py +530 -0
  1343. package/lib/python3.14/pathlib/types.py +430 -0
  1344. package/lib/python3.14/pdb.py +3660 -0
  1345. package/lib/python3.14/pickle.py +1931 -0
  1346. package/lib/python3.14/pickletools.py +2887 -0
  1347. package/lib/python3.14/pkgutil.py +474 -0
  1348. package/lib/python3.14/platform.py +1515 -0
  1349. package/lib/python3.14/plistlib.py +948 -0
  1350. package/lib/python3.14/poplib.py +477 -0
  1351. package/lib/python3.14/posixpath.py +592 -0
  1352. package/lib/python3.14/pprint.py +675 -0
  1353. package/lib/python3.14/profile.py +615 -0
  1354. package/lib/python3.14/pstats.py +777 -0
  1355. package/lib/python3.14/pty.py +182 -0
  1356. package/lib/python3.14/py_compile.py +212 -0
  1357. package/lib/python3.14/pyclbr.py +314 -0
  1358. package/lib/python3.14/pydoc.py +2876 -0
  1359. package/lib/python3.14/pydoc_data/__init__.py +0 -0
  1360. package/lib/python3.14/pydoc_data/__pycache__/__init__.cpython-314.pyc +0 -0
  1361. package/lib/python3.14/pydoc_data/__pycache__/topics.cpython-314.pyc +0 -0
  1362. package/lib/python3.14/pydoc_data/_pydoc.css +112 -0
  1363. package/lib/python3.14/pydoc_data/topics.py +14103 -0
  1364. package/lib/python3.14/queue.py +383 -0
  1365. package/lib/python3.14/quopri.py +235 -0
  1366. package/lib/python3.14/random.py +1078 -0
  1367. package/lib/python3.14/re/__init__.py +428 -0
  1368. package/lib/python3.14/re/__pycache__/__init__.cpython-314.pyc +0 -0
  1369. package/lib/python3.14/re/__pycache__/_casefix.cpython-314.pyc +0 -0
  1370. package/lib/python3.14/re/__pycache__/_compiler.cpython-314.pyc +0 -0
  1371. package/lib/python3.14/re/__pycache__/_constants.cpython-314.pyc +0 -0
  1372. package/lib/python3.14/re/__pycache__/_parser.cpython-314.pyc +0 -0
  1373. package/lib/python3.14/re/_casefix.py +106 -0
  1374. package/lib/python3.14/re/_compiler.py +782 -0
  1375. package/lib/python3.14/re/_constants.py +224 -0
  1376. package/lib/python3.14/re/_parser.py +1066 -0
  1377. package/lib/python3.14/reprlib.py +230 -0
  1378. package/lib/python3.14/rlcompleter.py +221 -0
  1379. package/lib/python3.14/runpy.py +319 -0
  1380. package/lib/python3.14/sched.py +167 -0
  1381. package/lib/python3.14/secrets.py +71 -0
  1382. package/lib/python3.14/selectors.py +603 -0
  1383. package/lib/python3.14/shelve.py +250 -0
  1384. package/lib/python3.14/shlex.py +351 -0
  1385. package/lib/python3.14/shutil.py +1667 -0
  1386. package/lib/python3.14/signal.py +94 -0
  1387. package/lib/python3.14/site-packages/README.txt +2 -0
  1388. package/lib/python3.14/site-packages/pip/__init__.py +13 -0
  1389. package/lib/python3.14/site-packages/pip/__main__.py +24 -0
  1390. package/lib/python3.14/site-packages/pip/__pip-runner__.py +50 -0
  1391. package/lib/python3.14/site-packages/pip/__pycache__/__init__.cpython-314.pyc +0 -0
  1392. package/lib/python3.14/site-packages/pip/__pycache__/__main__.cpython-314.pyc +0 -0
  1393. package/lib/python3.14/site-packages/pip/__pycache__/__pip-runner__.cpython-314.pyc +0 -0
  1394. package/lib/python3.14/site-packages/pip/_internal/__init__.py +18 -0
  1395. package/lib/python3.14/site-packages/pip/_internal/__pycache__/__init__.cpython-314.pyc +0 -0
  1396. package/lib/python3.14/site-packages/pip/_internal/__pycache__/build_env.cpython-314.pyc +0 -0
  1397. package/lib/python3.14/site-packages/pip/_internal/__pycache__/cache.cpython-314.pyc +0 -0
  1398. package/lib/python3.14/site-packages/pip/_internal/__pycache__/configuration.cpython-314.pyc +0 -0
  1399. package/lib/python3.14/site-packages/pip/_internal/__pycache__/exceptions.cpython-314.pyc +0 -0
  1400. package/lib/python3.14/site-packages/pip/_internal/__pycache__/main.cpython-314.pyc +0 -0
  1401. package/lib/python3.14/site-packages/pip/_internal/__pycache__/pyproject.cpython-314.pyc +0 -0
  1402. package/lib/python3.14/site-packages/pip/_internal/__pycache__/self_outdated_check.cpython-314.pyc +0 -0
  1403. package/lib/python3.14/site-packages/pip/_internal/__pycache__/wheel_builder.cpython-314.pyc +0 -0
  1404. package/lib/python3.14/site-packages/pip/_internal/build_env.py +417 -0
  1405. package/lib/python3.14/site-packages/pip/_internal/cache.py +291 -0
  1406. package/lib/python3.14/site-packages/pip/_internal/cli/__init__.py +3 -0
  1407. package/lib/python3.14/site-packages/pip/_internal/cli/__pycache__/__init__.cpython-314.pyc +0 -0
  1408. package/lib/python3.14/site-packages/pip/_internal/cli/__pycache__/autocompletion.cpython-314.pyc +0 -0
  1409. package/lib/python3.14/site-packages/pip/_internal/cli/__pycache__/base_command.cpython-314.pyc +0 -0
  1410. package/lib/python3.14/site-packages/pip/_internal/cli/__pycache__/cmdoptions.cpython-314.pyc +0 -0
  1411. package/lib/python3.14/site-packages/pip/_internal/cli/__pycache__/command_context.cpython-314.pyc +0 -0
  1412. package/lib/python3.14/site-packages/pip/_internal/cli/__pycache__/index_command.cpython-314.pyc +0 -0
  1413. package/lib/python3.14/site-packages/pip/_internal/cli/__pycache__/main.cpython-314.pyc +0 -0
  1414. package/lib/python3.14/site-packages/pip/_internal/cli/__pycache__/main_parser.cpython-314.pyc +0 -0
  1415. package/lib/python3.14/site-packages/pip/_internal/cli/__pycache__/parser.cpython-314.pyc +0 -0
  1416. package/lib/python3.14/site-packages/pip/_internal/cli/__pycache__/progress_bars.cpython-314.pyc +0 -0
  1417. package/lib/python3.14/site-packages/pip/_internal/cli/__pycache__/req_command.cpython-314.pyc +0 -0
  1418. package/lib/python3.14/site-packages/pip/_internal/cli/__pycache__/spinners.cpython-314.pyc +0 -0
  1419. package/lib/python3.14/site-packages/pip/_internal/cli/__pycache__/status_codes.cpython-314.pyc +0 -0
  1420. package/lib/python3.14/site-packages/pip/_internal/cli/autocompletion.py +184 -0
  1421. package/lib/python3.14/site-packages/pip/_internal/cli/base_command.py +244 -0
  1422. package/lib/python3.14/site-packages/pip/_internal/cli/cmdoptions.py +1110 -0
  1423. package/lib/python3.14/site-packages/pip/_internal/cli/command_context.py +28 -0
  1424. package/lib/python3.14/site-packages/pip/_internal/cli/index_command.py +175 -0
  1425. package/lib/python3.14/site-packages/pip/_internal/cli/main.py +80 -0
  1426. package/lib/python3.14/site-packages/pip/_internal/cli/main_parser.py +134 -0
  1427. package/lib/python3.14/site-packages/pip/_internal/cli/parser.py +298 -0
  1428. package/lib/python3.14/site-packages/pip/_internal/cli/progress_bars.py +151 -0
  1429. package/lib/python3.14/site-packages/pip/_internal/cli/req_command.py +371 -0
  1430. package/lib/python3.14/site-packages/pip/_internal/cli/spinners.py +235 -0
  1431. package/lib/python3.14/site-packages/pip/_internal/cli/status_codes.py +6 -0
  1432. package/lib/python3.14/site-packages/pip/_internal/commands/__init__.py +139 -0
  1433. package/lib/python3.14/site-packages/pip/_internal/commands/__pycache__/__init__.cpython-314.pyc +0 -0
  1434. package/lib/python3.14/site-packages/pip/_internal/commands/__pycache__/cache.cpython-314.pyc +0 -0
  1435. package/lib/python3.14/site-packages/pip/_internal/commands/__pycache__/check.cpython-314.pyc +0 -0
  1436. package/lib/python3.14/site-packages/pip/_internal/commands/__pycache__/completion.cpython-314.pyc +0 -0
  1437. package/lib/python3.14/site-packages/pip/_internal/commands/__pycache__/configuration.cpython-314.pyc +0 -0
  1438. package/lib/python3.14/site-packages/pip/_internal/commands/__pycache__/debug.cpython-314.pyc +0 -0
  1439. package/lib/python3.14/site-packages/pip/_internal/commands/__pycache__/download.cpython-314.pyc +0 -0
  1440. package/lib/python3.14/site-packages/pip/_internal/commands/__pycache__/freeze.cpython-314.pyc +0 -0
  1441. package/lib/python3.14/site-packages/pip/_internal/commands/__pycache__/hash.cpython-314.pyc +0 -0
  1442. package/lib/python3.14/site-packages/pip/_internal/commands/__pycache__/help.cpython-314.pyc +0 -0
  1443. package/lib/python3.14/site-packages/pip/_internal/commands/__pycache__/index.cpython-314.pyc +0 -0
  1444. package/lib/python3.14/site-packages/pip/_internal/commands/__pycache__/inspect.cpython-314.pyc +0 -0
  1445. package/lib/python3.14/site-packages/pip/_internal/commands/__pycache__/install.cpython-314.pyc +0 -0
  1446. package/lib/python3.14/site-packages/pip/_internal/commands/__pycache__/list.cpython-314.pyc +0 -0
  1447. package/lib/python3.14/site-packages/pip/_internal/commands/__pycache__/lock.cpython-314.pyc +0 -0
  1448. package/lib/python3.14/site-packages/pip/_internal/commands/__pycache__/search.cpython-314.pyc +0 -0
  1449. package/lib/python3.14/site-packages/pip/_internal/commands/__pycache__/show.cpython-314.pyc +0 -0
  1450. package/lib/python3.14/site-packages/pip/_internal/commands/__pycache__/uninstall.cpython-314.pyc +0 -0
  1451. package/lib/python3.14/site-packages/pip/_internal/commands/__pycache__/wheel.cpython-314.pyc +0 -0
  1452. package/lib/python3.14/site-packages/pip/_internal/commands/cache.py +231 -0
  1453. package/lib/python3.14/site-packages/pip/_internal/commands/check.py +66 -0
  1454. package/lib/python3.14/site-packages/pip/_internal/commands/completion.py +135 -0
  1455. package/lib/python3.14/site-packages/pip/_internal/commands/configuration.py +288 -0
  1456. package/lib/python3.14/site-packages/pip/_internal/commands/debug.py +203 -0
  1457. package/lib/python3.14/site-packages/pip/_internal/commands/download.py +142 -0
  1458. package/lib/python3.14/site-packages/pip/_internal/commands/freeze.py +107 -0
  1459. package/lib/python3.14/site-packages/pip/_internal/commands/hash.py +58 -0
  1460. package/lib/python3.14/site-packages/pip/_internal/commands/help.py +40 -0
  1461. package/lib/python3.14/site-packages/pip/_internal/commands/index.py +159 -0
  1462. package/lib/python3.14/site-packages/pip/_internal/commands/inspect.py +92 -0
  1463. package/lib/python3.14/site-packages/pip/_internal/commands/install.py +803 -0
  1464. package/lib/python3.14/site-packages/pip/_internal/commands/list.py +400 -0
  1465. package/lib/python3.14/site-packages/pip/_internal/commands/lock.py +167 -0
  1466. package/lib/python3.14/site-packages/pip/_internal/commands/search.py +178 -0
  1467. package/lib/python3.14/site-packages/pip/_internal/commands/show.py +231 -0
  1468. package/lib/python3.14/site-packages/pip/_internal/commands/uninstall.py +113 -0
  1469. package/lib/python3.14/site-packages/pip/_internal/commands/wheel.py +176 -0
  1470. package/lib/python3.14/site-packages/pip/_internal/configuration.py +396 -0
  1471. package/lib/python3.14/site-packages/pip/_internal/distributions/__init__.py +21 -0
  1472. package/lib/python3.14/site-packages/pip/_internal/distributions/__pycache__/__init__.cpython-314.pyc +0 -0
  1473. package/lib/python3.14/site-packages/pip/_internal/distributions/__pycache__/base.cpython-314.pyc +0 -0
  1474. package/lib/python3.14/site-packages/pip/_internal/distributions/__pycache__/installed.cpython-314.pyc +0 -0
  1475. package/lib/python3.14/site-packages/pip/_internal/distributions/__pycache__/sdist.cpython-314.pyc +0 -0
  1476. package/lib/python3.14/site-packages/pip/_internal/distributions/__pycache__/wheel.cpython-314.pyc +0 -0
  1477. package/lib/python3.14/site-packages/pip/_internal/distributions/base.py +55 -0
  1478. package/lib/python3.14/site-packages/pip/_internal/distributions/installed.py +33 -0
  1479. package/lib/python3.14/site-packages/pip/_internal/distributions/sdist.py +164 -0
  1480. package/lib/python3.14/site-packages/pip/_internal/distributions/wheel.py +44 -0
  1481. package/lib/python3.14/site-packages/pip/_internal/exceptions.py +898 -0
  1482. package/lib/python3.14/site-packages/pip/_internal/index/__init__.py +1 -0
  1483. package/lib/python3.14/site-packages/pip/_internal/index/__pycache__/__init__.cpython-314.pyc +0 -0
  1484. package/lib/python3.14/site-packages/pip/_internal/index/__pycache__/collector.cpython-314.pyc +0 -0
  1485. package/lib/python3.14/site-packages/pip/_internal/index/__pycache__/package_finder.cpython-314.pyc +0 -0
  1486. package/lib/python3.14/site-packages/pip/_internal/index/__pycache__/sources.cpython-314.pyc +0 -0
  1487. package/lib/python3.14/site-packages/pip/_internal/index/collector.py +489 -0
  1488. package/lib/python3.14/site-packages/pip/_internal/index/package_finder.py +1059 -0
  1489. package/lib/python3.14/site-packages/pip/_internal/index/sources.py +287 -0
  1490. package/lib/python3.14/site-packages/pip/_internal/locations/__init__.py +441 -0
  1491. package/lib/python3.14/site-packages/pip/_internal/locations/__pycache__/__init__.cpython-314.pyc +0 -0
  1492. package/lib/python3.14/site-packages/pip/_internal/locations/__pycache__/_distutils.cpython-314.pyc +0 -0
  1493. package/lib/python3.14/site-packages/pip/_internal/locations/__pycache__/_sysconfig.cpython-314.pyc +0 -0
  1494. package/lib/python3.14/site-packages/pip/_internal/locations/__pycache__/base.cpython-314.pyc +0 -0
  1495. package/lib/python3.14/site-packages/pip/_internal/locations/_distutils.py +173 -0
  1496. package/lib/python3.14/site-packages/pip/_internal/locations/_sysconfig.py +215 -0
  1497. package/lib/python3.14/site-packages/pip/_internal/locations/base.py +82 -0
  1498. package/lib/python3.14/site-packages/pip/_internal/main.py +12 -0
  1499. package/lib/python3.14/site-packages/pip/_internal/metadata/__init__.py +169 -0
  1500. package/lib/python3.14/site-packages/pip/_internal/metadata/__pycache__/__init__.cpython-314.pyc +0 -0
  1501. package/lib/python3.14/site-packages/pip/_internal/metadata/__pycache__/_json.cpython-314.pyc +0 -0
  1502. package/lib/python3.14/site-packages/pip/_internal/metadata/__pycache__/base.cpython-314.pyc +0 -0
  1503. package/lib/python3.14/site-packages/pip/_internal/metadata/__pycache__/pkg_resources.cpython-314.pyc +0 -0
  1504. package/lib/python3.14/site-packages/pip/_internal/metadata/_json.py +87 -0
  1505. package/lib/python3.14/site-packages/pip/_internal/metadata/base.py +685 -0
  1506. package/lib/python3.14/site-packages/pip/_internal/metadata/importlib/__init__.py +6 -0
  1507. package/lib/python3.14/site-packages/pip/_internal/metadata/importlib/__pycache__/__init__.cpython-314.pyc +0 -0
  1508. package/lib/python3.14/site-packages/pip/_internal/metadata/importlib/__pycache__/_compat.cpython-314.pyc +0 -0
  1509. package/lib/python3.14/site-packages/pip/_internal/metadata/importlib/__pycache__/_dists.cpython-314.pyc +0 -0
  1510. package/lib/python3.14/site-packages/pip/_internal/metadata/importlib/__pycache__/_envs.cpython-314.pyc +0 -0
  1511. package/lib/python3.14/site-packages/pip/_internal/metadata/importlib/_compat.py +87 -0
  1512. package/lib/python3.14/site-packages/pip/_internal/metadata/importlib/_dists.py +229 -0
  1513. package/lib/python3.14/site-packages/pip/_internal/metadata/importlib/_envs.py +143 -0
  1514. package/lib/python3.14/site-packages/pip/_internal/metadata/pkg_resources.py +298 -0
  1515. package/lib/python3.14/site-packages/pip/_internal/models/__init__.py +1 -0
  1516. package/lib/python3.14/site-packages/pip/_internal/models/__pycache__/__init__.cpython-314.pyc +0 -0
  1517. package/lib/python3.14/site-packages/pip/_internal/models/__pycache__/candidate.cpython-314.pyc +0 -0
  1518. package/lib/python3.14/site-packages/pip/_internal/models/__pycache__/direct_url.cpython-314.pyc +0 -0
  1519. package/lib/python3.14/site-packages/pip/_internal/models/__pycache__/format_control.cpython-314.pyc +0 -0
  1520. package/lib/python3.14/site-packages/pip/_internal/models/__pycache__/index.cpython-314.pyc +0 -0
  1521. package/lib/python3.14/site-packages/pip/_internal/models/__pycache__/installation_report.cpython-314.pyc +0 -0
  1522. package/lib/python3.14/site-packages/pip/_internal/models/__pycache__/link.cpython-314.pyc +0 -0
  1523. package/lib/python3.14/site-packages/pip/_internal/models/__pycache__/pylock.cpython-314.pyc +0 -0
  1524. package/lib/python3.14/site-packages/pip/_internal/models/__pycache__/scheme.cpython-314.pyc +0 -0
  1525. package/lib/python3.14/site-packages/pip/_internal/models/__pycache__/search_scope.cpython-314.pyc +0 -0
  1526. package/lib/python3.14/site-packages/pip/_internal/models/__pycache__/selection_prefs.cpython-314.pyc +0 -0
  1527. package/lib/python3.14/site-packages/pip/_internal/models/__pycache__/target_python.cpython-314.pyc +0 -0
  1528. package/lib/python3.14/site-packages/pip/_internal/models/__pycache__/wheel.cpython-314.pyc +0 -0
  1529. package/lib/python3.14/site-packages/pip/_internal/models/candidate.py +25 -0
  1530. package/lib/python3.14/site-packages/pip/_internal/models/direct_url.py +227 -0
  1531. package/lib/python3.14/site-packages/pip/_internal/models/format_control.py +78 -0
  1532. package/lib/python3.14/site-packages/pip/_internal/models/index.py +28 -0
  1533. package/lib/python3.14/site-packages/pip/_internal/models/installation_report.py +57 -0
  1534. package/lib/python3.14/site-packages/pip/_internal/models/link.py +613 -0
  1535. package/lib/python3.14/site-packages/pip/_internal/models/pylock.py +188 -0
  1536. package/lib/python3.14/site-packages/pip/_internal/models/scheme.py +25 -0
  1537. package/lib/python3.14/site-packages/pip/_internal/models/search_scope.py +126 -0
  1538. package/lib/python3.14/site-packages/pip/_internal/models/selection_prefs.py +53 -0
  1539. package/lib/python3.14/site-packages/pip/_internal/models/target_python.py +122 -0
  1540. package/lib/python3.14/site-packages/pip/_internal/models/wheel.py +80 -0
  1541. package/lib/python3.14/site-packages/pip/_internal/network/__init__.py +1 -0
  1542. package/lib/python3.14/site-packages/pip/_internal/network/__pycache__/__init__.cpython-314.pyc +0 -0
  1543. package/lib/python3.14/site-packages/pip/_internal/network/__pycache__/auth.cpython-314.pyc +0 -0
  1544. package/lib/python3.14/site-packages/pip/_internal/network/__pycache__/cache.cpython-314.pyc +0 -0
  1545. package/lib/python3.14/site-packages/pip/_internal/network/__pycache__/download.cpython-314.pyc +0 -0
  1546. package/lib/python3.14/site-packages/pip/_internal/network/__pycache__/lazy_wheel.cpython-314.pyc +0 -0
  1547. package/lib/python3.14/site-packages/pip/_internal/network/__pycache__/session.cpython-314.pyc +0 -0
  1548. package/lib/python3.14/site-packages/pip/_internal/network/__pycache__/utils.cpython-314.pyc +0 -0
  1549. package/lib/python3.14/site-packages/pip/_internal/network/__pycache__/xmlrpc.cpython-314.pyc +0 -0
  1550. package/lib/python3.14/site-packages/pip/_internal/network/auth.py +564 -0
  1551. package/lib/python3.14/site-packages/pip/_internal/network/cache.py +128 -0
  1552. package/lib/python3.14/site-packages/pip/_internal/network/download.py +342 -0
  1553. package/lib/python3.14/site-packages/pip/_internal/network/lazy_wheel.py +215 -0
  1554. package/lib/python3.14/site-packages/pip/_internal/network/session.py +528 -0
  1555. package/lib/python3.14/site-packages/pip/_internal/network/utils.py +98 -0
  1556. package/lib/python3.14/site-packages/pip/_internal/network/xmlrpc.py +61 -0
  1557. package/lib/python3.14/site-packages/pip/_internal/operations/__init__.py +0 -0
  1558. package/lib/python3.14/site-packages/pip/_internal/operations/__pycache__/__init__.cpython-314.pyc +0 -0
  1559. package/lib/python3.14/site-packages/pip/_internal/operations/__pycache__/check.cpython-314.pyc +0 -0
  1560. package/lib/python3.14/site-packages/pip/_internal/operations/__pycache__/freeze.cpython-314.pyc +0 -0
  1561. package/lib/python3.14/site-packages/pip/_internal/operations/__pycache__/prepare.cpython-314.pyc +0 -0
  1562. package/lib/python3.14/site-packages/pip/_internal/operations/build/__init__.py +0 -0
  1563. package/lib/python3.14/site-packages/pip/_internal/operations/build/__pycache__/__init__.cpython-314.pyc +0 -0
  1564. package/lib/python3.14/site-packages/pip/_internal/operations/build/__pycache__/build_tracker.cpython-314.pyc +0 -0
  1565. package/lib/python3.14/site-packages/pip/_internal/operations/build/__pycache__/metadata.cpython-314.pyc +0 -0
  1566. package/lib/python3.14/site-packages/pip/_internal/operations/build/__pycache__/metadata_editable.cpython-314.pyc +0 -0
  1567. package/lib/python3.14/site-packages/pip/_internal/operations/build/__pycache__/wheel.cpython-314.pyc +0 -0
  1568. package/lib/python3.14/site-packages/pip/_internal/operations/build/__pycache__/wheel_editable.cpython-314.pyc +0 -0
  1569. package/lib/python3.14/site-packages/pip/_internal/operations/build/build_tracker.py +140 -0
  1570. package/lib/python3.14/site-packages/pip/_internal/operations/build/metadata.py +38 -0
  1571. package/lib/python3.14/site-packages/pip/_internal/operations/build/metadata_editable.py +41 -0
  1572. package/lib/python3.14/site-packages/pip/_internal/operations/build/wheel.py +38 -0
  1573. package/lib/python3.14/site-packages/pip/_internal/operations/build/wheel_editable.py +47 -0
  1574. package/lib/python3.14/site-packages/pip/_internal/operations/check.py +175 -0
  1575. package/lib/python3.14/site-packages/pip/_internal/operations/freeze.py +259 -0
  1576. package/lib/python3.14/site-packages/pip/_internal/operations/install/__init__.py +1 -0
  1577. package/lib/python3.14/site-packages/pip/_internal/operations/install/__pycache__/__init__.cpython-314.pyc +0 -0
  1578. package/lib/python3.14/site-packages/pip/_internal/operations/install/__pycache__/wheel.cpython-314.pyc +0 -0
  1579. package/lib/python3.14/site-packages/pip/_internal/operations/install/wheel.py +746 -0
  1580. package/lib/python3.14/site-packages/pip/_internal/operations/prepare.py +748 -0
  1581. package/lib/python3.14/site-packages/pip/_internal/pyproject.py +123 -0
  1582. package/lib/python3.14/site-packages/pip/_internal/req/__init__.py +103 -0
  1583. package/lib/python3.14/site-packages/pip/_internal/req/__pycache__/__init__.cpython-314.pyc +0 -0
  1584. package/lib/python3.14/site-packages/pip/_internal/req/__pycache__/constructors.cpython-314.pyc +0 -0
  1585. package/lib/python3.14/site-packages/pip/_internal/req/__pycache__/req_dependency_group.cpython-314.pyc +0 -0
  1586. package/lib/python3.14/site-packages/pip/_internal/req/__pycache__/req_file.cpython-314.pyc +0 -0
  1587. package/lib/python3.14/site-packages/pip/_internal/req/__pycache__/req_install.cpython-314.pyc +0 -0
  1588. package/lib/python3.14/site-packages/pip/_internal/req/__pycache__/req_set.cpython-314.pyc +0 -0
  1589. package/lib/python3.14/site-packages/pip/_internal/req/__pycache__/req_uninstall.cpython-314.pyc +0 -0
  1590. package/lib/python3.14/site-packages/pip/_internal/req/constructors.py +566 -0
  1591. package/lib/python3.14/site-packages/pip/_internal/req/req_dependency_group.py +75 -0
  1592. package/lib/python3.14/site-packages/pip/_internal/req/req_file.py +619 -0
  1593. package/lib/python3.14/site-packages/pip/_internal/req/req_install.py +828 -0
  1594. package/lib/python3.14/site-packages/pip/_internal/req/req_set.py +81 -0
  1595. package/lib/python3.14/site-packages/pip/_internal/req/req_uninstall.py +639 -0
  1596. package/lib/python3.14/site-packages/pip/_internal/resolution/__init__.py +0 -0
  1597. package/lib/python3.14/site-packages/pip/_internal/resolution/__pycache__/__init__.cpython-314.pyc +0 -0
  1598. package/lib/python3.14/site-packages/pip/_internal/resolution/__pycache__/base.cpython-314.pyc +0 -0
  1599. package/lib/python3.14/site-packages/pip/_internal/resolution/base.py +20 -0
  1600. package/lib/python3.14/site-packages/pip/_internal/resolution/legacy/__init__.py +0 -0
  1601. package/lib/python3.14/site-packages/pip/_internal/resolution/legacy/__pycache__/__init__.cpython-314.pyc +0 -0
  1602. package/lib/python3.14/site-packages/pip/_internal/resolution/legacy/__pycache__/resolver.cpython-314.pyc +0 -0
  1603. package/lib/python3.14/site-packages/pip/_internal/resolution/legacy/resolver.py +598 -0
  1604. package/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/__init__.py +0 -0
  1605. package/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/__pycache__/__init__.cpython-314.pyc +0 -0
  1606. package/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/__pycache__/base.cpython-314.pyc +0 -0
  1607. package/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/__pycache__/candidates.cpython-314.pyc +0 -0
  1608. package/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/__pycache__/factory.cpython-314.pyc +0 -0
  1609. package/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/__pycache__/found_candidates.cpython-314.pyc +0 -0
  1610. package/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/__pycache__/provider.cpython-314.pyc +0 -0
  1611. package/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/__pycache__/reporter.cpython-314.pyc +0 -0
  1612. package/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/__pycache__/requirements.cpython-314.pyc +0 -0
  1613. package/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/__pycache__/resolver.cpython-314.pyc +0 -0
  1614. package/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/base.py +142 -0
  1615. package/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/candidates.py +591 -0
  1616. package/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/factory.py +845 -0
  1617. package/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py +166 -0
  1618. package/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/provider.py +285 -0
  1619. package/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/reporter.py +98 -0
  1620. package/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/requirements.py +247 -0
  1621. package/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/resolver.py +332 -0
  1622. package/lib/python3.14/site-packages/pip/_internal/self_outdated_check.py +262 -0
  1623. package/lib/python3.14/site-packages/pip/_internal/utils/__init__.py +0 -0
  1624. package/lib/python3.14/site-packages/pip/_internal/utils/__pycache__/__init__.cpython-314.pyc +0 -0
  1625. package/lib/python3.14/site-packages/pip/_internal/utils/__pycache__/_jaraco_text.cpython-314.pyc +0 -0
  1626. package/lib/python3.14/site-packages/pip/_internal/utils/__pycache__/_log.cpython-314.pyc +0 -0
  1627. package/lib/python3.14/site-packages/pip/_internal/utils/__pycache__/appdirs.cpython-314.pyc +0 -0
  1628. package/lib/python3.14/site-packages/pip/_internal/utils/__pycache__/compat.cpython-314.pyc +0 -0
  1629. package/lib/python3.14/site-packages/pip/_internal/utils/__pycache__/compatibility_tags.cpython-314.pyc +0 -0
  1630. package/lib/python3.14/site-packages/pip/_internal/utils/__pycache__/datetime.cpython-314.pyc +0 -0
  1631. package/lib/python3.14/site-packages/pip/_internal/utils/__pycache__/deprecation.cpython-314.pyc +0 -0
  1632. package/lib/python3.14/site-packages/pip/_internal/utils/__pycache__/direct_url_helpers.cpython-314.pyc +0 -0
  1633. package/lib/python3.14/site-packages/pip/_internal/utils/__pycache__/egg_link.cpython-314.pyc +0 -0
  1634. package/lib/python3.14/site-packages/pip/_internal/utils/__pycache__/entrypoints.cpython-314.pyc +0 -0
  1635. package/lib/python3.14/site-packages/pip/_internal/utils/__pycache__/filesystem.cpython-314.pyc +0 -0
  1636. package/lib/python3.14/site-packages/pip/_internal/utils/__pycache__/filetypes.cpython-314.pyc +0 -0
  1637. package/lib/python3.14/site-packages/pip/_internal/utils/__pycache__/glibc.cpython-314.pyc +0 -0
  1638. package/lib/python3.14/site-packages/pip/_internal/utils/__pycache__/hashes.cpython-314.pyc +0 -0
  1639. package/lib/python3.14/site-packages/pip/_internal/utils/__pycache__/logging.cpython-314.pyc +0 -0
  1640. package/lib/python3.14/site-packages/pip/_internal/utils/__pycache__/misc.cpython-314.pyc +0 -0
  1641. package/lib/python3.14/site-packages/pip/_internal/utils/__pycache__/packaging.cpython-314.pyc +0 -0
  1642. package/lib/python3.14/site-packages/pip/_internal/utils/__pycache__/retry.cpython-314.pyc +0 -0
  1643. package/lib/python3.14/site-packages/pip/_internal/utils/__pycache__/subprocess.cpython-314.pyc +0 -0
  1644. package/lib/python3.14/site-packages/pip/_internal/utils/__pycache__/temp_dir.cpython-314.pyc +0 -0
  1645. package/lib/python3.14/site-packages/pip/_internal/utils/__pycache__/unpacking.cpython-314.pyc +0 -0
  1646. package/lib/python3.14/site-packages/pip/_internal/utils/__pycache__/urls.cpython-314.pyc +0 -0
  1647. package/lib/python3.14/site-packages/pip/_internal/utils/__pycache__/virtualenv.cpython-314.pyc +0 -0
  1648. package/lib/python3.14/site-packages/pip/_internal/utils/__pycache__/wheel.cpython-314.pyc +0 -0
  1649. package/lib/python3.14/site-packages/pip/_internal/utils/_jaraco_text.py +109 -0
  1650. package/lib/python3.14/site-packages/pip/_internal/utils/_log.py +38 -0
  1651. package/lib/python3.14/site-packages/pip/_internal/utils/appdirs.py +52 -0
  1652. package/lib/python3.14/site-packages/pip/_internal/utils/compat.py +85 -0
  1653. package/lib/python3.14/site-packages/pip/_internal/utils/compatibility_tags.py +201 -0
  1654. package/lib/python3.14/site-packages/pip/_internal/utils/datetime.py +10 -0
  1655. package/lib/python3.14/site-packages/pip/_internal/utils/deprecation.py +126 -0
  1656. package/lib/python3.14/site-packages/pip/_internal/utils/direct_url_helpers.py +87 -0
  1657. package/lib/python3.14/site-packages/pip/_internal/utils/egg_link.py +81 -0
  1658. package/lib/python3.14/site-packages/pip/_internal/utils/entrypoints.py +88 -0
  1659. package/lib/python3.14/site-packages/pip/_internal/utils/filesystem.py +164 -0
  1660. package/lib/python3.14/site-packages/pip/_internal/utils/filetypes.py +24 -0
  1661. package/lib/python3.14/site-packages/pip/_internal/utils/glibc.py +102 -0
  1662. package/lib/python3.14/site-packages/pip/_internal/utils/hashes.py +150 -0
  1663. package/lib/python3.14/site-packages/pip/_internal/utils/logging.py +364 -0
  1664. package/lib/python3.14/site-packages/pip/_internal/utils/misc.py +765 -0
  1665. package/lib/python3.14/site-packages/pip/_internal/utils/packaging.py +44 -0
  1666. package/lib/python3.14/site-packages/pip/_internal/utils/retry.py +45 -0
  1667. package/lib/python3.14/site-packages/pip/_internal/utils/subprocess.py +248 -0
  1668. package/lib/python3.14/site-packages/pip/_internal/utils/temp_dir.py +294 -0
  1669. package/lib/python3.14/site-packages/pip/_internal/utils/unpacking.py +362 -0
  1670. package/lib/python3.14/site-packages/pip/_internal/utils/urls.py +55 -0
  1671. package/lib/python3.14/site-packages/pip/_internal/utils/virtualenv.py +105 -0
  1672. package/lib/python3.14/site-packages/pip/_internal/utils/wheel.py +132 -0
  1673. package/lib/python3.14/site-packages/pip/_internal/vcs/__init__.py +15 -0
  1674. package/lib/python3.14/site-packages/pip/_internal/vcs/__pycache__/__init__.cpython-314.pyc +0 -0
  1675. package/lib/python3.14/site-packages/pip/_internal/vcs/__pycache__/bazaar.cpython-314.pyc +0 -0
  1676. package/lib/python3.14/site-packages/pip/_internal/vcs/__pycache__/git.cpython-314.pyc +0 -0
  1677. package/lib/python3.14/site-packages/pip/_internal/vcs/__pycache__/mercurial.cpython-314.pyc +0 -0
  1678. package/lib/python3.14/site-packages/pip/_internal/vcs/__pycache__/subversion.cpython-314.pyc +0 -0
  1679. package/lib/python3.14/site-packages/pip/_internal/vcs/__pycache__/versioncontrol.cpython-314.pyc +0 -0
  1680. package/lib/python3.14/site-packages/pip/_internal/vcs/bazaar.py +130 -0
  1681. package/lib/python3.14/site-packages/pip/_internal/vcs/git.py +571 -0
  1682. package/lib/python3.14/site-packages/pip/_internal/vcs/mercurial.py +186 -0
  1683. package/lib/python3.14/site-packages/pip/_internal/vcs/subversion.py +335 -0
  1684. package/lib/python3.14/site-packages/pip/_internal/vcs/versioncontrol.py +693 -0
  1685. package/lib/python3.14/site-packages/pip/_internal/wheel_builder.py +261 -0
  1686. package/lib/python3.14/site-packages/pip/_vendor/README.rst +180 -0
  1687. package/lib/python3.14/site-packages/pip/_vendor/__init__.py +117 -0
  1688. package/lib/python3.14/site-packages/pip/_vendor/__pycache__/__init__.cpython-314.pyc +0 -0
  1689. package/lib/python3.14/site-packages/pip/_vendor/cachecontrol/LICENSE.txt +13 -0
  1690. package/lib/python3.14/site-packages/pip/_vendor/cachecontrol/__init__.py +29 -0
  1691. package/lib/python3.14/site-packages/pip/_vendor/cachecontrol/__pycache__/__init__.cpython-314.pyc +0 -0
  1692. package/lib/python3.14/site-packages/pip/_vendor/cachecontrol/__pycache__/_cmd.cpython-314.pyc +0 -0
  1693. package/lib/python3.14/site-packages/pip/_vendor/cachecontrol/__pycache__/adapter.cpython-314.pyc +0 -0
  1694. package/lib/python3.14/site-packages/pip/_vendor/cachecontrol/__pycache__/cache.cpython-314.pyc +0 -0
  1695. package/lib/python3.14/site-packages/pip/_vendor/cachecontrol/__pycache__/controller.cpython-314.pyc +0 -0
  1696. package/lib/python3.14/site-packages/pip/_vendor/cachecontrol/__pycache__/filewrapper.cpython-314.pyc +0 -0
  1697. package/lib/python3.14/site-packages/pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-314.pyc +0 -0
  1698. package/lib/python3.14/site-packages/pip/_vendor/cachecontrol/__pycache__/serialize.cpython-314.pyc +0 -0
  1699. package/lib/python3.14/site-packages/pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-314.pyc +0 -0
  1700. package/lib/python3.14/site-packages/pip/_vendor/cachecontrol/_cmd.py +70 -0
  1701. package/lib/python3.14/site-packages/pip/_vendor/cachecontrol/adapter.py +168 -0
  1702. package/lib/python3.14/site-packages/pip/_vendor/cachecontrol/cache.py +75 -0
  1703. package/lib/python3.14/site-packages/pip/_vendor/cachecontrol/caches/__init__.py +8 -0
  1704. package/lib/python3.14/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/__init__.cpython-314.pyc +0 -0
  1705. package/lib/python3.14/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/file_cache.cpython-314.pyc +0 -0
  1706. package/lib/python3.14/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/redis_cache.cpython-314.pyc +0 -0
  1707. package/lib/python3.14/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py +145 -0
  1708. package/lib/python3.14/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py +48 -0
  1709. package/lib/python3.14/site-packages/pip/_vendor/cachecontrol/controller.py +511 -0
  1710. package/lib/python3.14/site-packages/pip/_vendor/cachecontrol/filewrapper.py +119 -0
  1711. package/lib/python3.14/site-packages/pip/_vendor/cachecontrol/heuristics.py +157 -0
  1712. package/lib/python3.14/site-packages/pip/_vendor/cachecontrol/py.typed +0 -0
  1713. package/lib/python3.14/site-packages/pip/_vendor/cachecontrol/serialize.py +146 -0
  1714. package/lib/python3.14/site-packages/pip/_vendor/cachecontrol/wrapper.py +43 -0
  1715. package/lib/python3.14/site-packages/pip/_vendor/certifi/LICENSE +20 -0
  1716. package/lib/python3.14/site-packages/pip/_vendor/certifi/__init__.py +4 -0
  1717. package/lib/python3.14/site-packages/pip/_vendor/certifi/__main__.py +12 -0
  1718. package/lib/python3.14/site-packages/pip/_vendor/certifi/__pycache__/__init__.cpython-314.pyc +0 -0
  1719. package/lib/python3.14/site-packages/pip/_vendor/certifi/__pycache__/__main__.cpython-314.pyc +0 -0
  1720. package/lib/python3.14/site-packages/pip/_vendor/certifi/__pycache__/core.cpython-314.pyc +0 -0
  1721. package/lib/python3.14/site-packages/pip/_vendor/certifi/cacert.pem +4800 -0
  1722. package/lib/python3.14/site-packages/pip/_vendor/certifi/core.py +83 -0
  1723. package/lib/python3.14/site-packages/pip/_vendor/certifi/py.typed +0 -0
  1724. package/lib/python3.14/site-packages/pip/_vendor/dependency_groups/LICENSE.txt +9 -0
  1725. package/lib/python3.14/site-packages/pip/_vendor/dependency_groups/__init__.py +13 -0
  1726. package/lib/python3.14/site-packages/pip/_vendor/dependency_groups/__main__.py +65 -0
  1727. package/lib/python3.14/site-packages/pip/_vendor/dependency_groups/__pycache__/__init__.cpython-314.pyc +0 -0
  1728. package/lib/python3.14/site-packages/pip/_vendor/dependency_groups/__pycache__/__main__.cpython-314.pyc +0 -0
  1729. package/lib/python3.14/site-packages/pip/_vendor/dependency_groups/__pycache__/_implementation.cpython-314.pyc +0 -0
  1730. package/lib/python3.14/site-packages/pip/_vendor/dependency_groups/__pycache__/_lint_dependency_groups.cpython-314.pyc +0 -0
  1731. package/lib/python3.14/site-packages/pip/_vendor/dependency_groups/__pycache__/_pip_wrapper.cpython-314.pyc +0 -0
  1732. package/lib/python3.14/site-packages/pip/_vendor/dependency_groups/__pycache__/_toml_compat.cpython-314.pyc +0 -0
  1733. package/lib/python3.14/site-packages/pip/_vendor/dependency_groups/_implementation.py +209 -0
  1734. package/lib/python3.14/site-packages/pip/_vendor/dependency_groups/_lint_dependency_groups.py +59 -0
  1735. package/lib/python3.14/site-packages/pip/_vendor/dependency_groups/_pip_wrapper.py +62 -0
  1736. package/lib/python3.14/site-packages/pip/_vendor/dependency_groups/_toml_compat.py +9 -0
  1737. package/lib/python3.14/site-packages/pip/_vendor/dependency_groups/py.typed +0 -0
  1738. package/lib/python3.14/site-packages/pip/_vendor/distlib/LICENSE.txt +284 -0
  1739. package/lib/python3.14/site-packages/pip/_vendor/distlib/__init__.py +33 -0
  1740. package/lib/python3.14/site-packages/pip/_vendor/distlib/__pycache__/__init__.cpython-314.pyc +0 -0
  1741. package/lib/python3.14/site-packages/pip/_vendor/distlib/__pycache__/compat.cpython-314.pyc +0 -0
  1742. package/lib/python3.14/site-packages/pip/_vendor/distlib/__pycache__/resources.cpython-314.pyc +0 -0
  1743. package/lib/python3.14/site-packages/pip/_vendor/distlib/__pycache__/scripts.cpython-314.pyc +0 -0
  1744. package/lib/python3.14/site-packages/pip/_vendor/distlib/__pycache__/util.cpython-314.pyc +0 -0
  1745. package/lib/python3.14/site-packages/pip/_vendor/distlib/compat.py +1137 -0
  1746. package/lib/python3.14/site-packages/pip/_vendor/distlib/resources.py +358 -0
  1747. package/lib/python3.14/site-packages/pip/_vendor/distlib/scripts.py +447 -0
  1748. package/lib/python3.14/site-packages/pip/_vendor/distlib/t32.exe +0 -0
  1749. package/lib/python3.14/site-packages/pip/_vendor/distlib/t64-arm.exe +0 -0
  1750. package/lib/python3.14/site-packages/pip/_vendor/distlib/t64.exe +0 -0
  1751. package/lib/python3.14/site-packages/pip/_vendor/distlib/util.py +1984 -0
  1752. package/lib/python3.14/site-packages/pip/_vendor/distlib/w32.exe +0 -0
  1753. package/lib/python3.14/site-packages/pip/_vendor/distlib/w64-arm.exe +0 -0
  1754. package/lib/python3.14/site-packages/pip/_vendor/distlib/w64.exe +0 -0
  1755. package/lib/python3.14/site-packages/pip/_vendor/distro/LICENSE +202 -0
  1756. package/lib/python3.14/site-packages/pip/_vendor/distro/__init__.py +54 -0
  1757. package/lib/python3.14/site-packages/pip/_vendor/distro/__main__.py +4 -0
  1758. package/lib/python3.14/site-packages/pip/_vendor/distro/__pycache__/__init__.cpython-314.pyc +0 -0
  1759. package/lib/python3.14/site-packages/pip/_vendor/distro/__pycache__/__main__.cpython-314.pyc +0 -0
  1760. package/lib/python3.14/site-packages/pip/_vendor/distro/__pycache__/distro.cpython-314.pyc +0 -0
  1761. package/lib/python3.14/site-packages/pip/_vendor/distro/distro.py +1403 -0
  1762. package/lib/python3.14/site-packages/pip/_vendor/distro/py.typed +0 -0
  1763. package/lib/python3.14/site-packages/pip/_vendor/idna/LICENSE.md +31 -0
  1764. package/lib/python3.14/site-packages/pip/_vendor/idna/__init__.py +45 -0
  1765. package/lib/python3.14/site-packages/pip/_vendor/idna/__pycache__/__init__.cpython-314.pyc +0 -0
  1766. package/lib/python3.14/site-packages/pip/_vendor/idna/__pycache__/codec.cpython-314.pyc +0 -0
  1767. package/lib/python3.14/site-packages/pip/_vendor/idna/__pycache__/compat.cpython-314.pyc +0 -0
  1768. package/lib/python3.14/site-packages/pip/_vendor/idna/__pycache__/core.cpython-314.pyc +0 -0
  1769. package/lib/python3.14/site-packages/pip/_vendor/idna/__pycache__/idnadata.cpython-314.pyc +0 -0
  1770. package/lib/python3.14/site-packages/pip/_vendor/idna/__pycache__/intranges.cpython-314.pyc +0 -0
  1771. package/lib/python3.14/site-packages/pip/_vendor/idna/__pycache__/package_data.cpython-314.pyc +0 -0
  1772. package/lib/python3.14/site-packages/pip/_vendor/idna/__pycache__/uts46data.cpython-314.pyc +0 -0
  1773. package/lib/python3.14/site-packages/pip/_vendor/idna/codec.py +122 -0
  1774. package/lib/python3.14/site-packages/pip/_vendor/idna/compat.py +15 -0
  1775. package/lib/python3.14/site-packages/pip/_vendor/idna/core.py +437 -0
  1776. package/lib/python3.14/site-packages/pip/_vendor/idna/idnadata.py +4243 -0
  1777. package/lib/python3.14/site-packages/pip/_vendor/idna/intranges.py +57 -0
  1778. package/lib/python3.14/site-packages/pip/_vendor/idna/package_data.py +1 -0
  1779. package/lib/python3.14/site-packages/pip/_vendor/idna/py.typed +0 -0
  1780. package/lib/python3.14/site-packages/pip/_vendor/idna/uts46data.py +8681 -0
  1781. package/lib/python3.14/site-packages/pip/_vendor/msgpack/COPYING +14 -0
  1782. package/lib/python3.14/site-packages/pip/_vendor/msgpack/__init__.py +55 -0
  1783. package/lib/python3.14/site-packages/pip/_vendor/msgpack/__pycache__/__init__.cpython-314.pyc +0 -0
  1784. package/lib/python3.14/site-packages/pip/_vendor/msgpack/__pycache__/exceptions.cpython-314.pyc +0 -0
  1785. package/lib/python3.14/site-packages/pip/_vendor/msgpack/__pycache__/ext.cpython-314.pyc +0 -0
  1786. package/lib/python3.14/site-packages/pip/_vendor/msgpack/__pycache__/fallback.cpython-314.pyc +0 -0
  1787. package/lib/python3.14/site-packages/pip/_vendor/msgpack/exceptions.py +48 -0
  1788. package/lib/python3.14/site-packages/pip/_vendor/msgpack/ext.py +170 -0
  1789. package/lib/python3.14/site-packages/pip/_vendor/msgpack/fallback.py +929 -0
  1790. package/lib/python3.14/site-packages/pip/_vendor/packaging/LICENSE +3 -0
  1791. package/lib/python3.14/site-packages/pip/_vendor/packaging/LICENSE.APACHE +177 -0
  1792. package/lib/python3.14/site-packages/pip/_vendor/packaging/LICENSE.BSD +23 -0
  1793. package/lib/python3.14/site-packages/pip/_vendor/packaging/__init__.py +15 -0
  1794. package/lib/python3.14/site-packages/pip/_vendor/packaging/__pycache__/__init__.cpython-314.pyc +0 -0
  1795. package/lib/python3.14/site-packages/pip/_vendor/packaging/__pycache__/_elffile.cpython-314.pyc +0 -0
  1796. package/lib/python3.14/site-packages/pip/_vendor/packaging/__pycache__/_manylinux.cpython-314.pyc +0 -0
  1797. package/lib/python3.14/site-packages/pip/_vendor/packaging/__pycache__/_musllinux.cpython-314.pyc +0 -0
  1798. package/lib/python3.14/site-packages/pip/_vendor/packaging/__pycache__/_parser.cpython-314.pyc +0 -0
  1799. package/lib/python3.14/site-packages/pip/_vendor/packaging/__pycache__/_structures.cpython-314.pyc +0 -0
  1800. package/lib/python3.14/site-packages/pip/_vendor/packaging/__pycache__/_tokenizer.cpython-314.pyc +0 -0
  1801. package/lib/python3.14/site-packages/pip/_vendor/packaging/__pycache__/markers.cpython-314.pyc +0 -0
  1802. package/lib/python3.14/site-packages/pip/_vendor/packaging/__pycache__/metadata.cpython-314.pyc +0 -0
  1803. package/lib/python3.14/site-packages/pip/_vendor/packaging/__pycache__/requirements.cpython-314.pyc +0 -0
  1804. package/lib/python3.14/site-packages/pip/_vendor/packaging/__pycache__/specifiers.cpython-314.pyc +0 -0
  1805. package/lib/python3.14/site-packages/pip/_vendor/packaging/__pycache__/tags.cpython-314.pyc +0 -0
  1806. package/lib/python3.14/site-packages/pip/_vendor/packaging/__pycache__/utils.cpython-314.pyc +0 -0
  1807. package/lib/python3.14/site-packages/pip/_vendor/packaging/__pycache__/version.cpython-314.pyc +0 -0
  1808. package/lib/python3.14/site-packages/pip/_vendor/packaging/_elffile.py +109 -0
  1809. package/lib/python3.14/site-packages/pip/_vendor/packaging/_manylinux.py +262 -0
  1810. package/lib/python3.14/site-packages/pip/_vendor/packaging/_musllinux.py +85 -0
  1811. package/lib/python3.14/site-packages/pip/_vendor/packaging/_parser.py +353 -0
  1812. package/lib/python3.14/site-packages/pip/_vendor/packaging/_structures.py +61 -0
  1813. package/lib/python3.14/site-packages/pip/_vendor/packaging/_tokenizer.py +195 -0
  1814. package/lib/python3.14/site-packages/pip/_vendor/packaging/licenses/__init__.py +145 -0
  1815. package/lib/python3.14/site-packages/pip/_vendor/packaging/licenses/__pycache__/__init__.cpython-314.pyc +0 -0
  1816. package/lib/python3.14/site-packages/pip/_vendor/packaging/licenses/__pycache__/_spdx.cpython-314.pyc +0 -0
  1817. package/lib/python3.14/site-packages/pip/_vendor/packaging/licenses/_spdx.py +759 -0
  1818. package/lib/python3.14/site-packages/pip/_vendor/packaging/markers.py +362 -0
  1819. package/lib/python3.14/site-packages/pip/_vendor/packaging/metadata.py +862 -0
  1820. package/lib/python3.14/site-packages/pip/_vendor/packaging/py.typed +0 -0
  1821. package/lib/python3.14/site-packages/pip/_vendor/packaging/requirements.py +91 -0
  1822. package/lib/python3.14/site-packages/pip/_vendor/packaging/specifiers.py +1019 -0
  1823. package/lib/python3.14/site-packages/pip/_vendor/packaging/tags.py +656 -0
  1824. package/lib/python3.14/site-packages/pip/_vendor/packaging/utils.py +163 -0
  1825. package/lib/python3.14/site-packages/pip/_vendor/packaging/version.py +582 -0
  1826. package/lib/python3.14/site-packages/pip/_vendor/pkg_resources/LICENSE +17 -0
  1827. package/lib/python3.14/site-packages/pip/_vendor/pkg_resources/__init__.py +3676 -0
  1828. package/lib/python3.14/site-packages/pip/_vendor/pkg_resources/__pycache__/__init__.cpython-314.pyc +0 -0
  1829. package/lib/python3.14/site-packages/pip/_vendor/platformdirs/LICENSE +21 -0
  1830. package/lib/python3.14/site-packages/pip/_vendor/platformdirs/__init__.py +631 -0
  1831. package/lib/python3.14/site-packages/pip/_vendor/platformdirs/__main__.py +55 -0
  1832. package/lib/python3.14/site-packages/pip/_vendor/platformdirs/__pycache__/__init__.cpython-314.pyc +0 -0
  1833. package/lib/python3.14/site-packages/pip/_vendor/platformdirs/__pycache__/__main__.cpython-314.pyc +0 -0
  1834. package/lib/python3.14/site-packages/pip/_vendor/platformdirs/__pycache__/android.cpython-314.pyc +0 -0
  1835. package/lib/python3.14/site-packages/pip/_vendor/platformdirs/__pycache__/api.cpython-314.pyc +0 -0
  1836. package/lib/python3.14/site-packages/pip/_vendor/platformdirs/__pycache__/macos.cpython-314.pyc +0 -0
  1837. package/lib/python3.14/site-packages/pip/_vendor/platformdirs/__pycache__/unix.cpython-314.pyc +0 -0
  1838. package/lib/python3.14/site-packages/pip/_vendor/platformdirs/__pycache__/version.cpython-314.pyc +0 -0
  1839. package/lib/python3.14/site-packages/pip/_vendor/platformdirs/__pycache__/windows.cpython-314.pyc +0 -0
  1840. package/lib/python3.14/site-packages/pip/_vendor/platformdirs/android.py +249 -0
  1841. package/lib/python3.14/site-packages/pip/_vendor/platformdirs/api.py +299 -0
  1842. package/lib/python3.14/site-packages/pip/_vendor/platformdirs/macos.py +146 -0
  1843. package/lib/python3.14/site-packages/pip/_vendor/platformdirs/py.typed +0 -0
  1844. package/lib/python3.14/site-packages/pip/_vendor/platformdirs/unix.py +272 -0
  1845. package/lib/python3.14/site-packages/pip/_vendor/platformdirs/version.py +34 -0
  1846. package/lib/python3.14/site-packages/pip/_vendor/platformdirs/windows.py +272 -0
  1847. package/lib/python3.14/site-packages/pip/_vendor/pygments/LICENSE +25 -0
  1848. package/lib/python3.14/site-packages/pip/_vendor/pygments/__init__.py +82 -0
  1849. package/lib/python3.14/site-packages/pip/_vendor/pygments/__main__.py +17 -0
  1850. package/lib/python3.14/site-packages/pip/_vendor/pygments/__pycache__/__init__.cpython-314.pyc +0 -0
  1851. package/lib/python3.14/site-packages/pip/_vendor/pygments/__pycache__/__main__.cpython-314.pyc +0 -0
  1852. package/lib/python3.14/site-packages/pip/_vendor/pygments/__pycache__/console.cpython-314.pyc +0 -0
  1853. package/lib/python3.14/site-packages/pip/_vendor/pygments/__pycache__/filter.cpython-314.pyc +0 -0
  1854. package/lib/python3.14/site-packages/pip/_vendor/pygments/__pycache__/formatter.cpython-314.pyc +0 -0
  1855. package/lib/python3.14/site-packages/pip/_vendor/pygments/__pycache__/lexer.cpython-314.pyc +0 -0
  1856. package/lib/python3.14/site-packages/pip/_vendor/pygments/__pycache__/modeline.cpython-314.pyc +0 -0
  1857. package/lib/python3.14/site-packages/pip/_vendor/pygments/__pycache__/plugin.cpython-314.pyc +0 -0
  1858. package/lib/python3.14/site-packages/pip/_vendor/pygments/__pycache__/regexopt.cpython-314.pyc +0 -0
  1859. package/lib/python3.14/site-packages/pip/_vendor/pygments/__pycache__/scanner.cpython-314.pyc +0 -0
  1860. package/lib/python3.14/site-packages/pip/_vendor/pygments/__pycache__/sphinxext.cpython-314.pyc +0 -0
  1861. package/lib/python3.14/site-packages/pip/_vendor/pygments/__pycache__/style.cpython-314.pyc +0 -0
  1862. package/lib/python3.14/site-packages/pip/_vendor/pygments/__pycache__/token.cpython-314.pyc +0 -0
  1863. package/lib/python3.14/site-packages/pip/_vendor/pygments/__pycache__/unistring.cpython-314.pyc +0 -0
  1864. package/lib/python3.14/site-packages/pip/_vendor/pygments/__pycache__/util.cpython-314.pyc +0 -0
  1865. package/lib/python3.14/site-packages/pip/_vendor/pygments/console.py +70 -0
  1866. package/lib/python3.14/site-packages/pip/_vendor/pygments/filter.py +70 -0
  1867. package/lib/python3.14/site-packages/pip/_vendor/pygments/filters/__init__.py +940 -0
  1868. package/lib/python3.14/site-packages/pip/_vendor/pygments/filters/__pycache__/__init__.cpython-314.pyc +0 -0
  1869. package/lib/python3.14/site-packages/pip/_vendor/pygments/formatter.py +129 -0
  1870. package/lib/python3.14/site-packages/pip/_vendor/pygments/formatters/__init__.py +157 -0
  1871. package/lib/python3.14/site-packages/pip/_vendor/pygments/formatters/__pycache__/__init__.cpython-314.pyc +0 -0
  1872. package/lib/python3.14/site-packages/pip/_vendor/pygments/formatters/__pycache__/_mapping.cpython-314.pyc +0 -0
  1873. package/lib/python3.14/site-packages/pip/_vendor/pygments/formatters/_mapping.py +23 -0
  1874. package/lib/python3.14/site-packages/pip/_vendor/pygments/lexer.py +963 -0
  1875. package/lib/python3.14/site-packages/pip/_vendor/pygments/lexers/__init__.py +362 -0
  1876. package/lib/python3.14/site-packages/pip/_vendor/pygments/lexers/__pycache__/__init__.cpython-314.pyc +0 -0
  1877. package/lib/python3.14/site-packages/pip/_vendor/pygments/lexers/__pycache__/_mapping.cpython-314.pyc +0 -0
  1878. package/lib/python3.14/site-packages/pip/_vendor/pygments/lexers/__pycache__/python.cpython-314.pyc +0 -0
  1879. package/lib/python3.14/site-packages/pip/_vendor/pygments/lexers/_mapping.py +602 -0
  1880. package/lib/python3.14/site-packages/pip/_vendor/pygments/lexers/python.py +1201 -0
  1881. package/lib/python3.14/site-packages/pip/_vendor/pygments/modeline.py +43 -0
  1882. package/lib/python3.14/site-packages/pip/_vendor/pygments/plugin.py +72 -0
  1883. package/lib/python3.14/site-packages/pip/_vendor/pygments/regexopt.py +91 -0
  1884. package/lib/python3.14/site-packages/pip/_vendor/pygments/scanner.py +104 -0
  1885. package/lib/python3.14/site-packages/pip/_vendor/pygments/sphinxext.py +247 -0
  1886. package/lib/python3.14/site-packages/pip/_vendor/pygments/style.py +203 -0
  1887. package/lib/python3.14/site-packages/pip/_vendor/pygments/styles/__init__.py +61 -0
  1888. package/lib/python3.14/site-packages/pip/_vendor/pygments/styles/__pycache__/__init__.cpython-314.pyc +0 -0
  1889. package/lib/python3.14/site-packages/pip/_vendor/pygments/styles/__pycache__/_mapping.cpython-314.pyc +0 -0
  1890. package/lib/python3.14/site-packages/pip/_vendor/pygments/styles/_mapping.py +54 -0
  1891. package/lib/python3.14/site-packages/pip/_vendor/pygments/token.py +214 -0
  1892. package/lib/python3.14/site-packages/pip/_vendor/pygments/unistring.py +153 -0
  1893. package/lib/python3.14/site-packages/pip/_vendor/pygments/util.py +324 -0
  1894. package/lib/python3.14/site-packages/pip/_vendor/pyproject_hooks/LICENSE +21 -0
  1895. package/lib/python3.14/site-packages/pip/_vendor/pyproject_hooks/__init__.py +31 -0
  1896. package/lib/python3.14/site-packages/pip/_vendor/pyproject_hooks/__pycache__/__init__.cpython-314.pyc +0 -0
  1897. package/lib/python3.14/site-packages/pip/_vendor/pyproject_hooks/__pycache__/_impl.cpython-314.pyc +0 -0
  1898. package/lib/python3.14/site-packages/pip/_vendor/pyproject_hooks/_impl.py +410 -0
  1899. package/lib/python3.14/site-packages/pip/_vendor/pyproject_hooks/_in_process/__init__.py +21 -0
  1900. package/lib/python3.14/site-packages/pip/_vendor/pyproject_hooks/_in_process/__pycache__/__init__.cpython-314.pyc +0 -0
  1901. package/lib/python3.14/site-packages/pip/_vendor/pyproject_hooks/_in_process/__pycache__/_in_process.cpython-314.pyc +0 -0
  1902. package/lib/python3.14/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py +389 -0
  1903. package/lib/python3.14/site-packages/pip/_vendor/pyproject_hooks/py.typed +0 -0
  1904. package/lib/python3.14/site-packages/pip/_vendor/requests/LICENSE +175 -0
  1905. package/lib/python3.14/site-packages/pip/_vendor/requests/__init__.py +179 -0
  1906. package/lib/python3.14/site-packages/pip/_vendor/requests/__pycache__/__init__.cpython-314.pyc +0 -0
  1907. package/lib/python3.14/site-packages/pip/_vendor/requests/__pycache__/__version__.cpython-314.pyc +0 -0
  1908. package/lib/python3.14/site-packages/pip/_vendor/requests/__pycache__/_internal_utils.cpython-314.pyc +0 -0
  1909. package/lib/python3.14/site-packages/pip/_vendor/requests/__pycache__/adapters.cpython-314.pyc +0 -0
  1910. package/lib/python3.14/site-packages/pip/_vendor/requests/__pycache__/api.cpython-314.pyc +0 -0
  1911. package/lib/python3.14/site-packages/pip/_vendor/requests/__pycache__/auth.cpython-314.pyc +0 -0
  1912. package/lib/python3.14/site-packages/pip/_vendor/requests/__pycache__/certs.cpython-314.pyc +0 -0
  1913. package/lib/python3.14/site-packages/pip/_vendor/requests/__pycache__/compat.cpython-314.pyc +0 -0
  1914. package/lib/python3.14/site-packages/pip/_vendor/requests/__pycache__/cookies.cpython-314.pyc +0 -0
  1915. package/lib/python3.14/site-packages/pip/_vendor/requests/__pycache__/exceptions.cpython-314.pyc +0 -0
  1916. package/lib/python3.14/site-packages/pip/_vendor/requests/__pycache__/help.cpython-314.pyc +0 -0
  1917. package/lib/python3.14/site-packages/pip/_vendor/requests/__pycache__/hooks.cpython-314.pyc +0 -0
  1918. package/lib/python3.14/site-packages/pip/_vendor/requests/__pycache__/models.cpython-314.pyc +0 -0
  1919. package/lib/python3.14/site-packages/pip/_vendor/requests/__pycache__/packages.cpython-314.pyc +0 -0
  1920. package/lib/python3.14/site-packages/pip/_vendor/requests/__pycache__/sessions.cpython-314.pyc +0 -0
  1921. package/lib/python3.14/site-packages/pip/_vendor/requests/__pycache__/status_codes.cpython-314.pyc +0 -0
  1922. package/lib/python3.14/site-packages/pip/_vendor/requests/__pycache__/structures.cpython-314.pyc +0 -0
  1923. package/lib/python3.14/site-packages/pip/_vendor/requests/__pycache__/utils.cpython-314.pyc +0 -0
  1924. package/lib/python3.14/site-packages/pip/_vendor/requests/__version__.py +14 -0
  1925. package/lib/python3.14/site-packages/pip/_vendor/requests/_internal_utils.py +50 -0
  1926. package/lib/python3.14/site-packages/pip/_vendor/requests/adapters.py +696 -0
  1927. package/lib/python3.14/site-packages/pip/_vendor/requests/api.py +157 -0
  1928. package/lib/python3.14/site-packages/pip/_vendor/requests/auth.py +314 -0
  1929. package/lib/python3.14/site-packages/pip/_vendor/requests/certs.py +17 -0
  1930. package/lib/python3.14/site-packages/pip/_vendor/requests/compat.py +90 -0
  1931. package/lib/python3.14/site-packages/pip/_vendor/requests/cookies.py +561 -0
  1932. package/lib/python3.14/site-packages/pip/_vendor/requests/exceptions.py +151 -0
  1933. package/lib/python3.14/site-packages/pip/_vendor/requests/help.py +127 -0
  1934. package/lib/python3.14/site-packages/pip/_vendor/requests/hooks.py +33 -0
  1935. package/lib/python3.14/site-packages/pip/_vendor/requests/models.py +1039 -0
  1936. package/lib/python3.14/site-packages/pip/_vendor/requests/packages.py +25 -0
  1937. package/lib/python3.14/site-packages/pip/_vendor/requests/sessions.py +831 -0
  1938. package/lib/python3.14/site-packages/pip/_vendor/requests/status_codes.py +128 -0
  1939. package/lib/python3.14/site-packages/pip/_vendor/requests/structures.py +99 -0
  1940. package/lib/python3.14/site-packages/pip/_vendor/requests/utils.py +1086 -0
  1941. package/lib/python3.14/site-packages/pip/_vendor/resolvelib/LICENSE +13 -0
  1942. package/lib/python3.14/site-packages/pip/_vendor/resolvelib/__init__.py +27 -0
  1943. package/lib/python3.14/site-packages/pip/_vendor/resolvelib/__pycache__/__init__.cpython-314.pyc +0 -0
  1944. package/lib/python3.14/site-packages/pip/_vendor/resolvelib/__pycache__/providers.cpython-314.pyc +0 -0
  1945. package/lib/python3.14/site-packages/pip/_vendor/resolvelib/__pycache__/reporters.cpython-314.pyc +0 -0
  1946. package/lib/python3.14/site-packages/pip/_vendor/resolvelib/__pycache__/structs.cpython-314.pyc +0 -0
  1947. package/lib/python3.14/site-packages/pip/_vendor/resolvelib/providers.py +196 -0
  1948. package/lib/python3.14/site-packages/pip/_vendor/resolvelib/py.typed +0 -0
  1949. package/lib/python3.14/site-packages/pip/_vendor/resolvelib/reporters.py +55 -0
  1950. package/lib/python3.14/site-packages/pip/_vendor/resolvelib/resolvers/__init__.py +27 -0
  1951. package/lib/python3.14/site-packages/pip/_vendor/resolvelib/resolvers/__pycache__/__init__.cpython-314.pyc +0 -0
  1952. package/lib/python3.14/site-packages/pip/_vendor/resolvelib/resolvers/__pycache__/abstract.cpython-314.pyc +0 -0
  1953. package/lib/python3.14/site-packages/pip/_vendor/resolvelib/resolvers/__pycache__/criterion.cpython-314.pyc +0 -0
  1954. package/lib/python3.14/site-packages/pip/_vendor/resolvelib/resolvers/__pycache__/exceptions.cpython-314.pyc +0 -0
  1955. package/lib/python3.14/site-packages/pip/_vendor/resolvelib/resolvers/__pycache__/resolution.cpython-314.pyc +0 -0
  1956. package/lib/python3.14/site-packages/pip/_vendor/resolvelib/resolvers/abstract.py +47 -0
  1957. package/lib/python3.14/site-packages/pip/_vendor/resolvelib/resolvers/criterion.py +48 -0
  1958. package/lib/python3.14/site-packages/pip/_vendor/resolvelib/resolvers/exceptions.py +57 -0
  1959. package/lib/python3.14/site-packages/pip/_vendor/resolvelib/resolvers/resolution.py +627 -0
  1960. package/lib/python3.14/site-packages/pip/_vendor/resolvelib/structs.py +209 -0
  1961. package/lib/python3.14/site-packages/pip/_vendor/rich/LICENSE +19 -0
  1962. package/lib/python3.14/site-packages/pip/_vendor/rich/__init__.py +177 -0
  1963. package/lib/python3.14/site-packages/pip/_vendor/rich/__main__.py +245 -0
  1964. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/__init__.cpython-314.pyc +0 -0
  1965. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/__main__.cpython-314.pyc +0 -0
  1966. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/_cell_widths.cpython-314.pyc +0 -0
  1967. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/_emoji_codes.cpython-314.pyc +0 -0
  1968. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/_emoji_replace.cpython-314.pyc +0 -0
  1969. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/_export_format.cpython-314.pyc +0 -0
  1970. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/_extension.cpython-314.pyc +0 -0
  1971. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/_fileno.cpython-314.pyc +0 -0
  1972. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/_inspect.cpython-314.pyc +0 -0
  1973. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/_log_render.cpython-314.pyc +0 -0
  1974. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/_loop.cpython-314.pyc +0 -0
  1975. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/_null_file.cpython-314.pyc +0 -0
  1976. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/_palettes.cpython-314.pyc +0 -0
  1977. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/_pick.cpython-314.pyc +0 -0
  1978. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/_ratio.cpython-314.pyc +0 -0
  1979. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/_spinners.cpython-314.pyc +0 -0
  1980. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/_stack.cpython-314.pyc +0 -0
  1981. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/_timer.cpython-314.pyc +0 -0
  1982. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/_win32_console.cpython-314.pyc +0 -0
  1983. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/_windows.cpython-314.pyc +0 -0
  1984. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/_windows_renderer.cpython-314.pyc +0 -0
  1985. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/_wrap.cpython-314.pyc +0 -0
  1986. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/abc.cpython-314.pyc +0 -0
  1987. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/align.cpython-314.pyc +0 -0
  1988. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/ansi.cpython-314.pyc +0 -0
  1989. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/bar.cpython-314.pyc +0 -0
  1990. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/box.cpython-314.pyc +0 -0
  1991. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/cells.cpython-314.pyc +0 -0
  1992. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/color.cpython-314.pyc +0 -0
  1993. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/color_triplet.cpython-314.pyc +0 -0
  1994. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/columns.cpython-314.pyc +0 -0
  1995. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/console.cpython-314.pyc +0 -0
  1996. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/constrain.cpython-314.pyc +0 -0
  1997. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/containers.cpython-314.pyc +0 -0
  1998. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/control.cpython-314.pyc +0 -0
  1999. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/default_styles.cpython-314.pyc +0 -0
  2000. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/diagnose.cpython-314.pyc +0 -0
  2001. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/emoji.cpython-314.pyc +0 -0
  2002. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/errors.cpython-314.pyc +0 -0
  2003. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/file_proxy.cpython-314.pyc +0 -0
  2004. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/filesize.cpython-314.pyc +0 -0
  2005. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/highlighter.cpython-314.pyc +0 -0
  2006. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/json.cpython-314.pyc +0 -0
  2007. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/jupyter.cpython-314.pyc +0 -0
  2008. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/layout.cpython-314.pyc +0 -0
  2009. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/live.cpython-314.pyc +0 -0
  2010. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/live_render.cpython-314.pyc +0 -0
  2011. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/logging.cpython-314.pyc +0 -0
  2012. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/markup.cpython-314.pyc +0 -0
  2013. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/measure.cpython-314.pyc +0 -0
  2014. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/padding.cpython-314.pyc +0 -0
  2015. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/pager.cpython-314.pyc +0 -0
  2016. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/palette.cpython-314.pyc +0 -0
  2017. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/panel.cpython-314.pyc +0 -0
  2018. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/pretty.cpython-314.pyc +0 -0
  2019. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/progress.cpython-314.pyc +0 -0
  2020. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/progress_bar.cpython-314.pyc +0 -0
  2021. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/prompt.cpython-314.pyc +0 -0
  2022. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/protocol.cpython-314.pyc +0 -0
  2023. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/region.cpython-314.pyc +0 -0
  2024. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/repr.cpython-314.pyc +0 -0
  2025. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/rule.cpython-314.pyc +0 -0
  2026. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/scope.cpython-314.pyc +0 -0
  2027. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/screen.cpython-314.pyc +0 -0
  2028. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/segment.cpython-314.pyc +0 -0
  2029. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/spinner.cpython-314.pyc +0 -0
  2030. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/status.cpython-314.pyc +0 -0
  2031. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/style.cpython-314.pyc +0 -0
  2032. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/styled.cpython-314.pyc +0 -0
  2033. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/syntax.cpython-314.pyc +0 -0
  2034. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/table.cpython-314.pyc +0 -0
  2035. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/terminal_theme.cpython-314.pyc +0 -0
  2036. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/text.cpython-314.pyc +0 -0
  2037. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/theme.cpython-314.pyc +0 -0
  2038. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/themes.cpython-314.pyc +0 -0
  2039. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/traceback.cpython-314.pyc +0 -0
  2040. package/lib/python3.14/site-packages/pip/_vendor/rich/__pycache__/tree.cpython-314.pyc +0 -0
  2041. package/lib/python3.14/site-packages/pip/_vendor/rich/_cell_widths.py +454 -0
  2042. package/lib/python3.14/site-packages/pip/_vendor/rich/_emoji_codes.py +3610 -0
  2043. package/lib/python3.14/site-packages/pip/_vendor/rich/_emoji_replace.py +32 -0
  2044. package/lib/python3.14/site-packages/pip/_vendor/rich/_export_format.py +76 -0
  2045. package/lib/python3.14/site-packages/pip/_vendor/rich/_extension.py +10 -0
  2046. package/lib/python3.14/site-packages/pip/_vendor/rich/_fileno.py +24 -0
  2047. package/lib/python3.14/site-packages/pip/_vendor/rich/_inspect.py +268 -0
  2048. package/lib/python3.14/site-packages/pip/_vendor/rich/_log_render.py +94 -0
  2049. package/lib/python3.14/site-packages/pip/_vendor/rich/_loop.py +43 -0
  2050. package/lib/python3.14/site-packages/pip/_vendor/rich/_null_file.py +69 -0
  2051. package/lib/python3.14/site-packages/pip/_vendor/rich/_palettes.py +309 -0
  2052. package/lib/python3.14/site-packages/pip/_vendor/rich/_pick.py +17 -0
  2053. package/lib/python3.14/site-packages/pip/_vendor/rich/_ratio.py +153 -0
  2054. package/lib/python3.14/site-packages/pip/_vendor/rich/_spinners.py +482 -0
  2055. package/lib/python3.14/site-packages/pip/_vendor/rich/_stack.py +16 -0
  2056. package/lib/python3.14/site-packages/pip/_vendor/rich/_timer.py +19 -0
  2057. package/lib/python3.14/site-packages/pip/_vendor/rich/_win32_console.py +661 -0
  2058. package/lib/python3.14/site-packages/pip/_vendor/rich/_windows.py +71 -0
  2059. package/lib/python3.14/site-packages/pip/_vendor/rich/_windows_renderer.py +56 -0
  2060. package/lib/python3.14/site-packages/pip/_vendor/rich/_wrap.py +93 -0
  2061. package/lib/python3.14/site-packages/pip/_vendor/rich/abc.py +33 -0
  2062. package/lib/python3.14/site-packages/pip/_vendor/rich/align.py +306 -0
  2063. package/lib/python3.14/site-packages/pip/_vendor/rich/ansi.py +241 -0
  2064. package/lib/python3.14/site-packages/pip/_vendor/rich/bar.py +93 -0
  2065. package/lib/python3.14/site-packages/pip/_vendor/rich/box.py +474 -0
  2066. package/lib/python3.14/site-packages/pip/_vendor/rich/cells.py +174 -0
  2067. package/lib/python3.14/site-packages/pip/_vendor/rich/color.py +621 -0
  2068. package/lib/python3.14/site-packages/pip/_vendor/rich/color_triplet.py +38 -0
  2069. package/lib/python3.14/site-packages/pip/_vendor/rich/columns.py +187 -0
  2070. package/lib/python3.14/site-packages/pip/_vendor/rich/console.py +2680 -0
  2071. package/lib/python3.14/site-packages/pip/_vendor/rich/constrain.py +37 -0
  2072. package/lib/python3.14/site-packages/pip/_vendor/rich/containers.py +167 -0
  2073. package/lib/python3.14/site-packages/pip/_vendor/rich/control.py +219 -0
  2074. package/lib/python3.14/site-packages/pip/_vendor/rich/default_styles.py +193 -0
  2075. package/lib/python3.14/site-packages/pip/_vendor/rich/diagnose.py +39 -0
  2076. package/lib/python3.14/site-packages/pip/_vendor/rich/emoji.py +91 -0
  2077. package/lib/python3.14/site-packages/pip/_vendor/rich/errors.py +34 -0
  2078. package/lib/python3.14/site-packages/pip/_vendor/rich/file_proxy.py +57 -0
  2079. package/lib/python3.14/site-packages/pip/_vendor/rich/filesize.py +88 -0
  2080. package/lib/python3.14/site-packages/pip/_vendor/rich/highlighter.py +232 -0
  2081. package/lib/python3.14/site-packages/pip/_vendor/rich/json.py +139 -0
  2082. package/lib/python3.14/site-packages/pip/_vendor/rich/jupyter.py +101 -0
  2083. package/lib/python3.14/site-packages/pip/_vendor/rich/layout.py +442 -0
  2084. package/lib/python3.14/site-packages/pip/_vendor/rich/live.py +400 -0
  2085. package/lib/python3.14/site-packages/pip/_vendor/rich/live_render.py +106 -0
  2086. package/lib/python3.14/site-packages/pip/_vendor/rich/logging.py +297 -0
  2087. package/lib/python3.14/site-packages/pip/_vendor/rich/markup.py +251 -0
  2088. package/lib/python3.14/site-packages/pip/_vendor/rich/measure.py +151 -0
  2089. package/lib/python3.14/site-packages/pip/_vendor/rich/padding.py +141 -0
  2090. package/lib/python3.14/site-packages/pip/_vendor/rich/pager.py +34 -0
  2091. package/lib/python3.14/site-packages/pip/_vendor/rich/palette.py +100 -0
  2092. package/lib/python3.14/site-packages/pip/_vendor/rich/panel.py +317 -0
  2093. package/lib/python3.14/site-packages/pip/_vendor/rich/pretty.py +1016 -0
  2094. package/lib/python3.14/site-packages/pip/_vendor/rich/progress.py +1715 -0
  2095. package/lib/python3.14/site-packages/pip/_vendor/rich/progress_bar.py +223 -0
  2096. package/lib/python3.14/site-packages/pip/_vendor/rich/prompt.py +400 -0
  2097. package/lib/python3.14/site-packages/pip/_vendor/rich/protocol.py +42 -0
  2098. package/lib/python3.14/site-packages/pip/_vendor/rich/py.typed +0 -0
  2099. package/lib/python3.14/site-packages/pip/_vendor/rich/region.py +10 -0
  2100. package/lib/python3.14/site-packages/pip/_vendor/rich/repr.py +149 -0
  2101. package/lib/python3.14/site-packages/pip/_vendor/rich/rule.py +130 -0
  2102. package/lib/python3.14/site-packages/pip/_vendor/rich/scope.py +86 -0
  2103. package/lib/python3.14/site-packages/pip/_vendor/rich/screen.py +54 -0
  2104. package/lib/python3.14/site-packages/pip/_vendor/rich/segment.py +752 -0
  2105. package/lib/python3.14/site-packages/pip/_vendor/rich/spinner.py +132 -0
  2106. package/lib/python3.14/site-packages/pip/_vendor/rich/status.py +131 -0
  2107. package/lib/python3.14/site-packages/pip/_vendor/rich/style.py +792 -0
  2108. package/lib/python3.14/site-packages/pip/_vendor/rich/styled.py +42 -0
  2109. package/lib/python3.14/site-packages/pip/_vendor/rich/syntax.py +985 -0
  2110. package/lib/python3.14/site-packages/pip/_vendor/rich/table.py +1006 -0
  2111. package/lib/python3.14/site-packages/pip/_vendor/rich/terminal_theme.py +153 -0
  2112. package/lib/python3.14/site-packages/pip/_vendor/rich/text.py +1361 -0
  2113. package/lib/python3.14/site-packages/pip/_vendor/rich/theme.py +115 -0
  2114. package/lib/python3.14/site-packages/pip/_vendor/rich/themes.py +5 -0
  2115. package/lib/python3.14/site-packages/pip/_vendor/rich/traceback.py +899 -0
  2116. package/lib/python3.14/site-packages/pip/_vendor/rich/tree.py +257 -0
  2117. package/lib/python3.14/site-packages/pip/_vendor/tomli/LICENSE +21 -0
  2118. package/lib/python3.14/site-packages/pip/_vendor/tomli/__init__.py +8 -0
  2119. package/lib/python3.14/site-packages/pip/_vendor/tomli/__pycache__/__init__.cpython-314.pyc +0 -0
  2120. package/lib/python3.14/site-packages/pip/_vendor/tomli/__pycache__/_parser.cpython-314.pyc +0 -0
  2121. package/lib/python3.14/site-packages/pip/_vendor/tomli/__pycache__/_re.cpython-314.pyc +0 -0
  2122. package/lib/python3.14/site-packages/pip/_vendor/tomli/__pycache__/_types.cpython-314.pyc +0 -0
  2123. package/lib/python3.14/site-packages/pip/_vendor/tomli/_parser.py +777 -0
  2124. package/lib/python3.14/site-packages/pip/_vendor/tomli/_re.py +115 -0
  2125. package/lib/python3.14/site-packages/pip/_vendor/tomli/_types.py +10 -0
  2126. package/lib/python3.14/site-packages/pip/_vendor/tomli/py.typed +1 -0
  2127. package/lib/python3.14/site-packages/pip/_vendor/tomli_w/LICENSE +21 -0
  2128. package/lib/python3.14/site-packages/pip/_vendor/tomli_w/__init__.py +4 -0
  2129. package/lib/python3.14/site-packages/pip/_vendor/tomli_w/__pycache__/__init__.cpython-314.pyc +0 -0
  2130. package/lib/python3.14/site-packages/pip/_vendor/tomli_w/__pycache__/_writer.cpython-314.pyc +0 -0
  2131. package/lib/python3.14/site-packages/pip/_vendor/tomli_w/_writer.py +229 -0
  2132. package/lib/python3.14/site-packages/pip/_vendor/tomli_w/py.typed +1 -0
  2133. package/lib/python3.14/site-packages/pip/_vendor/truststore/LICENSE +21 -0
  2134. package/lib/python3.14/site-packages/pip/_vendor/truststore/__init__.py +36 -0
  2135. package/lib/python3.14/site-packages/pip/_vendor/truststore/__pycache__/__init__.cpython-314.pyc +0 -0
  2136. package/lib/python3.14/site-packages/pip/_vendor/truststore/__pycache__/_api.cpython-314.pyc +0 -0
  2137. package/lib/python3.14/site-packages/pip/_vendor/truststore/__pycache__/_macos.cpython-314.pyc +0 -0
  2138. package/lib/python3.14/site-packages/pip/_vendor/truststore/__pycache__/_openssl.cpython-314.pyc +0 -0
  2139. package/lib/python3.14/site-packages/pip/_vendor/truststore/__pycache__/_ssl_constants.cpython-314.pyc +0 -0
  2140. package/lib/python3.14/site-packages/pip/_vendor/truststore/__pycache__/_windows.cpython-314.pyc +0 -0
  2141. package/lib/python3.14/site-packages/pip/_vendor/truststore/_api.py +341 -0
  2142. package/lib/python3.14/site-packages/pip/_vendor/truststore/_macos.py +571 -0
  2143. package/lib/python3.14/site-packages/pip/_vendor/truststore/_openssl.py +68 -0
  2144. package/lib/python3.14/site-packages/pip/_vendor/truststore/_ssl_constants.py +31 -0
  2145. package/lib/python3.14/site-packages/pip/_vendor/truststore/_windows.py +567 -0
  2146. package/lib/python3.14/site-packages/pip/_vendor/truststore/py.typed +0 -0
  2147. package/lib/python3.14/site-packages/pip/_vendor/urllib3/LICENSE.txt +21 -0
  2148. package/lib/python3.14/site-packages/pip/_vendor/urllib3/__init__.py +102 -0
  2149. package/lib/python3.14/site-packages/pip/_vendor/urllib3/__pycache__/__init__.cpython-314.pyc +0 -0
  2150. package/lib/python3.14/site-packages/pip/_vendor/urllib3/__pycache__/_collections.cpython-314.pyc +0 -0
  2151. package/lib/python3.14/site-packages/pip/_vendor/urllib3/__pycache__/_version.cpython-314.pyc +0 -0
  2152. package/lib/python3.14/site-packages/pip/_vendor/urllib3/__pycache__/connection.cpython-314.pyc +0 -0
  2153. package/lib/python3.14/site-packages/pip/_vendor/urllib3/__pycache__/connectionpool.cpython-314.pyc +0 -0
  2154. package/lib/python3.14/site-packages/pip/_vendor/urllib3/__pycache__/exceptions.cpython-314.pyc +0 -0
  2155. package/lib/python3.14/site-packages/pip/_vendor/urllib3/__pycache__/fields.cpython-314.pyc +0 -0
  2156. package/lib/python3.14/site-packages/pip/_vendor/urllib3/__pycache__/filepost.cpython-314.pyc +0 -0
  2157. package/lib/python3.14/site-packages/pip/_vendor/urllib3/__pycache__/poolmanager.cpython-314.pyc +0 -0
  2158. package/lib/python3.14/site-packages/pip/_vendor/urllib3/__pycache__/request.cpython-314.pyc +0 -0
  2159. package/lib/python3.14/site-packages/pip/_vendor/urllib3/__pycache__/response.cpython-314.pyc +0 -0
  2160. package/lib/python3.14/site-packages/pip/_vendor/urllib3/_collections.py +355 -0
  2161. package/lib/python3.14/site-packages/pip/_vendor/urllib3/_version.py +2 -0
  2162. package/lib/python3.14/site-packages/pip/_vendor/urllib3/connection.py +572 -0
  2163. package/lib/python3.14/site-packages/pip/_vendor/urllib3/connectionpool.py +1140 -0
  2164. package/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/__init__.py +0 -0
  2165. package/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/__pycache__/__init__.cpython-314.pyc +0 -0
  2166. package/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/__pycache__/_appengine_environ.cpython-314.pyc +0 -0
  2167. package/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/__pycache__/appengine.cpython-314.pyc +0 -0
  2168. package/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/__pycache__/ntlmpool.cpython-314.pyc +0 -0
  2169. package/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/__pycache__/pyopenssl.cpython-314.pyc +0 -0
  2170. package/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/__pycache__/securetransport.cpython-314.pyc +0 -0
  2171. package/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/__pycache__/socks.cpython-314.pyc +0 -0
  2172. package/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py +36 -0
  2173. package/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py +0 -0
  2174. package/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/__init__.cpython-314.pyc +0 -0
  2175. package/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/bindings.cpython-314.pyc +0 -0
  2176. package/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-314.pyc +0 -0
  2177. package/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py +519 -0
  2178. package/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py +397 -0
  2179. package/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/appengine.py +314 -0
  2180. package/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py +130 -0
  2181. package/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py +518 -0
  2182. package/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/securetransport.py +920 -0
  2183. package/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/socks.py +216 -0
  2184. package/lib/python3.14/site-packages/pip/_vendor/urllib3/exceptions.py +323 -0
  2185. package/lib/python3.14/site-packages/pip/_vendor/urllib3/fields.py +274 -0
  2186. package/lib/python3.14/site-packages/pip/_vendor/urllib3/filepost.py +98 -0
  2187. package/lib/python3.14/site-packages/pip/_vendor/urllib3/packages/__init__.py +0 -0
  2188. package/lib/python3.14/site-packages/pip/_vendor/urllib3/packages/__pycache__/__init__.cpython-314.pyc +0 -0
  2189. package/lib/python3.14/site-packages/pip/_vendor/urllib3/packages/__pycache__/six.cpython-314.pyc +0 -0
  2190. package/lib/python3.14/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py +0 -0
  2191. package/lib/python3.14/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/__init__.cpython-314.pyc +0 -0
  2192. package/lib/python3.14/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/makefile.cpython-314.pyc +0 -0
  2193. package/lib/python3.14/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/weakref_finalize.cpython-314.pyc +0 -0
  2194. package/lib/python3.14/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py +51 -0
  2195. package/lib/python3.14/site-packages/pip/_vendor/urllib3/packages/backports/weakref_finalize.py +155 -0
  2196. package/lib/python3.14/site-packages/pip/_vendor/urllib3/packages/six.py +1076 -0
  2197. package/lib/python3.14/site-packages/pip/_vendor/urllib3/poolmanager.py +540 -0
  2198. package/lib/python3.14/site-packages/pip/_vendor/urllib3/request.py +191 -0
  2199. package/lib/python3.14/site-packages/pip/_vendor/urllib3/response.py +879 -0
  2200. package/lib/python3.14/site-packages/pip/_vendor/urllib3/util/__init__.py +49 -0
  2201. package/lib/python3.14/site-packages/pip/_vendor/urllib3/util/__pycache__/__init__.cpython-314.pyc +0 -0
  2202. package/lib/python3.14/site-packages/pip/_vendor/urllib3/util/__pycache__/connection.cpython-314.pyc +0 -0
  2203. package/lib/python3.14/site-packages/pip/_vendor/urllib3/util/__pycache__/proxy.cpython-314.pyc +0 -0
  2204. package/lib/python3.14/site-packages/pip/_vendor/urllib3/util/__pycache__/queue.cpython-314.pyc +0 -0
  2205. package/lib/python3.14/site-packages/pip/_vendor/urllib3/util/__pycache__/request.cpython-314.pyc +0 -0
  2206. package/lib/python3.14/site-packages/pip/_vendor/urllib3/util/__pycache__/response.cpython-314.pyc +0 -0
  2207. package/lib/python3.14/site-packages/pip/_vendor/urllib3/util/__pycache__/retry.cpython-314.pyc +0 -0
  2208. package/lib/python3.14/site-packages/pip/_vendor/urllib3/util/__pycache__/ssl_.cpython-314.pyc +0 -0
  2209. package/lib/python3.14/site-packages/pip/_vendor/urllib3/util/__pycache__/ssl_match_hostname.cpython-314.pyc +0 -0
  2210. package/lib/python3.14/site-packages/pip/_vendor/urllib3/util/__pycache__/ssltransport.cpython-314.pyc +0 -0
  2211. package/lib/python3.14/site-packages/pip/_vendor/urllib3/util/__pycache__/timeout.cpython-314.pyc +0 -0
  2212. package/lib/python3.14/site-packages/pip/_vendor/urllib3/util/__pycache__/url.cpython-314.pyc +0 -0
  2213. package/lib/python3.14/site-packages/pip/_vendor/urllib3/util/__pycache__/wait.cpython-314.pyc +0 -0
  2214. package/lib/python3.14/site-packages/pip/_vendor/urllib3/util/connection.py +149 -0
  2215. package/lib/python3.14/site-packages/pip/_vendor/urllib3/util/proxy.py +57 -0
  2216. package/lib/python3.14/site-packages/pip/_vendor/urllib3/util/queue.py +22 -0
  2217. package/lib/python3.14/site-packages/pip/_vendor/urllib3/util/request.py +137 -0
  2218. package/lib/python3.14/site-packages/pip/_vendor/urllib3/util/response.py +107 -0
  2219. package/lib/python3.14/site-packages/pip/_vendor/urllib3/util/retry.py +622 -0
  2220. package/lib/python3.14/site-packages/pip/_vendor/urllib3/util/ssl_.py +504 -0
  2221. package/lib/python3.14/site-packages/pip/_vendor/urllib3/util/ssl_match_hostname.py +159 -0
  2222. package/lib/python3.14/site-packages/pip/_vendor/urllib3/util/ssltransport.py +221 -0
  2223. package/lib/python3.14/site-packages/pip/_vendor/urllib3/util/timeout.py +271 -0
  2224. package/lib/python3.14/site-packages/pip/_vendor/urllib3/util/url.py +435 -0
  2225. package/lib/python3.14/site-packages/pip/_vendor/urllib3/util/wait.py +152 -0
  2226. package/lib/python3.14/site-packages/pip/_vendor/vendor.txt +19 -0
  2227. package/lib/python3.14/site-packages/pip/py.typed +4 -0
  2228. package/lib/python3.14/site-packages/pip-25.3.dist-info/METADATA +111 -0
  2229. package/lib/python3.14/site-packages/pip-25.3.dist-info/RECORD +469 -0
  2230. package/lib/python3.14/site-packages/pip-25.3.dist-info/WHEEL +4 -0
  2231. package/lib/python3.14/site-packages/pip-25.3.dist-info/entry_points.txt +4 -0
  2232. package/lib/python3.14/site-packages/pip-25.3.dist-info/licenses/AUTHORS.txt +842 -0
  2233. package/lib/python3.14/site-packages/pip-25.3.dist-info/licenses/LICENSE.txt +20 -0
  2234. package/lib/python3.14/site-packages/pip-25.3.dist-info/licenses/src/pip/_vendor/cachecontrol/LICENSE.txt +13 -0
  2235. package/lib/python3.14/site-packages/pip-25.3.dist-info/licenses/src/pip/_vendor/certifi/LICENSE +20 -0
  2236. package/lib/python3.14/site-packages/pip-25.3.dist-info/licenses/src/pip/_vendor/dependency_groups/LICENSE.txt +9 -0
  2237. package/lib/python3.14/site-packages/pip-25.3.dist-info/licenses/src/pip/_vendor/distlib/LICENSE.txt +284 -0
  2238. package/lib/python3.14/site-packages/pip-25.3.dist-info/licenses/src/pip/_vendor/distro/LICENSE +202 -0
  2239. package/lib/python3.14/site-packages/pip-25.3.dist-info/licenses/src/pip/_vendor/idna/LICENSE.md +31 -0
  2240. package/lib/python3.14/site-packages/pip-25.3.dist-info/licenses/src/pip/_vendor/msgpack/COPYING +14 -0
  2241. package/lib/python3.14/site-packages/pip-25.3.dist-info/licenses/src/pip/_vendor/packaging/LICENSE +3 -0
  2242. package/lib/python3.14/site-packages/pip-25.3.dist-info/licenses/src/pip/_vendor/packaging/LICENSE.APACHE +177 -0
  2243. package/lib/python3.14/site-packages/pip-25.3.dist-info/licenses/src/pip/_vendor/packaging/LICENSE.BSD +23 -0
  2244. package/lib/python3.14/site-packages/pip-25.3.dist-info/licenses/src/pip/_vendor/pkg_resources/LICENSE +17 -0
  2245. package/lib/python3.14/site-packages/pip-25.3.dist-info/licenses/src/pip/_vendor/platformdirs/LICENSE +21 -0
  2246. package/lib/python3.14/site-packages/pip-25.3.dist-info/licenses/src/pip/_vendor/pygments/LICENSE +25 -0
  2247. package/lib/python3.14/site-packages/pip-25.3.dist-info/licenses/src/pip/_vendor/pyproject_hooks/LICENSE +21 -0
  2248. package/lib/python3.14/site-packages/pip-25.3.dist-info/licenses/src/pip/_vendor/requests/LICENSE +175 -0
  2249. package/lib/python3.14/site-packages/pip-25.3.dist-info/licenses/src/pip/_vendor/resolvelib/LICENSE +13 -0
  2250. package/lib/python3.14/site-packages/pip-25.3.dist-info/licenses/src/pip/_vendor/rich/LICENSE +19 -0
  2251. package/lib/python3.14/site-packages/pip-25.3.dist-info/licenses/src/pip/_vendor/tomli/LICENSE +21 -0
  2252. package/lib/python3.14/site-packages/pip-25.3.dist-info/licenses/src/pip/_vendor/tomli_w/LICENSE +21 -0
  2253. package/lib/python3.14/site-packages/pip-25.3.dist-info/licenses/src/pip/_vendor/truststore/LICENSE +21 -0
  2254. package/lib/python3.14/site-packages/pip-25.3.dist-info/licenses/src/pip/_vendor/urllib3/LICENSE.txt +21 -0
  2255. package/lib/python3.14/site.py +787 -0
  2256. package/lib/python3.14/smtplib.py +1121 -0
  2257. package/lib/python3.14/socket.py +988 -0
  2258. package/lib/python3.14/socketserver.py +863 -0
  2259. package/lib/python3.14/sqlite3/__init__.py +57 -0
  2260. package/lib/python3.14/sqlite3/__main__.py +139 -0
  2261. package/lib/python3.14/sqlite3/__pycache__/__init__.cpython-314.pyc +0 -0
  2262. package/lib/python3.14/sqlite3/__pycache__/__main__.cpython-314.pyc +0 -0
  2263. package/lib/python3.14/sqlite3/__pycache__/dbapi2.cpython-314.pyc +0 -0
  2264. package/lib/python3.14/sqlite3/__pycache__/dump.cpython-314.pyc +0 -0
  2265. package/lib/python3.14/sqlite3/dbapi2.py +96 -0
  2266. package/lib/python3.14/sqlite3/dump.py +113 -0
  2267. package/lib/python3.14/sre_compile.py +7 -0
  2268. package/lib/python3.14/sre_constants.py +7 -0
  2269. package/lib/python3.14/sre_parse.py +7 -0
  2270. package/lib/python3.14/ssl.py +1529 -0
  2271. package/lib/python3.14/stat.py +207 -0
  2272. package/lib/python3.14/statistics.py +1879 -0
  2273. package/lib/python3.14/string/__init__.py +325 -0
  2274. package/lib/python3.14/string/__pycache__/__init__.cpython-314.pyc +0 -0
  2275. package/lib/python3.14/string/__pycache__/templatelib.cpython-314.pyc +0 -0
  2276. package/lib/python3.14/string/templatelib.py +33 -0
  2277. package/lib/python3.14/stringprep.py +272 -0
  2278. package/lib/python3.14/struct.py +15 -0
  2279. package/lib/python3.14/subprocess.py +2198 -0
  2280. package/lib/python3.14/symtable.py +451 -0
  2281. package/lib/python3.14/sysconfig/__init__.py +790 -0
  2282. package/lib/python3.14/sysconfig/__main__.py +276 -0
  2283. package/lib/python3.14/sysconfig/__pycache__/__init__.cpython-314.pyc +0 -0
  2284. package/lib/python3.14/sysconfig/__pycache__/__main__.cpython-314.pyc +0 -0
  2285. package/lib/python3.14/tabnanny.py +338 -0
  2286. package/lib/python3.14/tarfile.py +3136 -0
  2287. package/lib/python3.14/tempfile.py +977 -0
  2288. package/lib/python3.14/textwrap.py +475 -0
  2289. package/lib/python3.14/this.py +28 -0
  2290. package/lib/python3.14/threading.py +1642 -0
  2291. package/lib/python3.14/timeit.py +378 -0
  2292. package/lib/python3.14/tkinter/__init__.py +5005 -0
  2293. package/lib/python3.14/tkinter/__main__.py +7 -0
  2294. package/lib/python3.14/tkinter/__pycache__/__init__.cpython-314.pyc +0 -0
  2295. package/lib/python3.14/tkinter/__pycache__/__main__.cpython-314.pyc +0 -0
  2296. package/lib/python3.14/tkinter/__pycache__/colorchooser.cpython-314.pyc +0 -0
  2297. package/lib/python3.14/tkinter/__pycache__/commondialog.cpython-314.pyc +0 -0
  2298. package/lib/python3.14/tkinter/__pycache__/constants.cpython-314.pyc +0 -0
  2299. package/lib/python3.14/tkinter/__pycache__/dialog.cpython-314.pyc +0 -0
  2300. package/lib/python3.14/tkinter/__pycache__/dnd.cpython-314.pyc +0 -0
  2301. package/lib/python3.14/tkinter/__pycache__/filedialog.cpython-314.pyc +0 -0
  2302. package/lib/python3.14/tkinter/__pycache__/font.cpython-314.pyc +0 -0
  2303. package/lib/python3.14/tkinter/__pycache__/messagebox.cpython-314.pyc +0 -0
  2304. package/lib/python3.14/tkinter/__pycache__/scrolledtext.cpython-314.pyc +0 -0
  2305. package/lib/python3.14/tkinter/__pycache__/simpledialog.cpython-314.pyc +0 -0
  2306. package/lib/python3.14/tkinter/__pycache__/ttk.cpython-314.pyc +0 -0
  2307. package/lib/python3.14/tkinter/colorchooser.py +86 -0
  2308. package/lib/python3.14/tkinter/commondialog.py +53 -0
  2309. package/lib/python3.14/tkinter/constants.py +110 -0
  2310. package/lib/python3.14/tkinter/dialog.py +49 -0
  2311. package/lib/python3.14/tkinter/dnd.py +324 -0
  2312. package/lib/python3.14/tkinter/filedialog.py +492 -0
  2313. package/lib/python3.14/tkinter/font.py +239 -0
  2314. package/lib/python3.14/tkinter/messagebox.py +146 -0
  2315. package/lib/python3.14/tkinter/scrolledtext.py +56 -0
  2316. package/lib/python3.14/tkinter/simpledialog.py +441 -0
  2317. package/lib/python3.14/tkinter/ttk.py +1650 -0
  2318. package/lib/python3.14/token.py +144 -0
  2319. package/lib/python3.14/tokenize.py +598 -0
  2320. package/lib/python3.14/tomllib/__init__.py +10 -0
  2321. package/lib/python3.14/tomllib/__pycache__/__init__.cpython-314.pyc +0 -0
  2322. package/lib/python3.14/tomllib/__pycache__/_parser.cpython-314.pyc +0 -0
  2323. package/lib/python3.14/tomllib/__pycache__/_re.cpython-314.pyc +0 -0
  2324. package/lib/python3.14/tomllib/__pycache__/_types.cpython-314.pyc +0 -0
  2325. package/lib/python3.14/tomllib/_parser.py +753 -0
  2326. package/lib/python3.14/tomllib/_re.py +113 -0
  2327. package/lib/python3.14/tomllib/_types.py +10 -0
  2328. package/lib/python3.14/tomllib/mypy.ini +17 -0
  2329. package/lib/python3.14/trace.py +751 -0
  2330. package/lib/python3.14/traceback.py +1743 -0
  2331. package/lib/python3.14/tracemalloc.py +560 -0
  2332. package/lib/python3.14/tty.py +73 -0
  2333. package/lib/python3.14/turtle.py +4291 -0
  2334. package/lib/python3.14/turtledemo/__init__.py +14 -0
  2335. package/lib/python3.14/turtledemo/__main__.py +399 -0
  2336. package/lib/python3.14/turtledemo/__pycache__/__init__.cpython-314.pyc +0 -0
  2337. package/lib/python3.14/turtledemo/__pycache__/__main__.cpython-314.pyc +0 -0
  2338. package/lib/python3.14/turtledemo/__pycache__/bytedesign.cpython-314.pyc +0 -0
  2339. package/lib/python3.14/turtledemo/__pycache__/chaos.cpython-314.pyc +0 -0
  2340. package/lib/python3.14/turtledemo/__pycache__/clock.cpython-314.pyc +0 -0
  2341. package/lib/python3.14/turtledemo/__pycache__/colormixer.cpython-314.pyc +0 -0
  2342. package/lib/python3.14/turtledemo/__pycache__/forest.cpython-314.pyc +0 -0
  2343. package/lib/python3.14/turtledemo/__pycache__/fractalcurves.cpython-314.pyc +0 -0
  2344. package/lib/python3.14/turtledemo/__pycache__/lindenmayer.cpython-314.pyc +0 -0
  2345. package/lib/python3.14/turtledemo/__pycache__/minimal_hanoi.cpython-314.pyc +0 -0
  2346. package/lib/python3.14/turtledemo/__pycache__/nim.cpython-314.pyc +0 -0
  2347. package/lib/python3.14/turtledemo/__pycache__/paint.cpython-314.pyc +0 -0
  2348. package/lib/python3.14/turtledemo/__pycache__/peace.cpython-314.pyc +0 -0
  2349. package/lib/python3.14/turtledemo/__pycache__/penrose.cpython-314.pyc +0 -0
  2350. package/lib/python3.14/turtledemo/__pycache__/planet_and_moon.cpython-314.pyc +0 -0
  2351. package/lib/python3.14/turtledemo/__pycache__/rosette.cpython-314.pyc +0 -0
  2352. package/lib/python3.14/turtledemo/__pycache__/round_dance.cpython-314.pyc +0 -0
  2353. package/lib/python3.14/turtledemo/__pycache__/sorting_animate.cpython-314.pyc +0 -0
  2354. package/lib/python3.14/turtledemo/__pycache__/tree.cpython-314.pyc +0 -0
  2355. package/lib/python3.14/turtledemo/__pycache__/two_canvases.cpython-314.pyc +0 -0
  2356. package/lib/python3.14/turtledemo/__pycache__/yinyang.cpython-314.pyc +0 -0
  2357. package/lib/python3.14/turtledemo/bytedesign.py +158 -0
  2358. package/lib/python3.14/turtledemo/chaos.py +57 -0
  2359. package/lib/python3.14/turtledemo/clock.py +132 -0
  2360. package/lib/python3.14/turtledemo/colormixer.py +57 -0
  2361. package/lib/python3.14/turtledemo/forest.py +104 -0
  2362. package/lib/python3.14/turtledemo/fractalcurves.py +135 -0
  2363. package/lib/python3.14/turtledemo/lindenmayer.py +116 -0
  2364. package/lib/python3.14/turtledemo/minimal_hanoi.py +73 -0
  2365. package/lib/python3.14/turtledemo/nim.py +224 -0
  2366. package/lib/python3.14/turtledemo/paint.py +48 -0
  2367. package/lib/python3.14/turtledemo/peace.py +58 -0
  2368. package/lib/python3.14/turtledemo/penrose.py +172 -0
  2369. package/lib/python3.14/turtledemo/planet_and_moon.py +108 -0
  2370. package/lib/python3.14/turtledemo/rosette.py +63 -0
  2371. package/lib/python3.14/turtledemo/round_dance.py +81 -0
  2372. package/lib/python3.14/turtledemo/sorting_animate.py +198 -0
  2373. package/lib/python3.14/turtledemo/tree.py +59 -0
  2374. package/lib/python3.14/turtledemo/turtle.cfg +10 -0
  2375. package/lib/python3.14/turtledemo/two_canvases.py +54 -0
  2376. package/lib/python3.14/turtledemo/yinyang.py +46 -0
  2377. package/lib/python3.14/types.py +340 -0
  2378. package/lib/python3.14/typing.py +3854 -0
  2379. package/lib/python3.14/unittest/__init__.py +80 -0
  2380. package/lib/python3.14/unittest/__main__.py +18 -0
  2381. package/lib/python3.14/unittest/__pycache__/__init__.cpython-314.pyc +0 -0
  2382. package/lib/python3.14/unittest/__pycache__/__main__.cpython-314.pyc +0 -0
  2383. package/lib/python3.14/unittest/__pycache__/_log.cpython-314.pyc +0 -0
  2384. package/lib/python3.14/unittest/__pycache__/async_case.cpython-314.pyc +0 -0
  2385. package/lib/python3.14/unittest/__pycache__/case.cpython-314.pyc +0 -0
  2386. package/lib/python3.14/unittest/__pycache__/loader.cpython-314.pyc +0 -0
  2387. package/lib/python3.14/unittest/__pycache__/main.cpython-314.pyc +0 -0
  2388. package/lib/python3.14/unittest/__pycache__/mock.cpython-314.pyc +0 -0
  2389. package/lib/python3.14/unittest/__pycache__/result.cpython-314.pyc +0 -0
  2390. package/lib/python3.14/unittest/__pycache__/runner.cpython-314.pyc +0 -0
  2391. package/lib/python3.14/unittest/__pycache__/signals.cpython-314.pyc +0 -0
  2392. package/lib/python3.14/unittest/__pycache__/suite.cpython-314.pyc +0 -0
  2393. package/lib/python3.14/unittest/__pycache__/util.cpython-314.pyc +0 -0
  2394. package/lib/python3.14/unittest/_log.py +86 -0
  2395. package/lib/python3.14/unittest/async_case.py +158 -0
  2396. package/lib/python3.14/unittest/case.py +1628 -0
  2397. package/lib/python3.14/unittest/loader.py +484 -0
  2398. package/lib/python3.14/unittest/main.py +280 -0
  2399. package/lib/python3.14/unittest/mock.py +3197 -0
  2400. package/lib/python3.14/unittest/result.py +259 -0
  2401. package/lib/python3.14/unittest/runner.py +313 -0
  2402. package/lib/python3.14/unittest/signals.py +71 -0
  2403. package/lib/python3.14/unittest/suite.py +379 -0
  2404. package/lib/python3.14/unittest/util.py +170 -0
  2405. package/lib/python3.14/urllib/__init__.py +0 -0
  2406. package/lib/python3.14/urllib/__pycache__/__init__.cpython-314.pyc +0 -0
  2407. package/lib/python3.14/urllib/__pycache__/error.cpython-314.pyc +0 -0
  2408. package/lib/python3.14/urllib/__pycache__/parse.cpython-314.pyc +0 -0
  2409. package/lib/python3.14/urllib/__pycache__/request.cpython-314.pyc +0 -0
  2410. package/lib/python3.14/urllib/__pycache__/response.cpython-314.pyc +0 -0
  2411. package/lib/python3.14/urllib/__pycache__/robotparser.cpython-314.pyc +0 -0
  2412. package/lib/python3.14/urllib/error.py +74 -0
  2413. package/lib/python3.14/urllib/parse.py +1287 -0
  2414. package/lib/python3.14/urllib/request.py +2158 -0
  2415. package/lib/python3.14/urllib/response.py +84 -0
  2416. package/lib/python3.14/urllib/robotparser.py +288 -0
  2417. package/lib/python3.14/uuid.py +1007 -0
  2418. package/lib/python3.14/venv/__init__.py +700 -0
  2419. package/lib/python3.14/venv/__main__.py +10 -0
  2420. package/lib/python3.14/venv/__pycache__/__init__.cpython-314.pyc +0 -0
  2421. package/lib/python3.14/venv/__pycache__/__main__.cpython-314.pyc +0 -0
  2422. package/lib/python3.14/venv/scripts/common/Activate.ps1 +248 -0
  2423. package/lib/python3.14/venv/scripts/common/activate +76 -0
  2424. package/lib/python3.14/venv/scripts/common/activate.fish +69 -0
  2425. package/lib/python3.14/venv/scripts/posix/activate.csh +27 -0
  2426. package/lib/python3.14/warnings.py +99 -0
  2427. package/lib/python3.14/wave.py +665 -0
  2428. package/lib/python3.14/weakref.py +574 -0
  2429. package/lib/python3.14/webbrowser.py +749 -0
  2430. package/lib/python3.14/wsgiref/__init__.py +25 -0
  2431. package/lib/python3.14/wsgiref/__pycache__/__init__.cpython-314.pyc +0 -0
  2432. package/lib/python3.14/wsgiref/__pycache__/handlers.cpython-314.pyc +0 -0
  2433. package/lib/python3.14/wsgiref/__pycache__/headers.cpython-314.pyc +0 -0
  2434. package/lib/python3.14/wsgiref/__pycache__/simple_server.cpython-314.pyc +0 -0
  2435. package/lib/python3.14/wsgiref/__pycache__/types.cpython-314.pyc +0 -0
  2436. package/lib/python3.14/wsgiref/__pycache__/util.cpython-314.pyc +0 -0
  2437. package/lib/python3.14/wsgiref/__pycache__/validate.cpython-314.pyc +0 -0
  2438. package/lib/python3.14/wsgiref/handlers.py +573 -0
  2439. package/lib/python3.14/wsgiref/headers.py +184 -0
  2440. package/lib/python3.14/wsgiref/simple_server.py +161 -0
  2441. package/lib/python3.14/wsgiref/types.py +54 -0
  2442. package/lib/python3.14/wsgiref/util.py +159 -0
  2443. package/lib/python3.14/wsgiref/validate.py +438 -0
  2444. package/lib/python3.14/xml/__init__.py +20 -0
  2445. package/lib/python3.14/xml/__pycache__/__init__.cpython-314.pyc +0 -0
  2446. package/lib/python3.14/xml/dom/NodeFilter.py +27 -0
  2447. package/lib/python3.14/xml/dom/__init__.py +140 -0
  2448. package/lib/python3.14/xml/dom/__pycache__/NodeFilter.cpython-314.pyc +0 -0
  2449. package/lib/python3.14/xml/dom/__pycache__/__init__.cpython-314.pyc +0 -0
  2450. package/lib/python3.14/xml/dom/__pycache__/domreg.cpython-314.pyc +0 -0
  2451. package/lib/python3.14/xml/dom/__pycache__/expatbuilder.cpython-314.pyc +0 -0
  2452. package/lib/python3.14/xml/dom/__pycache__/minicompat.cpython-314.pyc +0 -0
  2453. package/lib/python3.14/xml/dom/__pycache__/minidom.cpython-314.pyc +0 -0
  2454. package/lib/python3.14/xml/dom/__pycache__/pulldom.cpython-314.pyc +0 -0
  2455. package/lib/python3.14/xml/dom/__pycache__/xmlbuilder.cpython-314.pyc +0 -0
  2456. package/lib/python3.14/xml/dom/domreg.py +99 -0
  2457. package/lib/python3.14/xml/dom/expatbuilder.py +962 -0
  2458. package/lib/python3.14/xml/dom/minicompat.py +109 -0
  2459. package/lib/python3.14/xml/dom/minidom.py +2022 -0
  2460. package/lib/python3.14/xml/dom/pulldom.py +336 -0
  2461. package/lib/python3.14/xml/dom/xmlbuilder.py +389 -0
  2462. package/lib/python3.14/xml/etree/ElementInclude.py +186 -0
  2463. package/lib/python3.14/xml/etree/ElementPath.py +423 -0
  2464. package/lib/python3.14/xml/etree/ElementTree.py +2102 -0
  2465. package/lib/python3.14/xml/etree/__init__.py +33 -0
  2466. package/lib/python3.14/xml/etree/__pycache__/ElementInclude.cpython-314.pyc +0 -0
  2467. package/lib/python3.14/xml/etree/__pycache__/ElementPath.cpython-314.pyc +0 -0
  2468. package/lib/python3.14/xml/etree/__pycache__/ElementTree.cpython-314.pyc +0 -0
  2469. package/lib/python3.14/xml/etree/__pycache__/__init__.cpython-314.pyc +0 -0
  2470. package/lib/python3.14/xml/etree/__pycache__/cElementTree.cpython-314.pyc +0 -0
  2471. package/lib/python3.14/xml/etree/cElementTree.py +3 -0
  2472. package/lib/python3.14/xml/parsers/__init__.py +8 -0
  2473. package/lib/python3.14/xml/parsers/__pycache__/__init__.cpython-314.pyc +0 -0
  2474. package/lib/python3.14/xml/parsers/__pycache__/expat.cpython-314.pyc +0 -0
  2475. package/lib/python3.14/xml/parsers/expat.py +8 -0
  2476. package/lib/python3.14/xml/sax/__init__.py +100 -0
  2477. package/lib/python3.14/xml/sax/__pycache__/__init__.cpython-314.pyc +0 -0
  2478. package/lib/python3.14/xml/sax/__pycache__/_exceptions.cpython-314.pyc +0 -0
  2479. package/lib/python3.14/xml/sax/__pycache__/expatreader.cpython-314.pyc +0 -0
  2480. package/lib/python3.14/xml/sax/__pycache__/handler.cpython-314.pyc +0 -0
  2481. package/lib/python3.14/xml/sax/__pycache__/saxutils.cpython-314.pyc +0 -0
  2482. package/lib/python3.14/xml/sax/__pycache__/xmlreader.cpython-314.pyc +0 -0
  2483. package/lib/python3.14/xml/sax/_exceptions.py +127 -0
  2484. package/lib/python3.14/xml/sax/expatreader.py +454 -0
  2485. package/lib/python3.14/xml/sax/handler.py +387 -0
  2486. package/lib/python3.14/xml/sax/saxutils.py +369 -0
  2487. package/lib/python3.14/xml/sax/xmlreader.py +378 -0
  2488. package/lib/python3.14/xmlrpc/__init__.py +1 -0
  2489. package/lib/python3.14/xmlrpc/__pycache__/__init__.cpython-314.pyc +0 -0
  2490. package/lib/python3.14/xmlrpc/__pycache__/client.cpython-314.pyc +0 -0
  2491. package/lib/python3.14/xmlrpc/__pycache__/server.cpython-314.pyc +0 -0
  2492. package/lib/python3.14/xmlrpc/client.py +1503 -0
  2493. package/lib/python3.14/xmlrpc/server.py +1003 -0
  2494. package/lib/python3.14/zipapp.py +231 -0
  2495. package/lib/python3.14/zipfile/__init__.py +2435 -0
  2496. package/lib/python3.14/zipfile/__main__.py +4 -0
  2497. package/lib/python3.14/zipfile/__pycache__/__init__.cpython-314.pyc +0 -0
  2498. package/lib/python3.14/zipfile/__pycache__/__main__.cpython-314.pyc +0 -0
  2499. package/lib/python3.14/zipfile/_path/__init__.py +452 -0
  2500. package/lib/python3.14/zipfile/_path/__pycache__/__init__.cpython-314.pyc +0 -0
  2501. package/lib/python3.14/zipfile/_path/__pycache__/glob.cpython-314.pyc +0 -0
  2502. package/lib/python3.14/zipfile/_path/glob.py +113 -0
  2503. package/lib/python3.14/zipimport.py +822 -0
  2504. package/lib/python3.14/zoneinfo/__init__.py +34 -0
  2505. package/lib/python3.14/zoneinfo/__pycache__/__init__.cpython-314.pyc +0 -0
  2506. package/lib/python3.14/zoneinfo/__pycache__/_common.cpython-314.pyc +0 -0
  2507. package/lib/python3.14/zoneinfo/__pycache__/_tzpath.cpython-314.pyc +0 -0
  2508. package/lib/python3.14/zoneinfo/__pycache__/_zoneinfo.cpython-314.pyc +0 -0
  2509. package/lib/python3.14/zoneinfo/_common.py +169 -0
  2510. package/lib/python3.14/zoneinfo/_tzpath.py +189 -0
  2511. package/lib/python3.14/zoneinfo/_zoneinfo.py +772 -0
  2512. package/package.json +62 -0
@@ -0,0 +1,3136 @@
1
+ #-------------------------------------------------------------------
2
+ # tarfile.py
3
+ #-------------------------------------------------------------------
4
+ # Copyright (C) 2002 Lars Gustaebel <lars@gustaebel.de>
5
+ # All rights reserved.
6
+ #
7
+ # Permission is hereby granted, free of charge, to any person
8
+ # obtaining a copy of this software and associated documentation
9
+ # files (the "Software"), to deal in the Software without
10
+ # restriction, including without limitation the rights to use,
11
+ # copy, modify, merge, publish, distribute, sublicense, and/or sell
12
+ # copies of the Software, and to permit persons to whom the
13
+ # Software is furnished to do so, subject to the following
14
+ # conditions:
15
+ #
16
+ # The above copyright notice and this permission notice shall be
17
+ # included in all copies or substantial portions of the Software.
18
+ #
19
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
20
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
21
+ # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
22
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
23
+ # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
24
+ # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
25
+ # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
26
+ # OTHER DEALINGS IN THE SOFTWARE.
27
+ #
28
+ """Read from and write to tar format archives.
29
+ """
30
+
31
+ version = "0.9.0"
32
+ __author__ = "Lars Gust\u00e4bel (lars@gustaebel.de)"
33
+ __credits__ = "Gustavo Niemeyer, Niels Gust\u00e4bel, Richard Townsend."
34
+
35
+ #---------
36
+ # Imports
37
+ #---------
38
+ from builtins import open as bltn_open
39
+ import sys
40
+ import os
41
+ import io
42
+ import shutil
43
+ import stat
44
+ import time
45
+ import struct
46
+ import copy
47
+ import re
48
+
49
+ try:
50
+ import pwd
51
+ except ImportError:
52
+ pwd = None
53
+ try:
54
+ import grp
55
+ except ImportError:
56
+ grp = None
57
+
58
+ # os.symlink on Windows prior to 6.0 raises NotImplementedError
59
+ # OSError (winerror=1314) will be raised if the caller does not hold the
60
+ # SeCreateSymbolicLinkPrivilege privilege
61
+ symlink_exception = (AttributeError, NotImplementedError, OSError)
62
+
63
+ # from tarfile import *
64
+ __all__ = ["TarFile", "TarInfo", "is_tarfile", "TarError", "ReadError",
65
+ "CompressionError", "StreamError", "ExtractError", "HeaderError",
66
+ "ENCODING", "USTAR_FORMAT", "GNU_FORMAT", "PAX_FORMAT",
67
+ "DEFAULT_FORMAT", "open","fully_trusted_filter", "data_filter",
68
+ "tar_filter", "FilterError", "AbsoluteLinkError",
69
+ "OutsideDestinationError", "SpecialFileError", "AbsolutePathError",
70
+ "LinkOutsideDestinationError", "LinkFallbackError"]
71
+
72
+
73
+ #---------------------------------------------------------
74
+ # tar constants
75
+ #---------------------------------------------------------
76
+ NUL = b"\0" # the null character
77
+ BLOCKSIZE = 512 # length of processing blocks
78
+ RECORDSIZE = BLOCKSIZE * 20 # length of records
79
+ GNU_MAGIC = b"ustar \0" # magic gnu tar string
80
+ POSIX_MAGIC = b"ustar\x0000" # magic posix tar string
81
+
82
+ LENGTH_NAME = 100 # maximum length of a filename
83
+ LENGTH_LINK = 100 # maximum length of a linkname
84
+ LENGTH_PREFIX = 155 # maximum length of the prefix field
85
+
86
+ REGTYPE = b"0" # regular file
87
+ AREGTYPE = b"\0" # regular file
88
+ LNKTYPE = b"1" # link (inside tarfile)
89
+ SYMTYPE = b"2" # symbolic link
90
+ CHRTYPE = b"3" # character special device
91
+ BLKTYPE = b"4" # block special device
92
+ DIRTYPE = b"5" # directory
93
+ FIFOTYPE = b"6" # fifo special device
94
+ CONTTYPE = b"7" # contiguous file
95
+
96
+ GNUTYPE_LONGNAME = b"L" # GNU tar longname
97
+ GNUTYPE_LONGLINK = b"K" # GNU tar longlink
98
+ GNUTYPE_SPARSE = b"S" # GNU tar sparse file
99
+
100
+ XHDTYPE = b"x" # POSIX.1-2001 extended header
101
+ XGLTYPE = b"g" # POSIX.1-2001 global header
102
+ SOLARIS_XHDTYPE = b"X" # Solaris extended header
103
+
104
+ USTAR_FORMAT = 0 # POSIX.1-1988 (ustar) format
105
+ GNU_FORMAT = 1 # GNU tar format
106
+ PAX_FORMAT = 2 # POSIX.1-2001 (pax) format
107
+ DEFAULT_FORMAT = PAX_FORMAT
108
+
109
+ #---------------------------------------------------------
110
+ # tarfile constants
111
+ #---------------------------------------------------------
112
+ # File types that tarfile supports:
113
+ SUPPORTED_TYPES = (REGTYPE, AREGTYPE, LNKTYPE,
114
+ SYMTYPE, DIRTYPE, FIFOTYPE,
115
+ CONTTYPE, CHRTYPE, BLKTYPE,
116
+ GNUTYPE_LONGNAME, GNUTYPE_LONGLINK,
117
+ GNUTYPE_SPARSE)
118
+
119
+ # File types that will be treated as a regular file.
120
+ REGULAR_TYPES = (REGTYPE, AREGTYPE,
121
+ CONTTYPE, GNUTYPE_SPARSE)
122
+
123
+ # File types that are part of the GNU tar format.
124
+ GNU_TYPES = (GNUTYPE_LONGNAME, GNUTYPE_LONGLINK,
125
+ GNUTYPE_SPARSE)
126
+
127
+ # Fields from a pax header that override a TarInfo attribute.
128
+ PAX_FIELDS = ("path", "linkpath", "size", "mtime",
129
+ "uid", "gid", "uname", "gname")
130
+
131
+ # Fields from a pax header that are affected by hdrcharset.
132
+ PAX_NAME_FIELDS = {"path", "linkpath", "uname", "gname"}
133
+
134
+ # Fields in a pax header that are numbers, all other fields
135
+ # are treated as strings.
136
+ PAX_NUMBER_FIELDS = {
137
+ "atime": float,
138
+ "ctime": float,
139
+ "mtime": float,
140
+ "uid": int,
141
+ "gid": int,
142
+ "size": int
143
+ }
144
+
145
+ #---------------------------------------------------------
146
+ # initialization
147
+ #---------------------------------------------------------
148
+ if os.name == "nt":
149
+ ENCODING = "utf-8"
150
+ else:
151
+ ENCODING = sys.getfilesystemencoding()
152
+
153
+ #---------------------------------------------------------
154
+ # Some useful functions
155
+ #---------------------------------------------------------
156
+
157
+ def stn(s, length, encoding, errors):
158
+ """Convert a string to a null-terminated bytes object.
159
+ """
160
+ if s is None:
161
+ raise ValueError("metadata cannot contain None")
162
+ s = s.encode(encoding, errors)
163
+ return s[:length] + (length - len(s)) * NUL
164
+
165
+ def nts(s, encoding, errors):
166
+ """Convert a null-terminated bytes object to a string.
167
+ """
168
+ p = s.find(b"\0")
169
+ if p != -1:
170
+ s = s[:p]
171
+ return s.decode(encoding, errors)
172
+
173
+ def nti(s):
174
+ """Convert a number field to a python number.
175
+ """
176
+ # There are two possible encodings for a number field, see
177
+ # itn() below.
178
+ if s[0] in (0o200, 0o377):
179
+ n = 0
180
+ for i in range(len(s) - 1):
181
+ n <<= 8
182
+ n += s[i + 1]
183
+ if s[0] == 0o377:
184
+ n = -(256 ** (len(s) - 1) - n)
185
+ else:
186
+ try:
187
+ s = nts(s, "ascii", "strict")
188
+ n = int(s.strip() or "0", 8)
189
+ except ValueError:
190
+ raise InvalidHeaderError("invalid header")
191
+ return n
192
+
193
+ def itn(n, digits=8, format=DEFAULT_FORMAT):
194
+ """Convert a python number to a number field.
195
+ """
196
+ # POSIX 1003.1-1988 requires numbers to be encoded as a string of
197
+ # octal digits followed by a null-byte, this allows values up to
198
+ # (8**(digits-1))-1. GNU tar allows storing numbers greater than
199
+ # that if necessary. A leading 0o200 or 0o377 byte indicate this
200
+ # particular encoding, the following digits-1 bytes are a big-endian
201
+ # base-256 representation. This allows values up to (256**(digits-1))-1.
202
+ # A 0o200 byte indicates a positive number, a 0o377 byte a negative
203
+ # number.
204
+ original_n = n
205
+ n = int(n)
206
+ if 0 <= n < 8 ** (digits - 1):
207
+ s = bytes("%0*o" % (digits - 1, n), "ascii") + NUL
208
+ elif format == GNU_FORMAT and -256 ** (digits - 1) <= n < 256 ** (digits - 1):
209
+ if n >= 0:
210
+ s = bytearray([0o200])
211
+ else:
212
+ s = bytearray([0o377])
213
+ n = 256 ** digits + n
214
+
215
+ for i in range(digits - 1):
216
+ s.insert(1, n & 0o377)
217
+ n >>= 8
218
+ else:
219
+ raise ValueError("overflow in number field")
220
+
221
+ return s
222
+
223
+ def calc_chksums(buf):
224
+ """Calculate the checksum for a member's header by summing up all
225
+ characters except for the chksum field which is treated as if
226
+ it was filled with spaces. According to the GNU tar sources,
227
+ some tars (Sun and NeXT) calculate chksum with signed char,
228
+ which will be different if there are chars in the buffer with
229
+ the high bit set. So we calculate two checksums, unsigned and
230
+ signed.
231
+ """
232
+ unsigned_chksum = 256 + sum(struct.unpack_from("148B8x356B", buf))
233
+ signed_chksum = 256 + sum(struct.unpack_from("148b8x356b", buf))
234
+ return unsigned_chksum, signed_chksum
235
+
236
+ def copyfileobj(src, dst, length=None, exception=OSError, bufsize=None):
237
+ """Copy length bytes from fileobj src to fileobj dst.
238
+ If length is None, copy the entire content.
239
+ """
240
+ bufsize = bufsize or 16 * 1024
241
+ if length == 0:
242
+ return
243
+ if length is None:
244
+ shutil.copyfileobj(src, dst, bufsize)
245
+ return
246
+
247
+ blocks, remainder = divmod(length, bufsize)
248
+ for b in range(blocks):
249
+ buf = src.read(bufsize)
250
+ if len(buf) < bufsize:
251
+ raise exception("unexpected end of data")
252
+ dst.write(buf)
253
+
254
+ if remainder != 0:
255
+ buf = src.read(remainder)
256
+ if len(buf) < remainder:
257
+ raise exception("unexpected end of data")
258
+ dst.write(buf)
259
+ return
260
+
261
+ def _safe_print(s):
262
+ encoding = getattr(sys.stdout, 'encoding', None)
263
+ if encoding is not None:
264
+ s = s.encode(encoding, 'backslashreplace').decode(encoding)
265
+ print(s, end=' ')
266
+
267
+
268
+ class TarError(Exception):
269
+ """Base exception."""
270
+ pass
271
+ class ExtractError(TarError):
272
+ """General exception for extract errors."""
273
+ pass
274
+ class ReadError(TarError):
275
+ """Exception for unreadable tar archives."""
276
+ pass
277
+ class CompressionError(TarError):
278
+ """Exception for unavailable compression methods."""
279
+ pass
280
+ class StreamError(TarError):
281
+ """Exception for unsupported operations on stream-like TarFiles."""
282
+ pass
283
+ class HeaderError(TarError):
284
+ """Base exception for header errors."""
285
+ pass
286
+ class EmptyHeaderError(HeaderError):
287
+ """Exception for empty headers."""
288
+ pass
289
+ class TruncatedHeaderError(HeaderError):
290
+ """Exception for truncated headers."""
291
+ pass
292
+ class EOFHeaderError(HeaderError):
293
+ """Exception for end of file headers."""
294
+ pass
295
+ class InvalidHeaderError(HeaderError):
296
+ """Exception for invalid headers."""
297
+ pass
298
+ class SubsequentHeaderError(HeaderError):
299
+ """Exception for missing and invalid extended headers."""
300
+ pass
301
+
302
+ #---------------------------
303
+ # internal stream interface
304
+ #---------------------------
305
+ class _LowLevelFile:
306
+ """Low-level file object. Supports reading and writing.
307
+ It is used instead of a regular file object for streaming
308
+ access.
309
+ """
310
+
311
+ def __init__(self, name, mode):
312
+ mode = {
313
+ "r": os.O_RDONLY,
314
+ "w": os.O_WRONLY | os.O_CREAT | os.O_TRUNC,
315
+ }[mode]
316
+ if hasattr(os, "O_BINARY"):
317
+ mode |= os.O_BINARY
318
+ self.fd = os.open(name, mode, 0o666)
319
+
320
+ def close(self):
321
+ os.close(self.fd)
322
+
323
+ def read(self, size):
324
+ return os.read(self.fd, size)
325
+
326
+ def write(self, s):
327
+ os.write(self.fd, s)
328
+
329
+ class _Stream:
330
+ """Class that serves as an adapter between TarFile and
331
+ a stream-like object. The stream-like object only
332
+ needs to have a read() or write() method that works with bytes,
333
+ and the method is accessed blockwise.
334
+ Use of gzip or bzip2 compression is possible.
335
+ A stream-like object could be for example: sys.stdin.buffer,
336
+ sys.stdout.buffer, a socket, a tape device etc.
337
+
338
+ _Stream is intended to be used only internally.
339
+ """
340
+
341
+ def __init__(self, name, mode, comptype, fileobj, bufsize,
342
+ compresslevel, preset):
343
+ """Construct a _Stream object.
344
+ """
345
+ self._extfileobj = True
346
+ if fileobj is None:
347
+ fileobj = _LowLevelFile(name, mode)
348
+ self._extfileobj = False
349
+
350
+ if comptype == '*':
351
+ # Enable transparent compression detection for the
352
+ # stream interface
353
+ fileobj = _StreamProxy(fileobj)
354
+ comptype = fileobj.getcomptype()
355
+
356
+ self.name = os.fspath(name) if name is not None else ""
357
+ self.mode = mode
358
+ self.comptype = comptype
359
+ self.fileobj = fileobj
360
+ self.bufsize = bufsize
361
+ self.buf = b""
362
+ self.pos = 0
363
+ self.closed = False
364
+
365
+ try:
366
+ if comptype == "gz":
367
+ try:
368
+ import zlib
369
+ except ImportError:
370
+ raise CompressionError("zlib module is not available") from None
371
+ self.zlib = zlib
372
+ self.crc = zlib.crc32(b"")
373
+ if mode == "r":
374
+ self.exception = zlib.error
375
+ self._init_read_gz()
376
+ else:
377
+ self._init_write_gz(compresslevel)
378
+
379
+ elif comptype == "bz2":
380
+ try:
381
+ import bz2
382
+ except ImportError:
383
+ raise CompressionError("bz2 module is not available") from None
384
+ if mode == "r":
385
+ self.dbuf = b""
386
+ self.cmp = bz2.BZ2Decompressor()
387
+ self.exception = OSError
388
+ else:
389
+ self.cmp = bz2.BZ2Compressor(compresslevel)
390
+
391
+ elif comptype == "xz":
392
+ try:
393
+ import lzma
394
+ except ImportError:
395
+ raise CompressionError("lzma module is not available") from None
396
+ if mode == "r":
397
+ self.dbuf = b""
398
+ self.cmp = lzma.LZMADecompressor()
399
+ self.exception = lzma.LZMAError
400
+ else:
401
+ self.cmp = lzma.LZMACompressor(preset=preset)
402
+ elif comptype == "zst":
403
+ try:
404
+ from compression import zstd
405
+ except ImportError:
406
+ raise CompressionError("compression.zstd module is not available") from None
407
+ if mode == "r":
408
+ self.dbuf = b""
409
+ self.cmp = zstd.ZstdDecompressor()
410
+ self.exception = zstd.ZstdError
411
+ else:
412
+ self.cmp = zstd.ZstdCompressor()
413
+ elif comptype != "tar":
414
+ raise CompressionError("unknown compression type %r" % comptype)
415
+
416
+ except:
417
+ if not self._extfileobj:
418
+ self.fileobj.close()
419
+ self.closed = True
420
+ raise
421
+
422
+ def __del__(self):
423
+ if hasattr(self, "closed") and not self.closed:
424
+ self.close()
425
+
426
+ def _init_write_gz(self, compresslevel):
427
+ """Initialize for writing with gzip compression.
428
+ """
429
+ self.cmp = self.zlib.compressobj(compresslevel,
430
+ self.zlib.DEFLATED,
431
+ -self.zlib.MAX_WBITS,
432
+ self.zlib.DEF_MEM_LEVEL,
433
+ 0)
434
+ timestamp = struct.pack("<L", int(time.time()))
435
+ self.__write(b"\037\213\010\010" + timestamp + b"\002\377")
436
+ if self.name.endswith(".gz"):
437
+ self.name = self.name[:-3]
438
+ # Honor "directory components removed" from RFC1952
439
+ self.name = os.path.basename(self.name)
440
+ # RFC1952 says we must use ISO-8859-1 for the FNAME field.
441
+ self.__write(self.name.encode("iso-8859-1", "replace") + NUL)
442
+
443
+ def write(self, s):
444
+ """Write string s to the stream.
445
+ """
446
+ if self.comptype == "gz":
447
+ self.crc = self.zlib.crc32(s, self.crc)
448
+ self.pos += len(s)
449
+ if self.comptype != "tar":
450
+ s = self.cmp.compress(s)
451
+ self.__write(s)
452
+
453
+ def __write(self, s):
454
+ """Write string s to the stream if a whole new block
455
+ is ready to be written.
456
+ """
457
+ self.buf += s
458
+ while len(self.buf) > self.bufsize:
459
+ self.fileobj.write(self.buf[:self.bufsize])
460
+ self.buf = self.buf[self.bufsize:]
461
+
462
+ def close(self):
463
+ """Close the _Stream object. No operation should be
464
+ done on it afterwards.
465
+ """
466
+ if self.closed:
467
+ return
468
+
469
+ self.closed = True
470
+ try:
471
+ if self.mode == "w" and self.comptype != "tar":
472
+ self.buf += self.cmp.flush()
473
+
474
+ if self.mode == "w" and self.buf:
475
+ self.fileobj.write(self.buf)
476
+ self.buf = b""
477
+ if self.comptype == "gz":
478
+ self.fileobj.write(struct.pack("<L", self.crc))
479
+ self.fileobj.write(struct.pack("<L", self.pos & 0xffffFFFF))
480
+ finally:
481
+ if not self._extfileobj:
482
+ self.fileobj.close()
483
+
484
+ def _init_read_gz(self):
485
+ """Initialize for reading a gzip compressed fileobj.
486
+ """
487
+ self.cmp = self.zlib.decompressobj(-self.zlib.MAX_WBITS)
488
+ self.dbuf = b""
489
+
490
+ # taken from gzip.GzipFile with some alterations
491
+ if self.__read(2) != b"\037\213":
492
+ raise ReadError("not a gzip file")
493
+ if self.__read(1) != b"\010":
494
+ raise CompressionError("unsupported compression method")
495
+
496
+ flag = ord(self.__read(1))
497
+ self.__read(6)
498
+
499
+ if flag & 4:
500
+ xlen = ord(self.__read(1)) + 256 * ord(self.__read(1))
501
+ self.read(xlen)
502
+ if flag & 8:
503
+ while True:
504
+ s = self.__read(1)
505
+ if not s or s == NUL:
506
+ break
507
+ if flag & 16:
508
+ while True:
509
+ s = self.__read(1)
510
+ if not s or s == NUL:
511
+ break
512
+ if flag & 2:
513
+ self.__read(2)
514
+
515
+ def tell(self):
516
+ """Return the stream's file pointer position.
517
+ """
518
+ return self.pos
519
+
520
+ def seek(self, pos=0):
521
+ """Set the stream's file pointer to pos. Negative seeking
522
+ is forbidden.
523
+ """
524
+ if pos - self.pos >= 0:
525
+ blocks, remainder = divmod(pos - self.pos, self.bufsize)
526
+ for i in range(blocks):
527
+ self.read(self.bufsize)
528
+ self.read(remainder)
529
+ else:
530
+ raise StreamError("seeking backwards is not allowed")
531
+ return self.pos
532
+
533
+ def read(self, size):
534
+ """Return the next size number of bytes from the stream."""
535
+ assert size is not None
536
+ buf = self._read(size)
537
+ self.pos += len(buf)
538
+ return buf
539
+
540
+ def _read(self, size):
541
+ """Return size bytes from the stream.
542
+ """
543
+ if self.comptype == "tar":
544
+ return self.__read(size)
545
+
546
+ c = len(self.dbuf)
547
+ t = [self.dbuf]
548
+ while c < size:
549
+ # Skip underlying buffer to avoid unaligned double buffering.
550
+ if self.buf:
551
+ buf = self.buf
552
+ self.buf = b""
553
+ else:
554
+ buf = self.fileobj.read(self.bufsize)
555
+ if not buf:
556
+ break
557
+ try:
558
+ buf = self.cmp.decompress(buf)
559
+ except self.exception as e:
560
+ raise ReadError("invalid compressed data") from e
561
+ t.append(buf)
562
+ c += len(buf)
563
+ t = b"".join(t)
564
+ self.dbuf = t[size:]
565
+ return t[:size]
566
+
567
+ def __read(self, size):
568
+ """Return size bytes from stream. If internal buffer is empty,
569
+ read another block from the stream.
570
+ """
571
+ c = len(self.buf)
572
+ t = [self.buf]
573
+ while c < size:
574
+ buf = self.fileobj.read(self.bufsize)
575
+ if not buf:
576
+ break
577
+ t.append(buf)
578
+ c += len(buf)
579
+ t = b"".join(t)
580
+ self.buf = t[size:]
581
+ return t[:size]
582
+ # class _Stream
583
+
584
+ class _StreamProxy(object):
585
+ """Small proxy class that enables transparent compression
586
+ detection for the Stream interface (mode 'r|*').
587
+ """
588
+
589
+ def __init__(self, fileobj):
590
+ self.fileobj = fileobj
591
+ self.buf = self.fileobj.read(BLOCKSIZE)
592
+
593
+ def read(self, size):
594
+ self.read = self.fileobj.read
595
+ return self.buf
596
+
597
+ def getcomptype(self):
598
+ if self.buf.startswith(b"\x1f\x8b\x08"):
599
+ return "gz"
600
+ elif self.buf[0:3] == b"BZh" and self.buf[4:10] == b"1AY&SY":
601
+ return "bz2"
602
+ elif self.buf.startswith((b"\x5d\x00\x00\x80", b"\xfd7zXZ")):
603
+ return "xz"
604
+ elif self.buf.startswith(b"\x28\xb5\x2f\xfd"):
605
+ return "zst"
606
+ else:
607
+ return "tar"
608
+
609
+ def close(self):
610
+ self.fileobj.close()
611
+ # class StreamProxy
612
+
613
+ #------------------------
614
+ # Extraction file object
615
+ #------------------------
616
+ class _FileInFile(object):
617
+ """A thin wrapper around an existing file object that
618
+ provides a part of its data as an individual file
619
+ object.
620
+ """
621
+
622
+ def __init__(self, fileobj, offset, size, name, blockinfo=None):
623
+ self.fileobj = fileobj
624
+ self.offset = offset
625
+ self.size = size
626
+ self.position = 0
627
+ self.name = name
628
+ self.closed = False
629
+
630
+ if blockinfo is None:
631
+ blockinfo = [(0, size)]
632
+
633
+ # Construct a map with data and zero blocks.
634
+ self.map_index = 0
635
+ self.map = []
636
+ lastpos = 0
637
+ realpos = self.offset
638
+ for offset, size in blockinfo:
639
+ if offset > lastpos:
640
+ self.map.append((False, lastpos, offset, None))
641
+ self.map.append((True, offset, offset + size, realpos))
642
+ realpos += size
643
+ lastpos = offset + size
644
+ if lastpos < self.size:
645
+ self.map.append((False, lastpos, self.size, None))
646
+
647
+ def flush(self):
648
+ pass
649
+
650
+ @property
651
+ def mode(self):
652
+ return 'rb'
653
+
654
+ def readable(self):
655
+ return True
656
+
657
+ def writable(self):
658
+ return False
659
+
660
+ def seekable(self):
661
+ return self.fileobj.seekable()
662
+
663
+ def tell(self):
664
+ """Return the current file position.
665
+ """
666
+ return self.position
667
+
668
+ def seek(self, position, whence=io.SEEK_SET):
669
+ """Seek to a position in the file.
670
+ """
671
+ if whence == io.SEEK_SET:
672
+ self.position = min(max(position, 0), self.size)
673
+ elif whence == io.SEEK_CUR:
674
+ if position < 0:
675
+ self.position = max(self.position + position, 0)
676
+ else:
677
+ self.position = min(self.position + position, self.size)
678
+ elif whence == io.SEEK_END:
679
+ self.position = max(min(self.size + position, self.size), 0)
680
+ else:
681
+ raise ValueError("Invalid argument")
682
+ return self.position
683
+
684
+ def read(self, size=None):
685
+ """Read data from the file.
686
+ """
687
+ if size is None:
688
+ size = self.size - self.position
689
+ else:
690
+ size = min(size, self.size - self.position)
691
+
692
+ buf = b""
693
+ while size > 0:
694
+ while True:
695
+ data, start, stop, offset = self.map[self.map_index]
696
+ if start <= self.position < stop:
697
+ break
698
+ else:
699
+ self.map_index += 1
700
+ if self.map_index == len(self.map):
701
+ self.map_index = 0
702
+ length = min(size, stop - self.position)
703
+ if data:
704
+ self.fileobj.seek(offset + (self.position - start))
705
+ b = self.fileobj.read(length)
706
+ if len(b) != length:
707
+ raise ReadError("unexpected end of data")
708
+ buf += b
709
+ else:
710
+ buf += NUL * length
711
+ size -= length
712
+ self.position += length
713
+ return buf
714
+
715
+ def readinto(self, b):
716
+ buf = self.read(len(b))
717
+ b[:len(buf)] = buf
718
+ return len(buf)
719
+
720
+ def close(self):
721
+ self.closed = True
722
+ #class _FileInFile
723
+
724
+ class ExFileObject(io.BufferedReader):
725
+
726
+ def __init__(self, tarfile, tarinfo):
727
+ fileobj = _FileInFile(tarfile.fileobj, tarinfo.offset_data,
728
+ tarinfo.size, tarinfo.name, tarinfo.sparse)
729
+ super().__init__(fileobj)
730
+ #class ExFileObject
731
+
732
+
733
+ #-----------------------------
734
+ # extraction filters (PEP 706)
735
+ #-----------------------------
736
+
737
+ class FilterError(TarError):
738
+ pass
739
+
740
+ class AbsolutePathError(FilterError):
741
+ def __init__(self, tarinfo):
742
+ self.tarinfo = tarinfo
743
+ super().__init__(f'member {tarinfo.name!r} has an absolute path')
744
+
745
+ class OutsideDestinationError(FilterError):
746
+ def __init__(self, tarinfo, path):
747
+ self.tarinfo = tarinfo
748
+ self._path = path
749
+ super().__init__(f'{tarinfo.name!r} would be extracted to {path!r}, '
750
+ + 'which is outside the destination')
751
+
752
+ class SpecialFileError(FilterError):
753
+ def __init__(self, tarinfo):
754
+ self.tarinfo = tarinfo
755
+ super().__init__(f'{tarinfo.name!r} is a special file')
756
+
757
+ class AbsoluteLinkError(FilterError):
758
+ def __init__(self, tarinfo):
759
+ self.tarinfo = tarinfo
760
+ super().__init__(f'{tarinfo.name!r} is a link to an absolute path')
761
+
762
+ class LinkOutsideDestinationError(FilterError):
763
+ def __init__(self, tarinfo, path):
764
+ self.tarinfo = tarinfo
765
+ self._path = path
766
+ super().__init__(f'{tarinfo.name!r} would link to {path!r}, '
767
+ + 'which is outside the destination')
768
+
769
+ class LinkFallbackError(FilterError):
770
+ def __init__(self, tarinfo, path):
771
+ self.tarinfo = tarinfo
772
+ self._path = path
773
+ super().__init__(f'link {tarinfo.name!r} would be extracted as a '
774
+ + f'copy of {path!r}, which was rejected')
775
+
776
+ # Errors caused by filters -- both "fatal" and "non-fatal" -- that
777
+ # we consider to be issues with the argument, rather than a bug in the
778
+ # filter function
779
+ _FILTER_ERRORS = (FilterError, OSError, ExtractError)
780
+
781
+ def _get_filtered_attrs(member, dest_path, for_data=True):
782
+ new_attrs = {}
783
+ name = member.name
784
+ dest_path = os.path.realpath(dest_path, strict=os.path.ALLOW_MISSING)
785
+ # Strip leading / (tar's directory separator) from filenames.
786
+ # Include os.sep (target OS directory separator) as well.
787
+ if name.startswith(('/', os.sep)):
788
+ name = new_attrs['name'] = member.path.lstrip('/' + os.sep)
789
+ if os.path.isabs(name):
790
+ # Path is absolute even after stripping.
791
+ # For example, 'C:/foo' on Windows.
792
+ raise AbsolutePathError(member)
793
+ # Ensure we stay in the destination
794
+ target_path = os.path.realpath(os.path.join(dest_path, name),
795
+ strict=os.path.ALLOW_MISSING)
796
+ if os.path.commonpath([target_path, dest_path]) != dest_path:
797
+ raise OutsideDestinationError(member, target_path)
798
+ # Limit permissions (no high bits, and go-w)
799
+ mode = member.mode
800
+ if mode is not None:
801
+ # Strip high bits & group/other write bits
802
+ mode = mode & 0o755
803
+ if for_data:
804
+ # For data, handle permissions & file types
805
+ if member.isreg() or member.islnk():
806
+ if not mode & 0o100:
807
+ # Clear executable bits if not executable by user
808
+ mode &= ~0o111
809
+ # Ensure owner can read & write
810
+ mode |= 0o600
811
+ elif member.isdir() or member.issym():
812
+ # Ignore mode for directories & symlinks
813
+ mode = None
814
+ else:
815
+ # Reject special files
816
+ raise SpecialFileError(member)
817
+ if mode != member.mode:
818
+ new_attrs['mode'] = mode
819
+ if for_data:
820
+ # Ignore ownership for 'data'
821
+ if member.uid is not None:
822
+ new_attrs['uid'] = None
823
+ if member.gid is not None:
824
+ new_attrs['gid'] = None
825
+ if member.uname is not None:
826
+ new_attrs['uname'] = None
827
+ if member.gname is not None:
828
+ new_attrs['gname'] = None
829
+ # Check link destination for 'data'
830
+ if member.islnk() or member.issym():
831
+ if os.path.isabs(member.linkname):
832
+ raise AbsoluteLinkError(member)
833
+ normalized = os.path.normpath(member.linkname)
834
+ if normalized != member.linkname:
835
+ new_attrs['linkname'] = normalized
836
+ if member.issym():
837
+ target_path = os.path.join(dest_path,
838
+ os.path.dirname(name),
839
+ member.linkname)
840
+ else:
841
+ target_path = os.path.join(dest_path,
842
+ member.linkname)
843
+ target_path = os.path.realpath(target_path,
844
+ strict=os.path.ALLOW_MISSING)
845
+ if os.path.commonpath([target_path, dest_path]) != dest_path:
846
+ raise LinkOutsideDestinationError(member, target_path)
847
+ return new_attrs
848
+
849
+ def fully_trusted_filter(member, dest_path):
850
+ return member
851
+
852
+ def tar_filter(member, dest_path):
853
+ new_attrs = _get_filtered_attrs(member, dest_path, False)
854
+ if new_attrs:
855
+ return member.replace(**new_attrs, deep=False)
856
+ return member
857
+
858
+ def data_filter(member, dest_path):
859
+ new_attrs = _get_filtered_attrs(member, dest_path, True)
860
+ if new_attrs:
861
+ return member.replace(**new_attrs, deep=False)
862
+ return member
863
+
864
+ _NAMED_FILTERS = {
865
+ "fully_trusted": fully_trusted_filter,
866
+ "tar": tar_filter,
867
+ "data": data_filter,
868
+ }
869
+
870
+ #------------------
871
+ # Exported Classes
872
+ #------------------
873
+
874
+ # Sentinel for replace() defaults, meaning "don't change the attribute"
875
+ _KEEP = object()
876
+
877
+ # Header length is digits followed by a space.
878
+ _header_length_prefix_re = re.compile(br"([0-9]{1,20}) ")
879
+
880
+ class TarInfo(object):
881
+ """Informational class which holds the details about an
882
+ archive member given by a tar header block.
883
+ TarInfo objects are returned by TarFile.getmember(),
884
+ TarFile.getmembers() and TarFile.gettarinfo() and are
885
+ usually created internally.
886
+ """
887
+
888
+ __slots__ = dict(
889
+ name = 'Name of the archive member.',
890
+ mode = 'Permission bits.',
891
+ uid = 'User ID of the user who originally stored this member.',
892
+ gid = 'Group ID of the user who originally stored this member.',
893
+ size = 'Size in bytes.',
894
+ mtime = 'Time of last modification.',
895
+ chksum = 'Header checksum.',
896
+ type = ('File type. type is usually one of these constants: '
897
+ 'REGTYPE, AREGTYPE, LNKTYPE, SYMTYPE, DIRTYPE, FIFOTYPE, '
898
+ 'CONTTYPE, CHRTYPE, BLKTYPE, GNUTYPE_SPARSE.'),
899
+ linkname = ('Name of the target file name, which is only present '
900
+ 'in TarInfo objects of type LNKTYPE and SYMTYPE.'),
901
+ uname = 'User name.',
902
+ gname = 'Group name.',
903
+ devmajor = 'Device major number.',
904
+ devminor = 'Device minor number.',
905
+ offset = 'The tar header starts here.',
906
+ offset_data = "The file's data starts here.",
907
+ pax_headers = ('A dictionary containing key-value pairs of an '
908
+ 'associated pax extended header.'),
909
+ sparse = 'Sparse member information.',
910
+ _tarfile = None,
911
+ _sparse_structs = None,
912
+ _link_target = None,
913
+ )
914
+
915
+ def __init__(self, name=""):
916
+ """Construct a TarInfo object. name is the optional name
917
+ of the member.
918
+ """
919
+ self.name = name # member name
920
+ self.mode = 0o644 # file permissions
921
+ self.uid = 0 # user id
922
+ self.gid = 0 # group id
923
+ self.size = 0 # file size
924
+ self.mtime = 0 # modification time
925
+ self.chksum = 0 # header checksum
926
+ self.type = REGTYPE # member type
927
+ self.linkname = "" # link name
928
+ self.uname = "" # user name
929
+ self.gname = "" # group name
930
+ self.devmajor = 0 # device major number
931
+ self.devminor = 0 # device minor number
932
+
933
+ self.offset = 0 # the tar header starts here
934
+ self.offset_data = 0 # the file's data starts here
935
+
936
+ self.sparse = None # sparse member information
937
+ self.pax_headers = {} # pax header information
938
+
939
+ @property
940
+ def tarfile(self):
941
+ import warnings
942
+ warnings.warn(
943
+ 'The undocumented "tarfile" attribute of TarInfo objects '
944
+ + 'is deprecated and will be removed in Python 3.16',
945
+ DeprecationWarning, stacklevel=2)
946
+ return self._tarfile
947
+
948
+ @tarfile.setter
949
+ def tarfile(self, tarfile):
950
+ import warnings
951
+ warnings.warn(
952
+ 'The undocumented "tarfile" attribute of TarInfo objects '
953
+ + 'is deprecated and will be removed in Python 3.16',
954
+ DeprecationWarning, stacklevel=2)
955
+ self._tarfile = tarfile
956
+
957
+ @property
958
+ def path(self):
959
+ 'In pax headers, "name" is called "path".'
960
+ return self.name
961
+
962
+ @path.setter
963
+ def path(self, name):
964
+ self.name = name
965
+
966
+ @property
967
+ def linkpath(self):
968
+ 'In pax headers, "linkname" is called "linkpath".'
969
+ return self.linkname
970
+
971
+ @linkpath.setter
972
+ def linkpath(self, linkname):
973
+ self.linkname = linkname
974
+
975
+ def __repr__(self):
976
+ return "<%s %r at %#x>" % (self.__class__.__name__,self.name,id(self))
977
+
978
+ def replace(self, *,
979
+ name=_KEEP, mtime=_KEEP, mode=_KEEP, linkname=_KEEP,
980
+ uid=_KEEP, gid=_KEEP, uname=_KEEP, gname=_KEEP,
981
+ deep=True, _KEEP=_KEEP):
982
+ """Return a deep copy of self with the given attributes replaced.
983
+ """
984
+ if deep:
985
+ result = copy.deepcopy(self)
986
+ else:
987
+ result = copy.copy(self)
988
+ if name is not _KEEP:
989
+ result.name = name
990
+ if mtime is not _KEEP:
991
+ result.mtime = mtime
992
+ if mode is not _KEEP:
993
+ result.mode = mode
994
+ if linkname is not _KEEP:
995
+ result.linkname = linkname
996
+ if uid is not _KEEP:
997
+ result.uid = uid
998
+ if gid is not _KEEP:
999
+ result.gid = gid
1000
+ if uname is not _KEEP:
1001
+ result.uname = uname
1002
+ if gname is not _KEEP:
1003
+ result.gname = gname
1004
+ return result
1005
+
1006
+ def get_info(self):
1007
+ """Return the TarInfo's attributes as a dictionary.
1008
+ """
1009
+ if self.mode is None:
1010
+ mode = None
1011
+ else:
1012
+ mode = self.mode & 0o7777
1013
+ info = {
1014
+ "name": self.name,
1015
+ "mode": mode,
1016
+ "uid": self.uid,
1017
+ "gid": self.gid,
1018
+ "size": self.size,
1019
+ "mtime": self.mtime,
1020
+ "chksum": self.chksum,
1021
+ "type": self.type,
1022
+ "linkname": self.linkname,
1023
+ "uname": self.uname,
1024
+ "gname": self.gname,
1025
+ "devmajor": self.devmajor,
1026
+ "devminor": self.devminor
1027
+ }
1028
+
1029
+ if info["type"] == DIRTYPE and not info["name"].endswith("/"):
1030
+ info["name"] += "/"
1031
+
1032
+ return info
1033
+
1034
+ def tobuf(self, format=DEFAULT_FORMAT, encoding=ENCODING, errors="surrogateescape"):
1035
+ """Return a tar header as a string of 512 byte blocks.
1036
+ """
1037
+ info = self.get_info()
1038
+ for name, value in info.items():
1039
+ if value is None:
1040
+ raise ValueError("%s may not be None" % name)
1041
+
1042
+ if format == USTAR_FORMAT:
1043
+ return self.create_ustar_header(info, encoding, errors)
1044
+ elif format == GNU_FORMAT:
1045
+ return self.create_gnu_header(info, encoding, errors)
1046
+ elif format == PAX_FORMAT:
1047
+ return self.create_pax_header(info, encoding)
1048
+ else:
1049
+ raise ValueError("invalid format")
1050
+
1051
+ def create_ustar_header(self, info, encoding, errors):
1052
+ """Return the object as a ustar header block.
1053
+ """
1054
+ info["magic"] = POSIX_MAGIC
1055
+
1056
+ if len(info["linkname"].encode(encoding, errors)) > LENGTH_LINK:
1057
+ raise ValueError("linkname is too long")
1058
+
1059
+ if len(info["name"].encode(encoding, errors)) > LENGTH_NAME:
1060
+ info["prefix"], info["name"] = self._posix_split_name(info["name"], encoding, errors)
1061
+
1062
+ return self._create_header(info, USTAR_FORMAT, encoding, errors)
1063
+
1064
+ def create_gnu_header(self, info, encoding, errors):
1065
+ """Return the object as a GNU header block sequence.
1066
+ """
1067
+ info["magic"] = GNU_MAGIC
1068
+
1069
+ buf = b""
1070
+ if len(info["linkname"].encode(encoding, errors)) > LENGTH_LINK:
1071
+ buf += self._create_gnu_long_header(info["linkname"], GNUTYPE_LONGLINK, encoding, errors)
1072
+
1073
+ if len(info["name"].encode(encoding, errors)) > LENGTH_NAME:
1074
+ buf += self._create_gnu_long_header(info["name"], GNUTYPE_LONGNAME, encoding, errors)
1075
+
1076
+ return buf + self._create_header(info, GNU_FORMAT, encoding, errors)
1077
+
1078
+ def create_pax_header(self, info, encoding):
1079
+ """Return the object as a ustar header block. If it cannot be
1080
+ represented this way, prepend a pax extended header sequence
1081
+ with supplement information.
1082
+ """
1083
+ info["magic"] = POSIX_MAGIC
1084
+ pax_headers = self.pax_headers.copy()
1085
+
1086
+ # Test string fields for values that exceed the field length or cannot
1087
+ # be represented in ASCII encoding.
1088
+ for name, hname, length in (
1089
+ ("name", "path", LENGTH_NAME), ("linkname", "linkpath", LENGTH_LINK),
1090
+ ("uname", "uname", 32), ("gname", "gname", 32)):
1091
+
1092
+ if hname in pax_headers:
1093
+ # The pax header has priority.
1094
+ continue
1095
+
1096
+ # Try to encode the string as ASCII.
1097
+ try:
1098
+ info[name].encode("ascii", "strict")
1099
+ except UnicodeEncodeError:
1100
+ pax_headers[hname] = info[name]
1101
+ continue
1102
+
1103
+ if len(info[name]) > length:
1104
+ pax_headers[hname] = info[name]
1105
+
1106
+ # Test number fields for values that exceed the field limit or values
1107
+ # that like to be stored as float.
1108
+ for name, digits in (("uid", 8), ("gid", 8), ("size", 12), ("mtime", 12)):
1109
+ needs_pax = False
1110
+
1111
+ val = info[name]
1112
+ val_is_float = isinstance(val, float)
1113
+ val_int = round(val) if val_is_float else val
1114
+ if not 0 <= val_int < 8 ** (digits - 1):
1115
+ # Avoid overflow.
1116
+ info[name] = 0
1117
+ needs_pax = True
1118
+ elif val_is_float:
1119
+ # Put rounded value in ustar header, and full
1120
+ # precision value in pax header.
1121
+ info[name] = val_int
1122
+ needs_pax = True
1123
+
1124
+ # The existing pax header has priority.
1125
+ if needs_pax and name not in pax_headers:
1126
+ pax_headers[name] = str(val)
1127
+
1128
+ # Create a pax extended header if necessary.
1129
+ if pax_headers:
1130
+ buf = self._create_pax_generic_header(pax_headers, XHDTYPE, encoding)
1131
+ else:
1132
+ buf = b""
1133
+
1134
+ return buf + self._create_header(info, USTAR_FORMAT, "ascii", "replace")
1135
+
1136
+ @classmethod
1137
+ def create_pax_global_header(cls, pax_headers):
1138
+ """Return the object as a pax global header block sequence.
1139
+ """
1140
+ return cls._create_pax_generic_header(pax_headers, XGLTYPE, "utf-8")
1141
+
1142
+ def _posix_split_name(self, name, encoding, errors):
1143
+ """Split a name longer than 100 chars into a prefix
1144
+ and a name part.
1145
+ """
1146
+ components = name.split("/")
1147
+ for i in range(1, len(components)):
1148
+ prefix = "/".join(components[:i])
1149
+ name = "/".join(components[i:])
1150
+ if len(prefix.encode(encoding, errors)) <= LENGTH_PREFIX and \
1151
+ len(name.encode(encoding, errors)) <= LENGTH_NAME:
1152
+ break
1153
+ else:
1154
+ raise ValueError("name is too long")
1155
+
1156
+ return prefix, name
1157
+
1158
+ @staticmethod
1159
+ def _create_header(info, format, encoding, errors):
1160
+ """Return a header block. info is a dictionary with file
1161
+ information, format must be one of the *_FORMAT constants.
1162
+ """
1163
+ has_device_fields = info.get("type") in (CHRTYPE, BLKTYPE)
1164
+ if has_device_fields:
1165
+ devmajor = itn(info.get("devmajor", 0), 8, format)
1166
+ devminor = itn(info.get("devminor", 0), 8, format)
1167
+ else:
1168
+ devmajor = stn("", 8, encoding, errors)
1169
+ devminor = stn("", 8, encoding, errors)
1170
+
1171
+ # None values in metadata should cause ValueError.
1172
+ # itn()/stn() do this for all fields except type.
1173
+ filetype = info.get("type", REGTYPE)
1174
+ if filetype is None:
1175
+ raise ValueError("TarInfo.type must not be None")
1176
+
1177
+ parts = [
1178
+ stn(info.get("name", ""), 100, encoding, errors),
1179
+ itn(info.get("mode", 0) & 0o7777, 8, format),
1180
+ itn(info.get("uid", 0), 8, format),
1181
+ itn(info.get("gid", 0), 8, format),
1182
+ itn(info.get("size", 0), 12, format),
1183
+ itn(info.get("mtime", 0), 12, format),
1184
+ b" ", # checksum field
1185
+ filetype,
1186
+ stn(info.get("linkname", ""), 100, encoding, errors),
1187
+ info.get("magic", POSIX_MAGIC),
1188
+ stn(info.get("uname", ""), 32, encoding, errors),
1189
+ stn(info.get("gname", ""), 32, encoding, errors),
1190
+ devmajor,
1191
+ devminor,
1192
+ stn(info.get("prefix", ""), 155, encoding, errors)
1193
+ ]
1194
+
1195
+ buf = struct.pack("%ds" % BLOCKSIZE, b"".join(parts))
1196
+ chksum = calc_chksums(buf[-BLOCKSIZE:])[0]
1197
+ buf = buf[:-364] + bytes("%06o\0" % chksum, "ascii") + buf[-357:]
1198
+ return buf
1199
+
1200
+ @staticmethod
1201
+ def _create_payload(payload):
1202
+ """Return the string payload filled with zero bytes
1203
+ up to the next 512 byte border.
1204
+ """
1205
+ blocks, remainder = divmod(len(payload), BLOCKSIZE)
1206
+ if remainder > 0:
1207
+ payload += (BLOCKSIZE - remainder) * NUL
1208
+ return payload
1209
+
1210
+ @classmethod
1211
+ def _create_gnu_long_header(cls, name, type, encoding, errors):
1212
+ """Return a GNUTYPE_LONGNAME or GNUTYPE_LONGLINK sequence
1213
+ for name.
1214
+ """
1215
+ name = name.encode(encoding, errors) + NUL
1216
+
1217
+ info = {}
1218
+ info["name"] = "././@LongLink"
1219
+ info["type"] = type
1220
+ info["size"] = len(name)
1221
+ info["magic"] = GNU_MAGIC
1222
+
1223
+ # create extended header + name blocks.
1224
+ return cls._create_header(info, USTAR_FORMAT, encoding, errors) + \
1225
+ cls._create_payload(name)
1226
+
1227
+ @classmethod
1228
+ def _create_pax_generic_header(cls, pax_headers, type, encoding):
1229
+ """Return a POSIX.1-2008 extended or global header sequence
1230
+ that contains a list of keyword, value pairs. The values
1231
+ must be strings.
1232
+ """
1233
+ # Check if one of the fields contains surrogate characters and thereby
1234
+ # forces hdrcharset=BINARY, see _proc_pax() for more information.
1235
+ binary = False
1236
+ for keyword, value in pax_headers.items():
1237
+ try:
1238
+ value.encode("utf-8", "strict")
1239
+ except UnicodeEncodeError:
1240
+ binary = True
1241
+ break
1242
+
1243
+ records = b""
1244
+ if binary:
1245
+ # Put the hdrcharset field at the beginning of the header.
1246
+ records += b"21 hdrcharset=BINARY\n"
1247
+
1248
+ for keyword, value in pax_headers.items():
1249
+ keyword = keyword.encode("utf-8")
1250
+ if binary:
1251
+ # Try to restore the original byte representation of 'value'.
1252
+ # Needless to say, that the encoding must match the string.
1253
+ value = value.encode(encoding, "surrogateescape")
1254
+ else:
1255
+ value = value.encode("utf-8")
1256
+
1257
+ l = len(keyword) + len(value) + 3 # ' ' + '=' + '\n'
1258
+ n = p = 0
1259
+ while True:
1260
+ n = l + len(str(p))
1261
+ if n == p:
1262
+ break
1263
+ p = n
1264
+ records += bytes(str(p), "ascii") + b" " + keyword + b"=" + value + b"\n"
1265
+
1266
+ # We use a hardcoded "././@PaxHeader" name like star does
1267
+ # instead of the one that POSIX recommends.
1268
+ info = {}
1269
+ info["name"] = "././@PaxHeader"
1270
+ info["type"] = type
1271
+ info["size"] = len(records)
1272
+ info["magic"] = POSIX_MAGIC
1273
+
1274
+ # Create pax header + record blocks.
1275
+ return cls._create_header(info, USTAR_FORMAT, "ascii", "replace") + \
1276
+ cls._create_payload(records)
1277
+
1278
+ @classmethod
1279
+ def frombuf(cls, buf, encoding, errors):
1280
+ """Construct a TarInfo object from a 512 byte bytes object.
1281
+ """
1282
+ if len(buf) == 0:
1283
+ raise EmptyHeaderError("empty header")
1284
+ if len(buf) != BLOCKSIZE:
1285
+ raise TruncatedHeaderError("truncated header")
1286
+ if buf.count(NUL) == BLOCKSIZE:
1287
+ raise EOFHeaderError("end of file header")
1288
+
1289
+ chksum = nti(buf[148:156])
1290
+ if chksum not in calc_chksums(buf):
1291
+ raise InvalidHeaderError("bad checksum")
1292
+
1293
+ obj = cls()
1294
+ obj.name = nts(buf[0:100], encoding, errors)
1295
+ obj.mode = nti(buf[100:108])
1296
+ obj.uid = nti(buf[108:116])
1297
+ obj.gid = nti(buf[116:124])
1298
+ obj.size = nti(buf[124:136])
1299
+ obj.mtime = nti(buf[136:148])
1300
+ obj.chksum = chksum
1301
+ obj.type = buf[156:157]
1302
+ obj.linkname = nts(buf[157:257], encoding, errors)
1303
+ obj.uname = nts(buf[265:297], encoding, errors)
1304
+ obj.gname = nts(buf[297:329], encoding, errors)
1305
+ obj.devmajor = nti(buf[329:337])
1306
+ obj.devminor = nti(buf[337:345])
1307
+ prefix = nts(buf[345:500], encoding, errors)
1308
+
1309
+ # Old V7 tar format represents a directory as a regular
1310
+ # file with a trailing slash.
1311
+ if obj.type == AREGTYPE and obj.name.endswith("/"):
1312
+ obj.type = DIRTYPE
1313
+
1314
+ # The old GNU sparse format occupies some of the unused
1315
+ # space in the buffer for up to 4 sparse structures.
1316
+ # Save them for later processing in _proc_sparse().
1317
+ if obj.type == GNUTYPE_SPARSE:
1318
+ pos = 386
1319
+ structs = []
1320
+ for i in range(4):
1321
+ try:
1322
+ offset = nti(buf[pos:pos + 12])
1323
+ numbytes = nti(buf[pos + 12:pos + 24])
1324
+ except ValueError:
1325
+ break
1326
+ structs.append((offset, numbytes))
1327
+ pos += 24
1328
+ isextended = bool(buf[482])
1329
+ origsize = nti(buf[483:495])
1330
+ obj._sparse_structs = (structs, isextended, origsize)
1331
+
1332
+ # Remove redundant slashes from directories.
1333
+ if obj.isdir():
1334
+ obj.name = obj.name.rstrip("/")
1335
+
1336
+ # Reconstruct a ustar longname.
1337
+ if prefix and obj.type not in GNU_TYPES:
1338
+ obj.name = prefix + "/" + obj.name
1339
+ return obj
1340
+
1341
+ @classmethod
1342
+ def fromtarfile(cls, tarfile):
1343
+ """Return the next TarInfo object from TarFile object
1344
+ tarfile.
1345
+ """
1346
+ buf = tarfile.fileobj.read(BLOCKSIZE)
1347
+ obj = cls.frombuf(buf, tarfile.encoding, tarfile.errors)
1348
+ obj.offset = tarfile.fileobj.tell() - BLOCKSIZE
1349
+ return obj._proc_member(tarfile)
1350
+
1351
+ #--------------------------------------------------------------------------
1352
+ # The following are methods that are called depending on the type of a
1353
+ # member. The entry point is _proc_member() which can be overridden in a
1354
+ # subclass to add custom _proc_*() methods. A _proc_*() method MUST
1355
+ # implement the following
1356
+ # operations:
1357
+ # 1. Set self.offset_data to the position where the data blocks begin,
1358
+ # if there is data that follows.
1359
+ # 2. Set tarfile.offset to the position where the next member's header will
1360
+ # begin.
1361
+ # 3. Return self or another valid TarInfo object.
1362
+ def _proc_member(self, tarfile):
1363
+ """Choose the right processing method depending on
1364
+ the type and call it.
1365
+ """
1366
+ if self.type in (GNUTYPE_LONGNAME, GNUTYPE_LONGLINK):
1367
+ return self._proc_gnulong(tarfile)
1368
+ elif self.type == GNUTYPE_SPARSE:
1369
+ return self._proc_sparse(tarfile)
1370
+ elif self.type in (XHDTYPE, XGLTYPE, SOLARIS_XHDTYPE):
1371
+ return self._proc_pax(tarfile)
1372
+ else:
1373
+ return self._proc_builtin(tarfile)
1374
+
1375
+ def _proc_builtin(self, tarfile):
1376
+ """Process a builtin type or an unknown type which
1377
+ will be treated as a regular file.
1378
+ """
1379
+ self.offset_data = tarfile.fileobj.tell()
1380
+ offset = self.offset_data
1381
+ if self.isreg() or self.type not in SUPPORTED_TYPES:
1382
+ # Skip the following data blocks.
1383
+ offset += self._block(self.size)
1384
+ tarfile.offset = offset
1385
+
1386
+ # Patch the TarInfo object with saved global
1387
+ # header information.
1388
+ self._apply_pax_info(tarfile.pax_headers, tarfile.encoding, tarfile.errors)
1389
+
1390
+ # Remove redundant slashes from directories. This is to be consistent
1391
+ # with frombuf().
1392
+ if self.isdir():
1393
+ self.name = self.name.rstrip("/")
1394
+
1395
+ return self
1396
+
1397
+ def _proc_gnulong(self, tarfile):
1398
+ """Process the blocks that hold a GNU longname
1399
+ or longlink member.
1400
+ """
1401
+ buf = tarfile.fileobj.read(self._block(self.size))
1402
+
1403
+ # Fetch the next header and process it.
1404
+ try:
1405
+ next = self.fromtarfile(tarfile)
1406
+ except HeaderError as e:
1407
+ raise SubsequentHeaderError(str(e)) from None
1408
+
1409
+ # Patch the TarInfo object from the next header with
1410
+ # the longname information.
1411
+ next.offset = self.offset
1412
+ if self.type == GNUTYPE_LONGNAME:
1413
+ next.name = nts(buf, tarfile.encoding, tarfile.errors)
1414
+ elif self.type == GNUTYPE_LONGLINK:
1415
+ next.linkname = nts(buf, tarfile.encoding, tarfile.errors)
1416
+
1417
+ # Remove redundant slashes from directories. This is to be consistent
1418
+ # with frombuf().
1419
+ if next.isdir():
1420
+ next.name = next.name.removesuffix("/")
1421
+
1422
+ return next
1423
+
1424
+ def _proc_sparse(self, tarfile):
1425
+ """Process a GNU sparse header plus extra headers.
1426
+ """
1427
+ # We already collected some sparse structures in frombuf().
1428
+ structs, isextended, origsize = self._sparse_structs
1429
+ del self._sparse_structs
1430
+
1431
+ # Collect sparse structures from extended header blocks.
1432
+ while isextended:
1433
+ buf = tarfile.fileobj.read(BLOCKSIZE)
1434
+ pos = 0
1435
+ for i in range(21):
1436
+ try:
1437
+ offset = nti(buf[pos:pos + 12])
1438
+ numbytes = nti(buf[pos + 12:pos + 24])
1439
+ except ValueError:
1440
+ break
1441
+ if offset and numbytes:
1442
+ structs.append((offset, numbytes))
1443
+ pos += 24
1444
+ isextended = bool(buf[504])
1445
+ self.sparse = structs
1446
+
1447
+ self.offset_data = tarfile.fileobj.tell()
1448
+ tarfile.offset = self.offset_data + self._block(self.size)
1449
+ self.size = origsize
1450
+ return self
1451
+
1452
+ def _proc_pax(self, tarfile):
1453
+ """Process an extended or global header as described in
1454
+ POSIX.1-2008.
1455
+ """
1456
+ # Read the header information.
1457
+ buf = tarfile.fileobj.read(self._block(self.size))
1458
+
1459
+ # A pax header stores supplemental information for either
1460
+ # the following file (extended) or all following files
1461
+ # (global).
1462
+ if self.type == XGLTYPE:
1463
+ pax_headers = tarfile.pax_headers
1464
+ else:
1465
+ pax_headers = tarfile.pax_headers.copy()
1466
+
1467
+ # Parse pax header information. A record looks like that:
1468
+ # "%d %s=%s\n" % (length, keyword, value). length is the size
1469
+ # of the complete record including the length field itself and
1470
+ # the newline.
1471
+ pos = 0
1472
+ encoding = None
1473
+ raw_headers = []
1474
+ while len(buf) > pos and buf[pos] != 0x00:
1475
+ if not (match := _header_length_prefix_re.match(buf, pos)):
1476
+ raise InvalidHeaderError("invalid header")
1477
+ try:
1478
+ length = int(match.group(1))
1479
+ except ValueError:
1480
+ raise InvalidHeaderError("invalid header")
1481
+ # Headers must be at least 5 bytes, shortest being '5 x=\n'.
1482
+ # Value is allowed to be empty.
1483
+ if length < 5:
1484
+ raise InvalidHeaderError("invalid header")
1485
+ if pos + length > len(buf):
1486
+ raise InvalidHeaderError("invalid header")
1487
+
1488
+ header_value_end_offset = match.start(1) + length - 1 # Last byte of the header
1489
+ keyword_and_value = buf[match.end(1) + 1:header_value_end_offset]
1490
+ raw_keyword, equals, raw_value = keyword_and_value.partition(b"=")
1491
+
1492
+ # Check the framing of the header. The last character must be '\n' (0x0A)
1493
+ if not raw_keyword or equals != b"=" or buf[header_value_end_offset] != 0x0A:
1494
+ raise InvalidHeaderError("invalid header")
1495
+ raw_headers.append((length, raw_keyword, raw_value))
1496
+
1497
+ # Check if the pax header contains a hdrcharset field. This tells us
1498
+ # the encoding of the path, linkpath, uname and gname fields. Normally,
1499
+ # these fields are UTF-8 encoded but since POSIX.1-2008 tar
1500
+ # implementations are allowed to store them as raw binary strings if
1501
+ # the translation to UTF-8 fails. For the time being, we don't care about
1502
+ # anything other than "BINARY". The only other value that is currently
1503
+ # allowed by the standard is "ISO-IR 10646 2000 UTF-8" in other words UTF-8.
1504
+ # Note that we only follow the initial 'hdrcharset' setting to preserve
1505
+ # the initial behavior of the 'tarfile' module.
1506
+ if raw_keyword == b"hdrcharset" and encoding is None:
1507
+ if raw_value == b"BINARY":
1508
+ encoding = tarfile.encoding
1509
+ else: # This branch ensures only the first 'hdrcharset' header is used.
1510
+ encoding = "utf-8"
1511
+
1512
+ pos += length
1513
+
1514
+ # If no explicit hdrcharset is set, we use UTF-8 as a default.
1515
+ if encoding is None:
1516
+ encoding = "utf-8"
1517
+
1518
+ # After parsing the raw headers we can decode them to text.
1519
+ for length, raw_keyword, raw_value in raw_headers:
1520
+ # Normally, we could just use "utf-8" as the encoding and "strict"
1521
+ # as the error handler, but we better not take the risk. For
1522
+ # example, GNU tar <= 1.23 is known to store filenames it cannot
1523
+ # translate to UTF-8 as raw strings (unfortunately without a
1524
+ # hdrcharset=BINARY header).
1525
+ # We first try the strict standard encoding, and if that fails we
1526
+ # fall back on the user's encoding and error handler.
1527
+ keyword = self._decode_pax_field(raw_keyword, "utf-8", "utf-8",
1528
+ tarfile.errors)
1529
+ if keyword in PAX_NAME_FIELDS:
1530
+ value = self._decode_pax_field(raw_value, encoding, tarfile.encoding,
1531
+ tarfile.errors)
1532
+ else:
1533
+ value = self._decode_pax_field(raw_value, "utf-8", "utf-8",
1534
+ tarfile.errors)
1535
+
1536
+ pax_headers[keyword] = value
1537
+
1538
+ # Fetch the next header.
1539
+ try:
1540
+ next = self.fromtarfile(tarfile)
1541
+ except HeaderError as e:
1542
+ raise SubsequentHeaderError(str(e)) from None
1543
+
1544
+ # Process GNU sparse information.
1545
+ if "GNU.sparse.map" in pax_headers:
1546
+ # GNU extended sparse format version 0.1.
1547
+ self._proc_gnusparse_01(next, pax_headers)
1548
+
1549
+ elif "GNU.sparse.size" in pax_headers:
1550
+ # GNU extended sparse format version 0.0.
1551
+ self._proc_gnusparse_00(next, raw_headers)
1552
+
1553
+ elif pax_headers.get("GNU.sparse.major") == "1" and pax_headers.get("GNU.sparse.minor") == "0":
1554
+ # GNU extended sparse format version 1.0.
1555
+ self._proc_gnusparse_10(next, pax_headers, tarfile)
1556
+
1557
+ if self.type in (XHDTYPE, SOLARIS_XHDTYPE):
1558
+ # Patch the TarInfo object with the extended header info.
1559
+ next._apply_pax_info(pax_headers, tarfile.encoding, tarfile.errors)
1560
+ next.offset = self.offset
1561
+
1562
+ if "size" in pax_headers:
1563
+ # If the extended header replaces the size field,
1564
+ # we need to recalculate the offset where the next
1565
+ # header starts.
1566
+ offset = next.offset_data
1567
+ if next.isreg() or next.type not in SUPPORTED_TYPES:
1568
+ offset += next._block(next.size)
1569
+ tarfile.offset = offset
1570
+
1571
+ return next
1572
+
1573
+ def _proc_gnusparse_00(self, next, raw_headers):
1574
+ """Process a GNU tar extended sparse header, version 0.0.
1575
+ """
1576
+ offsets = []
1577
+ numbytes = []
1578
+ for _, keyword, value in raw_headers:
1579
+ if keyword == b"GNU.sparse.offset":
1580
+ try:
1581
+ offsets.append(int(value.decode()))
1582
+ except ValueError:
1583
+ raise InvalidHeaderError("invalid header")
1584
+
1585
+ elif keyword == b"GNU.sparse.numbytes":
1586
+ try:
1587
+ numbytes.append(int(value.decode()))
1588
+ except ValueError:
1589
+ raise InvalidHeaderError("invalid header")
1590
+
1591
+ next.sparse = list(zip(offsets, numbytes))
1592
+
1593
+ def _proc_gnusparse_01(self, next, pax_headers):
1594
+ """Process a GNU tar extended sparse header, version 0.1.
1595
+ """
1596
+ sparse = [int(x) for x in pax_headers["GNU.sparse.map"].split(",")]
1597
+ next.sparse = list(zip(sparse[::2], sparse[1::2]))
1598
+
1599
+ def _proc_gnusparse_10(self, next, pax_headers, tarfile):
1600
+ """Process a GNU tar extended sparse header, version 1.0.
1601
+ """
1602
+ fields = None
1603
+ sparse = []
1604
+ buf = tarfile.fileobj.read(BLOCKSIZE)
1605
+ fields, buf = buf.split(b"\n", 1)
1606
+ fields = int(fields)
1607
+ while len(sparse) < fields * 2:
1608
+ if b"\n" not in buf:
1609
+ buf += tarfile.fileobj.read(BLOCKSIZE)
1610
+ number, buf = buf.split(b"\n", 1)
1611
+ sparse.append(int(number))
1612
+ next.offset_data = tarfile.fileobj.tell()
1613
+ next.sparse = list(zip(sparse[::2], sparse[1::2]))
1614
+
1615
+ def _apply_pax_info(self, pax_headers, encoding, errors):
1616
+ """Replace fields with supplemental information from a previous
1617
+ pax extended or global header.
1618
+ """
1619
+ for keyword, value in pax_headers.items():
1620
+ if keyword == "GNU.sparse.name":
1621
+ setattr(self, "path", value)
1622
+ elif keyword == "GNU.sparse.size":
1623
+ setattr(self, "size", int(value))
1624
+ elif keyword == "GNU.sparse.realsize":
1625
+ setattr(self, "size", int(value))
1626
+ elif keyword in PAX_FIELDS:
1627
+ if keyword in PAX_NUMBER_FIELDS:
1628
+ try:
1629
+ value = PAX_NUMBER_FIELDS[keyword](value)
1630
+ except ValueError:
1631
+ value = 0
1632
+ if keyword == "path":
1633
+ value = value.rstrip("/")
1634
+ setattr(self, keyword, value)
1635
+
1636
+ self.pax_headers = pax_headers.copy()
1637
+
1638
+ def _decode_pax_field(self, value, encoding, fallback_encoding, fallback_errors):
1639
+ """Decode a single field from a pax record.
1640
+ """
1641
+ try:
1642
+ return value.decode(encoding, "strict")
1643
+ except UnicodeDecodeError:
1644
+ return value.decode(fallback_encoding, fallback_errors)
1645
+
1646
+ def _block(self, count):
1647
+ """Round up a byte count by BLOCKSIZE and return it,
1648
+ e.g. _block(834) => 1024.
1649
+ """
1650
+ # Only non-negative offsets are allowed
1651
+ if count < 0:
1652
+ raise InvalidHeaderError("invalid offset")
1653
+ blocks, remainder = divmod(count, BLOCKSIZE)
1654
+ if remainder:
1655
+ blocks += 1
1656
+ return blocks * BLOCKSIZE
1657
+
1658
+ def isreg(self):
1659
+ 'Return True if the Tarinfo object is a regular file.'
1660
+ return self.type in REGULAR_TYPES
1661
+
1662
+ def isfile(self):
1663
+ 'Return True if the Tarinfo object is a regular file.'
1664
+ return self.isreg()
1665
+
1666
+ def isdir(self):
1667
+ 'Return True if it is a directory.'
1668
+ return self.type == DIRTYPE
1669
+
1670
+ def issym(self):
1671
+ 'Return True if it is a symbolic link.'
1672
+ return self.type == SYMTYPE
1673
+
1674
+ def islnk(self):
1675
+ 'Return True if it is a hard link.'
1676
+ return self.type == LNKTYPE
1677
+
1678
+ def ischr(self):
1679
+ 'Return True if it is a character device.'
1680
+ return self.type == CHRTYPE
1681
+
1682
+ def isblk(self):
1683
+ 'Return True if it is a block device.'
1684
+ return self.type == BLKTYPE
1685
+
1686
+ def isfifo(self):
1687
+ 'Return True if it is a FIFO.'
1688
+ return self.type == FIFOTYPE
1689
+
1690
+ def issparse(self):
1691
+ return self.sparse is not None
1692
+
1693
+ def isdev(self):
1694
+ 'Return True if it is one of character device, block device or FIFO.'
1695
+ return self.type in (CHRTYPE, BLKTYPE, FIFOTYPE)
1696
+ # class TarInfo
1697
+
1698
+ class TarFile(object):
1699
+ """The TarFile Class provides an interface to tar archives.
1700
+ """
1701
+
1702
+ debug = 0 # May be set from 0 (no msgs) to 3 (all msgs)
1703
+
1704
+ dereference = False # If true, add content of linked file to the
1705
+ # tar file, else the link.
1706
+
1707
+ ignore_zeros = False # If true, skips empty or invalid blocks and
1708
+ # continues processing.
1709
+
1710
+ errorlevel = 1 # If 0, fatal errors only appear in debug
1711
+ # messages (if debug >= 0). If > 0, errors
1712
+ # are passed to the caller as exceptions.
1713
+
1714
+ format = DEFAULT_FORMAT # The format to use when creating an archive.
1715
+
1716
+ encoding = ENCODING # Encoding for 8-bit character strings.
1717
+
1718
+ errors = None # Error handler for unicode conversion.
1719
+
1720
+ tarinfo = TarInfo # The default TarInfo class to use.
1721
+
1722
+ fileobject = ExFileObject # The file-object for extractfile().
1723
+
1724
+ extraction_filter = None # The default filter for extraction.
1725
+
1726
+ def __init__(self, name=None, mode="r", fileobj=None, format=None,
1727
+ tarinfo=None, dereference=None, ignore_zeros=None, encoding=None,
1728
+ errors="surrogateescape", pax_headers=None, debug=None,
1729
+ errorlevel=None, copybufsize=None, stream=False):
1730
+ """Open an (uncompressed) tar archive 'name'. 'mode' is either 'r' to
1731
+ read from an existing archive, 'a' to append data to an existing
1732
+ file or 'w' to create a new file overwriting an existing one. 'mode'
1733
+ defaults to 'r'.
1734
+ If 'fileobj' is given, it is used for reading or writing data. If it
1735
+ can be determined, 'mode' is overridden by 'fileobj's mode.
1736
+ 'fileobj' is not closed, when TarFile is closed.
1737
+ """
1738
+ modes = {"r": "rb", "a": "r+b", "w": "wb", "x": "xb"}
1739
+ if mode not in modes:
1740
+ raise ValueError("mode must be 'r', 'a', 'w' or 'x'")
1741
+ self.mode = mode
1742
+ self._mode = modes[mode]
1743
+
1744
+ if not fileobj:
1745
+ if self.mode == "a" and not os.path.exists(name):
1746
+ # Create nonexistent files in append mode.
1747
+ self.mode = "w"
1748
+ self._mode = "wb"
1749
+ fileobj = bltn_open(name, self._mode)
1750
+ self._extfileobj = False
1751
+ else:
1752
+ if (name is None and hasattr(fileobj, "name") and
1753
+ isinstance(fileobj.name, (str, bytes))):
1754
+ name = fileobj.name
1755
+ if hasattr(fileobj, "mode"):
1756
+ self._mode = fileobj.mode
1757
+ self._extfileobj = True
1758
+ self.name = os.path.abspath(name) if name else None
1759
+ self.fileobj = fileobj
1760
+
1761
+ self.stream = stream
1762
+
1763
+ # Init attributes.
1764
+ if format is not None:
1765
+ self.format = format
1766
+ if tarinfo is not None:
1767
+ self.tarinfo = tarinfo
1768
+ if dereference is not None:
1769
+ self.dereference = dereference
1770
+ if ignore_zeros is not None:
1771
+ self.ignore_zeros = ignore_zeros
1772
+ if encoding is not None:
1773
+ self.encoding = encoding
1774
+ self.errors = errors
1775
+
1776
+ if pax_headers is not None and self.format == PAX_FORMAT:
1777
+ self.pax_headers = pax_headers
1778
+ else:
1779
+ self.pax_headers = {}
1780
+
1781
+ if debug is not None:
1782
+ self.debug = debug
1783
+ if errorlevel is not None:
1784
+ self.errorlevel = errorlevel
1785
+
1786
+ # Init datastructures.
1787
+ self.copybufsize = copybufsize
1788
+ self.closed = False
1789
+ self.members = [] # list of members as TarInfo objects
1790
+ self._loaded = False # flag if all members have been read
1791
+ self.offset = self.fileobj.tell()
1792
+ # current position in the archive file
1793
+ self.inodes = {} # dictionary caching the inodes of
1794
+ # archive members already added
1795
+ self._unames = {} # Cached mappings of uid -> uname
1796
+ self._gnames = {} # Cached mappings of gid -> gname
1797
+
1798
+ try:
1799
+ if self.mode == "r":
1800
+ self.firstmember = None
1801
+ self.firstmember = self.next()
1802
+
1803
+ if self.mode == "a":
1804
+ # Move to the end of the archive,
1805
+ # before the first empty block.
1806
+ while True:
1807
+ self.fileobj.seek(self.offset)
1808
+ try:
1809
+ tarinfo = self.tarinfo.fromtarfile(self)
1810
+ self.members.append(tarinfo)
1811
+ except EOFHeaderError:
1812
+ self.fileobj.seek(self.offset)
1813
+ break
1814
+ except HeaderError as e:
1815
+ raise ReadError(str(e)) from None
1816
+
1817
+ if self.mode in ("a", "w", "x"):
1818
+ self._loaded = True
1819
+
1820
+ if self.pax_headers:
1821
+ buf = self.tarinfo.create_pax_global_header(self.pax_headers.copy())
1822
+ self.fileobj.write(buf)
1823
+ self.offset += len(buf)
1824
+ except:
1825
+ if not self._extfileobj:
1826
+ self.fileobj.close()
1827
+ self.closed = True
1828
+ raise
1829
+
1830
+ #--------------------------------------------------------------------------
1831
+ # Below are the classmethods which act as alternate constructors to the
1832
+ # TarFile class. The open() method is the only one that is needed for
1833
+ # public use; it is the "super"-constructor and is able to select an
1834
+ # adequate "sub"-constructor for a particular compression using the mapping
1835
+ # from OPEN_METH.
1836
+ #
1837
+ # This concept allows one to subclass TarFile without losing the comfort of
1838
+ # the super-constructor. A sub-constructor is registered and made available
1839
+ # by adding it to the mapping in OPEN_METH.
1840
+
1841
+ @classmethod
1842
+ def open(cls, name=None, mode="r", fileobj=None, bufsize=RECORDSIZE, **kwargs):
1843
+ """Open a tar archive for reading, writing or appending. Return
1844
+ an appropriate TarFile class.
1845
+
1846
+ mode:
1847
+ 'r' or 'r:*' open for reading with transparent compression
1848
+ 'r:' open for reading exclusively uncompressed
1849
+ 'r:gz' open for reading with gzip compression
1850
+ 'r:bz2' open for reading with bzip2 compression
1851
+ 'r:xz' open for reading with lzma compression
1852
+ 'r:zst' open for reading with zstd compression
1853
+ 'a' or 'a:' open for appending, creating the file if necessary
1854
+ 'w' or 'w:' open for writing without compression
1855
+ 'w:gz' open for writing with gzip compression
1856
+ 'w:bz2' open for writing with bzip2 compression
1857
+ 'w:xz' open for writing with lzma compression
1858
+ 'w:zst' open for writing with zstd compression
1859
+
1860
+ 'x' or 'x:' create a tarfile exclusively without compression, raise
1861
+ an exception if the file is already created
1862
+ 'x:gz' create a gzip compressed tarfile, raise an exception
1863
+ if the file is already created
1864
+ 'x:bz2' create a bzip2 compressed tarfile, raise an exception
1865
+ if the file is already created
1866
+ 'x:xz' create an lzma compressed tarfile, raise an exception
1867
+ if the file is already created
1868
+ 'x:zst' create a zstd compressed tarfile, raise an exception
1869
+ if the file is already created
1870
+
1871
+ 'r|*' open a stream of tar blocks with transparent compression
1872
+ 'r|' open an uncompressed stream of tar blocks for reading
1873
+ 'r|gz' open a gzip compressed stream of tar blocks
1874
+ 'r|bz2' open a bzip2 compressed stream of tar blocks
1875
+ 'r|xz' open an lzma compressed stream of tar blocks
1876
+ 'r|zst' open a zstd compressed stream of tar blocks
1877
+ 'w|' open an uncompressed stream for writing
1878
+ 'w|gz' open a gzip compressed stream for writing
1879
+ 'w|bz2' open a bzip2 compressed stream for writing
1880
+ 'w|xz' open an lzma compressed stream for writing
1881
+ 'w|zst' open a zstd compressed stream for writing
1882
+ """
1883
+
1884
+ if not name and not fileobj:
1885
+ raise ValueError("nothing to open")
1886
+
1887
+ if mode in ("r", "r:*"):
1888
+ # Find out which *open() is appropriate for opening the file.
1889
+ def not_compressed(comptype):
1890
+ return cls.OPEN_METH[comptype] == 'taropen'
1891
+ error_msgs = []
1892
+ for comptype in sorted(cls.OPEN_METH, key=not_compressed):
1893
+ func = getattr(cls, cls.OPEN_METH[comptype])
1894
+ if fileobj is not None:
1895
+ saved_pos = fileobj.tell()
1896
+ try:
1897
+ return func(name, "r", fileobj, **kwargs)
1898
+ except (ReadError, CompressionError) as e:
1899
+ error_msgs.append(f'- method {comptype}: {e!r}')
1900
+ if fileobj is not None:
1901
+ fileobj.seek(saved_pos)
1902
+ continue
1903
+ error_msgs_summary = '\n'.join(error_msgs)
1904
+ raise ReadError(f"file could not be opened successfully:\n{error_msgs_summary}")
1905
+
1906
+ elif ":" in mode:
1907
+ filemode, comptype = mode.split(":", 1)
1908
+ filemode = filemode or "r"
1909
+ comptype = comptype or "tar"
1910
+
1911
+ # Select the *open() function according to
1912
+ # given compression.
1913
+ if comptype in cls.OPEN_METH:
1914
+ func = getattr(cls, cls.OPEN_METH[comptype])
1915
+ else:
1916
+ raise CompressionError("unknown compression type %r" % comptype)
1917
+ return func(name, filemode, fileobj, **kwargs)
1918
+
1919
+ elif "|" in mode:
1920
+ filemode, comptype = mode.split("|", 1)
1921
+ filemode = filemode or "r"
1922
+ comptype = comptype or "tar"
1923
+
1924
+ if filemode not in ("r", "w"):
1925
+ raise ValueError("mode must be 'r' or 'w'")
1926
+ if "compresslevel" in kwargs and comptype not in ("gz", "bz2"):
1927
+ raise ValueError(
1928
+ "compresslevel is only valid for w|gz and w|bz2 modes"
1929
+ )
1930
+ if "preset" in kwargs and comptype not in ("xz",):
1931
+ raise ValueError("preset is only valid for w|xz mode")
1932
+
1933
+ compresslevel = kwargs.pop("compresslevel", 9)
1934
+ preset = kwargs.pop("preset", None)
1935
+ stream = _Stream(name, filemode, comptype, fileobj, bufsize,
1936
+ compresslevel, preset)
1937
+ try:
1938
+ t = cls(name, filemode, stream, **kwargs)
1939
+ except:
1940
+ stream.close()
1941
+ raise
1942
+ t._extfileobj = False
1943
+ return t
1944
+
1945
+ elif mode in ("a", "w", "x"):
1946
+ return cls.taropen(name, mode, fileobj, **kwargs)
1947
+
1948
+ raise ValueError("undiscernible mode")
1949
+
1950
+ @classmethod
1951
+ def taropen(cls, name, mode="r", fileobj=None, **kwargs):
1952
+ """Open uncompressed tar archive name for reading or writing.
1953
+ """
1954
+ if mode not in ("r", "a", "w", "x"):
1955
+ raise ValueError("mode must be 'r', 'a', 'w' or 'x'")
1956
+ return cls(name, mode, fileobj, **kwargs)
1957
+
1958
+ @classmethod
1959
+ def gzopen(cls, name, mode="r", fileobj=None, compresslevel=9, **kwargs):
1960
+ """Open gzip compressed tar archive name for reading or writing.
1961
+ Appending is not allowed.
1962
+ """
1963
+ if mode not in ("r", "w", "x"):
1964
+ raise ValueError("mode must be 'r', 'w' or 'x'")
1965
+
1966
+ try:
1967
+ from gzip import GzipFile
1968
+ except ImportError:
1969
+ raise CompressionError("gzip module is not available") from None
1970
+
1971
+ try:
1972
+ fileobj = GzipFile(name, mode + "b", compresslevel, fileobj)
1973
+ except OSError as e:
1974
+ if fileobj is not None and mode == 'r':
1975
+ raise ReadError("not a gzip file") from e
1976
+ raise
1977
+
1978
+ try:
1979
+ t = cls.taropen(name, mode, fileobj, **kwargs)
1980
+ except OSError as e:
1981
+ fileobj.close()
1982
+ if mode == 'r':
1983
+ raise ReadError("not a gzip file") from e
1984
+ raise
1985
+ except:
1986
+ fileobj.close()
1987
+ raise
1988
+ t._extfileobj = False
1989
+ return t
1990
+
1991
+ @classmethod
1992
+ def bz2open(cls, name, mode="r", fileobj=None, compresslevel=9, **kwargs):
1993
+ """Open bzip2 compressed tar archive name for reading or writing.
1994
+ Appending is not allowed.
1995
+ """
1996
+ if mode not in ("r", "w", "x"):
1997
+ raise ValueError("mode must be 'r', 'w' or 'x'")
1998
+
1999
+ try:
2000
+ from bz2 import BZ2File
2001
+ except ImportError:
2002
+ raise CompressionError("bz2 module is not available") from None
2003
+
2004
+ fileobj = BZ2File(fileobj or name, mode, compresslevel=compresslevel)
2005
+
2006
+ try:
2007
+ t = cls.taropen(name, mode, fileobj, **kwargs)
2008
+ except (OSError, EOFError) as e:
2009
+ fileobj.close()
2010
+ if mode == 'r':
2011
+ raise ReadError("not a bzip2 file") from e
2012
+ raise
2013
+ except:
2014
+ fileobj.close()
2015
+ raise
2016
+ t._extfileobj = False
2017
+ return t
2018
+
2019
+ @classmethod
2020
+ def xzopen(cls, name, mode="r", fileobj=None, preset=None, **kwargs):
2021
+ """Open lzma compressed tar archive name for reading or writing.
2022
+ Appending is not allowed.
2023
+ """
2024
+ if mode not in ("r", "w", "x"):
2025
+ raise ValueError("mode must be 'r', 'w' or 'x'")
2026
+
2027
+ try:
2028
+ from lzma import LZMAFile, LZMAError
2029
+ except ImportError:
2030
+ raise CompressionError("lzma module is not available") from None
2031
+
2032
+ fileobj = LZMAFile(fileobj or name, mode, preset=preset)
2033
+
2034
+ try:
2035
+ t = cls.taropen(name, mode, fileobj, **kwargs)
2036
+ except (LZMAError, EOFError) as e:
2037
+ fileobj.close()
2038
+ if mode == 'r':
2039
+ raise ReadError("not an lzma file") from e
2040
+ raise
2041
+ except:
2042
+ fileobj.close()
2043
+ raise
2044
+ t._extfileobj = False
2045
+ return t
2046
+
2047
+ @classmethod
2048
+ def zstopen(cls, name, mode="r", fileobj=None, level=None, options=None,
2049
+ zstd_dict=None, **kwargs):
2050
+ """Open zstd compressed tar archive name for reading or writing.
2051
+ Appending is not allowed.
2052
+ """
2053
+ if mode not in ("r", "w", "x"):
2054
+ raise ValueError("mode must be 'r', 'w' or 'x'")
2055
+
2056
+ try:
2057
+ from compression.zstd import ZstdFile, ZstdError
2058
+ except ImportError:
2059
+ raise CompressionError("compression.zstd module is not available") from None
2060
+
2061
+ fileobj = ZstdFile(
2062
+ fileobj or name,
2063
+ mode,
2064
+ level=level,
2065
+ options=options,
2066
+ zstd_dict=zstd_dict
2067
+ )
2068
+
2069
+ try:
2070
+ t = cls.taropen(name, mode, fileobj, **kwargs)
2071
+ except (ZstdError, EOFError) as e:
2072
+ fileobj.close()
2073
+ if mode == 'r':
2074
+ raise ReadError("not a zstd file") from e
2075
+ raise
2076
+ except Exception:
2077
+ fileobj.close()
2078
+ raise
2079
+ t._extfileobj = False
2080
+ return t
2081
+
2082
+ # All *open() methods are registered here.
2083
+ OPEN_METH = {
2084
+ "tar": "taropen", # uncompressed tar
2085
+ "gz": "gzopen", # gzip compressed tar
2086
+ "bz2": "bz2open", # bzip2 compressed tar
2087
+ "xz": "xzopen", # lzma compressed tar
2088
+ "zst": "zstopen", # zstd compressed tar
2089
+ }
2090
+
2091
+ #--------------------------------------------------------------------------
2092
+ # The public methods which TarFile provides:
2093
+
2094
+ def close(self):
2095
+ """Close the TarFile. In write-mode, two finishing zero blocks are
2096
+ appended to the archive.
2097
+ """
2098
+ if self.closed:
2099
+ return
2100
+
2101
+ self.closed = True
2102
+ try:
2103
+ if self.mode in ("a", "w", "x"):
2104
+ self.fileobj.write(NUL * (BLOCKSIZE * 2))
2105
+ self.offset += (BLOCKSIZE * 2)
2106
+ # fill up the end with zero-blocks
2107
+ # (like option -b20 for tar does)
2108
+ blocks, remainder = divmod(self.offset, RECORDSIZE)
2109
+ if remainder > 0:
2110
+ self.fileobj.write(NUL * (RECORDSIZE - remainder))
2111
+ finally:
2112
+ if not self._extfileobj:
2113
+ self.fileobj.close()
2114
+
2115
+ def getmember(self, name):
2116
+ """Return a TarInfo object for member 'name'. If 'name' can not be
2117
+ found in the archive, KeyError is raised. If a member occurs more
2118
+ than once in the archive, its last occurrence is assumed to be the
2119
+ most up-to-date version.
2120
+ """
2121
+ tarinfo = self._getmember(name.rstrip('/'))
2122
+ if tarinfo is None:
2123
+ raise KeyError("filename %r not found" % name)
2124
+ return tarinfo
2125
+
2126
+ def getmembers(self):
2127
+ """Return the members of the archive as a list of TarInfo objects. The
2128
+ list has the same order as the members in the archive.
2129
+ """
2130
+ self._check()
2131
+ if not self._loaded: # if we want to obtain a list of
2132
+ self._load() # all members, we first have to
2133
+ # scan the whole archive.
2134
+ return self.members
2135
+
2136
+ def getnames(self):
2137
+ """Return the members of the archive as a list of their names. It has
2138
+ the same order as the list returned by getmembers().
2139
+ """
2140
+ return [tarinfo.name for tarinfo in self.getmembers()]
2141
+
2142
+ def gettarinfo(self, name=None, arcname=None, fileobj=None):
2143
+ """Create a TarInfo object from the result of os.stat or equivalent
2144
+ on an existing file. The file is either named by 'name', or
2145
+ specified as a file object 'fileobj' with a file descriptor. If
2146
+ given, 'arcname' specifies an alternative name for the file in the
2147
+ archive, otherwise, the name is taken from the 'name' attribute of
2148
+ 'fileobj', or the 'name' argument. The name should be a text
2149
+ string.
2150
+ """
2151
+ self._check("awx")
2152
+
2153
+ # When fileobj is given, replace name by
2154
+ # fileobj's real name.
2155
+ if fileobj is not None:
2156
+ name = fileobj.name
2157
+
2158
+ # Building the name of the member in the archive.
2159
+ # Backward slashes are converted to forward slashes,
2160
+ # Absolute paths are turned to relative paths.
2161
+ if arcname is None:
2162
+ arcname = name
2163
+ drv, arcname = os.path.splitdrive(arcname)
2164
+ arcname = arcname.replace(os.sep, "/")
2165
+ arcname = arcname.lstrip("/")
2166
+
2167
+ # Now, fill the TarInfo object with
2168
+ # information specific for the file.
2169
+ tarinfo = self.tarinfo()
2170
+ tarinfo._tarfile = self # To be removed in 3.16.
2171
+
2172
+ # Use os.stat or os.lstat, depending on if symlinks shall be resolved.
2173
+ if fileobj is None:
2174
+ if not self.dereference:
2175
+ statres = os.lstat(name)
2176
+ else:
2177
+ statres = os.stat(name)
2178
+ else:
2179
+ statres = os.fstat(fileobj.fileno())
2180
+ linkname = ""
2181
+
2182
+ stmd = statres.st_mode
2183
+ if stat.S_ISREG(stmd):
2184
+ inode = (statres.st_ino, statres.st_dev)
2185
+ if not self.dereference and statres.st_nlink > 1 and \
2186
+ inode in self.inodes and arcname != self.inodes[inode]:
2187
+ # Is it a hardlink to an already
2188
+ # archived file?
2189
+ type = LNKTYPE
2190
+ linkname = self.inodes[inode]
2191
+ else:
2192
+ # The inode is added only if its valid.
2193
+ # For win32 it is always 0.
2194
+ type = REGTYPE
2195
+ if inode[0]:
2196
+ self.inodes[inode] = arcname
2197
+ elif stat.S_ISDIR(stmd):
2198
+ type = DIRTYPE
2199
+ elif stat.S_ISFIFO(stmd):
2200
+ type = FIFOTYPE
2201
+ elif stat.S_ISLNK(stmd):
2202
+ type = SYMTYPE
2203
+ linkname = os.readlink(name)
2204
+ elif stat.S_ISCHR(stmd):
2205
+ type = CHRTYPE
2206
+ elif stat.S_ISBLK(stmd):
2207
+ type = BLKTYPE
2208
+ else:
2209
+ return None
2210
+
2211
+ # Fill the TarInfo object with all
2212
+ # information we can get.
2213
+ tarinfo.name = arcname
2214
+ tarinfo.mode = stmd
2215
+ tarinfo.uid = statres.st_uid
2216
+ tarinfo.gid = statres.st_gid
2217
+ if type == REGTYPE:
2218
+ tarinfo.size = statres.st_size
2219
+ else:
2220
+ tarinfo.size = 0
2221
+ tarinfo.mtime = statres.st_mtime
2222
+ tarinfo.type = type
2223
+ tarinfo.linkname = linkname
2224
+
2225
+ # Calls to pwd.getpwuid() and grp.getgrgid() tend to be expensive. To
2226
+ # speed things up, cache the resolved usernames and group names.
2227
+ if pwd:
2228
+ if tarinfo.uid not in self._unames:
2229
+ try:
2230
+ self._unames[tarinfo.uid] = pwd.getpwuid(tarinfo.uid)[0]
2231
+ except KeyError:
2232
+ self._unames[tarinfo.uid] = ''
2233
+ tarinfo.uname = self._unames[tarinfo.uid]
2234
+ if grp:
2235
+ if tarinfo.gid not in self._gnames:
2236
+ try:
2237
+ self._gnames[tarinfo.gid] = grp.getgrgid(tarinfo.gid)[0]
2238
+ except KeyError:
2239
+ self._gnames[tarinfo.gid] = ''
2240
+ tarinfo.gname = self._gnames[tarinfo.gid]
2241
+
2242
+ if type in (CHRTYPE, BLKTYPE):
2243
+ if hasattr(os, "major") and hasattr(os, "minor"):
2244
+ tarinfo.devmajor = os.major(statres.st_rdev)
2245
+ tarinfo.devminor = os.minor(statres.st_rdev)
2246
+ return tarinfo
2247
+
2248
+ def list(self, verbose=True, *, members=None):
2249
+ """Print a table of contents to sys.stdout. If 'verbose' is False, only
2250
+ the names of the members are printed. If it is True, an 'ls -l'-like
2251
+ output is produced. 'members' is optional and must be a subset of the
2252
+ list returned by getmembers().
2253
+ """
2254
+ # Convert tarinfo type to stat type.
2255
+ type2mode = {REGTYPE: stat.S_IFREG, SYMTYPE: stat.S_IFLNK,
2256
+ FIFOTYPE: stat.S_IFIFO, CHRTYPE: stat.S_IFCHR,
2257
+ DIRTYPE: stat.S_IFDIR, BLKTYPE: stat.S_IFBLK}
2258
+ self._check()
2259
+
2260
+ if members is None:
2261
+ members = self
2262
+ for tarinfo in members:
2263
+ if verbose:
2264
+ if tarinfo.mode is None:
2265
+ _safe_print("??????????")
2266
+ else:
2267
+ modetype = type2mode.get(tarinfo.type, 0)
2268
+ _safe_print(stat.filemode(modetype | tarinfo.mode))
2269
+ _safe_print("%s/%s" % (tarinfo.uname or tarinfo.uid,
2270
+ tarinfo.gname or tarinfo.gid))
2271
+ if tarinfo.ischr() or tarinfo.isblk():
2272
+ _safe_print("%10s" %
2273
+ ("%d,%d" % (tarinfo.devmajor, tarinfo.devminor)))
2274
+ else:
2275
+ _safe_print("%10d" % tarinfo.size)
2276
+ if tarinfo.mtime is None:
2277
+ _safe_print("????-??-?? ??:??:??")
2278
+ else:
2279
+ _safe_print("%d-%02d-%02d %02d:%02d:%02d" \
2280
+ % time.localtime(tarinfo.mtime)[:6])
2281
+
2282
+ _safe_print(tarinfo.name + ("/" if tarinfo.isdir() else ""))
2283
+
2284
+ if verbose:
2285
+ if tarinfo.issym():
2286
+ _safe_print("-> " + tarinfo.linkname)
2287
+ if tarinfo.islnk():
2288
+ _safe_print("link to " + tarinfo.linkname)
2289
+ print()
2290
+
2291
+ def add(self, name, arcname=None, recursive=True, *, filter=None):
2292
+ """Add the file 'name' to the archive. 'name' may be any type of file
2293
+ (directory, fifo, symbolic link, etc.). If given, 'arcname'
2294
+ specifies an alternative name for the file in the archive.
2295
+ Directories are added recursively by default. This can be avoided by
2296
+ setting 'recursive' to False. 'filter' is a function
2297
+ that expects a TarInfo object argument and returns the changed
2298
+ TarInfo object, if it returns None the TarInfo object will be
2299
+ excluded from the archive.
2300
+ """
2301
+ self._check("awx")
2302
+
2303
+ if arcname is None:
2304
+ arcname = name
2305
+
2306
+ # Skip if somebody tries to archive the archive...
2307
+ if self.name is not None and os.path.abspath(name) == self.name:
2308
+ self._dbg(2, "tarfile: Skipped %r" % name)
2309
+ return
2310
+
2311
+ self._dbg(1, name)
2312
+
2313
+ # Create a TarInfo object from the file.
2314
+ tarinfo = self.gettarinfo(name, arcname)
2315
+
2316
+ if tarinfo is None:
2317
+ self._dbg(1, "tarfile: Unsupported type %r" % name)
2318
+ return
2319
+
2320
+ # Change or exclude the TarInfo object.
2321
+ if filter is not None:
2322
+ tarinfo = filter(tarinfo)
2323
+ if tarinfo is None:
2324
+ self._dbg(2, "tarfile: Excluded %r" % name)
2325
+ return
2326
+
2327
+ # Append the tar header and data to the archive.
2328
+ if tarinfo.isreg():
2329
+ with bltn_open(name, "rb") as f:
2330
+ self.addfile(tarinfo, f)
2331
+
2332
+ elif tarinfo.isdir():
2333
+ self.addfile(tarinfo)
2334
+ if recursive:
2335
+ for f in sorted(os.listdir(name)):
2336
+ self.add(os.path.join(name, f), os.path.join(arcname, f),
2337
+ recursive, filter=filter)
2338
+
2339
+ else:
2340
+ self.addfile(tarinfo)
2341
+
2342
+ def addfile(self, tarinfo, fileobj=None):
2343
+ """Add the TarInfo object 'tarinfo' to the archive. If 'tarinfo' represents
2344
+ a non zero-size regular file, the 'fileobj' argument should be a binary file,
2345
+ and tarinfo.size bytes are read from it and added to the archive.
2346
+ You can create TarInfo objects directly, or by using gettarinfo().
2347
+ """
2348
+ self._check("awx")
2349
+
2350
+ if fileobj is None and tarinfo.isreg() and tarinfo.size != 0:
2351
+ raise ValueError("fileobj not provided for non zero-size regular file")
2352
+
2353
+ tarinfo = copy.copy(tarinfo)
2354
+
2355
+ buf = tarinfo.tobuf(self.format, self.encoding, self.errors)
2356
+ self.fileobj.write(buf)
2357
+ self.offset += len(buf)
2358
+ bufsize=self.copybufsize
2359
+ # If there's data to follow, append it.
2360
+ if fileobj is not None:
2361
+ copyfileobj(fileobj, self.fileobj, tarinfo.size, bufsize=bufsize)
2362
+ blocks, remainder = divmod(tarinfo.size, BLOCKSIZE)
2363
+ if remainder > 0:
2364
+ self.fileobj.write(NUL * (BLOCKSIZE - remainder))
2365
+ blocks += 1
2366
+ self.offset += blocks * BLOCKSIZE
2367
+
2368
+ self.members.append(tarinfo)
2369
+
2370
+ def _get_filter_function(self, filter):
2371
+ if filter is None:
2372
+ filter = self.extraction_filter
2373
+ if filter is None:
2374
+ return data_filter
2375
+ if isinstance(filter, str):
2376
+ raise TypeError(
2377
+ 'String names are not supported for '
2378
+ + 'TarFile.extraction_filter. Use a function such as '
2379
+ + 'tarfile.data_filter directly.')
2380
+ return filter
2381
+ if callable(filter):
2382
+ return filter
2383
+ try:
2384
+ return _NAMED_FILTERS[filter]
2385
+ except KeyError:
2386
+ raise ValueError(f"filter {filter!r} not found") from None
2387
+
2388
+ def extractall(self, path=".", members=None, *, numeric_owner=False,
2389
+ filter=None):
2390
+ """Extract all members from the archive to the current working
2391
+ directory and set owner, modification time and permissions on
2392
+ directories afterwards. 'path' specifies a different directory
2393
+ to extract to. 'members' is optional and must be a subset of the
2394
+ list returned by getmembers(). If 'numeric_owner' is True, only
2395
+ the numbers for user/group names are used and not the names.
2396
+
2397
+ The 'filter' function will be called on each member just
2398
+ before extraction.
2399
+ It can return a changed TarInfo or None to skip the member.
2400
+ String names of common filters are accepted.
2401
+ """
2402
+ directories = []
2403
+
2404
+ filter_function = self._get_filter_function(filter)
2405
+ if members is None:
2406
+ members = self
2407
+
2408
+ for member in members:
2409
+ tarinfo, unfiltered = self._get_extract_tarinfo(
2410
+ member, filter_function, path)
2411
+ if tarinfo is None:
2412
+ continue
2413
+ if tarinfo.isdir():
2414
+ # For directories, delay setting attributes until later,
2415
+ # since permissions can interfere with extraction and
2416
+ # extracting contents can reset mtime.
2417
+ directories.append(unfiltered)
2418
+ self._extract_one(tarinfo, path, set_attrs=not tarinfo.isdir(),
2419
+ numeric_owner=numeric_owner,
2420
+ filter_function=filter_function)
2421
+
2422
+ # Reverse sort directories.
2423
+ directories.sort(key=lambda a: a.name, reverse=True)
2424
+
2425
+
2426
+ # Set correct owner, mtime and filemode on directories.
2427
+ for unfiltered in directories:
2428
+ try:
2429
+ # Need to re-apply any filter, to take the *current* filesystem
2430
+ # state into account.
2431
+ try:
2432
+ tarinfo = filter_function(unfiltered, path)
2433
+ except _FILTER_ERRORS as exc:
2434
+ self._log_no_directory_fixup(unfiltered, repr(exc))
2435
+ continue
2436
+ if tarinfo is None:
2437
+ self._log_no_directory_fixup(unfiltered,
2438
+ 'excluded by filter')
2439
+ continue
2440
+ dirpath = os.path.join(path, tarinfo.name)
2441
+ try:
2442
+ lstat = os.lstat(dirpath)
2443
+ except FileNotFoundError:
2444
+ self._log_no_directory_fixup(tarinfo, 'missing')
2445
+ continue
2446
+ if not stat.S_ISDIR(lstat.st_mode):
2447
+ # This is no longer a directory; presumably a later
2448
+ # member overwrote the entry.
2449
+ self._log_no_directory_fixup(tarinfo, 'not a directory')
2450
+ continue
2451
+ self.chown(tarinfo, dirpath, numeric_owner=numeric_owner)
2452
+ self.utime(tarinfo, dirpath)
2453
+ self.chmod(tarinfo, dirpath)
2454
+ except ExtractError as e:
2455
+ self._handle_nonfatal_error(e)
2456
+
2457
+ def _log_no_directory_fixup(self, member, reason):
2458
+ self._dbg(2, "tarfile: Not fixing up directory %r (%s)" %
2459
+ (member.name, reason))
2460
+
2461
+ def extract(self, member, path="", set_attrs=True, *, numeric_owner=False,
2462
+ filter=None):
2463
+ """Extract a member from the archive to the current working directory,
2464
+ using its full name. Its file information is extracted as accurately
2465
+ as possible. 'member' may be a filename or a TarInfo object. You can
2466
+ specify a different directory using 'path'. File attributes (owner,
2467
+ mtime, mode) are set unless 'set_attrs' is False. If 'numeric_owner'
2468
+ is True, only the numbers for user/group names are used and not
2469
+ the names.
2470
+
2471
+ The 'filter' function will be called before extraction.
2472
+ It can return a changed TarInfo or None to skip the member.
2473
+ String names of common filters are accepted.
2474
+ """
2475
+ filter_function = self._get_filter_function(filter)
2476
+ tarinfo, unfiltered = self._get_extract_tarinfo(
2477
+ member, filter_function, path)
2478
+ if tarinfo is not None:
2479
+ self._extract_one(tarinfo, path, set_attrs, numeric_owner)
2480
+
2481
+ def _get_extract_tarinfo(self, member, filter_function, path):
2482
+ """Get (filtered, unfiltered) TarInfos from *member*
2483
+
2484
+ *member* might be a string.
2485
+
2486
+ Return (None, None) if not found.
2487
+ """
2488
+
2489
+ if isinstance(member, str):
2490
+ unfiltered = self.getmember(member)
2491
+ else:
2492
+ unfiltered = member
2493
+
2494
+ filtered = None
2495
+ try:
2496
+ filtered = filter_function(unfiltered, path)
2497
+ except (OSError, UnicodeEncodeError, FilterError) as e:
2498
+ self._handle_fatal_error(e)
2499
+ except ExtractError as e:
2500
+ self._handle_nonfatal_error(e)
2501
+ if filtered is None:
2502
+ self._dbg(2, "tarfile: Excluded %r" % unfiltered.name)
2503
+ return None, None
2504
+
2505
+ # Prepare the link target for makelink().
2506
+ if filtered.islnk():
2507
+ filtered = copy.copy(filtered)
2508
+ filtered._link_target = os.path.join(path, filtered.linkname)
2509
+ return filtered, unfiltered
2510
+
2511
+ def _extract_one(self, tarinfo, path, set_attrs, numeric_owner,
2512
+ filter_function=None):
2513
+ """Extract from filtered tarinfo to disk.
2514
+
2515
+ filter_function is only used when extracting a *different*
2516
+ member (e.g. as fallback to creating a symlink)
2517
+ """
2518
+ self._check("r")
2519
+
2520
+ try:
2521
+ self._extract_member(tarinfo, os.path.join(path, tarinfo.name),
2522
+ set_attrs=set_attrs,
2523
+ numeric_owner=numeric_owner,
2524
+ filter_function=filter_function,
2525
+ extraction_root=path)
2526
+ except (OSError, UnicodeEncodeError) as e:
2527
+ self._handle_fatal_error(e)
2528
+ except ExtractError as e:
2529
+ self._handle_nonfatal_error(e)
2530
+
2531
+ def _handle_nonfatal_error(self, e):
2532
+ """Handle non-fatal error (ExtractError) according to errorlevel"""
2533
+ if self.errorlevel > 1:
2534
+ raise
2535
+ else:
2536
+ self._dbg(1, "tarfile: %s" % e)
2537
+
2538
+ def _handle_fatal_error(self, e):
2539
+ """Handle "fatal" error according to self.errorlevel"""
2540
+ if self.errorlevel > 0:
2541
+ raise
2542
+ elif isinstance(e, OSError):
2543
+ if e.filename is None:
2544
+ self._dbg(1, "tarfile: %s" % e.strerror)
2545
+ else:
2546
+ self._dbg(1, "tarfile: %s %r" % (e.strerror, e.filename))
2547
+ else:
2548
+ self._dbg(1, "tarfile: %s %s" % (type(e).__name__, e))
2549
+
2550
+ def extractfile(self, member):
2551
+ """Extract a member from the archive as a file object. 'member' may be
2552
+ a filename or a TarInfo object. If 'member' is a regular file or
2553
+ a link, an io.BufferedReader object is returned. For all other
2554
+ existing members, None is returned. If 'member' does not appear
2555
+ in the archive, KeyError is raised.
2556
+ """
2557
+ self._check("r")
2558
+
2559
+ if isinstance(member, str):
2560
+ tarinfo = self.getmember(member)
2561
+ else:
2562
+ tarinfo = member
2563
+
2564
+ if tarinfo.isreg() or tarinfo.type not in SUPPORTED_TYPES:
2565
+ # Members with unknown types are treated as regular files.
2566
+ return self.fileobject(self, tarinfo)
2567
+
2568
+ elif tarinfo.islnk() or tarinfo.issym():
2569
+ if isinstance(self.fileobj, _Stream):
2570
+ # A small but ugly workaround for the case that someone tries
2571
+ # to extract a (sym)link as a file-object from a non-seekable
2572
+ # stream of tar blocks.
2573
+ raise StreamError("cannot extract (sym)link as file object")
2574
+ else:
2575
+ # A (sym)link's file object is its target's file object.
2576
+ return self.extractfile(self._find_link_target(tarinfo))
2577
+ else:
2578
+ # If there's no data associated with the member (directory, chrdev,
2579
+ # blkdev, etc.), return None instead of a file object.
2580
+ return None
2581
+
2582
+ def _extract_member(self, tarinfo, targetpath, set_attrs=True,
2583
+ numeric_owner=False, *, filter_function=None,
2584
+ extraction_root=None):
2585
+ """Extract the filtered TarInfo object tarinfo to a physical
2586
+ file called targetpath.
2587
+
2588
+ filter_function is only used when extracting a *different*
2589
+ member (e.g. as fallback to creating a symlink)
2590
+ """
2591
+ # Fetch the TarInfo object for the given name
2592
+ # and build the destination pathname, replacing
2593
+ # forward slashes to platform specific separators.
2594
+ targetpath = targetpath.rstrip("/")
2595
+ targetpath = targetpath.replace("/", os.sep)
2596
+
2597
+ # Create all upper directories.
2598
+ upperdirs = os.path.dirname(targetpath)
2599
+ if upperdirs and not os.path.exists(upperdirs):
2600
+ # Create directories that are not part of the archive with
2601
+ # default permissions.
2602
+ os.makedirs(upperdirs, exist_ok=True)
2603
+
2604
+ if tarinfo.islnk() or tarinfo.issym():
2605
+ self._dbg(1, "%s -> %s" % (tarinfo.name, tarinfo.linkname))
2606
+ else:
2607
+ self._dbg(1, tarinfo.name)
2608
+
2609
+ if tarinfo.isreg():
2610
+ self.makefile(tarinfo, targetpath)
2611
+ elif tarinfo.isdir():
2612
+ self.makedir(tarinfo, targetpath)
2613
+ elif tarinfo.isfifo():
2614
+ self.makefifo(tarinfo, targetpath)
2615
+ elif tarinfo.ischr() or tarinfo.isblk():
2616
+ self.makedev(tarinfo, targetpath)
2617
+ elif tarinfo.islnk() or tarinfo.issym():
2618
+ self.makelink_with_filter(
2619
+ tarinfo, targetpath,
2620
+ filter_function=filter_function,
2621
+ extraction_root=extraction_root)
2622
+ elif tarinfo.type not in SUPPORTED_TYPES:
2623
+ self.makeunknown(tarinfo, targetpath)
2624
+ else:
2625
+ self.makefile(tarinfo, targetpath)
2626
+
2627
+ if set_attrs:
2628
+ self.chown(tarinfo, targetpath, numeric_owner)
2629
+ if not tarinfo.issym():
2630
+ self.chmod(tarinfo, targetpath)
2631
+ self.utime(tarinfo, targetpath)
2632
+
2633
+ #--------------------------------------------------------------------------
2634
+ # Below are the different file methods. They are called via
2635
+ # _extract_member() when extract() is called. They can be replaced in a
2636
+ # subclass to implement other functionality.
2637
+
2638
+ def makedir(self, tarinfo, targetpath):
2639
+ """Make a directory called targetpath.
2640
+ """
2641
+ try:
2642
+ if tarinfo.mode is None:
2643
+ # Use the system's default mode
2644
+ os.mkdir(targetpath)
2645
+ else:
2646
+ # Use a safe mode for the directory, the real mode is set
2647
+ # later in _extract_member().
2648
+ os.mkdir(targetpath, 0o700)
2649
+ except FileExistsError:
2650
+ if not os.path.isdir(targetpath):
2651
+ raise
2652
+
2653
+ def makefile(self, tarinfo, targetpath):
2654
+ """Make a file called targetpath.
2655
+ """
2656
+ source = self.fileobj
2657
+ source.seek(tarinfo.offset_data)
2658
+ bufsize = self.copybufsize
2659
+ with bltn_open(targetpath, "wb") as target:
2660
+ if tarinfo.sparse is not None:
2661
+ for offset, size in tarinfo.sparse:
2662
+ target.seek(offset)
2663
+ copyfileobj(source, target, size, ReadError, bufsize)
2664
+ target.seek(tarinfo.size)
2665
+ target.truncate()
2666
+ else:
2667
+ copyfileobj(source, target, tarinfo.size, ReadError, bufsize)
2668
+
2669
+ def makeunknown(self, tarinfo, targetpath):
2670
+ """Make a file from a TarInfo object with an unknown type
2671
+ at targetpath.
2672
+ """
2673
+ self.makefile(tarinfo, targetpath)
2674
+ self._dbg(1, "tarfile: Unknown file type %r, " \
2675
+ "extracted as regular file." % tarinfo.type)
2676
+
2677
+ def makefifo(self, tarinfo, targetpath):
2678
+ """Make a fifo called targetpath.
2679
+ """
2680
+ if hasattr(os, "mkfifo"):
2681
+ os.mkfifo(targetpath)
2682
+ else:
2683
+ raise ExtractError("fifo not supported by system")
2684
+
2685
+ def makedev(self, tarinfo, targetpath):
2686
+ """Make a character or block device called targetpath.
2687
+ """
2688
+ if not hasattr(os, "mknod") or not hasattr(os, "makedev"):
2689
+ raise ExtractError("special devices not supported by system")
2690
+
2691
+ mode = tarinfo.mode
2692
+ if mode is None:
2693
+ # Use mknod's default
2694
+ mode = 0o600
2695
+ if tarinfo.isblk():
2696
+ mode |= stat.S_IFBLK
2697
+ else:
2698
+ mode |= stat.S_IFCHR
2699
+
2700
+ os.mknod(targetpath, mode,
2701
+ os.makedev(tarinfo.devmajor, tarinfo.devminor))
2702
+
2703
+ def makelink(self, tarinfo, targetpath):
2704
+ return self.makelink_with_filter(tarinfo, targetpath, None, None)
2705
+
2706
+ def makelink_with_filter(self, tarinfo, targetpath,
2707
+ filter_function, extraction_root):
2708
+ """Make a (symbolic) link called targetpath. If it cannot be created
2709
+ (platform limitation), we try to make a copy of the referenced file
2710
+ instead of a link.
2711
+
2712
+ filter_function is only used when extracting a *different*
2713
+ member (e.g. as fallback to creating a link).
2714
+ """
2715
+ keyerror_to_extracterror = False
2716
+ try:
2717
+ # For systems that support symbolic and hard links.
2718
+ if tarinfo.issym():
2719
+ if os.path.lexists(targetpath):
2720
+ # Avoid FileExistsError on following os.symlink.
2721
+ os.unlink(targetpath)
2722
+ os.symlink(tarinfo.linkname, targetpath)
2723
+ return
2724
+ else:
2725
+ if os.path.exists(tarinfo._link_target):
2726
+ if os.path.lexists(targetpath):
2727
+ # Avoid FileExistsError on following os.link.
2728
+ os.unlink(targetpath)
2729
+ os.link(tarinfo._link_target, targetpath)
2730
+ return
2731
+ except symlink_exception:
2732
+ keyerror_to_extracterror = True
2733
+
2734
+ try:
2735
+ unfiltered = self._find_link_target(tarinfo)
2736
+ except KeyError:
2737
+ if keyerror_to_extracterror:
2738
+ raise ExtractError(
2739
+ "unable to resolve link inside archive") from None
2740
+ else:
2741
+ raise
2742
+
2743
+ if filter_function is None:
2744
+ filtered = unfiltered
2745
+ else:
2746
+ if extraction_root is None:
2747
+ raise ExtractError(
2748
+ "makelink_with_filter: if filter_function is not None, "
2749
+ + "extraction_root must also not be None")
2750
+ try:
2751
+ filtered = filter_function(unfiltered, extraction_root)
2752
+ except _FILTER_ERRORS as cause:
2753
+ raise LinkFallbackError(tarinfo, unfiltered.name) from cause
2754
+ if filtered is not None:
2755
+ self._extract_member(filtered, targetpath,
2756
+ filter_function=filter_function,
2757
+ extraction_root=extraction_root)
2758
+
2759
+ def chown(self, tarinfo, targetpath, numeric_owner):
2760
+ """Set owner of targetpath according to tarinfo. If numeric_owner
2761
+ is True, use .gid/.uid instead of .gname/.uname. If numeric_owner
2762
+ is False, fall back to .gid/.uid when the search based on name
2763
+ fails.
2764
+ """
2765
+ if hasattr(os, "geteuid") and os.geteuid() == 0:
2766
+ # We have to be root to do so.
2767
+ g = tarinfo.gid
2768
+ u = tarinfo.uid
2769
+ if not numeric_owner:
2770
+ try:
2771
+ if grp and tarinfo.gname:
2772
+ g = grp.getgrnam(tarinfo.gname)[2]
2773
+ except KeyError:
2774
+ pass
2775
+ try:
2776
+ if pwd and tarinfo.uname:
2777
+ u = pwd.getpwnam(tarinfo.uname)[2]
2778
+ except KeyError:
2779
+ pass
2780
+ if g is None:
2781
+ g = -1
2782
+ if u is None:
2783
+ u = -1
2784
+ try:
2785
+ if tarinfo.issym() and hasattr(os, "lchown"):
2786
+ os.lchown(targetpath, u, g)
2787
+ else:
2788
+ os.chown(targetpath, u, g)
2789
+ except (OSError, OverflowError) as e:
2790
+ # OverflowError can be raised if an ID doesn't fit in 'id_t'
2791
+ raise ExtractError("could not change owner") from e
2792
+
2793
+ def chmod(self, tarinfo, targetpath):
2794
+ """Set file permissions of targetpath according to tarinfo.
2795
+ """
2796
+ if tarinfo.mode is None:
2797
+ return
2798
+ try:
2799
+ os.chmod(targetpath, tarinfo.mode)
2800
+ except OSError as e:
2801
+ raise ExtractError("could not change mode") from e
2802
+
2803
+ def utime(self, tarinfo, targetpath):
2804
+ """Set modification time of targetpath according to tarinfo.
2805
+ """
2806
+ mtime = tarinfo.mtime
2807
+ if mtime is None:
2808
+ return
2809
+ if not hasattr(os, 'utime'):
2810
+ return
2811
+ try:
2812
+ os.utime(targetpath, (mtime, mtime))
2813
+ except OSError as e:
2814
+ raise ExtractError("could not change modification time") from e
2815
+
2816
+ #--------------------------------------------------------------------------
2817
+ def next(self):
2818
+ """Return the next member of the archive as a TarInfo object, when
2819
+ TarFile is opened for reading. Return None if there is no more
2820
+ available.
2821
+ """
2822
+ self._check("ra")
2823
+ if self.firstmember is not None:
2824
+ m = self.firstmember
2825
+ self.firstmember = None
2826
+ return m
2827
+
2828
+ # Advance the file pointer.
2829
+ if self.offset != self.fileobj.tell():
2830
+ if self.offset == 0:
2831
+ return None
2832
+ self.fileobj.seek(self.offset - 1)
2833
+ if not self.fileobj.read(1):
2834
+ raise ReadError("unexpected end of data")
2835
+
2836
+ # Read the next block.
2837
+ tarinfo = None
2838
+ while True:
2839
+ try:
2840
+ tarinfo = self.tarinfo.fromtarfile(self)
2841
+ except EOFHeaderError as e:
2842
+ if self.ignore_zeros:
2843
+ self._dbg(2, "0x%X: %s" % (self.offset, e))
2844
+ self.offset += BLOCKSIZE
2845
+ continue
2846
+ except InvalidHeaderError as e:
2847
+ if self.ignore_zeros:
2848
+ self._dbg(2, "0x%X: %s" % (self.offset, e))
2849
+ self.offset += BLOCKSIZE
2850
+ continue
2851
+ elif self.offset == 0:
2852
+ raise ReadError(str(e)) from None
2853
+ except EmptyHeaderError:
2854
+ if self.offset == 0:
2855
+ raise ReadError("empty file") from None
2856
+ except TruncatedHeaderError as e:
2857
+ if self.offset == 0:
2858
+ raise ReadError(str(e)) from None
2859
+ except SubsequentHeaderError as e:
2860
+ raise ReadError(str(e)) from None
2861
+ except Exception as e:
2862
+ try:
2863
+ import zlib
2864
+ if isinstance(e, zlib.error):
2865
+ raise ReadError(f'zlib error: {e}') from None
2866
+ else:
2867
+ raise e
2868
+ except ImportError:
2869
+ raise e
2870
+ break
2871
+
2872
+ if tarinfo is not None:
2873
+ # if streaming the file we do not want to cache the tarinfo
2874
+ if not self.stream:
2875
+ self.members.append(tarinfo)
2876
+ else:
2877
+ self._loaded = True
2878
+
2879
+ return tarinfo
2880
+
2881
+ #--------------------------------------------------------------------------
2882
+ # Little helper methods:
2883
+
2884
+ def _getmember(self, name, tarinfo=None, normalize=False):
2885
+ """Find an archive member by name from bottom to top.
2886
+ If tarinfo is given, it is used as the starting point.
2887
+ """
2888
+ # Ensure that all members have been loaded.
2889
+ members = self.getmembers()
2890
+
2891
+ # Limit the member search list up to tarinfo.
2892
+ skipping = False
2893
+ if tarinfo is not None:
2894
+ try:
2895
+ index = members.index(tarinfo)
2896
+ except ValueError:
2897
+ # The given starting point might be a (modified) copy.
2898
+ # We'll later skip members until we find an equivalent.
2899
+ skipping = True
2900
+ else:
2901
+ # Happy fast path
2902
+ members = members[:index]
2903
+
2904
+ if normalize:
2905
+ name = os.path.normpath(name)
2906
+
2907
+ for member in reversed(members):
2908
+ if skipping:
2909
+ if tarinfo.offset == member.offset:
2910
+ skipping = False
2911
+ continue
2912
+ if normalize:
2913
+ member_name = os.path.normpath(member.name)
2914
+ else:
2915
+ member_name = member.name
2916
+
2917
+ if name == member_name:
2918
+ return member
2919
+
2920
+ if skipping:
2921
+ # Starting point was not found
2922
+ raise ValueError(tarinfo)
2923
+
2924
+ def _load(self):
2925
+ """Read through the entire archive file and look for readable
2926
+ members. This should not run if the file is set to stream.
2927
+ """
2928
+ if not self.stream:
2929
+ while self.next() is not None:
2930
+ pass
2931
+ self._loaded = True
2932
+
2933
+ def _check(self, mode=None):
2934
+ """Check if TarFile is still open, and if the operation's mode
2935
+ corresponds to TarFile's mode.
2936
+ """
2937
+ if self.closed:
2938
+ raise OSError("%s is closed" % self.__class__.__name__)
2939
+ if mode is not None and self.mode not in mode:
2940
+ raise OSError("bad operation for mode %r" % self.mode)
2941
+
2942
+ def _find_link_target(self, tarinfo):
2943
+ """Find the target member of a symlink or hardlink member in the
2944
+ archive.
2945
+ """
2946
+ if tarinfo.issym():
2947
+ # Always search the entire archive.
2948
+ linkname = "/".join(filter(None, (os.path.dirname(tarinfo.name), tarinfo.linkname)))
2949
+ limit = None
2950
+ else:
2951
+ # Search the archive before the link, because a hard link is
2952
+ # just a reference to an already archived file.
2953
+ linkname = tarinfo.linkname
2954
+ limit = tarinfo
2955
+
2956
+ member = self._getmember(linkname, tarinfo=limit, normalize=True)
2957
+ if member is None:
2958
+ raise KeyError("linkname %r not found" % linkname)
2959
+ return member
2960
+
2961
+ def __iter__(self):
2962
+ """Provide an iterator object.
2963
+ """
2964
+ if self._loaded:
2965
+ yield from self.members
2966
+ return
2967
+
2968
+ # Yield items using TarFile's next() method.
2969
+ # When all members have been read, set TarFile as _loaded.
2970
+ index = 0
2971
+ # Fix for SF #1100429: Under rare circumstances it can
2972
+ # happen that getmembers() is called during iteration,
2973
+ # which will have already exhausted the next() method.
2974
+ if self.firstmember is not None:
2975
+ tarinfo = self.next()
2976
+ index += 1
2977
+ yield tarinfo
2978
+
2979
+ while True:
2980
+ if index < len(self.members):
2981
+ tarinfo = self.members[index]
2982
+ elif not self._loaded:
2983
+ tarinfo = self.next()
2984
+ if not tarinfo:
2985
+ self._loaded = True
2986
+ return
2987
+ else:
2988
+ return
2989
+ index += 1
2990
+ yield tarinfo
2991
+
2992
+ def _dbg(self, level, msg):
2993
+ """Write debugging output to sys.stderr.
2994
+ """
2995
+ if level <= self.debug:
2996
+ print(msg, file=sys.stderr)
2997
+
2998
+ def __enter__(self):
2999
+ self._check()
3000
+ return self
3001
+
3002
+ def __exit__(self, type, value, traceback):
3003
+ if type is None:
3004
+ self.close()
3005
+ else:
3006
+ # An exception occurred. We must not call close() because
3007
+ # it would try to write end-of-archive blocks and padding.
3008
+ if not self._extfileobj:
3009
+ self.fileobj.close()
3010
+ self.closed = True
3011
+
3012
+ #--------------------
3013
+ # exported functions
3014
+ #--------------------
3015
+
3016
+ def is_tarfile(name):
3017
+ """Return True if name points to a tar archive that we
3018
+ are able to handle, else return False.
3019
+
3020
+ 'name' should be a string, file, or file-like object.
3021
+ """
3022
+ try:
3023
+ if hasattr(name, "read"):
3024
+ pos = name.tell()
3025
+ t = open(fileobj=name)
3026
+ name.seek(pos)
3027
+ else:
3028
+ t = open(name)
3029
+ t.close()
3030
+ return True
3031
+ except TarError:
3032
+ return False
3033
+
3034
+ open = TarFile.open
3035
+
3036
+
3037
+ def main():
3038
+ import argparse
3039
+
3040
+ description = 'A simple command-line interface for tarfile module.'
3041
+ parser = argparse.ArgumentParser(description=description, color=True)
3042
+ parser.add_argument('-v', '--verbose', action='store_true', default=False,
3043
+ help='Verbose output')
3044
+ parser.add_argument('--filter', metavar='<filtername>',
3045
+ choices=_NAMED_FILTERS,
3046
+ help='Filter for extraction')
3047
+
3048
+ group = parser.add_mutually_exclusive_group(required=True)
3049
+ group.add_argument('-l', '--list', metavar='<tarfile>',
3050
+ help='Show listing of a tarfile')
3051
+ group.add_argument('-e', '--extract', nargs='+',
3052
+ metavar=('<tarfile>', '<output_dir>'),
3053
+ help='Extract tarfile into target dir')
3054
+ group.add_argument('-c', '--create', nargs='+',
3055
+ metavar=('<name>', '<file>'),
3056
+ help='Create tarfile from sources')
3057
+ group.add_argument('-t', '--test', metavar='<tarfile>',
3058
+ help='Test if a tarfile is valid')
3059
+
3060
+ args = parser.parse_args()
3061
+
3062
+ if args.filter and args.extract is None:
3063
+ parser.exit(1, '--filter is only valid for extraction\n')
3064
+
3065
+ if args.test is not None:
3066
+ src = args.test
3067
+ if is_tarfile(src):
3068
+ with open(src, 'r') as tar:
3069
+ tar.getmembers()
3070
+ print(tar.getmembers(), file=sys.stderr)
3071
+ if args.verbose:
3072
+ print('{!r} is a tar archive.'.format(src))
3073
+ else:
3074
+ parser.exit(1, '{!r} is not a tar archive.\n'.format(src))
3075
+
3076
+ elif args.list is not None:
3077
+ src = args.list
3078
+ if is_tarfile(src):
3079
+ with TarFile.open(src, 'r:*') as tf:
3080
+ tf.list(verbose=args.verbose)
3081
+ else:
3082
+ parser.exit(1, '{!r} is not a tar archive.\n'.format(src))
3083
+
3084
+ elif args.extract is not None:
3085
+ if len(args.extract) == 1:
3086
+ src = args.extract[0]
3087
+ curdir = os.curdir
3088
+ elif len(args.extract) == 2:
3089
+ src, curdir = args.extract
3090
+ else:
3091
+ parser.exit(1, parser.format_help())
3092
+
3093
+ if is_tarfile(src):
3094
+ with TarFile.open(src, 'r:*') as tf:
3095
+ tf.extractall(path=curdir, filter=args.filter)
3096
+ if args.verbose:
3097
+ if curdir == '.':
3098
+ msg = '{!r} file is extracted.'.format(src)
3099
+ else:
3100
+ msg = ('{!r} file is extracted '
3101
+ 'into {!r} directory.').format(src, curdir)
3102
+ print(msg)
3103
+ else:
3104
+ parser.exit(1, '{!r} is not a tar archive.\n'.format(src))
3105
+
3106
+ elif args.create is not None:
3107
+ tar_name = args.create.pop(0)
3108
+ _, ext = os.path.splitext(tar_name)
3109
+ compressions = {
3110
+ # gz
3111
+ '.gz': 'gz',
3112
+ '.tgz': 'gz',
3113
+ # xz
3114
+ '.xz': 'xz',
3115
+ '.txz': 'xz',
3116
+ # bz2
3117
+ '.bz2': 'bz2',
3118
+ '.tbz': 'bz2',
3119
+ '.tbz2': 'bz2',
3120
+ '.tb2': 'bz2',
3121
+ # zstd
3122
+ '.zst': 'zst',
3123
+ '.tzst': 'zst',
3124
+ }
3125
+ tar_mode = 'w:' + compressions[ext] if ext in compressions else 'w'
3126
+ tar_files = args.create
3127
+
3128
+ with TarFile.open(tar_name, tar_mode) as tf:
3129
+ for file_name in tar_files:
3130
+ tf.add(file_name)
3131
+
3132
+ if args.verbose:
3133
+ print('{!r} file created.'.format(tar_name))
3134
+
3135
+ if __name__ == '__main__':
3136
+ main()