@agent-webui/ai-desk-python-darwin-x64 1.0.29-beta1

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 (1883) hide show
  1. package/README.md +3 -0
  2. package/package.json +20 -0
  3. package/python/bin/idle3.13 +7 -0
  4. package/python/bin/pip +8 -0
  5. package/python/bin/pip3 +8 -0
  6. package/python/bin/pip3.13 +8 -0
  7. package/python/bin/pydoc3.13 +7 -0
  8. package/python/bin/python3.13 +0 -0
  9. package/python/bin/python3.13-config +76 -0
  10. package/python/include/python3.13/Python.h +140 -0
  11. package/python/include/python3.13/abstract.h +921 -0
  12. package/python/include/python3.13/bltinmodule.h +14 -0
  13. package/python/include/python3.13/boolobject.h +54 -0
  14. package/python/include/python3.13/bytearrayobject.h +44 -0
  15. package/python/include/python3.13/bytesobject.h +66 -0
  16. package/python/include/python3.13/ceval.h +145 -0
  17. package/python/include/python3.13/codecs.h +176 -0
  18. package/python/include/python3.13/compile.h +22 -0
  19. package/python/include/python3.13/complexobject.h +30 -0
  20. package/python/include/python3.13/cpython/abstract.h +87 -0
  21. package/python/include/python3.13/cpython/bytearrayobject.h +34 -0
  22. package/python/include/python3.13/cpython/bytesobject.h +37 -0
  23. package/python/include/python3.13/cpython/cellobject.h +44 -0
  24. package/python/include/python3.13/cpython/ceval.h +25 -0
  25. package/python/include/python3.13/cpython/classobject.h +71 -0
  26. package/python/include/python3.13/cpython/code.h +358 -0
  27. package/python/include/python3.13/cpython/compile.h +50 -0
  28. package/python/include/python3.13/cpython/complexobject.h +33 -0
  29. package/python/include/python3.13/cpython/context.h +74 -0
  30. package/python/include/python3.13/cpython/critical_section.h +134 -0
  31. package/python/include/python3.13/cpython/descrobject.h +62 -0
  32. package/python/include/python3.13/cpython/dictobject.h +102 -0
  33. package/python/include/python3.13/cpython/fileobject.h +16 -0
  34. package/python/include/python3.13/cpython/fileutils.h +8 -0
  35. package/python/include/python3.13/cpython/floatobject.h +27 -0
  36. package/python/include/python3.13/cpython/frameobject.h +35 -0
  37. package/python/include/python3.13/cpython/funcobject.h +184 -0
  38. package/python/include/python3.13/cpython/genobject.h +83 -0
  39. package/python/include/python3.13/cpython/import.h +25 -0
  40. package/python/include/python3.13/cpython/initconfig.h +274 -0
  41. package/python/include/python3.13/cpython/listobject.h +53 -0
  42. package/python/include/python3.13/cpython/lock.h +63 -0
  43. package/python/include/python3.13/cpython/longintrepr.h +146 -0
  44. package/python/include/python3.13/cpython/longobject.h +116 -0
  45. package/python/include/python3.13/cpython/memoryobject.h +50 -0
  46. package/python/include/python3.13/cpython/methodobject.h +66 -0
  47. package/python/include/python3.13/cpython/modsupport.h +26 -0
  48. package/python/include/python3.13/cpython/monitoring.h +250 -0
  49. package/python/include/python3.13/cpython/object.h +535 -0
  50. package/python/include/python3.13/cpython/objimpl.h +104 -0
  51. package/python/include/python3.13/cpython/odictobject.h +43 -0
  52. package/python/include/python3.13/cpython/picklebufobject.h +31 -0
  53. package/python/include/python3.13/cpython/pthread_stubs.h +105 -0
  54. package/python/include/python3.13/cpython/pyatomic.h +569 -0
  55. package/python/include/python3.13/cpython/pyatomic_gcc.h +551 -0
  56. package/python/include/python3.13/cpython/pyatomic_msc.h +1095 -0
  57. package/python/include/python3.13/cpython/pyatomic_std.h +976 -0
  58. package/python/include/python3.13/cpython/pyctype.h +39 -0
  59. package/python/include/python3.13/cpython/pydebug.h +38 -0
  60. package/python/include/python3.13/cpython/pyerrors.h +132 -0
  61. package/python/include/python3.13/cpython/pyfpe.h +15 -0
  62. package/python/include/python3.13/cpython/pyframe.h +45 -0
  63. package/python/include/python3.13/cpython/pyhash.h +47 -0
  64. package/python/include/python3.13/cpython/pylifecycle.h +92 -0
  65. package/python/include/python3.13/cpython/pymem.h +84 -0
  66. package/python/include/python3.13/cpython/pystate.h +277 -0
  67. package/python/include/python3.13/cpython/pystats.h +175 -0
  68. package/python/include/python3.13/cpython/pythonrun.h +96 -0
  69. package/python/include/python3.13/cpython/pythread.h +43 -0
  70. package/python/include/python3.13/cpython/pytime.h +27 -0
  71. package/python/include/python3.13/cpython/setobject.h +71 -0
  72. package/python/include/python3.13/cpython/sysmodule.h +22 -0
  73. package/python/include/python3.13/cpython/traceback.h +13 -0
  74. package/python/include/python3.13/cpython/tracemalloc.h +32 -0
  75. package/python/include/python3.13/cpython/tupleobject.h +38 -0
  76. package/python/include/python3.13/cpython/unicodeobject.h +703 -0
  77. package/python/include/python3.13/cpython/warnings.h +20 -0
  78. package/python/include/python3.13/cpython/weakrefobject.h +63 -0
  79. package/python/include/python3.13/critical_section.h +16 -0
  80. package/python/include/python3.13/datetime.h +267 -0
  81. package/python/include/python3.13/descrobject.h +100 -0
  82. package/python/include/python3.13/dictobject.h +108 -0
  83. package/python/include/python3.13/dynamic_annotations.h +499 -0
  84. package/python/include/python3.13/enumobject.h +17 -0
  85. package/python/include/python3.13/errcode.h +45 -0
  86. package/python/include/python3.13/exports.h +108 -0
  87. package/python/include/python3.13/fileobject.h +41 -0
  88. package/python/include/python3.13/fileutils.h +62 -0
  89. package/python/include/python3.13/floatobject.h +54 -0
  90. package/python/include/python3.13/frameobject.h +20 -0
  91. package/python/include/python3.13/genericaliasobject.h +14 -0
  92. package/python/include/python3.13/import.h +103 -0
  93. package/python/include/python3.13/internal/mimalloc/mimalloc/atomic.h +392 -0
  94. package/python/include/python3.13/internal/mimalloc/mimalloc/internal.h +969 -0
  95. package/python/include/python3.13/internal/mimalloc/mimalloc/prim.h +329 -0
  96. package/python/include/python3.13/internal/mimalloc/mimalloc/track.h +147 -0
  97. package/python/include/python3.13/internal/mimalloc/mimalloc/types.h +721 -0
  98. package/python/include/python3.13/internal/mimalloc/mimalloc.h +565 -0
  99. package/python/include/python3.13/internal/pycore_abstract.h +61 -0
  100. package/python/include/python3.13/internal/pycore_asdl.h +112 -0
  101. package/python/include/python3.13/internal/pycore_ast.h +926 -0
  102. package/python/include/python3.13/internal/pycore_ast_state.h +268 -0
  103. package/python/include/python3.13/internal/pycore_atexit.h +67 -0
  104. package/python/include/python3.13/internal/pycore_backoff.h +145 -0
  105. package/python/include/python3.13/internal/pycore_bitutils.h +186 -0
  106. package/python/include/python3.13/internal/pycore_blocks_output_buffer.h +321 -0
  107. package/python/include/python3.13/internal/pycore_brc.h +74 -0
  108. package/python/include/python3.13/internal/pycore_bytes_methods.h +82 -0
  109. package/python/include/python3.13/internal/pycore_bytesobject.h +152 -0
  110. package/python/include/python3.13/internal/pycore_call.h +205 -0
  111. package/python/include/python3.13/internal/pycore_capsule.h +17 -0
  112. package/python/include/python3.13/internal/pycore_cell.h +48 -0
  113. package/python/include/python3.13/internal/pycore_ceval.h +305 -0
  114. package/python/include/python3.13/internal/pycore_ceval_state.h +137 -0
  115. package/python/include/python3.13/internal/pycore_code.h +603 -0
  116. package/python/include/python3.13/internal/pycore_codecs.h +86 -0
  117. package/python/include/python3.13/internal/pycore_compile.h +118 -0
  118. package/python/include/python3.13/internal/pycore_complexobject.h +25 -0
  119. package/python/include/python3.13/internal/pycore_condvar.h +93 -0
  120. package/python/include/python3.13/internal/pycore_context.h +61 -0
  121. package/python/include/python3.13/internal/pycore_critical_section.h +233 -0
  122. package/python/include/python3.13/internal/pycore_crossinterp.h +340 -0
  123. package/python/include/python3.13/internal/pycore_descrobject.h +28 -0
  124. package/python/include/python3.13/internal/pycore_dict.h +340 -0
  125. package/python/include/python3.13/internal/pycore_dict_state.h +32 -0
  126. package/python/include/python3.13/internal/pycore_dtoa.h +75 -0
  127. package/python/include/python3.13/internal/pycore_emscripten_signal.h +30 -0
  128. package/python/include/python3.13/internal/pycore_emscripten_trampoline.h +81 -0
  129. package/python/include/python3.13/internal/pycore_exceptions.h +40 -0
  130. package/python/include/python3.13/internal/pycore_faulthandler.h +99 -0
  131. package/python/include/python3.13/internal/pycore_fileutils.h +335 -0
  132. package/python/include/python3.13/internal/pycore_fileutils_windows.h +98 -0
  133. package/python/include/python3.13/internal/pycore_floatobject.h +62 -0
  134. package/python/include/python3.13/internal/pycore_flowgraph.h +40 -0
  135. package/python/include/python3.13/internal/pycore_format.h +27 -0
  136. package/python/include/python3.13/internal/pycore_frame.h +370 -0
  137. package/python/include/python3.13/internal/pycore_freelist.h +153 -0
  138. package/python/include/python3.13/internal/pycore_function.h +55 -0
  139. package/python/include/python3.13/internal/pycore_gc.h +365 -0
  140. package/python/include/python3.13/internal/pycore_genobject.h +32 -0
  141. package/python/include/python3.13/internal/pycore_getopt.h +22 -0
  142. package/python/include/python3.13/internal/pycore_gil.h +66 -0
  143. package/python/include/python3.13/internal/pycore_global_objects.h +105 -0
  144. package/python/include/python3.13/internal/pycore_global_objects_fini_generated.h +1554 -0
  145. package/python/include/python3.13/internal/pycore_global_strings.h +814 -0
  146. package/python/include/python3.13/internal/pycore_hamt.h +134 -0
  147. package/python/include/python3.13/internal/pycore_hashtable.h +150 -0
  148. package/python/include/python3.13/internal/pycore_identifier.h +20 -0
  149. package/python/include/python3.13/internal/pycore_import.h +213 -0
  150. package/python/include/python3.13/internal/pycore_importdl.h +139 -0
  151. package/python/include/python3.13/internal/pycore_initconfig.h +200 -0
  152. package/python/include/python3.13/internal/pycore_instruction_sequence.h +73 -0
  153. package/python/include/python3.13/internal/pycore_instruments.h +75 -0
  154. package/python/include/python3.13/internal/pycore_interp.h +423 -0
  155. package/python/include/python3.13/internal/pycore_intrinsics.h +51 -0
  156. package/python/include/python3.13/internal/pycore_jit.h +25 -0
  157. package/python/include/python3.13/internal/pycore_list.h +66 -0
  158. package/python/include/python3.13/internal/pycore_llist.h +106 -0
  159. package/python/include/python3.13/internal/pycore_lock.h +241 -0
  160. package/python/include/python3.13/internal/pycore_long.h +310 -0
  161. package/python/include/python3.13/internal/pycore_memoryobject.h +20 -0
  162. package/python/include/python3.13/internal/pycore_mimalloc.h +69 -0
  163. package/python/include/python3.13/internal/pycore_modsupport.h +107 -0
  164. package/python/include/python3.13/internal/pycore_moduleobject.h +56 -0
  165. package/python/include/python3.13/internal/pycore_namespace.h +21 -0
  166. package/python/include/python3.13/internal/pycore_object.h +867 -0
  167. package/python/include/python3.13/internal/pycore_object_alloc.h +71 -0
  168. package/python/include/python3.13/internal/pycore_object_stack.h +97 -0
  169. package/python/include/python3.13/internal/pycore_object_state.h +41 -0
  170. package/python/include/python3.13/internal/pycore_obmalloc.h +702 -0
  171. package/python/include/python3.13/internal/pycore_obmalloc_init.h +66 -0
  172. package/python/include/python3.13/internal/pycore_opcode_metadata.h +1922 -0
  173. package/python/include/python3.13/internal/pycore_opcode_utils.h +73 -0
  174. package/python/include/python3.13/internal/pycore_optimizer.h +272 -0
  175. package/python/include/python3.13/internal/pycore_parking_lot.h +97 -0
  176. package/python/include/python3.13/internal/pycore_parser.h +95 -0
  177. package/python/include/python3.13/internal/pycore_pathconfig.h +26 -0
  178. package/python/include/python3.13/internal/pycore_pyarena.h +68 -0
  179. package/python/include/python3.13/internal/pycore_pyatomic_ft_wrappers.h +165 -0
  180. package/python/include/python3.13/internal/pycore_pybuffer.h +21 -0
  181. package/python/include/python3.13/internal/pycore_pyerrors.h +190 -0
  182. package/python/include/python3.13/internal/pycore_pyhash.h +107 -0
  183. package/python/include/python3.13/internal/pycore_pylifecycle.h +136 -0
  184. package/python/include/python3.13/internal/pycore_pymath.h +205 -0
  185. package/python/include/python3.13/internal/pycore_pymem.h +161 -0
  186. package/python/include/python3.13/internal/pycore_pymem_init.h +103 -0
  187. package/python/include/python3.13/internal/pycore_pystate.h +299 -0
  188. package/python/include/python3.13/internal/pycore_pystats.h +21 -0
  189. package/python/include/python3.13/internal/pycore_pythonrun.h +39 -0
  190. package/python/include/python3.13/internal/pycore_pythread.h +172 -0
  191. package/python/include/python3.13/internal/pycore_qsbr.h +173 -0
  192. package/python/include/python3.13/internal/pycore_range.h +21 -0
  193. package/python/include/python3.13/internal/pycore_runtime.h +410 -0
  194. package/python/include/python3.13/internal/pycore_runtime_init.h +329 -0
  195. package/python/include/python3.13/internal/pycore_runtime_init_generated.h +1551 -0
  196. package/python/include/python3.13/internal/pycore_semaphore.h +67 -0
  197. package/python/include/python3.13/internal/pycore_setobject.h +39 -0
  198. package/python/include/python3.13/internal/pycore_signal.h +108 -0
  199. package/python/include/python3.13/internal/pycore_sliceobject.h +20 -0
  200. package/python/include/python3.13/internal/pycore_stackref.h +195 -0
  201. package/python/include/python3.13/internal/pycore_strhex.h +39 -0
  202. package/python/include/python3.13/internal/pycore_structseq.h +40 -0
  203. package/python/include/python3.13/internal/pycore_symtable.h +204 -0
  204. package/python/include/python3.13/internal/pycore_sysmodule.h +38 -0
  205. package/python/include/python3.13/internal/pycore_time.h +337 -0
  206. package/python/include/python3.13/internal/pycore_token.h +106 -0
  207. package/python/include/python3.13/internal/pycore_traceback.h +106 -0
  208. package/python/include/python3.13/internal/pycore_tracemalloc.h +170 -0
  209. package/python/include/python3.13/internal/pycore_tstate.h +46 -0
  210. package/python/include/python3.13/internal/pycore_tuple.h +35 -0
  211. package/python/include/python3.13/internal/pycore_typeobject.h +245 -0
  212. package/python/include/python3.13/internal/pycore_typevarobject.h +27 -0
  213. package/python/include/python3.13/internal/pycore_ucnhash.h +36 -0
  214. package/python/include/python3.13/internal/pycore_unicodeobject.h +351 -0
  215. package/python/include/python3.13/internal/pycore_unicodeobject_generated.h +2980 -0
  216. package/python/include/python3.13/internal/pycore_unionobject.h +25 -0
  217. package/python/include/python3.13/internal/pycore_uop_ids.h +295 -0
  218. package/python/include/python3.13/internal/pycore_uop_metadata.h +1010 -0
  219. package/python/include/python3.13/internal/pycore_warnings.h +31 -0
  220. package/python/include/python3.13/internal/pycore_weakref.h +133 -0
  221. package/python/include/python3.13/intrcheck.h +23 -0
  222. package/python/include/python3.13/iterobject.h +24 -0
  223. package/python/include/python3.13/listobject.h +55 -0
  224. package/python/include/python3.13/lock.h +16 -0
  225. package/python/include/python3.13/longobject.h +114 -0
  226. package/python/include/python3.13/marshal.h +31 -0
  227. package/python/include/python3.13/memoryobject.h +34 -0
  228. package/python/include/python3.13/methodobject.h +137 -0
  229. package/python/include/python3.13/modsupport.h +146 -0
  230. package/python/include/python3.13/moduleobject.h +122 -0
  231. package/python/include/python3.13/monitoring.h +18 -0
  232. package/python/include/python3.13/object.h +1280 -0
  233. package/python/include/python3.13/objimpl.h +211 -0
  234. package/python/include/python3.13/opcode.h +42 -0
  235. package/python/include/python3.13/opcode_ids.h +244 -0
  236. package/python/include/python3.13/osdefs.h +57 -0
  237. package/python/include/python3.13/osmodule.h +17 -0
  238. package/python/include/python3.13/patchlevel.h +35 -0
  239. package/python/include/python3.13/py_curses.h +117 -0
  240. package/python/include/python3.13/pyatomic.h +16 -0
  241. package/python/include/python3.13/pybuffer.h +145 -0
  242. package/python/include/python3.13/pycapsule.h +58 -0
  243. package/python/include/python3.13/pyconfig.h +2033 -0
  244. package/python/include/python3.13/pydtrace.h +59 -0
  245. package/python/include/python3.13/pyerrors.h +335 -0
  246. package/python/include/python3.13/pyexpat.h +62 -0
  247. package/python/include/python3.13/pyframe.h +26 -0
  248. package/python/include/python3.13/pyhash.h +59 -0
  249. package/python/include/python3.13/pylifecycle.h +80 -0
  250. package/python/include/python3.13/pymacconfig.h +91 -0
  251. package/python/include/python3.13/pymacro.h +199 -0
  252. package/python/include/python3.13/pymath.h +62 -0
  253. package/python/include/python3.13/pymem.h +110 -0
  254. package/python/include/python3.13/pyport.h +633 -0
  255. package/python/include/python3.13/pystate.h +132 -0
  256. package/python/include/python3.13/pystats.h +26 -0
  257. package/python/include/python3.13/pystrcmp.h +23 -0
  258. package/python/include/python3.13/pystrtod.h +37 -0
  259. package/python/include/python3.13/pythonrun.h +49 -0
  260. package/python/include/python3.13/pythread.h +131 -0
  261. package/python/include/python3.13/pytypedefs.h +30 -0
  262. package/python/include/python3.13/rangeobject.h +27 -0
  263. package/python/include/python3.13/setobject.h +49 -0
  264. package/python/include/python3.13/sliceobject.h +69 -0
  265. package/python/include/python3.13/structmember.h +56 -0
  266. package/python/include/python3.13/structseq.h +46 -0
  267. package/python/include/python3.13/sysmodule.h +44 -0
  268. package/python/include/python3.13/traceback.h +26 -0
  269. package/python/include/python3.13/tupleobject.h +46 -0
  270. package/python/include/python3.13/typeslots.h +88 -0
  271. package/python/include/python3.13/unicodeobject.h +1021 -0
  272. package/python/include/python3.13/warnings.h +45 -0
  273. package/python/include/python3.13/weakrefobject.h +46 -0
  274. package/python/lib/itcl4.3.5/itcl.tcl +151 -0
  275. package/python/lib/itcl4.3.5/itclConfig.sh +67 -0
  276. package/python/lib/itcl4.3.5/itclHullCmds.tcl +562 -0
  277. package/python/lib/itcl4.3.5/itclWidget.tcl +447 -0
  278. package/python/lib/itcl4.3.5/libitcl4.3.5.dylib +0 -0
  279. package/python/lib/itcl4.3.5/libitclstub.a +0 -0
  280. package/python/lib/itcl4.3.5/libitclstub4.3.5.a +0 -0
  281. package/python/lib/itcl4.3.5/libtcl9itcl4.3.5.dylib +0 -0
  282. package/python/lib/itcl4.3.5/pkgIndex.tcl +14 -0
  283. package/python/lib/libpython3.13.dylib +0 -0
  284. package/python/lib/libtcl9.0.dylib +0 -0
  285. package/python/lib/libtcl9tk9.0.dylib +0 -0
  286. package/python/lib/pkgconfig/python-3.13-embed.pc +13 -0
  287. package/python/lib/pkgconfig/python-3.13.pc +13 -0
  288. package/python/lib/python3.13/LICENSE.txt +277 -0
  289. package/python/lib/python3.13/__future__.py +147 -0
  290. package/python/lib/python3.13/__hello__.py +16 -0
  291. package/python/lib/python3.13/__phello__/__init__.py +7 -0
  292. package/python/lib/python3.13/__phello__/spam.py +7 -0
  293. package/python/lib/python3.13/_aix_support.py +108 -0
  294. package/python/lib/python3.13/_android_support.py +192 -0
  295. package/python/lib/python3.13/_apple_support.py +66 -0
  296. package/python/lib/python3.13/_collections_abc.py +1182 -0
  297. package/python/lib/python3.13/_colorize.py +119 -0
  298. package/python/lib/python3.13/_compat_pickle.py +251 -0
  299. package/python/lib/python3.13/_compression.py +162 -0
  300. package/python/lib/python3.13/_ios_support.py +71 -0
  301. package/python/lib/python3.13/_markupbase.py +396 -0
  302. package/python/lib/python3.13/_opcode_metadata.py +343 -0
  303. package/python/lib/python3.13/_osx_support.py +579 -0
  304. package/python/lib/python3.13/_py_abc.py +147 -0
  305. package/python/lib/python3.13/_pydatetime.py +2639 -0
  306. package/python/lib/python3.13/_pydecimal.py +6351 -0
  307. package/python/lib/python3.13/_pyio.py +2704 -0
  308. package/python/lib/python3.13/_pylong.py +363 -0
  309. package/python/lib/python3.13/_pyrepl/__init__.py +19 -0
  310. package/python/lib/python3.13/_pyrepl/__main__.py +10 -0
  311. package/python/lib/python3.13/_pyrepl/_minimal_curses.py +68 -0
  312. package/python/lib/python3.13/_pyrepl/_threading_handler.py +74 -0
  313. package/python/lib/python3.13/_pyrepl/base_eventqueue.py +110 -0
  314. package/python/lib/python3.13/_pyrepl/commands.py +492 -0
  315. package/python/lib/python3.13/_pyrepl/completing_reader.py +295 -0
  316. package/python/lib/python3.13/_pyrepl/console.py +229 -0
  317. package/python/lib/python3.13/_pyrepl/curses.py +33 -0
  318. package/python/lib/python3.13/_pyrepl/fancy_termios.py +82 -0
  319. package/python/lib/python3.13/_pyrepl/historical_reader.py +419 -0
  320. package/python/lib/python3.13/_pyrepl/input.py +114 -0
  321. package/python/lib/python3.13/_pyrepl/keymap.py +213 -0
  322. package/python/lib/python3.13/_pyrepl/main.py +59 -0
  323. package/python/lib/python3.13/_pyrepl/mypy.ini +29 -0
  324. package/python/lib/python3.13/_pyrepl/pager.py +175 -0
  325. package/python/lib/python3.13/_pyrepl/reader.py +764 -0
  326. package/python/lib/python3.13/_pyrepl/readline.py +599 -0
  327. package/python/lib/python3.13/_pyrepl/simple_interact.py +180 -0
  328. package/python/lib/python3.13/_pyrepl/trace.py +21 -0
  329. package/python/lib/python3.13/_pyrepl/types.py +10 -0
  330. package/python/lib/python3.13/_pyrepl/unix_console.py +852 -0
  331. package/python/lib/python3.13/_pyrepl/unix_eventqueue.py +76 -0
  332. package/python/lib/python3.13/_pyrepl/utils.py +83 -0
  333. package/python/lib/python3.13/_pyrepl/windows_console.py +692 -0
  334. package/python/lib/python3.13/_pyrepl/windows_eventqueue.py +42 -0
  335. package/python/lib/python3.13/_sitebuiltins.py +91 -0
  336. package/python/lib/python3.13/_strptime.py +800 -0
  337. package/python/lib/python3.13/_sysconfigdata__darwin_darwin.py +1028 -0
  338. package/python/lib/python3.13/_threading_local.py +120 -0
  339. package/python/lib/python3.13/_weakrefset.py +205 -0
  340. package/python/lib/python3.13/abc.py +188 -0
  341. package/python/lib/python3.13/antigravity.py +17 -0
  342. package/python/lib/python3.13/argparse.py +2690 -0
  343. package/python/lib/python3.13/ast.py +1865 -0
  344. package/python/lib/python3.13/asyncio/__init__.py +47 -0
  345. package/python/lib/python3.13/asyncio/__main__.py +207 -0
  346. package/python/lib/python3.13/asyncio/base_events.py +2075 -0
  347. package/python/lib/python3.13/asyncio/base_futures.py +67 -0
  348. package/python/lib/python3.13/asyncio/base_subprocess.py +319 -0
  349. package/python/lib/python3.13/asyncio/base_tasks.py +94 -0
  350. package/python/lib/python3.13/asyncio/constants.py +41 -0
  351. package/python/lib/python3.13/asyncio/coroutines.py +109 -0
  352. package/python/lib/python3.13/asyncio/events.py +882 -0
  353. package/python/lib/python3.13/asyncio/exceptions.py +62 -0
  354. package/python/lib/python3.13/asyncio/format_helpers.py +84 -0
  355. package/python/lib/python3.13/asyncio/futures.py +425 -0
  356. package/python/lib/python3.13/asyncio/locks.py +617 -0
  357. package/python/lib/python3.13/asyncio/log.py +7 -0
  358. package/python/lib/python3.13/asyncio/mixins.py +21 -0
  359. package/python/lib/python3.13/asyncio/proactor_events.py +896 -0
  360. package/python/lib/python3.13/asyncio/protocols.py +216 -0
  361. package/python/lib/python3.13/asyncio/queues.py +307 -0
  362. package/python/lib/python3.13/asyncio/runners.py +216 -0
  363. package/python/lib/python3.13/asyncio/selector_events.py +1326 -0
  364. package/python/lib/python3.13/asyncio/sslproto.py +929 -0
  365. package/python/lib/python3.13/asyncio/staggered.py +174 -0
  366. package/python/lib/python3.13/asyncio/streams.py +787 -0
  367. package/python/lib/python3.13/asyncio/subprocess.py +229 -0
  368. package/python/lib/python3.13/asyncio/taskgroups.py +278 -0
  369. package/python/lib/python3.13/asyncio/tasks.py +1118 -0
  370. package/python/lib/python3.13/asyncio/threads.py +25 -0
  371. package/python/lib/python3.13/asyncio/timeouts.py +184 -0
  372. package/python/lib/python3.13/asyncio/transports.py +337 -0
  373. package/python/lib/python3.13/asyncio/trsock.py +98 -0
  374. package/python/lib/python3.13/asyncio/unix_events.py +1536 -0
  375. package/python/lib/python3.13/asyncio/windows_events.py +903 -0
  376. package/python/lib/python3.13/asyncio/windows_utils.py +173 -0
  377. package/python/lib/python3.13/base64.py +621 -0
  378. package/python/lib/python3.13/bdb.py +973 -0
  379. package/python/lib/python3.13/bisect.py +118 -0
  380. package/python/lib/python3.13/bz2.py +352 -0
  381. package/python/lib/python3.13/cProfile.py +197 -0
  382. package/python/lib/python3.13/calendar.py +813 -0
  383. package/python/lib/python3.13/cmd.py +409 -0
  384. package/python/lib/python3.13/code.py +386 -0
  385. package/python/lib/python3.13/codecs.py +1132 -0
  386. package/python/lib/python3.13/codeop.py +155 -0
  387. package/python/lib/python3.13/collections/__init__.py +1600 -0
  388. package/python/lib/python3.13/colorsys.py +166 -0
  389. package/python/lib/python3.13/compileall.py +470 -0
  390. package/python/lib/python3.13/concurrent/__init__.py +1 -0
  391. package/python/lib/python3.13/concurrent/futures/__init__.py +54 -0
  392. package/python/lib/python3.13/concurrent/futures/_base.py +654 -0
  393. package/python/lib/python3.13/concurrent/futures/process.py +862 -0
  394. package/python/lib/python3.13/concurrent/futures/thread.py +240 -0
  395. package/python/lib/python3.13/config-3.13-darwin/Makefile +3505 -0
  396. package/python/lib/python3.13/config-3.13-darwin/Setup +298 -0
  397. package/python/lib/python3.13/config-3.13-darwin/Setup.bootstrap +38 -0
  398. package/python/lib/python3.13/config-3.13-darwin/Setup.local +89 -0
  399. package/python/lib/python3.13/config-3.13-darwin/Setup.stdlib +181 -0
  400. package/python/lib/python3.13/config-3.13-darwin/config.c +260 -0
  401. package/python/lib/python3.13/config-3.13-darwin/config.c.in +71 -0
  402. package/python/lib/python3.13/config-3.13-darwin/install-sh +541 -0
  403. package/python/lib/python3.13/config-3.13-darwin/makesetup +341 -0
  404. package/python/lib/python3.13/config-3.13-darwin/python-config.py +76 -0
  405. package/python/lib/python3.13/config-3.13-darwin/python.o +0 -0
  406. package/python/lib/python3.13/configparser.py +1387 -0
  407. package/python/lib/python3.13/contextlib.py +814 -0
  408. package/python/lib/python3.13/contextvars.py +4 -0
  409. package/python/lib/python3.13/copy.py +306 -0
  410. package/python/lib/python3.13/copyreg.py +217 -0
  411. package/python/lib/python3.13/csv.py +513 -0
  412. package/python/lib/python3.13/ctypes/__init__.py +603 -0
  413. package/python/lib/python3.13/ctypes/_aix.py +327 -0
  414. package/python/lib/python3.13/ctypes/_endian.py +78 -0
  415. package/python/lib/python3.13/ctypes/macholib/README.ctypes +7 -0
  416. package/python/lib/python3.13/ctypes/macholib/__init__.py +9 -0
  417. package/python/lib/python3.13/ctypes/macholib/dyld.py +165 -0
  418. package/python/lib/python3.13/ctypes/macholib/dylib.py +42 -0
  419. package/python/lib/python3.13/ctypes/macholib/fetch_macholib +2 -0
  420. package/python/lib/python3.13/ctypes/macholib/fetch_macholib.bat +1 -0
  421. package/python/lib/python3.13/ctypes/macholib/framework.py +42 -0
  422. package/python/lib/python3.13/ctypes/util.py +388 -0
  423. package/python/lib/python3.13/ctypes/wintypes.py +202 -0
  424. package/python/lib/python3.13/curses/__init__.py +101 -0
  425. package/python/lib/python3.13/curses/ascii.py +99 -0
  426. package/python/lib/python3.13/curses/has_key.py +192 -0
  427. package/python/lib/python3.13/curses/panel.py +6 -0
  428. package/python/lib/python3.13/curses/textpad.py +204 -0
  429. package/python/lib/python3.13/dataclasses.py +1630 -0
  430. package/python/lib/python3.13/datetime.py +9 -0
  431. package/python/lib/python3.13/dbm/__init__.py +194 -0
  432. package/python/lib/python3.13/dbm/dumb.py +319 -0
  433. package/python/lib/python3.13/dbm/gnu.py +3 -0
  434. package/python/lib/python3.13/dbm/ndbm.py +3 -0
  435. package/python/lib/python3.13/dbm/sqlite3.py +144 -0
  436. package/python/lib/python3.13/decimal.py +109 -0
  437. package/python/lib/python3.13/difflib.py +2056 -0
  438. package/python/lib/python3.13/dis.py +1075 -0
  439. package/python/lib/python3.13/doctest.py +2919 -0
  440. package/python/lib/python3.13/email/__init__.py +61 -0
  441. package/python/lib/python3.13/email/_encoded_words.py +233 -0
  442. package/python/lib/python3.13/email/_header_value_parser.py +3145 -0
  443. package/python/lib/python3.13/email/_parseaddr.py +563 -0
  444. package/python/lib/python3.13/email/_policybase.py +382 -0
  445. package/python/lib/python3.13/email/architecture.rst +216 -0
  446. package/python/lib/python3.13/email/base64mime.py +115 -0
  447. package/python/lib/python3.13/email/charset.py +398 -0
  448. package/python/lib/python3.13/email/contentmanager.py +253 -0
  449. package/python/lib/python3.13/email/encoders.py +65 -0
  450. package/python/lib/python3.13/email/errors.py +117 -0
  451. package/python/lib/python3.13/email/feedparser.py +536 -0
  452. package/python/lib/python3.13/email/generator.py +530 -0
  453. package/python/lib/python3.13/email/header.py +582 -0
  454. package/python/lib/python3.13/email/headerregistry.py +618 -0
  455. package/python/lib/python3.13/email/iterators.py +68 -0
  456. package/python/lib/python3.13/email/message.py +1217 -0
  457. package/python/lib/python3.13/email/mime/__init__.py +0 -0
  458. package/python/lib/python3.13/email/mime/application.py +37 -0
  459. package/python/lib/python3.13/email/mime/audio.py +97 -0
  460. package/python/lib/python3.13/email/mime/base.py +29 -0
  461. package/python/lib/python3.13/email/mime/image.py +152 -0
  462. package/python/lib/python3.13/email/mime/message.py +33 -0
  463. package/python/lib/python3.13/email/mime/multipart.py +47 -0
  464. package/python/lib/python3.13/email/mime/nonmultipart.py +21 -0
  465. package/python/lib/python3.13/email/mime/text.py +40 -0
  466. package/python/lib/python3.13/email/parser.py +127 -0
  467. package/python/lib/python3.13/email/policy.py +232 -0
  468. package/python/lib/python3.13/email/quoprimime.py +300 -0
  469. package/python/lib/python3.13/email/utils.py +494 -0
  470. package/python/lib/python3.13/encodings/__init__.py +174 -0
  471. package/python/lib/python3.13/encodings/aliases.py +552 -0
  472. package/python/lib/python3.13/encodings/ascii.py +50 -0
  473. package/python/lib/python3.13/encodings/base64_codec.py +55 -0
  474. package/python/lib/python3.13/encodings/big5.py +39 -0
  475. package/python/lib/python3.13/encodings/big5hkscs.py +39 -0
  476. package/python/lib/python3.13/encodings/bz2_codec.py +78 -0
  477. package/python/lib/python3.13/encodings/charmap.py +69 -0
  478. package/python/lib/python3.13/encodings/cp037.py +307 -0
  479. package/python/lib/python3.13/encodings/cp1006.py +307 -0
  480. package/python/lib/python3.13/encodings/cp1026.py +307 -0
  481. package/python/lib/python3.13/encodings/cp1125.py +698 -0
  482. package/python/lib/python3.13/encodings/cp1140.py +307 -0
  483. package/python/lib/python3.13/encodings/cp1250.py +307 -0
  484. package/python/lib/python3.13/encodings/cp1251.py +307 -0
  485. package/python/lib/python3.13/encodings/cp1252.py +307 -0
  486. package/python/lib/python3.13/encodings/cp1253.py +307 -0
  487. package/python/lib/python3.13/encodings/cp1254.py +307 -0
  488. package/python/lib/python3.13/encodings/cp1255.py +307 -0
  489. package/python/lib/python3.13/encodings/cp1256.py +307 -0
  490. package/python/lib/python3.13/encodings/cp1257.py +307 -0
  491. package/python/lib/python3.13/encodings/cp1258.py +307 -0
  492. package/python/lib/python3.13/encodings/cp273.py +307 -0
  493. package/python/lib/python3.13/encodings/cp424.py +307 -0
  494. package/python/lib/python3.13/encodings/cp437.py +698 -0
  495. package/python/lib/python3.13/encodings/cp500.py +307 -0
  496. package/python/lib/python3.13/encodings/cp720.py +309 -0
  497. package/python/lib/python3.13/encodings/cp737.py +698 -0
  498. package/python/lib/python3.13/encodings/cp775.py +697 -0
  499. package/python/lib/python3.13/encodings/cp850.py +698 -0
  500. package/python/lib/python3.13/encodings/cp852.py +698 -0
  501. package/python/lib/python3.13/encodings/cp855.py +698 -0
  502. package/python/lib/python3.13/encodings/cp856.py +307 -0
  503. package/python/lib/python3.13/encodings/cp857.py +694 -0
  504. package/python/lib/python3.13/encodings/cp858.py +698 -0
  505. package/python/lib/python3.13/encodings/cp860.py +698 -0
  506. package/python/lib/python3.13/encodings/cp861.py +698 -0
  507. package/python/lib/python3.13/encodings/cp862.py +698 -0
  508. package/python/lib/python3.13/encodings/cp863.py +698 -0
  509. package/python/lib/python3.13/encodings/cp864.py +690 -0
  510. package/python/lib/python3.13/encodings/cp865.py +698 -0
  511. package/python/lib/python3.13/encodings/cp866.py +698 -0
  512. package/python/lib/python3.13/encodings/cp869.py +689 -0
  513. package/python/lib/python3.13/encodings/cp874.py +307 -0
  514. package/python/lib/python3.13/encodings/cp875.py +307 -0
  515. package/python/lib/python3.13/encodings/cp932.py +39 -0
  516. package/python/lib/python3.13/encodings/cp949.py +39 -0
  517. package/python/lib/python3.13/encodings/cp950.py +39 -0
  518. package/python/lib/python3.13/encodings/euc_jis_2004.py +39 -0
  519. package/python/lib/python3.13/encodings/euc_jisx0213.py +39 -0
  520. package/python/lib/python3.13/encodings/euc_jp.py +39 -0
  521. package/python/lib/python3.13/encodings/euc_kr.py +39 -0
  522. package/python/lib/python3.13/encodings/gb18030.py +39 -0
  523. package/python/lib/python3.13/encodings/gb2312.py +39 -0
  524. package/python/lib/python3.13/encodings/gbk.py +39 -0
  525. package/python/lib/python3.13/encodings/hex_codec.py +55 -0
  526. package/python/lib/python3.13/encodings/hp_roman8.py +314 -0
  527. package/python/lib/python3.13/encodings/hz.py +39 -0
  528. package/python/lib/python3.13/encodings/idna.py +387 -0
  529. package/python/lib/python3.13/encodings/iso2022_jp.py +39 -0
  530. package/python/lib/python3.13/encodings/iso2022_jp_1.py +39 -0
  531. package/python/lib/python3.13/encodings/iso2022_jp_2.py +39 -0
  532. package/python/lib/python3.13/encodings/iso2022_jp_2004.py +39 -0
  533. package/python/lib/python3.13/encodings/iso2022_jp_3.py +39 -0
  534. package/python/lib/python3.13/encodings/iso2022_jp_ext.py +39 -0
  535. package/python/lib/python3.13/encodings/iso2022_kr.py +39 -0
  536. package/python/lib/python3.13/encodings/iso8859_1.py +307 -0
  537. package/python/lib/python3.13/encodings/iso8859_10.py +307 -0
  538. package/python/lib/python3.13/encodings/iso8859_11.py +307 -0
  539. package/python/lib/python3.13/encodings/iso8859_13.py +307 -0
  540. package/python/lib/python3.13/encodings/iso8859_14.py +307 -0
  541. package/python/lib/python3.13/encodings/iso8859_15.py +307 -0
  542. package/python/lib/python3.13/encodings/iso8859_16.py +307 -0
  543. package/python/lib/python3.13/encodings/iso8859_2.py +307 -0
  544. package/python/lib/python3.13/encodings/iso8859_3.py +307 -0
  545. package/python/lib/python3.13/encodings/iso8859_4.py +307 -0
  546. package/python/lib/python3.13/encodings/iso8859_5.py +307 -0
  547. package/python/lib/python3.13/encodings/iso8859_6.py +307 -0
  548. package/python/lib/python3.13/encodings/iso8859_7.py +307 -0
  549. package/python/lib/python3.13/encodings/iso8859_8.py +307 -0
  550. package/python/lib/python3.13/encodings/iso8859_9.py +307 -0
  551. package/python/lib/python3.13/encodings/johab.py +39 -0
  552. package/python/lib/python3.13/encodings/koi8_r.py +307 -0
  553. package/python/lib/python3.13/encodings/koi8_t.py +308 -0
  554. package/python/lib/python3.13/encodings/koi8_u.py +307 -0
  555. package/python/lib/python3.13/encodings/kz1048.py +307 -0
  556. package/python/lib/python3.13/encodings/latin_1.py +50 -0
  557. package/python/lib/python3.13/encodings/mac_arabic.py +698 -0
  558. package/python/lib/python3.13/encodings/mac_croatian.py +307 -0
  559. package/python/lib/python3.13/encodings/mac_cyrillic.py +307 -0
  560. package/python/lib/python3.13/encodings/mac_farsi.py +307 -0
  561. package/python/lib/python3.13/encodings/mac_greek.py +307 -0
  562. package/python/lib/python3.13/encodings/mac_iceland.py +307 -0
  563. package/python/lib/python3.13/encodings/mac_latin2.py +312 -0
  564. package/python/lib/python3.13/encodings/mac_roman.py +307 -0
  565. package/python/lib/python3.13/encodings/mac_romanian.py +307 -0
  566. package/python/lib/python3.13/encodings/mac_turkish.py +307 -0
  567. package/python/lib/python3.13/encodings/mbcs.py +47 -0
  568. package/python/lib/python3.13/encodings/oem.py +41 -0
  569. package/python/lib/python3.13/encodings/palmos.py +308 -0
  570. package/python/lib/python3.13/encodings/ptcp154.py +312 -0
  571. package/python/lib/python3.13/encodings/punycode.py +253 -0
  572. package/python/lib/python3.13/encodings/quopri_codec.py +56 -0
  573. package/python/lib/python3.13/encodings/raw_unicode_escape.py +46 -0
  574. package/python/lib/python3.13/encodings/rot_13.py +113 -0
  575. package/python/lib/python3.13/encodings/shift_jis.py +39 -0
  576. package/python/lib/python3.13/encodings/shift_jis_2004.py +39 -0
  577. package/python/lib/python3.13/encodings/shift_jisx0213.py +39 -0
  578. package/python/lib/python3.13/encodings/tis_620.py +307 -0
  579. package/python/lib/python3.13/encodings/undefined.py +49 -0
  580. package/python/lib/python3.13/encodings/unicode_escape.py +46 -0
  581. package/python/lib/python3.13/encodings/utf_16.py +155 -0
  582. package/python/lib/python3.13/encodings/utf_16_be.py +42 -0
  583. package/python/lib/python3.13/encodings/utf_16_le.py +42 -0
  584. package/python/lib/python3.13/encodings/utf_32.py +150 -0
  585. package/python/lib/python3.13/encodings/utf_32_be.py +37 -0
  586. package/python/lib/python3.13/encodings/utf_32_le.py +37 -0
  587. package/python/lib/python3.13/encodings/utf_7.py +38 -0
  588. package/python/lib/python3.13/encodings/utf_8.py +42 -0
  589. package/python/lib/python3.13/encodings/utf_8_sig.py +130 -0
  590. package/python/lib/python3.13/encodings/uu_codec.py +103 -0
  591. package/python/lib/python3.13/encodings/zlib_codec.py +77 -0
  592. package/python/lib/python3.13/ensurepip/__init__.py +264 -0
  593. package/python/lib/python3.13/ensurepip/__main__.py +5 -0
  594. package/python/lib/python3.13/ensurepip/_bundled/pip-25.3-py3-none-any.whl +0 -0
  595. package/python/lib/python3.13/ensurepip/_uninstall.py +31 -0
  596. package/python/lib/python3.13/enum.py +2182 -0
  597. package/python/lib/python3.13/filecmp.py +320 -0
  598. package/python/lib/python3.13/fileinput.py +442 -0
  599. package/python/lib/python3.13/fnmatch.py +192 -0
  600. package/python/lib/python3.13/fractions.py +1043 -0
  601. package/python/lib/python3.13/ftplib.py +966 -0
  602. package/python/lib/python3.13/functools.py +1036 -0
  603. package/python/lib/python3.13/genericpath.py +200 -0
  604. package/python/lib/python3.13/getopt.py +215 -0
  605. package/python/lib/python3.13/getpass.py +192 -0
  606. package/python/lib/python3.13/gettext.py +657 -0
  607. package/python/lib/python3.13/glob.py +551 -0
  608. package/python/lib/python3.13/graphlib.py +250 -0
  609. package/python/lib/python3.13/gzip.py +691 -0
  610. package/python/lib/python3.13/hashlib.py +255 -0
  611. package/python/lib/python3.13/heapq.py +603 -0
  612. package/python/lib/python3.13/hmac.py +220 -0
  613. package/python/lib/python3.13/html/__init__.py +132 -0
  614. package/python/lib/python3.13/html/entities.py +2513 -0
  615. package/python/lib/python3.13/html/parser.py +553 -0
  616. package/python/lib/python3.13/http/__init__.py +202 -0
  617. package/python/lib/python3.13/http/client.py +1570 -0
  618. package/python/lib/python3.13/http/cookiejar.py +2122 -0
  619. package/python/lib/python3.13/http/cookies.py +615 -0
  620. package/python/lib/python3.13/http/server.py +1351 -0
  621. package/python/lib/python3.13/idlelib/CREDITS.txt +48 -0
  622. package/python/lib/python3.13/idlelib/ChangeLog +1591 -0
  623. package/python/lib/python3.13/idlelib/HISTORY.txt +296 -0
  624. package/python/lib/python3.13/idlelib/Icons/README.txt +51 -0
  625. package/python/lib/python3.13/idlelib/Icons/folder.gif +0 -0
  626. package/python/lib/python3.13/idlelib/Icons/idle.ico +0 -0
  627. package/python/lib/python3.13/idlelib/Icons/idle_16.gif +0 -0
  628. package/python/lib/python3.13/idlelib/Icons/idle_16.png +0 -0
  629. package/python/lib/python3.13/idlelib/Icons/idle_256.png +0 -0
  630. package/python/lib/python3.13/idlelib/Icons/idle_32.gif +0 -0
  631. package/python/lib/python3.13/idlelib/Icons/idle_32.png +0 -0
  632. package/python/lib/python3.13/idlelib/Icons/idle_48.gif +0 -0
  633. package/python/lib/python3.13/idlelib/Icons/idle_48.png +0 -0
  634. package/python/lib/python3.13/idlelib/Icons/minusnode.gif +0 -0
  635. package/python/lib/python3.13/idlelib/Icons/openfolder.gif +0 -0
  636. package/python/lib/python3.13/idlelib/Icons/plusnode.gif +0 -0
  637. package/python/lib/python3.13/idlelib/Icons/python.gif +0 -0
  638. package/python/lib/python3.13/idlelib/Icons/tk.gif +0 -0
  639. package/python/lib/python3.13/idlelib/NEWS2x.txt +660 -0
  640. package/python/lib/python3.13/idlelib/News3.txt +1407 -0
  641. package/python/lib/python3.13/idlelib/README.txt +290 -0
  642. package/python/lib/python3.13/idlelib/TODO.txt +210 -0
  643. package/python/lib/python3.13/idlelib/__init__.py +10 -0
  644. package/python/lib/python3.13/idlelib/__main__.py +7 -0
  645. package/python/lib/python3.13/idlelib/autocomplete.py +228 -0
  646. package/python/lib/python3.13/idlelib/autocomplete_w.py +498 -0
  647. package/python/lib/python3.13/idlelib/autoexpand.py +96 -0
  648. package/python/lib/python3.13/idlelib/browser.py +260 -0
  649. package/python/lib/python3.13/idlelib/calltip.py +205 -0
  650. package/python/lib/python3.13/idlelib/calltip_w.py +202 -0
  651. package/python/lib/python3.13/idlelib/codecontext.py +270 -0
  652. package/python/lib/python3.13/idlelib/colorizer.py +384 -0
  653. package/python/lib/python3.13/idlelib/config-extensions.def +62 -0
  654. package/python/lib/python3.13/idlelib/config-highlight.def +105 -0
  655. package/python/lib/python3.13/idlelib/config-keys.def +309 -0
  656. package/python/lib/python3.13/idlelib/config-main.def +92 -0
  657. package/python/lib/python3.13/idlelib/config.py +917 -0
  658. package/python/lib/python3.13/idlelib/config_key.py +354 -0
  659. package/python/lib/python3.13/idlelib/configdialog.py +2408 -0
  660. package/python/lib/python3.13/idlelib/debugger.py +602 -0
  661. package/python/lib/python3.13/idlelib/debugger_r.py +390 -0
  662. package/python/lib/python3.13/idlelib/debugobj.py +146 -0
  663. package/python/lib/python3.13/idlelib/debugobj_r.py +41 -0
  664. package/python/lib/python3.13/idlelib/delegator.py +34 -0
  665. package/python/lib/python3.13/idlelib/dynoption.py +57 -0
  666. package/python/lib/python3.13/idlelib/editor.py +1721 -0
  667. package/python/lib/python3.13/idlelib/extend.txt +83 -0
  668. package/python/lib/python3.13/idlelib/filelist.py +132 -0
  669. package/python/lib/python3.13/idlelib/format.py +426 -0
  670. package/python/lib/python3.13/idlelib/grep.py +223 -0
  671. package/python/lib/python3.13/idlelib/help.html +865 -0
  672. package/python/lib/python3.13/idlelib/help.py +343 -0
  673. package/python/lib/python3.13/idlelib/help_about.py +211 -0
  674. package/python/lib/python3.13/idlelib/history.py +106 -0
  675. package/python/lib/python3.13/idlelib/hyperparser.py +312 -0
  676. package/python/lib/python3.13/idlelib/idle.bat +4 -0
  677. package/python/lib/python3.13/idlelib/idle.py +14 -0
  678. package/python/lib/python3.13/idlelib/idle.pyw +17 -0
  679. package/python/lib/python3.13/idlelib/iomenu.py +441 -0
  680. package/python/lib/python3.13/idlelib/macosx.py +278 -0
  681. package/python/lib/python3.13/idlelib/mainmenu.py +126 -0
  682. package/python/lib/python3.13/idlelib/multicall.py +451 -0
  683. package/python/lib/python3.13/idlelib/outwin.py +188 -0
  684. package/python/lib/python3.13/idlelib/parenmatch.py +183 -0
  685. package/python/lib/python3.13/idlelib/pathbrowser.py +107 -0
  686. package/python/lib/python3.13/idlelib/percolator.py +120 -0
  687. package/python/lib/python3.13/idlelib/pyparse.py +589 -0
  688. package/python/lib/python3.13/idlelib/pyshell.py +1699 -0
  689. package/python/lib/python3.13/idlelib/query.py +390 -0
  690. package/python/lib/python3.13/idlelib/redirector.py +174 -0
  691. package/python/lib/python3.13/idlelib/replace.py +299 -0
  692. package/python/lib/python3.13/idlelib/rpc.py +635 -0
  693. package/python/lib/python3.13/idlelib/run.py +653 -0
  694. package/python/lib/python3.13/idlelib/runscript.py +213 -0
  695. package/python/lib/python3.13/idlelib/scrolledlist.py +151 -0
  696. package/python/lib/python3.13/idlelib/search.py +165 -0
  697. package/python/lib/python3.13/idlelib/searchbase.py +210 -0
  698. package/python/lib/python3.13/idlelib/searchengine.py +234 -0
  699. package/python/lib/python3.13/idlelib/sidebar.py +543 -0
  700. package/python/lib/python3.13/idlelib/squeezer.py +345 -0
  701. package/python/lib/python3.13/idlelib/stackviewer.py +134 -0
  702. package/python/lib/python3.13/idlelib/statusbar.py +52 -0
  703. package/python/lib/python3.13/idlelib/textview.py +193 -0
  704. package/python/lib/python3.13/idlelib/tooltip.py +190 -0
  705. package/python/lib/python3.13/idlelib/tree.py +509 -0
  706. package/python/lib/python3.13/idlelib/undo.py +367 -0
  707. package/python/lib/python3.13/idlelib/util.py +37 -0
  708. package/python/lib/python3.13/idlelib/window.py +98 -0
  709. package/python/lib/python3.13/idlelib/zoomheight.py +124 -0
  710. package/python/lib/python3.13/idlelib/zzdummy.py +73 -0
  711. package/python/lib/python3.13/imaplib.py +1651 -0
  712. package/python/lib/python3.13/importlib/__init__.py +136 -0
  713. package/python/lib/python3.13/importlib/_abc.py +39 -0
  714. package/python/lib/python3.13/importlib/_bootstrap.py +1551 -0
  715. package/python/lib/python3.13/importlib/_bootstrap_external.py +1826 -0
  716. package/python/lib/python3.13/importlib/abc.py +243 -0
  717. package/python/lib/python3.13/importlib/machinery.py +21 -0
  718. package/python/lib/python3.13/importlib/metadata/__init__.py +1093 -0
  719. package/python/lib/python3.13/importlib/metadata/_adapters.py +89 -0
  720. package/python/lib/python3.13/importlib/metadata/_collections.py +30 -0
  721. package/python/lib/python3.13/importlib/metadata/_functools.py +104 -0
  722. package/python/lib/python3.13/importlib/metadata/_itertools.py +73 -0
  723. package/python/lib/python3.13/importlib/metadata/_meta.py +67 -0
  724. package/python/lib/python3.13/importlib/metadata/_text.py +99 -0
  725. package/python/lib/python3.13/importlib/metadata/diagnose.py +21 -0
  726. package/python/lib/python3.13/importlib/readers.py +12 -0
  727. package/python/lib/python3.13/importlib/resources/__init__.py +43 -0
  728. package/python/lib/python3.13/importlib/resources/_adapters.py +168 -0
  729. package/python/lib/python3.13/importlib/resources/_common.py +211 -0
  730. package/python/lib/python3.13/importlib/resources/_functional.py +81 -0
  731. package/python/lib/python3.13/importlib/resources/_itertools.py +38 -0
  732. package/python/lib/python3.13/importlib/resources/abc.py +173 -0
  733. package/python/lib/python3.13/importlib/resources/readers.py +203 -0
  734. package/python/lib/python3.13/importlib/resources/simple.py +106 -0
  735. package/python/lib/python3.13/importlib/simple.py +14 -0
  736. package/python/lib/python3.13/importlib/util.py +274 -0
  737. package/python/lib/python3.13/inspect.py +3471 -0
  738. package/python/lib/python3.13/io.py +99 -0
  739. package/python/lib/python3.13/ipaddress.py +2440 -0
  740. package/python/lib/python3.13/json/__init__.py +365 -0
  741. package/python/lib/python3.13/json/decoder.py +364 -0
  742. package/python/lib/python3.13/json/encoder.py +446 -0
  743. package/python/lib/python3.13/json/scanner.py +73 -0
  744. package/python/lib/python3.13/json/tool.py +89 -0
  745. package/python/lib/python3.13/keyword.py +64 -0
  746. package/python/lib/python3.13/lib-dynload/.empty +0 -0
  747. package/python/lib/python3.13/lib-dynload/_ctypes_test.cpython-313-darwin.so +0 -0
  748. package/python/lib/python3.13/lib-dynload/_dbm.cpython-313-darwin.so +0 -0
  749. package/python/lib/python3.13/lib-dynload/_tkinter.cpython-313-darwin.so +0 -0
  750. package/python/lib/python3.13/linecache.py +236 -0
  751. package/python/lib/python3.13/locale.py +1778 -0
  752. package/python/lib/python3.13/logging/__init__.py +2326 -0
  753. package/python/lib/python3.13/logging/config.py +1065 -0
  754. package/python/lib/python3.13/logging/handlers.py +1629 -0
  755. package/python/lib/python3.13/lzma.py +364 -0
  756. package/python/lib/python3.13/mailbox.py +2219 -0
  757. package/python/lib/python3.13/mimetypes.py +679 -0
  758. package/python/lib/python3.13/modulefinder.py +671 -0
  759. package/python/lib/python3.13/multiprocessing/__init__.py +37 -0
  760. package/python/lib/python3.13/multiprocessing/connection.py +1190 -0
  761. package/python/lib/python3.13/multiprocessing/context.py +377 -0
  762. package/python/lib/python3.13/multiprocessing/dummy/__init__.py +126 -0
  763. package/python/lib/python3.13/multiprocessing/dummy/connection.py +75 -0
  764. package/python/lib/python3.13/multiprocessing/forkserver.py +364 -0
  765. package/python/lib/python3.13/multiprocessing/heap.py +337 -0
  766. package/python/lib/python3.13/multiprocessing/managers.py +1397 -0
  767. package/python/lib/python3.13/multiprocessing/pool.py +957 -0
  768. package/python/lib/python3.13/multiprocessing/popen_fork.py +87 -0
  769. package/python/lib/python3.13/multiprocessing/popen_forkserver.py +74 -0
  770. package/python/lib/python3.13/multiprocessing/popen_spawn_posix.py +76 -0
  771. package/python/lib/python3.13/multiprocessing/popen_spawn_win32.py +147 -0
  772. package/python/lib/python3.13/multiprocessing/process.py +436 -0
  773. package/python/lib/python3.13/multiprocessing/queues.py +399 -0
  774. package/python/lib/python3.13/multiprocessing/reduction.py +281 -0
  775. package/python/lib/python3.13/multiprocessing/resource_sharer.py +154 -0
  776. package/python/lib/python3.13/multiprocessing/resource_tracker.py +420 -0
  777. package/python/lib/python3.13/multiprocessing/shared_memory.py +544 -0
  778. package/python/lib/python3.13/multiprocessing/sharedctypes.py +240 -0
  779. package/python/lib/python3.13/multiprocessing/spawn.py +307 -0
  780. package/python/lib/python3.13/multiprocessing/synchronize.py +404 -0
  781. package/python/lib/python3.13/multiprocessing/util.py +562 -0
  782. package/python/lib/python3.13/netrc.py +199 -0
  783. package/python/lib/python3.13/ntpath.py +870 -0
  784. package/python/lib/python3.13/nturl2path.py +69 -0
  785. package/python/lib/python3.13/numbers.py +427 -0
  786. package/python/lib/python3.13/opcode.py +115 -0
  787. package/python/lib/python3.13/operator.py +467 -0
  788. package/python/lib/python3.13/optparse.py +1681 -0
  789. package/python/lib/python3.13/os.py +1184 -0
  790. package/python/lib/python3.13/pathlib/__init__.py +12 -0
  791. package/python/lib/python3.13/pathlib/_abc.py +930 -0
  792. package/python/lib/python3.13/pathlib/_local.py +861 -0
  793. package/python/lib/python3.13/pdb.py +2550 -0
  794. package/python/lib/python3.13/pickle.py +1866 -0
  795. package/python/lib/python3.13/pickletools.py +2904 -0
  796. package/python/lib/python3.13/pkgutil.py +529 -0
  797. package/python/lib/python3.13/platform.py +1454 -0
  798. package/python/lib/python3.13/plistlib.py +948 -0
  799. package/python/lib/python3.13/poplib.py +477 -0
  800. package/python/lib/python3.13/posixpath.py +578 -0
  801. package/python/lib/python3.13/pprint.py +658 -0
  802. package/python/lib/python3.13/profile.py +616 -0
  803. package/python/lib/python3.13/pstats.py +778 -0
  804. package/python/lib/python3.13/pty.py +211 -0
  805. package/python/lib/python3.13/py_compile.py +212 -0
  806. package/python/lib/python3.13/pyclbr.py +314 -0
  807. package/python/lib/python3.13/pydoc.py +2859 -0
  808. package/python/lib/python3.13/pydoc_data/__init__.py +0 -0
  809. package/python/lib/python3.13/pydoc_data/_pydoc.css +112 -0
  810. package/python/lib/python3.13/pydoc_data/module_docs.py +314 -0
  811. package/python/lib/python3.13/pydoc_data/topics.py +13000 -0
  812. package/python/lib/python3.13/queue.py +383 -0
  813. package/python/lib/python3.13/quopri.py +237 -0
  814. package/python/lib/python3.13/random.py +1070 -0
  815. package/python/lib/python3.13/re/__init__.py +428 -0
  816. package/python/lib/python3.13/re/_casefix.py +106 -0
  817. package/python/lib/python3.13/re/_compiler.py +768 -0
  818. package/python/lib/python3.13/re/_constants.py +222 -0
  819. package/python/lib/python3.13/re/_parser.py +1081 -0
  820. package/python/lib/python3.13/reprlib.py +230 -0
  821. package/python/lib/python3.13/rlcompleter.py +221 -0
  822. package/python/lib/python3.13/runpy.py +319 -0
  823. package/python/lib/python3.13/sched.py +167 -0
  824. package/python/lib/python3.13/secrets.py +71 -0
  825. package/python/lib/python3.13/selectors.py +603 -0
  826. package/python/lib/python3.13/shelve.py +250 -0
  827. package/python/lib/python3.13/shlex.py +345 -0
  828. package/python/lib/python3.13/shutil.py +1583 -0
  829. package/python/lib/python3.13/signal.py +94 -0
  830. package/python/lib/python3.13/site-packages/README.txt +2 -0
  831. package/python/lib/python3.13/site-packages/pip/__init__.py +13 -0
  832. package/python/lib/python3.13/site-packages/pip/__main__.py +24 -0
  833. package/python/lib/python3.13/site-packages/pip/__pip-runner__.py +50 -0
  834. package/python/lib/python3.13/site-packages/pip/_internal/__init__.py +18 -0
  835. package/python/lib/python3.13/site-packages/pip/_internal/build_env.py +606 -0
  836. package/python/lib/python3.13/site-packages/pip/_internal/cache.py +291 -0
  837. package/python/lib/python3.13/site-packages/pip/_internal/cli/__init__.py +3 -0
  838. package/python/lib/python3.13/site-packages/pip/_internal/cli/autocompletion.py +184 -0
  839. package/python/lib/python3.13/site-packages/pip/_internal/cli/base_command.py +255 -0
  840. package/python/lib/python3.13/site-packages/pip/_internal/cli/cmdoptions.py +1267 -0
  841. package/python/lib/python3.13/site-packages/pip/_internal/cli/command_context.py +28 -0
  842. package/python/lib/python3.13/site-packages/pip/_internal/cli/index_command.py +195 -0
  843. package/python/lib/python3.13/site-packages/pip/_internal/cli/main.py +85 -0
  844. package/python/lib/python3.13/site-packages/pip/_internal/cli/main_parser.py +136 -0
  845. package/python/lib/python3.13/site-packages/pip/_internal/cli/parser.py +358 -0
  846. package/python/lib/python3.13/site-packages/pip/_internal/cli/progress_bars.py +153 -0
  847. package/python/lib/python3.13/site-packages/pip/_internal/cli/req_command.py +447 -0
  848. package/python/lib/python3.13/site-packages/pip/_internal/cli/spinners.py +235 -0
  849. package/python/lib/python3.13/site-packages/pip/_internal/cli/status_codes.py +6 -0
  850. package/python/lib/python3.13/site-packages/pip/_internal/commands/__init__.py +139 -0
  851. package/python/lib/python3.13/site-packages/pip/_internal/commands/cache.py +255 -0
  852. package/python/lib/python3.13/site-packages/pip/_internal/commands/check.py +66 -0
  853. package/python/lib/python3.13/site-packages/pip/_internal/commands/completion.py +136 -0
  854. package/python/lib/python3.13/site-packages/pip/_internal/commands/configuration.py +288 -0
  855. package/python/lib/python3.13/site-packages/pip/_internal/commands/debug.py +203 -0
  856. package/python/lib/python3.13/site-packages/pip/_internal/commands/download.py +146 -0
  857. package/python/lib/python3.13/site-packages/pip/_internal/commands/freeze.py +107 -0
  858. package/python/lib/python3.13/site-packages/pip/_internal/commands/hash.py +58 -0
  859. package/python/lib/python3.13/site-packages/pip/_internal/commands/help.py +40 -0
  860. package/python/lib/python3.13/site-packages/pip/_internal/commands/index.py +166 -0
  861. package/python/lib/python3.13/site-packages/pip/_internal/commands/inspect.py +92 -0
  862. package/python/lib/python3.13/site-packages/pip/_internal/commands/install.py +810 -0
  863. package/python/lib/python3.13/site-packages/pip/_internal/commands/list.py +398 -0
  864. package/python/lib/python3.13/site-packages/pip/_internal/commands/lock.py +175 -0
  865. package/python/lib/python3.13/site-packages/pip/_internal/commands/search.py +178 -0
  866. package/python/lib/python3.13/site-packages/pip/_internal/commands/show.py +231 -0
  867. package/python/lib/python3.13/site-packages/pip/_internal/commands/uninstall.py +113 -0
  868. package/python/lib/python3.13/site-packages/pip/_internal/commands/wheel.py +171 -0
  869. package/python/lib/python3.13/site-packages/pip/_internal/configuration.py +396 -0
  870. package/python/lib/python3.13/site-packages/pip/_internal/distributions/__init__.py +21 -0
  871. package/python/lib/python3.13/site-packages/pip/_internal/distributions/base.py +55 -0
  872. package/python/lib/python3.13/site-packages/pip/_internal/distributions/installed.py +33 -0
  873. package/python/lib/python3.13/site-packages/pip/_internal/distributions/sdist.py +164 -0
  874. package/python/lib/python3.13/site-packages/pip/_internal/distributions/wheel.py +44 -0
  875. package/python/lib/python3.13/site-packages/pip/_internal/exceptions.py +971 -0
  876. package/python/lib/python3.13/site-packages/pip/_internal/index/__init__.py +1 -0
  877. package/python/lib/python3.13/site-packages/pip/_internal/index/collector.py +488 -0
  878. package/python/lib/python3.13/site-packages/pip/_internal/index/package_finder.py +1125 -0
  879. package/python/lib/python3.13/site-packages/pip/_internal/index/sources.py +287 -0
  880. package/python/lib/python3.13/site-packages/pip/_internal/locations/__init__.py +440 -0
  881. package/python/lib/python3.13/site-packages/pip/_internal/locations/_distutils.py +173 -0
  882. package/python/lib/python3.13/site-packages/pip/_internal/locations/_sysconfig.py +218 -0
  883. package/python/lib/python3.13/site-packages/pip/_internal/locations/base.py +82 -0
  884. package/python/lib/python3.13/site-packages/pip/_internal/main.py +12 -0
  885. package/python/lib/python3.13/site-packages/pip/_internal/metadata/__init__.py +169 -0
  886. package/python/lib/python3.13/site-packages/pip/_internal/metadata/_json.py +87 -0
  887. package/python/lib/python3.13/site-packages/pip/_internal/metadata/base.py +685 -0
  888. package/python/lib/python3.13/site-packages/pip/_internal/metadata/importlib/__init__.py +6 -0
  889. package/python/lib/python3.13/site-packages/pip/_internal/metadata/importlib/_compat.py +87 -0
  890. package/python/lib/python3.13/site-packages/pip/_internal/metadata/importlib/_dists.py +229 -0
  891. package/python/lib/python3.13/site-packages/pip/_internal/metadata/importlib/_envs.py +143 -0
  892. package/python/lib/python3.13/site-packages/pip/_internal/metadata/pkg_resources.py +298 -0
  893. package/python/lib/python3.13/site-packages/pip/_internal/models/__init__.py +1 -0
  894. package/python/lib/python3.13/site-packages/pip/_internal/models/candidate.py +25 -0
  895. package/python/lib/python3.13/site-packages/pip/_internal/models/direct_url.py +227 -0
  896. package/python/lib/python3.13/site-packages/pip/_internal/models/format_control.py +78 -0
  897. package/python/lib/python3.13/site-packages/pip/_internal/models/index.py +28 -0
  898. package/python/lib/python3.13/site-packages/pip/_internal/models/installation_report.py +57 -0
  899. package/python/lib/python3.13/site-packages/pip/_internal/models/link.py +617 -0
  900. package/python/lib/python3.13/site-packages/pip/_internal/models/release_control.py +92 -0
  901. package/python/lib/python3.13/site-packages/pip/_internal/models/scheme.py +25 -0
  902. package/python/lib/python3.13/site-packages/pip/_internal/models/search_scope.py +126 -0
  903. package/python/lib/python3.13/site-packages/pip/_internal/models/selection_prefs.py +56 -0
  904. package/python/lib/python3.13/site-packages/pip/_internal/models/target_python.py +122 -0
  905. package/python/lib/python3.13/site-packages/pip/_internal/models/wheel.py +80 -0
  906. package/python/lib/python3.13/site-packages/pip/_internal/network/__init__.py +1 -0
  907. package/python/lib/python3.13/site-packages/pip/_internal/network/auth.py +568 -0
  908. package/python/lib/python3.13/site-packages/pip/_internal/network/cache.py +128 -0
  909. package/python/lib/python3.13/site-packages/pip/_internal/network/download.py +341 -0
  910. package/python/lib/python3.13/site-packages/pip/_internal/network/lazy_wheel.py +215 -0
  911. package/python/lib/python3.13/site-packages/pip/_internal/network/session.py +532 -0
  912. package/python/lib/python3.13/site-packages/pip/_internal/network/utils.py +98 -0
  913. package/python/lib/python3.13/site-packages/pip/_internal/network/xmlrpc.py +61 -0
  914. package/python/lib/python3.13/site-packages/pip/_internal/operations/__init__.py +0 -0
  915. package/python/lib/python3.13/site-packages/pip/_internal/operations/build/__init__.py +0 -0
  916. package/python/lib/python3.13/site-packages/pip/_internal/operations/build/build_tracker.py +140 -0
  917. package/python/lib/python3.13/site-packages/pip/_internal/operations/build/metadata.py +38 -0
  918. package/python/lib/python3.13/site-packages/pip/_internal/operations/build/metadata_editable.py +41 -0
  919. package/python/lib/python3.13/site-packages/pip/_internal/operations/build/wheel.py +38 -0
  920. package/python/lib/python3.13/site-packages/pip/_internal/operations/build/wheel_editable.py +47 -0
  921. package/python/lib/python3.13/site-packages/pip/_internal/operations/check.py +175 -0
  922. package/python/lib/python3.13/site-packages/pip/_internal/operations/freeze.py +259 -0
  923. package/python/lib/python3.13/site-packages/pip/_internal/operations/install/__init__.py +1 -0
  924. package/python/lib/python3.13/site-packages/pip/_internal/operations/install/wheel.py +745 -0
  925. package/python/lib/python3.13/site-packages/pip/_internal/operations/prepare.py +747 -0
  926. package/python/lib/python3.13/site-packages/pip/_internal/pyproject.py +123 -0
  927. package/python/lib/python3.13/site-packages/pip/_internal/req/__init__.py +103 -0
  928. package/python/lib/python3.13/site-packages/pip/_internal/req/constructors.py +568 -0
  929. package/python/lib/python3.13/site-packages/pip/_internal/req/pep723.py +41 -0
  930. package/python/lib/python3.13/site-packages/pip/_internal/req/req_dependency_group.py +75 -0
  931. package/python/lib/python3.13/site-packages/pip/_internal/req/req_file.py +631 -0
  932. package/python/lib/python3.13/site-packages/pip/_internal/req/req_install.py +828 -0
  933. package/python/lib/python3.13/site-packages/pip/_internal/req/req_set.py +81 -0
  934. package/python/lib/python3.13/site-packages/pip/_internal/req/req_uninstall.py +639 -0
  935. package/python/lib/python3.13/site-packages/pip/_internal/resolution/__init__.py +0 -0
  936. package/python/lib/python3.13/site-packages/pip/_internal/resolution/base.py +20 -0
  937. package/python/lib/python3.13/site-packages/pip/_internal/resolution/legacy/__init__.py +0 -0
  938. package/python/lib/python3.13/site-packages/pip/_internal/resolution/legacy/resolver.py +598 -0
  939. package/python/lib/python3.13/site-packages/pip/_internal/resolution/resolvelib/__init__.py +0 -0
  940. package/python/lib/python3.13/site-packages/pip/_internal/resolution/resolvelib/base.py +142 -0
  941. package/python/lib/python3.13/site-packages/pip/_internal/resolution/resolvelib/candidates.py +591 -0
  942. package/python/lib/python3.13/site-packages/pip/_internal/resolution/resolvelib/factory.py +856 -0
  943. package/python/lib/python3.13/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py +166 -0
  944. package/python/lib/python3.13/site-packages/pip/_internal/resolution/resolvelib/provider.py +285 -0
  945. package/python/lib/python3.13/site-packages/pip/_internal/resolution/resolvelib/reporter.py +98 -0
  946. package/python/lib/python3.13/site-packages/pip/_internal/resolution/resolvelib/requirements.py +251 -0
  947. package/python/lib/python3.13/site-packages/pip/_internal/resolution/resolvelib/resolver.py +332 -0
  948. package/python/lib/python3.13/site-packages/pip/_internal/self_outdated_check.py +255 -0
  949. package/python/lib/python3.13/site-packages/pip/_internal/utils/__init__.py +0 -0
  950. package/python/lib/python3.13/site-packages/pip/_internal/utils/_jaraco_text.py +109 -0
  951. package/python/lib/python3.13/site-packages/pip/_internal/utils/_log.py +38 -0
  952. package/python/lib/python3.13/site-packages/pip/_internal/utils/appdirs.py +52 -0
  953. package/python/lib/python3.13/site-packages/pip/_internal/utils/compat.py +85 -0
  954. package/python/lib/python3.13/site-packages/pip/_internal/utils/compatibility_tags.py +201 -0
  955. package/python/lib/python3.13/site-packages/pip/_internal/utils/datetime.py +28 -0
  956. package/python/lib/python3.13/site-packages/pip/_internal/utils/deprecation.py +126 -0
  957. package/python/lib/python3.13/site-packages/pip/_internal/utils/direct_url_helpers.py +87 -0
  958. package/python/lib/python3.13/site-packages/pip/_internal/utils/egg_link.py +81 -0
  959. package/python/lib/python3.13/site-packages/pip/_internal/utils/entrypoints.py +88 -0
  960. package/python/lib/python3.13/site-packages/pip/_internal/utils/filesystem.py +203 -0
  961. package/python/lib/python3.13/site-packages/pip/_internal/utils/filetypes.py +24 -0
  962. package/python/lib/python3.13/site-packages/pip/_internal/utils/glibc.py +102 -0
  963. package/python/lib/python3.13/site-packages/pip/_internal/utils/hashes.py +150 -0
  964. package/python/lib/python3.13/site-packages/pip/_internal/utils/logging.py +396 -0
  965. package/python/lib/python3.13/site-packages/pip/_internal/utils/misc.py +771 -0
  966. package/python/lib/python3.13/site-packages/pip/_internal/utils/packaging.py +44 -0
  967. package/python/lib/python3.13/site-packages/pip/_internal/utils/pylock.py +116 -0
  968. package/python/lib/python3.13/site-packages/pip/_internal/utils/retry.py +45 -0
  969. package/python/lib/python3.13/site-packages/pip/_internal/utils/subprocess.py +248 -0
  970. package/python/lib/python3.13/site-packages/pip/_internal/utils/temp_dir.py +294 -0
  971. package/python/lib/python3.13/site-packages/pip/_internal/utils/unpacking.py +362 -0
  972. package/python/lib/python3.13/site-packages/pip/_internal/utils/urls.py +55 -0
  973. package/python/lib/python3.13/site-packages/pip/_internal/utils/virtualenv.py +105 -0
  974. package/python/lib/python3.13/site-packages/pip/_internal/utils/wheel.py +132 -0
  975. package/python/lib/python3.13/site-packages/pip/_internal/vcs/__init__.py +15 -0
  976. package/python/lib/python3.13/site-packages/pip/_internal/vcs/bazaar.py +130 -0
  977. package/python/lib/python3.13/site-packages/pip/_internal/vcs/git.py +571 -0
  978. package/python/lib/python3.13/site-packages/pip/_internal/vcs/mercurial.py +186 -0
  979. package/python/lib/python3.13/site-packages/pip/_internal/vcs/subversion.py +335 -0
  980. package/python/lib/python3.13/site-packages/pip/_internal/vcs/versioncontrol.py +695 -0
  981. package/python/lib/python3.13/site-packages/pip/_internal/wheel_builder.py +261 -0
  982. package/python/lib/python3.13/site-packages/pip/_vendor/README.rst +180 -0
  983. package/python/lib/python3.13/site-packages/pip/_vendor/__init__.py +117 -0
  984. package/python/lib/python3.13/site-packages/pip/_vendor/cachecontrol/LICENSE.txt +13 -0
  985. package/python/lib/python3.13/site-packages/pip/_vendor/cachecontrol/__init__.py +32 -0
  986. package/python/lib/python3.13/site-packages/pip/_vendor/cachecontrol/_cmd.py +70 -0
  987. package/python/lib/python3.13/site-packages/pip/_vendor/cachecontrol/adapter.py +167 -0
  988. package/python/lib/python3.13/site-packages/pip/_vendor/cachecontrol/cache.py +75 -0
  989. package/python/lib/python3.13/site-packages/pip/_vendor/cachecontrol/caches/__init__.py +8 -0
  990. package/python/lib/python3.13/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py +145 -0
  991. package/python/lib/python3.13/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py +48 -0
  992. package/python/lib/python3.13/site-packages/pip/_vendor/cachecontrol/controller.py +511 -0
  993. package/python/lib/python3.13/site-packages/pip/_vendor/cachecontrol/filewrapper.py +121 -0
  994. package/python/lib/python3.13/site-packages/pip/_vendor/cachecontrol/heuristics.py +157 -0
  995. package/python/lib/python3.13/site-packages/pip/_vendor/cachecontrol/py.typed +0 -0
  996. package/python/lib/python3.13/site-packages/pip/_vendor/cachecontrol/serialize.py +146 -0
  997. package/python/lib/python3.13/site-packages/pip/_vendor/cachecontrol/wrapper.py +43 -0
  998. package/python/lib/python3.13/site-packages/pip/_vendor/certifi/LICENSE +20 -0
  999. package/python/lib/python3.13/site-packages/pip/_vendor/certifi/__init__.py +4 -0
  1000. package/python/lib/python3.13/site-packages/pip/_vendor/certifi/__main__.py +12 -0
  1001. package/python/lib/python3.13/site-packages/pip/_vendor/certifi/cacert.pem +4468 -0
  1002. package/python/lib/python3.13/site-packages/pip/_vendor/certifi/core.py +83 -0
  1003. package/python/lib/python3.13/site-packages/pip/_vendor/certifi/py.typed +0 -0
  1004. package/python/lib/python3.13/site-packages/pip/_vendor/dependency_groups/LICENSE.txt +9 -0
  1005. package/python/lib/python3.13/site-packages/pip/_vendor/dependency_groups/__init__.py +13 -0
  1006. package/python/lib/python3.13/site-packages/pip/_vendor/dependency_groups/__main__.py +65 -0
  1007. package/python/lib/python3.13/site-packages/pip/_vendor/dependency_groups/_implementation.py +209 -0
  1008. package/python/lib/python3.13/site-packages/pip/_vendor/dependency_groups/_lint_dependency_groups.py +59 -0
  1009. package/python/lib/python3.13/site-packages/pip/_vendor/dependency_groups/_pip_wrapper.py +62 -0
  1010. package/python/lib/python3.13/site-packages/pip/_vendor/dependency_groups/_toml_compat.py +9 -0
  1011. package/python/lib/python3.13/site-packages/pip/_vendor/dependency_groups/py.typed +0 -0
  1012. package/python/lib/python3.13/site-packages/pip/_vendor/distlib/LICENSE.txt +284 -0
  1013. package/python/lib/python3.13/site-packages/pip/_vendor/distlib/__init__.py +33 -0
  1014. package/python/lib/python3.13/site-packages/pip/_vendor/distlib/compat.py +1137 -0
  1015. package/python/lib/python3.13/site-packages/pip/_vendor/distlib/resources.py +358 -0
  1016. package/python/lib/python3.13/site-packages/pip/_vendor/distlib/scripts.py +447 -0
  1017. package/python/lib/python3.13/site-packages/pip/_vendor/distlib/t32.exe +0 -0
  1018. package/python/lib/python3.13/site-packages/pip/_vendor/distlib/t64-arm.exe +0 -0
  1019. package/python/lib/python3.13/site-packages/pip/_vendor/distlib/t64.exe +0 -0
  1020. package/python/lib/python3.13/site-packages/pip/_vendor/distlib/util.py +1984 -0
  1021. package/python/lib/python3.13/site-packages/pip/_vendor/distlib/w32.exe +0 -0
  1022. package/python/lib/python3.13/site-packages/pip/_vendor/distlib/w64-arm.exe +0 -0
  1023. package/python/lib/python3.13/site-packages/pip/_vendor/distlib/w64.exe +0 -0
  1024. package/python/lib/python3.13/site-packages/pip/_vendor/distro/LICENSE +202 -0
  1025. package/python/lib/python3.13/site-packages/pip/_vendor/distro/__init__.py +54 -0
  1026. package/python/lib/python3.13/site-packages/pip/_vendor/distro/__main__.py +4 -0
  1027. package/python/lib/python3.13/site-packages/pip/_vendor/distro/distro.py +1403 -0
  1028. package/python/lib/python3.13/site-packages/pip/_vendor/distro/py.typed +0 -0
  1029. package/python/lib/python3.13/site-packages/pip/_vendor/idna/LICENSE.md +31 -0
  1030. package/python/lib/python3.13/site-packages/pip/_vendor/idna/__init__.py +45 -0
  1031. package/python/lib/python3.13/site-packages/pip/_vendor/idna/codec.py +122 -0
  1032. package/python/lib/python3.13/site-packages/pip/_vendor/idna/compat.py +15 -0
  1033. package/python/lib/python3.13/site-packages/pip/_vendor/idna/core.py +437 -0
  1034. package/python/lib/python3.13/site-packages/pip/_vendor/idna/idnadata.py +4309 -0
  1035. package/python/lib/python3.13/site-packages/pip/_vendor/idna/intranges.py +57 -0
  1036. package/python/lib/python3.13/site-packages/pip/_vendor/idna/package_data.py +1 -0
  1037. package/python/lib/python3.13/site-packages/pip/_vendor/idna/py.typed +0 -0
  1038. package/python/lib/python3.13/site-packages/pip/_vendor/idna/uts46data.py +8841 -0
  1039. package/python/lib/python3.13/site-packages/pip/_vendor/msgpack/COPYING +14 -0
  1040. package/python/lib/python3.13/site-packages/pip/_vendor/msgpack/__init__.py +55 -0
  1041. package/python/lib/python3.13/site-packages/pip/_vendor/msgpack/exceptions.py +48 -0
  1042. package/python/lib/python3.13/site-packages/pip/_vendor/msgpack/ext.py +170 -0
  1043. package/python/lib/python3.13/site-packages/pip/_vendor/msgpack/fallback.py +929 -0
  1044. package/python/lib/python3.13/site-packages/pip/_vendor/packaging/LICENSE +3 -0
  1045. package/python/lib/python3.13/site-packages/pip/_vendor/packaging/LICENSE.APACHE +177 -0
  1046. package/python/lib/python3.13/site-packages/pip/_vendor/packaging/LICENSE.BSD +23 -0
  1047. package/python/lib/python3.13/site-packages/pip/_vendor/packaging/__init__.py +15 -0
  1048. package/python/lib/python3.13/site-packages/pip/_vendor/packaging/_elffile.py +108 -0
  1049. package/python/lib/python3.13/site-packages/pip/_vendor/packaging/_manylinux.py +262 -0
  1050. package/python/lib/python3.13/site-packages/pip/_vendor/packaging/_musllinux.py +85 -0
  1051. package/python/lib/python3.13/site-packages/pip/_vendor/packaging/_parser.py +365 -0
  1052. package/python/lib/python3.13/site-packages/pip/_vendor/packaging/_structures.py +69 -0
  1053. package/python/lib/python3.13/site-packages/pip/_vendor/packaging/_tokenizer.py +193 -0
  1054. package/python/lib/python3.13/site-packages/pip/_vendor/packaging/licenses/__init__.py +147 -0
  1055. package/python/lib/python3.13/site-packages/pip/_vendor/packaging/licenses/_spdx.py +799 -0
  1056. package/python/lib/python3.13/site-packages/pip/_vendor/packaging/markers.py +388 -0
  1057. package/python/lib/python3.13/site-packages/pip/_vendor/packaging/metadata.py +978 -0
  1058. package/python/lib/python3.13/site-packages/pip/_vendor/packaging/py.typed +0 -0
  1059. package/python/lib/python3.13/site-packages/pip/_vendor/packaging/pylock.py +635 -0
  1060. package/python/lib/python3.13/site-packages/pip/_vendor/packaging/requirements.py +86 -0
  1061. package/python/lib/python3.13/site-packages/pip/_vendor/packaging/specifiers.py +1068 -0
  1062. package/python/lib/python3.13/site-packages/pip/_vendor/packaging/tags.py +651 -0
  1063. package/python/lib/python3.13/site-packages/pip/_vendor/packaging/utils.py +158 -0
  1064. package/python/lib/python3.13/site-packages/pip/_vendor/packaging/version.py +792 -0
  1065. package/python/lib/python3.13/site-packages/pip/_vendor/pkg_resources/LICENSE +17 -0
  1066. package/python/lib/python3.13/site-packages/pip/_vendor/pkg_resources/__init__.py +3676 -0
  1067. package/python/lib/python3.13/site-packages/pip/_vendor/platformdirs/LICENSE +21 -0
  1068. package/python/lib/python3.13/site-packages/pip/_vendor/platformdirs/__init__.py +631 -0
  1069. package/python/lib/python3.13/site-packages/pip/_vendor/platformdirs/__main__.py +55 -0
  1070. package/python/lib/python3.13/site-packages/pip/_vendor/platformdirs/android.py +249 -0
  1071. package/python/lib/python3.13/site-packages/pip/_vendor/platformdirs/api.py +299 -0
  1072. package/python/lib/python3.13/site-packages/pip/_vendor/platformdirs/macos.py +146 -0
  1073. package/python/lib/python3.13/site-packages/pip/_vendor/platformdirs/py.typed +0 -0
  1074. package/python/lib/python3.13/site-packages/pip/_vendor/platformdirs/unix.py +272 -0
  1075. package/python/lib/python3.13/site-packages/pip/_vendor/platformdirs/version.py +34 -0
  1076. package/python/lib/python3.13/site-packages/pip/_vendor/platformdirs/windows.py +278 -0
  1077. package/python/lib/python3.13/site-packages/pip/_vendor/pygments/LICENSE +25 -0
  1078. package/python/lib/python3.13/site-packages/pip/_vendor/pygments/__init__.py +82 -0
  1079. package/python/lib/python3.13/site-packages/pip/_vendor/pygments/__main__.py +17 -0
  1080. package/python/lib/python3.13/site-packages/pip/_vendor/pygments/console.py +70 -0
  1081. package/python/lib/python3.13/site-packages/pip/_vendor/pygments/filter.py +70 -0
  1082. package/python/lib/python3.13/site-packages/pip/_vendor/pygments/filters/__init__.py +940 -0
  1083. package/python/lib/python3.13/site-packages/pip/_vendor/pygments/formatter.py +129 -0
  1084. package/python/lib/python3.13/site-packages/pip/_vendor/pygments/formatters/__init__.py +157 -0
  1085. package/python/lib/python3.13/site-packages/pip/_vendor/pygments/formatters/_mapping.py +23 -0
  1086. package/python/lib/python3.13/site-packages/pip/_vendor/pygments/lexer.py +963 -0
  1087. package/python/lib/python3.13/site-packages/pip/_vendor/pygments/lexers/__init__.py +362 -0
  1088. package/python/lib/python3.13/site-packages/pip/_vendor/pygments/lexers/_mapping.py +602 -0
  1089. package/python/lib/python3.13/site-packages/pip/_vendor/pygments/lexers/python.py +1201 -0
  1090. package/python/lib/python3.13/site-packages/pip/_vendor/pygments/modeline.py +43 -0
  1091. package/python/lib/python3.13/site-packages/pip/_vendor/pygments/plugin.py +72 -0
  1092. package/python/lib/python3.13/site-packages/pip/_vendor/pygments/regexopt.py +91 -0
  1093. package/python/lib/python3.13/site-packages/pip/_vendor/pygments/scanner.py +104 -0
  1094. package/python/lib/python3.13/site-packages/pip/_vendor/pygments/sphinxext.py +247 -0
  1095. package/python/lib/python3.13/site-packages/pip/_vendor/pygments/style.py +203 -0
  1096. package/python/lib/python3.13/site-packages/pip/_vendor/pygments/styles/__init__.py +61 -0
  1097. package/python/lib/python3.13/site-packages/pip/_vendor/pygments/styles/_mapping.py +54 -0
  1098. package/python/lib/python3.13/site-packages/pip/_vendor/pygments/token.py +214 -0
  1099. package/python/lib/python3.13/site-packages/pip/_vendor/pygments/unistring.py +153 -0
  1100. package/python/lib/python3.13/site-packages/pip/_vendor/pygments/util.py +324 -0
  1101. package/python/lib/python3.13/site-packages/pip/_vendor/pyproject_hooks/LICENSE +21 -0
  1102. package/python/lib/python3.13/site-packages/pip/_vendor/pyproject_hooks/__init__.py +31 -0
  1103. package/python/lib/python3.13/site-packages/pip/_vendor/pyproject_hooks/_impl.py +410 -0
  1104. package/python/lib/python3.13/site-packages/pip/_vendor/pyproject_hooks/_in_process/__init__.py +21 -0
  1105. package/python/lib/python3.13/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py +389 -0
  1106. package/python/lib/python3.13/site-packages/pip/_vendor/pyproject_hooks/py.typed +0 -0
  1107. package/python/lib/python3.13/site-packages/pip/_vendor/requests/LICENSE +175 -0
  1108. package/python/lib/python3.13/site-packages/pip/_vendor/requests/__init__.py +179 -0
  1109. package/python/lib/python3.13/site-packages/pip/_vendor/requests/__version__.py +14 -0
  1110. package/python/lib/python3.13/site-packages/pip/_vendor/requests/_internal_utils.py +50 -0
  1111. package/python/lib/python3.13/site-packages/pip/_vendor/requests/adapters.py +696 -0
  1112. package/python/lib/python3.13/site-packages/pip/_vendor/requests/api.py +157 -0
  1113. package/python/lib/python3.13/site-packages/pip/_vendor/requests/auth.py +314 -0
  1114. package/python/lib/python3.13/site-packages/pip/_vendor/requests/certs.py +17 -0
  1115. package/python/lib/python3.13/site-packages/pip/_vendor/requests/compat.py +90 -0
  1116. package/python/lib/python3.13/site-packages/pip/_vendor/requests/cookies.py +561 -0
  1117. package/python/lib/python3.13/site-packages/pip/_vendor/requests/exceptions.py +151 -0
  1118. package/python/lib/python3.13/site-packages/pip/_vendor/requests/help.py +127 -0
  1119. package/python/lib/python3.13/site-packages/pip/_vendor/requests/hooks.py +33 -0
  1120. package/python/lib/python3.13/site-packages/pip/_vendor/requests/models.py +1039 -0
  1121. package/python/lib/python3.13/site-packages/pip/_vendor/requests/packages.py +25 -0
  1122. package/python/lib/python3.13/site-packages/pip/_vendor/requests/sessions.py +831 -0
  1123. package/python/lib/python3.13/site-packages/pip/_vendor/requests/status_codes.py +128 -0
  1124. package/python/lib/python3.13/site-packages/pip/_vendor/requests/structures.py +99 -0
  1125. package/python/lib/python3.13/site-packages/pip/_vendor/requests/utils.py +1086 -0
  1126. package/python/lib/python3.13/site-packages/pip/_vendor/resolvelib/LICENSE +13 -0
  1127. package/python/lib/python3.13/site-packages/pip/_vendor/resolvelib/__init__.py +27 -0
  1128. package/python/lib/python3.13/site-packages/pip/_vendor/resolvelib/providers.py +196 -0
  1129. package/python/lib/python3.13/site-packages/pip/_vendor/resolvelib/py.typed +0 -0
  1130. package/python/lib/python3.13/site-packages/pip/_vendor/resolvelib/reporters.py +55 -0
  1131. package/python/lib/python3.13/site-packages/pip/_vendor/resolvelib/resolvers/__init__.py +27 -0
  1132. package/python/lib/python3.13/site-packages/pip/_vendor/resolvelib/resolvers/abstract.py +47 -0
  1133. package/python/lib/python3.13/site-packages/pip/_vendor/resolvelib/resolvers/criterion.py +48 -0
  1134. package/python/lib/python3.13/site-packages/pip/_vendor/resolvelib/resolvers/exceptions.py +57 -0
  1135. package/python/lib/python3.13/site-packages/pip/_vendor/resolvelib/resolvers/resolution.py +627 -0
  1136. package/python/lib/python3.13/site-packages/pip/_vendor/resolvelib/structs.py +209 -0
  1137. package/python/lib/python3.13/site-packages/pip/_vendor/rich/LICENSE +19 -0
  1138. package/python/lib/python3.13/site-packages/pip/_vendor/rich/__init__.py +177 -0
  1139. package/python/lib/python3.13/site-packages/pip/_vendor/rich/__main__.py +245 -0
  1140. package/python/lib/python3.13/site-packages/pip/_vendor/rich/_cell_widths.py +454 -0
  1141. package/python/lib/python3.13/site-packages/pip/_vendor/rich/_emoji_codes.py +3610 -0
  1142. package/python/lib/python3.13/site-packages/pip/_vendor/rich/_emoji_replace.py +32 -0
  1143. package/python/lib/python3.13/site-packages/pip/_vendor/rich/_export_format.py +76 -0
  1144. package/python/lib/python3.13/site-packages/pip/_vendor/rich/_extension.py +10 -0
  1145. package/python/lib/python3.13/site-packages/pip/_vendor/rich/_fileno.py +24 -0
  1146. package/python/lib/python3.13/site-packages/pip/_vendor/rich/_inspect.py +268 -0
  1147. package/python/lib/python3.13/site-packages/pip/_vendor/rich/_log_render.py +94 -0
  1148. package/python/lib/python3.13/site-packages/pip/_vendor/rich/_loop.py +43 -0
  1149. package/python/lib/python3.13/site-packages/pip/_vendor/rich/_null_file.py +69 -0
  1150. package/python/lib/python3.13/site-packages/pip/_vendor/rich/_palettes.py +309 -0
  1151. package/python/lib/python3.13/site-packages/pip/_vendor/rich/_pick.py +17 -0
  1152. package/python/lib/python3.13/site-packages/pip/_vendor/rich/_ratio.py +153 -0
  1153. package/python/lib/python3.13/site-packages/pip/_vendor/rich/_spinners.py +482 -0
  1154. package/python/lib/python3.13/site-packages/pip/_vendor/rich/_stack.py +16 -0
  1155. package/python/lib/python3.13/site-packages/pip/_vendor/rich/_timer.py +19 -0
  1156. package/python/lib/python3.13/site-packages/pip/_vendor/rich/_win32_console.py +661 -0
  1157. package/python/lib/python3.13/site-packages/pip/_vendor/rich/_windows.py +71 -0
  1158. package/python/lib/python3.13/site-packages/pip/_vendor/rich/_windows_renderer.py +56 -0
  1159. package/python/lib/python3.13/site-packages/pip/_vendor/rich/_wrap.py +93 -0
  1160. package/python/lib/python3.13/site-packages/pip/_vendor/rich/abc.py +33 -0
  1161. package/python/lib/python3.13/site-packages/pip/_vendor/rich/align.py +306 -0
  1162. package/python/lib/python3.13/site-packages/pip/_vendor/rich/ansi.py +241 -0
  1163. package/python/lib/python3.13/site-packages/pip/_vendor/rich/bar.py +93 -0
  1164. package/python/lib/python3.13/site-packages/pip/_vendor/rich/box.py +474 -0
  1165. package/python/lib/python3.13/site-packages/pip/_vendor/rich/cells.py +174 -0
  1166. package/python/lib/python3.13/site-packages/pip/_vendor/rich/color.py +621 -0
  1167. package/python/lib/python3.13/site-packages/pip/_vendor/rich/color_triplet.py +38 -0
  1168. package/python/lib/python3.13/site-packages/pip/_vendor/rich/columns.py +187 -0
  1169. package/python/lib/python3.13/site-packages/pip/_vendor/rich/console.py +2680 -0
  1170. package/python/lib/python3.13/site-packages/pip/_vendor/rich/constrain.py +37 -0
  1171. package/python/lib/python3.13/site-packages/pip/_vendor/rich/containers.py +167 -0
  1172. package/python/lib/python3.13/site-packages/pip/_vendor/rich/control.py +219 -0
  1173. package/python/lib/python3.13/site-packages/pip/_vendor/rich/default_styles.py +193 -0
  1174. package/python/lib/python3.13/site-packages/pip/_vendor/rich/diagnose.py +39 -0
  1175. package/python/lib/python3.13/site-packages/pip/_vendor/rich/emoji.py +91 -0
  1176. package/python/lib/python3.13/site-packages/pip/_vendor/rich/errors.py +34 -0
  1177. package/python/lib/python3.13/site-packages/pip/_vendor/rich/file_proxy.py +57 -0
  1178. package/python/lib/python3.13/site-packages/pip/_vendor/rich/filesize.py +88 -0
  1179. package/python/lib/python3.13/site-packages/pip/_vendor/rich/highlighter.py +232 -0
  1180. package/python/lib/python3.13/site-packages/pip/_vendor/rich/json.py +139 -0
  1181. package/python/lib/python3.13/site-packages/pip/_vendor/rich/jupyter.py +101 -0
  1182. package/python/lib/python3.13/site-packages/pip/_vendor/rich/layout.py +442 -0
  1183. package/python/lib/python3.13/site-packages/pip/_vendor/rich/live.py +400 -0
  1184. package/python/lib/python3.13/site-packages/pip/_vendor/rich/live_render.py +106 -0
  1185. package/python/lib/python3.13/site-packages/pip/_vendor/rich/logging.py +297 -0
  1186. package/python/lib/python3.13/site-packages/pip/_vendor/rich/markup.py +251 -0
  1187. package/python/lib/python3.13/site-packages/pip/_vendor/rich/measure.py +151 -0
  1188. package/python/lib/python3.13/site-packages/pip/_vendor/rich/padding.py +141 -0
  1189. package/python/lib/python3.13/site-packages/pip/_vendor/rich/pager.py +34 -0
  1190. package/python/lib/python3.13/site-packages/pip/_vendor/rich/palette.py +100 -0
  1191. package/python/lib/python3.13/site-packages/pip/_vendor/rich/panel.py +317 -0
  1192. package/python/lib/python3.13/site-packages/pip/_vendor/rich/pretty.py +1016 -0
  1193. package/python/lib/python3.13/site-packages/pip/_vendor/rich/progress.py +1715 -0
  1194. package/python/lib/python3.13/site-packages/pip/_vendor/rich/progress_bar.py +223 -0
  1195. package/python/lib/python3.13/site-packages/pip/_vendor/rich/prompt.py +400 -0
  1196. package/python/lib/python3.13/site-packages/pip/_vendor/rich/protocol.py +42 -0
  1197. package/python/lib/python3.13/site-packages/pip/_vendor/rich/py.typed +0 -0
  1198. package/python/lib/python3.13/site-packages/pip/_vendor/rich/region.py +10 -0
  1199. package/python/lib/python3.13/site-packages/pip/_vendor/rich/repr.py +149 -0
  1200. package/python/lib/python3.13/site-packages/pip/_vendor/rich/rule.py +130 -0
  1201. package/python/lib/python3.13/site-packages/pip/_vendor/rich/scope.py +86 -0
  1202. package/python/lib/python3.13/site-packages/pip/_vendor/rich/screen.py +54 -0
  1203. package/python/lib/python3.13/site-packages/pip/_vendor/rich/segment.py +752 -0
  1204. package/python/lib/python3.13/site-packages/pip/_vendor/rich/spinner.py +132 -0
  1205. package/python/lib/python3.13/site-packages/pip/_vendor/rich/status.py +131 -0
  1206. package/python/lib/python3.13/site-packages/pip/_vendor/rich/style.py +792 -0
  1207. package/python/lib/python3.13/site-packages/pip/_vendor/rich/styled.py +42 -0
  1208. package/python/lib/python3.13/site-packages/pip/_vendor/rich/syntax.py +985 -0
  1209. package/python/lib/python3.13/site-packages/pip/_vendor/rich/table.py +1006 -0
  1210. package/python/lib/python3.13/site-packages/pip/_vendor/rich/terminal_theme.py +153 -0
  1211. package/python/lib/python3.13/site-packages/pip/_vendor/rich/text.py +1361 -0
  1212. package/python/lib/python3.13/site-packages/pip/_vendor/rich/theme.py +115 -0
  1213. package/python/lib/python3.13/site-packages/pip/_vendor/rich/themes.py +5 -0
  1214. package/python/lib/python3.13/site-packages/pip/_vendor/rich/traceback.py +899 -0
  1215. package/python/lib/python3.13/site-packages/pip/_vendor/rich/tree.py +257 -0
  1216. package/python/lib/python3.13/site-packages/pip/_vendor/tomli/LICENSE +21 -0
  1217. package/python/lib/python3.13/site-packages/pip/_vendor/tomli/__init__.py +8 -0
  1218. package/python/lib/python3.13/site-packages/pip/_vendor/tomli/_parser.py +777 -0
  1219. package/python/lib/python3.13/site-packages/pip/_vendor/tomli/_re.py +115 -0
  1220. package/python/lib/python3.13/site-packages/pip/_vendor/tomli/_types.py +10 -0
  1221. package/python/lib/python3.13/site-packages/pip/_vendor/tomli/py.typed +1 -0
  1222. package/python/lib/python3.13/site-packages/pip/_vendor/tomli_w/LICENSE +21 -0
  1223. package/python/lib/python3.13/site-packages/pip/_vendor/tomli_w/__init__.py +4 -0
  1224. package/python/lib/python3.13/site-packages/pip/_vendor/tomli_w/_writer.py +229 -0
  1225. package/python/lib/python3.13/site-packages/pip/_vendor/tomli_w/py.typed +1 -0
  1226. package/python/lib/python3.13/site-packages/pip/_vendor/truststore/LICENSE +21 -0
  1227. package/python/lib/python3.13/site-packages/pip/_vendor/truststore/__init__.py +36 -0
  1228. package/python/lib/python3.13/site-packages/pip/_vendor/truststore/_api.py +341 -0
  1229. package/python/lib/python3.13/site-packages/pip/_vendor/truststore/_macos.py +571 -0
  1230. package/python/lib/python3.13/site-packages/pip/_vendor/truststore/_openssl.py +68 -0
  1231. package/python/lib/python3.13/site-packages/pip/_vendor/truststore/_ssl_constants.py +31 -0
  1232. package/python/lib/python3.13/site-packages/pip/_vendor/truststore/_windows.py +567 -0
  1233. package/python/lib/python3.13/site-packages/pip/_vendor/truststore/py.typed +0 -0
  1234. package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/LICENSE.txt +21 -0
  1235. package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/__init__.py +102 -0
  1236. package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/_collections.py +355 -0
  1237. package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/_version.py +2 -0
  1238. package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/connection.py +572 -0
  1239. package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/connectionpool.py +1140 -0
  1240. package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/contrib/__init__.py +0 -0
  1241. package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py +36 -0
  1242. package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py +0 -0
  1243. package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py +519 -0
  1244. package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py +397 -0
  1245. package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/contrib/appengine.py +314 -0
  1246. package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py +130 -0
  1247. package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py +518 -0
  1248. package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/contrib/securetransport.py +920 -0
  1249. package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/contrib/socks.py +216 -0
  1250. package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/exceptions.py +323 -0
  1251. package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/fields.py +274 -0
  1252. package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/filepost.py +98 -0
  1253. package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/packages/__init__.py +0 -0
  1254. package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py +0 -0
  1255. package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py +51 -0
  1256. package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/packages/backports/weakref_finalize.py +155 -0
  1257. package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/packages/six.py +1076 -0
  1258. package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/poolmanager.py +540 -0
  1259. package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/request.py +191 -0
  1260. package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/response.py +879 -0
  1261. package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/util/__init__.py +49 -0
  1262. package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/util/connection.py +149 -0
  1263. package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/util/proxy.py +57 -0
  1264. package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/util/queue.py +22 -0
  1265. package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/util/request.py +137 -0
  1266. package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/util/response.py +107 -0
  1267. package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/util/retry.py +622 -0
  1268. package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/util/ssl_.py +504 -0
  1269. package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/util/ssl_match_hostname.py +159 -0
  1270. package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/util/ssltransport.py +221 -0
  1271. package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/util/timeout.py +271 -0
  1272. package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/util/url.py +435 -0
  1273. package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/util/wait.py +152 -0
  1274. package/python/lib/python3.13/site-packages/pip/_vendor/vendor.txt +19 -0
  1275. package/python/lib/python3.13/site-packages/pip/py.typed +4 -0
  1276. package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/INSTALLER +1 -0
  1277. package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/METADATA +111 -0
  1278. package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/RECORD +879 -0
  1279. package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/REQUESTED +0 -0
  1280. package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/WHEEL +4 -0
  1281. package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/direct_url.json +1 -0
  1282. package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/entry_points.txt +4 -0
  1283. package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/licenses/AUTHORS.txt +860 -0
  1284. package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/licenses/LICENSE.txt +20 -0
  1285. package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/cachecontrol/LICENSE.txt +13 -0
  1286. package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/certifi/LICENSE +20 -0
  1287. package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/dependency_groups/LICENSE.txt +9 -0
  1288. package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/distlib/LICENSE.txt +284 -0
  1289. package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/distro/LICENSE +202 -0
  1290. package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/idna/LICENSE.md +31 -0
  1291. package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/msgpack/COPYING +14 -0
  1292. package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/packaging/LICENSE +3 -0
  1293. package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/packaging/LICENSE.APACHE +177 -0
  1294. package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/packaging/LICENSE.BSD +23 -0
  1295. package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/pkg_resources/LICENSE +17 -0
  1296. package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/platformdirs/LICENSE +21 -0
  1297. package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/pygments/LICENSE +25 -0
  1298. package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/pyproject_hooks/LICENSE +21 -0
  1299. package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/requests/LICENSE +175 -0
  1300. package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/resolvelib/LICENSE +13 -0
  1301. package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/rich/LICENSE +19 -0
  1302. package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/tomli/LICENSE +21 -0
  1303. package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/tomli_w/LICENSE +21 -0
  1304. package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/truststore/LICENSE +21 -0
  1305. package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/urllib3/LICENSE.txt +21 -0
  1306. package/python/lib/python3.13/site.py +773 -0
  1307. package/python/lib/python3.13/smtplib.py +1123 -0
  1308. package/python/lib/python3.13/socket.py +982 -0
  1309. package/python/lib/python3.13/socketserver.py +863 -0
  1310. package/python/lib/python3.13/sqlite3/__init__.py +70 -0
  1311. package/python/lib/python3.13/sqlite3/__main__.py +139 -0
  1312. package/python/lib/python3.13/sqlite3/dbapi2.py +108 -0
  1313. package/python/lib/python3.13/sqlite3/dump.py +113 -0
  1314. package/python/lib/python3.13/sre_compile.py +7 -0
  1315. package/python/lib/python3.13/sre_constants.py +7 -0
  1316. package/python/lib/python3.13/sre_parse.py +7 -0
  1317. package/python/lib/python3.13/ssl.py +1529 -0
  1318. package/python/lib/python3.13/stat.py +212 -0
  1319. package/python/lib/python3.13/statistics.py +1817 -0
  1320. package/python/lib/python3.13/string.py +309 -0
  1321. package/python/lib/python3.13/stringprep.py +272 -0
  1322. package/python/lib/python3.13/struct.py +15 -0
  1323. package/python/lib/python3.13/subprocess.py +2258 -0
  1324. package/python/lib/python3.13/symtable.py +414 -0
  1325. package/python/lib/python3.13/sysconfig/__init__.py +726 -0
  1326. package/python/lib/python3.13/sysconfig/__main__.py +248 -0
  1327. package/python/lib/python3.13/tabnanny.py +340 -0
  1328. package/python/lib/python3.13/tarfile.py +3070 -0
  1329. package/python/lib/python3.13/tempfile.py +957 -0
  1330. package/python/lib/python3.13/textwrap.py +497 -0
  1331. package/python/lib/python3.13/this.py +28 -0
  1332. package/python/lib/python3.13/threading.py +1602 -0
  1333. package/python/lib/python3.13/timeit.py +381 -0
  1334. package/python/lib/python3.13/tkinter/__init__.py +5002 -0
  1335. package/python/lib/python3.13/tkinter/__main__.py +7 -0
  1336. package/python/lib/python3.13/tkinter/colorchooser.py +86 -0
  1337. package/python/lib/python3.13/tkinter/commondialog.py +53 -0
  1338. package/python/lib/python3.13/tkinter/constants.py +110 -0
  1339. package/python/lib/python3.13/tkinter/dialog.py +49 -0
  1340. package/python/lib/python3.13/tkinter/dnd.py +324 -0
  1341. package/python/lib/python3.13/tkinter/filedialog.py +492 -0
  1342. package/python/lib/python3.13/tkinter/font.py +239 -0
  1343. package/python/lib/python3.13/tkinter/messagebox.py +146 -0
  1344. package/python/lib/python3.13/tkinter/scrolledtext.py +56 -0
  1345. package/python/lib/python3.13/tkinter/simpledialog.py +441 -0
  1346. package/python/lib/python3.13/tkinter/ttk.py +1647 -0
  1347. package/python/lib/python3.13/token.py +141 -0
  1348. package/python/lib/python3.13/tokenize.py +592 -0
  1349. package/python/lib/python3.13/tomllib/__init__.py +10 -0
  1350. package/python/lib/python3.13/tomllib/_parser.py +691 -0
  1351. package/python/lib/python3.13/tomllib/_re.py +107 -0
  1352. package/python/lib/python3.13/tomllib/_types.py +10 -0
  1353. package/python/lib/python3.13/tomllib/mypy.ini +17 -0
  1354. package/python/lib/python3.13/trace.py +754 -0
  1355. package/python/lib/python3.13/traceback.py +1638 -0
  1356. package/python/lib/python3.13/tracemalloc.py +560 -0
  1357. package/python/lib/python3.13/tty.py +73 -0
  1358. package/python/lib/python3.13/turtle.py +4199 -0
  1359. package/python/lib/python3.13/turtledemo/__init__.py +14 -0
  1360. package/python/lib/python3.13/turtledemo/__main__.py +401 -0
  1361. package/python/lib/python3.13/turtledemo/bytedesign.py +161 -0
  1362. package/python/lib/python3.13/turtledemo/chaos.py +59 -0
  1363. package/python/lib/python3.13/turtledemo/clock.py +138 -0
  1364. package/python/lib/python3.13/turtledemo/colormixer.py +58 -0
  1365. package/python/lib/python3.13/turtledemo/forest.py +108 -0
  1366. package/python/lib/python3.13/turtledemo/fractalcurves.py +138 -0
  1367. package/python/lib/python3.13/turtledemo/lindenmayer.py +119 -0
  1368. package/python/lib/python3.13/turtledemo/minimal_hanoi.py +79 -0
  1369. package/python/lib/python3.13/turtledemo/nim.py +226 -0
  1370. package/python/lib/python3.13/turtledemo/paint.py +54 -0
  1371. package/python/lib/python3.13/turtledemo/peace.py +61 -0
  1372. package/python/lib/python3.13/turtledemo/penrose.py +175 -0
  1373. package/python/lib/python3.13/turtledemo/planet_and_moon.py +111 -0
  1374. package/python/lib/python3.13/turtledemo/rosette.py +65 -0
  1375. package/python/lib/python3.13/turtledemo/round_dance.py +86 -0
  1376. package/python/lib/python3.13/turtledemo/sorting_animate.py +204 -0
  1377. package/python/lib/python3.13/turtledemo/tree.py +62 -0
  1378. package/python/lib/python3.13/turtledemo/turtle.cfg +10 -0
  1379. package/python/lib/python3.13/turtledemo/two_canvases.py +54 -0
  1380. package/python/lib/python3.13/turtledemo/yinyang.py +49 -0
  1381. package/python/lib/python3.13/types.py +345 -0
  1382. package/python/lib/python3.13/typing.py +3831 -0
  1383. package/python/lib/python3.13/unittest/__init__.py +80 -0
  1384. package/python/lib/python3.13/unittest/__main__.py +18 -0
  1385. package/python/lib/python3.13/unittest/_log.py +86 -0
  1386. package/python/lib/python3.13/unittest/async_case.py +146 -0
  1387. package/python/lib/python3.13/unittest/case.py +1478 -0
  1388. package/python/lib/python3.13/unittest/loader.py +453 -0
  1389. package/python/lib/python3.13/unittest/main.py +280 -0
  1390. package/python/lib/python3.13/unittest/mock.py +3179 -0
  1391. package/python/lib/python3.13/unittest/result.py +256 -0
  1392. package/python/lib/python3.13/unittest/runner.py +292 -0
  1393. package/python/lib/python3.13/unittest/signals.py +71 -0
  1394. package/python/lib/python3.13/unittest/suite.py +379 -0
  1395. package/python/lib/python3.13/unittest/util.py +170 -0
  1396. package/python/lib/python3.13/urllib/__init__.py +0 -0
  1397. package/python/lib/python3.13/urllib/error.py +74 -0
  1398. package/python/lib/python3.13/urllib/parse.py +1262 -0
  1399. package/python/lib/python3.13/urllib/request.py +2797 -0
  1400. package/python/lib/python3.13/urllib/response.py +84 -0
  1401. package/python/lib/python3.13/urllib/robotparser.py +286 -0
  1402. package/python/lib/python3.13/uuid.py +784 -0
  1403. package/python/lib/python3.13/venv/__init__.py +687 -0
  1404. package/python/lib/python3.13/venv/__main__.py +10 -0
  1405. package/python/lib/python3.13/venv/scripts/common/Activate.ps1 +248 -0
  1406. package/python/lib/python3.13/venv/scripts/common/activate +76 -0
  1407. package/python/lib/python3.13/venv/scripts/common/activate.fish +69 -0
  1408. package/python/lib/python3.13/venv/scripts/posix/activate.csh +27 -0
  1409. package/python/lib/python3.13/warnings.py +735 -0
  1410. package/python/lib/python3.13/wave.py +665 -0
  1411. package/python/lib/python3.13/weakref.py +674 -0
  1412. package/python/lib/python3.13/webbrowser.py +710 -0
  1413. package/python/lib/python3.13/wsgiref/__init__.py +25 -0
  1414. package/python/lib/python3.13/wsgiref/handlers.py +573 -0
  1415. package/python/lib/python3.13/wsgiref/headers.py +187 -0
  1416. package/python/lib/python3.13/wsgiref/simple_server.py +161 -0
  1417. package/python/lib/python3.13/wsgiref/types.py +54 -0
  1418. package/python/lib/python3.13/wsgiref/util.py +159 -0
  1419. package/python/lib/python3.13/wsgiref/validate.py +438 -0
  1420. package/python/lib/python3.13/xml/__init__.py +20 -0
  1421. package/python/lib/python3.13/xml/dom/NodeFilter.py +27 -0
  1422. package/python/lib/python3.13/xml/dom/__init__.py +140 -0
  1423. package/python/lib/python3.13/xml/dom/domreg.py +99 -0
  1424. package/python/lib/python3.13/xml/dom/expatbuilder.py +962 -0
  1425. package/python/lib/python3.13/xml/dom/minicompat.py +109 -0
  1426. package/python/lib/python3.13/xml/dom/minidom.py +2024 -0
  1427. package/python/lib/python3.13/xml/dom/pulldom.py +336 -0
  1428. package/python/lib/python3.13/xml/dom/xmlbuilder.py +389 -0
  1429. package/python/lib/python3.13/xml/etree/ElementInclude.py +186 -0
  1430. package/python/lib/python3.13/xml/etree/ElementPath.py +423 -0
  1431. package/python/lib/python3.13/xml/etree/ElementTree.py +2098 -0
  1432. package/python/lib/python3.13/xml/etree/__init__.py +33 -0
  1433. package/python/lib/python3.13/xml/etree/cElementTree.py +3 -0
  1434. package/python/lib/python3.13/xml/parsers/__init__.py +8 -0
  1435. package/python/lib/python3.13/xml/parsers/expat.py +8 -0
  1436. package/python/lib/python3.13/xml/sax/__init__.py +94 -0
  1437. package/python/lib/python3.13/xml/sax/_exceptions.py +127 -0
  1438. package/python/lib/python3.13/xml/sax/expatreader.py +454 -0
  1439. package/python/lib/python3.13/xml/sax/handler.py +387 -0
  1440. package/python/lib/python3.13/xml/sax/saxutils.py +369 -0
  1441. package/python/lib/python3.13/xml/sax/xmlreader.py +378 -0
  1442. package/python/lib/python3.13/xmlrpc/__init__.py +1 -0
  1443. package/python/lib/python3.13/xmlrpc/client.py +1503 -0
  1444. package/python/lib/python3.13/xmlrpc/server.py +1002 -0
  1445. package/python/lib/python3.13/zipapp.py +229 -0
  1446. package/python/lib/python3.13/zipfile/__init__.py +2375 -0
  1447. package/python/lib/python3.13/zipfile/__main__.py +4 -0
  1448. package/python/lib/python3.13/zipfile/_path/__init__.py +452 -0
  1449. package/python/lib/python3.13/zipfile/_path/glob.py +113 -0
  1450. package/python/lib/python3.13/zipimport.py +803 -0
  1451. package/python/lib/python3.13/zoneinfo/__init__.py +34 -0
  1452. package/python/lib/python3.13/zoneinfo/_common.py +168 -0
  1453. package/python/lib/python3.13/zoneinfo/_tzpath.py +189 -0
  1454. package/python/lib/python3.13/zoneinfo/_zoneinfo.py +772 -0
  1455. package/python/lib/tcl9/9.0/http-2.10.1.tm +5475 -0
  1456. package/python/lib/tcl9/9.0/msgcat-1.7.1.tm +1349 -0
  1457. package/python/lib/tcl9/9.0/platform/shell-1.1.4.tm +241 -0
  1458. package/python/lib/tcl9/9.0/platform-1.1.0.tm +443 -0
  1459. package/python/lib/tcl9/9.0/tcltest-2.5.10.tm +3588 -0
  1460. package/python/lib/tcl9.0/auto.tcl +711 -0
  1461. package/python/lib/tcl9.0/clock.tcl +2110 -0
  1462. package/python/lib/tcl9.0/cookiejar0.2/cookiejar.tcl +746 -0
  1463. package/python/lib/tcl9.0/cookiejar0.2/idna.tcl +292 -0
  1464. package/python/lib/tcl9.0/cookiejar0.2/pkgIndex.tcl +3 -0
  1465. package/python/lib/tcl9.0/cookiejar0.2/public_suffix_list.dat.gz +0 -0
  1466. package/python/lib/tcl9.0/encoding/ascii.enc +20 -0
  1467. package/python/lib/tcl9.0/encoding/big5.enc +1516 -0
  1468. package/python/lib/tcl9.0/encoding/cns11643.enc +1584 -0
  1469. package/python/lib/tcl9.0/encoding/cp1250.enc +20 -0
  1470. package/python/lib/tcl9.0/encoding/cp1251.enc +20 -0
  1471. package/python/lib/tcl9.0/encoding/cp1252.enc +20 -0
  1472. package/python/lib/tcl9.0/encoding/cp1253.enc +20 -0
  1473. package/python/lib/tcl9.0/encoding/cp1254.enc +20 -0
  1474. package/python/lib/tcl9.0/encoding/cp1255.enc +20 -0
  1475. package/python/lib/tcl9.0/encoding/cp1256.enc +20 -0
  1476. package/python/lib/tcl9.0/encoding/cp1257.enc +20 -0
  1477. package/python/lib/tcl9.0/encoding/cp1258.enc +20 -0
  1478. package/python/lib/tcl9.0/encoding/cp165.enc +20 -0
  1479. package/python/lib/tcl9.0/encoding/cp437.enc +20 -0
  1480. package/python/lib/tcl9.0/encoding/cp737.enc +20 -0
  1481. package/python/lib/tcl9.0/encoding/cp775.enc +20 -0
  1482. package/python/lib/tcl9.0/encoding/cp850.enc +20 -0
  1483. package/python/lib/tcl9.0/encoding/cp852.enc +20 -0
  1484. package/python/lib/tcl9.0/encoding/cp855.enc +20 -0
  1485. package/python/lib/tcl9.0/encoding/cp857.enc +20 -0
  1486. package/python/lib/tcl9.0/encoding/cp860.enc +20 -0
  1487. package/python/lib/tcl9.0/encoding/cp861.enc +20 -0
  1488. package/python/lib/tcl9.0/encoding/cp862.enc +20 -0
  1489. package/python/lib/tcl9.0/encoding/cp863.enc +20 -0
  1490. package/python/lib/tcl9.0/encoding/cp864.enc +20 -0
  1491. package/python/lib/tcl9.0/encoding/cp865.enc +20 -0
  1492. package/python/lib/tcl9.0/encoding/cp866.enc +20 -0
  1493. package/python/lib/tcl9.0/encoding/cp869.enc +20 -0
  1494. package/python/lib/tcl9.0/encoding/cp874.enc +20 -0
  1495. package/python/lib/tcl9.0/encoding/cp932.enc +801 -0
  1496. package/python/lib/tcl9.0/encoding/cp936.enc +2162 -0
  1497. package/python/lib/tcl9.0/encoding/cp949.enc +2128 -0
  1498. package/python/lib/tcl9.0/encoding/cp950.enc +1499 -0
  1499. package/python/lib/tcl9.0/encoding/dingbats.enc +20 -0
  1500. package/python/lib/tcl9.0/encoding/ebcdic.enc +20 -0
  1501. package/python/lib/tcl9.0/encoding/euc-cn.enc +1397 -0
  1502. package/python/lib/tcl9.0/encoding/euc-jp.enc +1353 -0
  1503. package/python/lib/tcl9.0/encoding/euc-kr.enc +1533 -0
  1504. package/python/lib/tcl9.0/encoding/gb12345.enc +1414 -0
  1505. package/python/lib/tcl9.0/encoding/gb1988.enc +20 -0
  1506. package/python/lib/tcl9.0/encoding/gb2312-raw.enc +1380 -0
  1507. package/python/lib/tcl9.0/encoding/gb2312.enc +1397 -0
  1508. package/python/lib/tcl9.0/encoding/iso2022-jp.enc +12 -0
  1509. package/python/lib/tcl9.0/encoding/iso2022-kr.enc +7 -0
  1510. package/python/lib/tcl9.0/encoding/iso2022.enc +14 -0
  1511. package/python/lib/tcl9.0/encoding/iso8859-1.enc +20 -0
  1512. package/python/lib/tcl9.0/encoding/iso8859-10.enc +20 -0
  1513. package/python/lib/tcl9.0/encoding/iso8859-11.enc +20 -0
  1514. package/python/lib/tcl9.0/encoding/iso8859-13.enc +20 -0
  1515. package/python/lib/tcl9.0/encoding/iso8859-14.enc +20 -0
  1516. package/python/lib/tcl9.0/encoding/iso8859-15.enc +20 -0
  1517. package/python/lib/tcl9.0/encoding/iso8859-16.enc +20 -0
  1518. package/python/lib/tcl9.0/encoding/iso8859-2.enc +20 -0
  1519. package/python/lib/tcl9.0/encoding/iso8859-3.enc +20 -0
  1520. package/python/lib/tcl9.0/encoding/iso8859-4.enc +20 -0
  1521. package/python/lib/tcl9.0/encoding/iso8859-5.enc +20 -0
  1522. package/python/lib/tcl9.0/encoding/iso8859-6.enc +20 -0
  1523. package/python/lib/tcl9.0/encoding/iso8859-7.enc +20 -0
  1524. package/python/lib/tcl9.0/encoding/iso8859-8.enc +20 -0
  1525. package/python/lib/tcl9.0/encoding/iso8859-9.enc +20 -0
  1526. package/python/lib/tcl9.0/encoding/jis0201.enc +20 -0
  1527. package/python/lib/tcl9.0/encoding/jis0208.enc +1319 -0
  1528. package/python/lib/tcl9.0/encoding/jis0212.enc +1159 -0
  1529. package/python/lib/tcl9.0/encoding/koi8-r.enc +20 -0
  1530. package/python/lib/tcl9.0/encoding/koi8-ru.enc +20 -0
  1531. package/python/lib/tcl9.0/encoding/koi8-t.enc +20 -0
  1532. package/python/lib/tcl9.0/encoding/koi8-u.enc +20 -0
  1533. package/python/lib/tcl9.0/encoding/ksc5601.enc +1516 -0
  1534. package/python/lib/tcl9.0/encoding/macCentEuro.enc +20 -0
  1535. package/python/lib/tcl9.0/encoding/macCroatian.enc +20 -0
  1536. package/python/lib/tcl9.0/encoding/macCyrillic.enc +20 -0
  1537. package/python/lib/tcl9.0/encoding/macDingbats.enc +20 -0
  1538. package/python/lib/tcl9.0/encoding/macGreek.enc +20 -0
  1539. package/python/lib/tcl9.0/encoding/macIceland.enc +20 -0
  1540. package/python/lib/tcl9.0/encoding/macJapan.enc +785 -0
  1541. package/python/lib/tcl9.0/encoding/macRoman.enc +20 -0
  1542. package/python/lib/tcl9.0/encoding/macRomania.enc +20 -0
  1543. package/python/lib/tcl9.0/encoding/macThai.enc +20 -0
  1544. package/python/lib/tcl9.0/encoding/macTurkish.enc +20 -0
  1545. package/python/lib/tcl9.0/encoding/macUkraine.enc +20 -0
  1546. package/python/lib/tcl9.0/encoding/shiftjis.enc +690 -0
  1547. package/python/lib/tcl9.0/encoding/symbol.enc +20 -0
  1548. package/python/lib/tcl9.0/encoding/tis-620.enc +20 -0
  1549. package/python/lib/tcl9.0/foreachline.tcl +25 -0
  1550. package/python/lib/tcl9.0/history.tcl +335 -0
  1551. package/python/lib/tcl9.0/icu.tcl +145 -0
  1552. package/python/lib/tcl9.0/init.tcl +773 -0
  1553. package/python/lib/tcl9.0/install.tcl +275 -0
  1554. package/python/lib/tcl9.0/msgs/af.msg +49 -0
  1555. package/python/lib/tcl9.0/msgs/af_za.msg +6 -0
  1556. package/python/lib/tcl9.0/msgs/ar.msg +54 -0
  1557. package/python/lib/tcl9.0/msgs/ar_in.msg +6 -0
  1558. package/python/lib/tcl9.0/msgs/ar_jo.msg +39 -0
  1559. package/python/lib/tcl9.0/msgs/ar_lb.msg +39 -0
  1560. package/python/lib/tcl9.0/msgs/ar_sy.msg +39 -0
  1561. package/python/lib/tcl9.0/msgs/be.msg +52 -0
  1562. package/python/lib/tcl9.0/msgs/bg.msg +52 -0
  1563. package/python/lib/tcl9.0/msgs/bn.msg +49 -0
  1564. package/python/lib/tcl9.0/msgs/bn_in.msg +6 -0
  1565. package/python/lib/tcl9.0/msgs/ca.msg +50 -0
  1566. package/python/lib/tcl9.0/msgs/cs.msg +54 -0
  1567. package/python/lib/tcl9.0/msgs/da.msg +52 -0
  1568. package/python/lib/tcl9.0/msgs/de.msg +54 -0
  1569. package/python/lib/tcl9.0/msgs/de_at.msg +35 -0
  1570. package/python/lib/tcl9.0/msgs/de_be.msg +53 -0
  1571. package/python/lib/tcl9.0/msgs/el.msg +52 -0
  1572. package/python/lib/tcl9.0/msgs/en_au.msg +7 -0
  1573. package/python/lib/tcl9.0/msgs/en_be.msg +7 -0
  1574. package/python/lib/tcl9.0/msgs/en_bw.msg +6 -0
  1575. package/python/lib/tcl9.0/msgs/en_ca.msg +7 -0
  1576. package/python/lib/tcl9.0/msgs/en_gb.msg +7 -0
  1577. package/python/lib/tcl9.0/msgs/en_hk.msg +8 -0
  1578. package/python/lib/tcl9.0/msgs/en_ie.msg +7 -0
  1579. package/python/lib/tcl9.0/msgs/en_in.msg +8 -0
  1580. package/python/lib/tcl9.0/msgs/en_nz.msg +7 -0
  1581. package/python/lib/tcl9.0/msgs/en_ph.msg +8 -0
  1582. package/python/lib/tcl9.0/msgs/en_sg.msg +6 -0
  1583. package/python/lib/tcl9.0/msgs/en_za.msg +6 -0
  1584. package/python/lib/tcl9.0/msgs/en_zw.msg +6 -0
  1585. package/python/lib/tcl9.0/msgs/eo.msg +54 -0
  1586. package/python/lib/tcl9.0/msgs/es.msg +52 -0
  1587. package/python/lib/tcl9.0/msgs/es_ar.msg +6 -0
  1588. package/python/lib/tcl9.0/msgs/es_bo.msg +6 -0
  1589. package/python/lib/tcl9.0/msgs/es_cl.msg +6 -0
  1590. package/python/lib/tcl9.0/msgs/es_co.msg +6 -0
  1591. package/python/lib/tcl9.0/msgs/es_cr.msg +6 -0
  1592. package/python/lib/tcl9.0/msgs/es_do.msg +6 -0
  1593. package/python/lib/tcl9.0/msgs/es_ec.msg +6 -0
  1594. package/python/lib/tcl9.0/msgs/es_gt.msg +6 -0
  1595. package/python/lib/tcl9.0/msgs/es_hn.msg +6 -0
  1596. package/python/lib/tcl9.0/msgs/es_mx.msg +6 -0
  1597. package/python/lib/tcl9.0/msgs/es_ni.msg +6 -0
  1598. package/python/lib/tcl9.0/msgs/es_pa.msg +6 -0
  1599. package/python/lib/tcl9.0/msgs/es_pe.msg +6 -0
  1600. package/python/lib/tcl9.0/msgs/es_pr.msg +6 -0
  1601. package/python/lib/tcl9.0/msgs/es_py.msg +6 -0
  1602. package/python/lib/tcl9.0/msgs/es_sv.msg +6 -0
  1603. package/python/lib/tcl9.0/msgs/es_uy.msg +6 -0
  1604. package/python/lib/tcl9.0/msgs/es_ve.msg +6 -0
  1605. package/python/lib/tcl9.0/msgs/et.msg +52 -0
  1606. package/python/lib/tcl9.0/msgs/eu.msg +47 -0
  1607. package/python/lib/tcl9.0/msgs/eu_es.msg +7 -0
  1608. package/python/lib/tcl9.0/msgs/fa.msg +47 -0
  1609. package/python/lib/tcl9.0/msgs/fa_in.msg +52 -0
  1610. package/python/lib/tcl9.0/msgs/fa_ir.msg +9 -0
  1611. package/python/lib/tcl9.0/msgs/fi.msg +50 -0
  1612. package/python/lib/tcl9.0/msgs/fo.msg +47 -0
  1613. package/python/lib/tcl9.0/msgs/fo_fo.msg +7 -0
  1614. package/python/lib/tcl9.0/msgs/fr.msg +52 -0
  1615. package/python/lib/tcl9.0/msgs/fr_be.msg +7 -0
  1616. package/python/lib/tcl9.0/msgs/fr_ca.msg +7 -0
  1617. package/python/lib/tcl9.0/msgs/fr_ch.msg +7 -0
  1618. package/python/lib/tcl9.0/msgs/ga.msg +47 -0
  1619. package/python/lib/tcl9.0/msgs/ga_ie.msg +7 -0
  1620. package/python/lib/tcl9.0/msgs/gl.msg +47 -0
  1621. package/python/lib/tcl9.0/msgs/gl_es.msg +6 -0
  1622. package/python/lib/tcl9.0/msgs/gv.msg +47 -0
  1623. package/python/lib/tcl9.0/msgs/gv_gb.msg +6 -0
  1624. package/python/lib/tcl9.0/msgs/he.msg +52 -0
  1625. package/python/lib/tcl9.0/msgs/hi.msg +39 -0
  1626. package/python/lib/tcl9.0/msgs/hi_in.msg +6 -0
  1627. package/python/lib/tcl9.0/msgs/hr.msg +50 -0
  1628. package/python/lib/tcl9.0/msgs/hu.msg +54 -0
  1629. package/python/lib/tcl9.0/msgs/id.msg +47 -0
  1630. package/python/lib/tcl9.0/msgs/id_id.msg +6 -0
  1631. package/python/lib/tcl9.0/msgs/is.msg +50 -0
  1632. package/python/lib/tcl9.0/msgs/it.msg +54 -0
  1633. package/python/lib/tcl9.0/msgs/it_ch.msg +6 -0
  1634. package/python/lib/tcl9.0/msgs/ja.msg +44 -0
  1635. package/python/lib/tcl9.0/msgs/kl.msg +47 -0
  1636. package/python/lib/tcl9.0/msgs/kl_gl.msg +7 -0
  1637. package/python/lib/tcl9.0/msgs/ko.msg +55 -0
  1638. package/python/lib/tcl9.0/msgs/ko_kr.msg +8 -0
  1639. package/python/lib/tcl9.0/msgs/kok.msg +39 -0
  1640. package/python/lib/tcl9.0/msgs/kok_in.msg +6 -0
  1641. package/python/lib/tcl9.0/msgs/kw.msg +47 -0
  1642. package/python/lib/tcl9.0/msgs/kw_gb.msg +6 -0
  1643. package/python/lib/tcl9.0/msgs/lt.msg +52 -0
  1644. package/python/lib/tcl9.0/msgs/lv.msg +52 -0
  1645. package/python/lib/tcl9.0/msgs/mk.msg +52 -0
  1646. package/python/lib/tcl9.0/msgs/mr.msg +39 -0
  1647. package/python/lib/tcl9.0/msgs/mr_in.msg +6 -0
  1648. package/python/lib/tcl9.0/msgs/ms.msg +47 -0
  1649. package/python/lib/tcl9.0/msgs/ms_my.msg +6 -0
  1650. package/python/lib/tcl9.0/msgs/mt.msg +27 -0
  1651. package/python/lib/tcl9.0/msgs/nb.msg +52 -0
  1652. package/python/lib/tcl9.0/msgs/nl.msg +50 -0
  1653. package/python/lib/tcl9.0/msgs/nl_be.msg +7 -0
  1654. package/python/lib/tcl9.0/msgs/nn.msg +52 -0
  1655. package/python/lib/tcl9.0/msgs/pl.msg +52 -0
  1656. package/python/lib/tcl9.0/msgs/pt.msg +50 -0
  1657. package/python/lib/tcl9.0/msgs/pt_br.msg +7 -0
  1658. package/python/lib/tcl9.0/msgs/ro.msg +52 -0
  1659. package/python/lib/tcl9.0/msgs/ru.msg +52 -0
  1660. package/python/lib/tcl9.0/msgs/ru_ua.msg +6 -0
  1661. package/python/lib/tcl9.0/msgs/sh.msg +52 -0
  1662. package/python/lib/tcl9.0/msgs/sk.msg +52 -0
  1663. package/python/lib/tcl9.0/msgs/sl.msg +52 -0
  1664. package/python/lib/tcl9.0/msgs/sq.msg +54 -0
  1665. package/python/lib/tcl9.0/msgs/sr.msg +52 -0
  1666. package/python/lib/tcl9.0/msgs/sv.msg +52 -0
  1667. package/python/lib/tcl9.0/msgs/sw.msg +49 -0
  1668. package/python/lib/tcl9.0/msgs/ta.msg +39 -0
  1669. package/python/lib/tcl9.0/msgs/ta_in.msg +6 -0
  1670. package/python/lib/tcl9.0/msgs/te.msg +47 -0
  1671. package/python/lib/tcl9.0/msgs/te_in.msg +8 -0
  1672. package/python/lib/tcl9.0/msgs/th.msg +54 -0
  1673. package/python/lib/tcl9.0/msgs/tr.msg +50 -0
  1674. package/python/lib/tcl9.0/msgs/uk.msg +52 -0
  1675. package/python/lib/tcl9.0/msgs/vi.msg +50 -0
  1676. package/python/lib/tcl9.0/msgs/zh.msg +55 -0
  1677. package/python/lib/tcl9.0/msgs/zh_cn.msg +7 -0
  1678. package/python/lib/tcl9.0/msgs/zh_hk.msg +28 -0
  1679. package/python/lib/tcl9.0/msgs/zh_sg.msg +8 -0
  1680. package/python/lib/tcl9.0/msgs/zh_tw.msg +8 -0
  1681. package/python/lib/tcl9.0/opt0.4/optparse.tcl +1069 -0
  1682. package/python/lib/tcl9.0/opt0.4/pkgIndex.tcl +12 -0
  1683. package/python/lib/tcl9.0/package.tcl +767 -0
  1684. package/python/lib/tcl9.0/parray.tcl +28 -0
  1685. package/python/lib/tcl9.0/readfile.tcl +23 -0
  1686. package/python/lib/tcl9.0/safe.tcl +1461 -0
  1687. package/python/lib/tcl9.0/tclAppInit.c +183 -0
  1688. package/python/lib/tcl9.0/tclIndex +112 -0
  1689. package/python/lib/tcl9.0/tm.tcl +378 -0
  1690. package/python/lib/tcl9.0/word.tcl +155 -0
  1691. package/python/lib/tcl9.0/writefile.tcl +37 -0
  1692. package/python/lib/thread3.0.4/libtcl9thread3.0.4.dylib +0 -0
  1693. package/python/lib/thread3.0.4/libthread3.0.4.dylib +0 -0
  1694. package/python/lib/thread3.0.4/pkgIndex.tcl +52 -0
  1695. package/python/lib/thread3.0.4/ttrace.tcl +943 -0
  1696. package/python/lib/tk9.0/bgerror.tcl +282 -0
  1697. package/python/lib/tk9.0/button.tcl +782 -0
  1698. package/python/lib/tk9.0/choosedir.tcl +310 -0
  1699. package/python/lib/tk9.0/clrpick.tcl +696 -0
  1700. package/python/lib/tk9.0/comdlg.tcl +322 -0
  1701. package/python/lib/tk9.0/console.tcl +1148 -0
  1702. package/python/lib/tk9.0/demos/README +44 -0
  1703. package/python/lib/tk9.0/demos/anilabel.tcl +168 -0
  1704. package/python/lib/tk9.0/demos/aniwave.tcl +107 -0
  1705. package/python/lib/tk9.0/demos/arrow.tcl +260 -0
  1706. package/python/lib/tk9.0/demos/bind.tcl +78 -0
  1707. package/python/lib/tk9.0/demos/bitmap.tcl +52 -0
  1708. package/python/lib/tk9.0/demos/browse +66 -0
  1709. package/python/lib/tk9.0/demos/button.tcl +47 -0
  1710. package/python/lib/tk9.0/demos/check.tcl +71 -0
  1711. package/python/lib/tk9.0/demos/clrpick.tcl +54 -0
  1712. package/python/lib/tk9.0/demos/colors.tcl +99 -0
  1713. package/python/lib/tk9.0/demos/combo.tcl +62 -0
  1714. package/python/lib/tk9.0/demos/cscroll.tcl +134 -0
  1715. package/python/lib/tk9.0/demos/ctext.tcl +172 -0
  1716. package/python/lib/tk9.0/demos/dialog1.tcl +25 -0
  1717. package/python/lib/tk9.0/demos/dialog2.tcl +18 -0
  1718. package/python/lib/tk9.0/demos/en.msg +103 -0
  1719. package/python/lib/tk9.0/demos/entry1.tcl +34 -0
  1720. package/python/lib/tk9.0/demos/entry2.tcl +47 -0
  1721. package/python/lib/tk9.0/demos/entry3.tcl +185 -0
  1722. package/python/lib/tk9.0/demos/filebox.tcl +82 -0
  1723. package/python/lib/tk9.0/demos/floor.tcl +1379 -0
  1724. package/python/lib/tk9.0/demos/fontchoose.tcl +67 -0
  1725. package/python/lib/tk9.0/demos/form.tcl +38 -0
  1726. package/python/lib/tk9.0/demos/goldberg.tcl +1970 -0
  1727. package/python/lib/tk9.0/demos/hello +22 -0
  1728. package/python/lib/tk9.0/demos/hscale.tcl +49 -0
  1729. package/python/lib/tk9.0/demos/icon.tcl +51 -0
  1730. package/python/lib/tk9.0/demos/image1.tcl +44 -0
  1731. package/python/lib/tk9.0/demos/image2.tcl +114 -0
  1732. package/python/lib/tk9.0/demos/images/Tcl.svg +75 -0
  1733. package/python/lib/tk9.0/demos/images/Tk_feather.png +0 -0
  1734. package/python/lib/tk9.0/demos/images/earth.gif +0 -0
  1735. package/python/lib/tk9.0/demos/images/earthmenu.png +0 -0
  1736. package/python/lib/tk9.0/demos/images/earthris.gif +0 -0
  1737. package/python/lib/tk9.0/demos/images/flagdown.xbm +27 -0
  1738. package/python/lib/tk9.0/demos/images/flagup.xbm +27 -0
  1739. package/python/lib/tk9.0/demos/images/gray25.xbm +6 -0
  1740. package/python/lib/tk9.0/demos/images/letters.xbm +27 -0
  1741. package/python/lib/tk9.0/demos/images/noletter.xbm +27 -0
  1742. package/python/lib/tk9.0/demos/images/ouster.png +0 -0
  1743. package/python/lib/tk9.0/demos/images/pattern.xbm +6 -0
  1744. package/python/lib/tk9.0/demos/images/plowed_field.png +0 -0
  1745. package/python/lib/tk9.0/demos/images/starry_night.png +0 -0
  1746. package/python/lib/tk9.0/demos/images/tcllogo.gif +0 -0
  1747. package/python/lib/tk9.0/demos/images/teapot.ppm +31 -0
  1748. package/python/lib/tk9.0/demos/items.tcl +307 -0
  1749. package/python/lib/tk9.0/demos/ixset +328 -0
  1750. package/python/lib/tk9.0/demos/knightstour.tcl +274 -0
  1751. package/python/lib/tk9.0/demos/label.tcl +47 -0
  1752. package/python/lib/tk9.0/demos/labelframe.tcl +76 -0
  1753. package/python/lib/tk9.0/demos/license.terms +40 -0
  1754. package/python/lib/tk9.0/demos/mac_styles.tcl +266 -0
  1755. package/python/lib/tk9.0/demos/mac_tabs.tcl +76 -0
  1756. package/python/lib/tk9.0/demos/mac_wm.tcl +227 -0
  1757. package/python/lib/tk9.0/demos/mclist.tcl +170 -0
  1758. package/python/lib/tk9.0/demos/menu.tcl +184 -0
  1759. package/python/lib/tk9.0/demos/menubu.tcl +90 -0
  1760. package/python/lib/tk9.0/demos/msgbox.tcl +62 -0
  1761. package/python/lib/tk9.0/demos/nl.msg +132 -0
  1762. package/python/lib/tk9.0/demos/paned1.tcl +32 -0
  1763. package/python/lib/tk9.0/demos/paned2.tcl +74 -0
  1764. package/python/lib/tk9.0/demos/pendulum.tcl +206 -0
  1765. package/python/lib/tk9.0/demos/plot.tcl +97 -0
  1766. package/python/lib/tk9.0/demos/print.tcl +91 -0
  1767. package/python/lib/tk9.0/demos/puzzle.tcl +82 -0
  1768. package/python/lib/tk9.0/demos/radio.tcl +66 -0
  1769. package/python/lib/tk9.0/demos/rmt +210 -0
  1770. package/python/lib/tk9.0/demos/rolodex +204 -0
  1771. package/python/lib/tk9.0/demos/ruler.tcl +175 -0
  1772. package/python/lib/tk9.0/demos/sayings.tcl +44 -0
  1773. package/python/lib/tk9.0/demos/search.tcl +139 -0
  1774. package/python/lib/tk9.0/demos/spin.tcl +45 -0
  1775. package/python/lib/tk9.0/demos/states.tcl +54 -0
  1776. package/python/lib/tk9.0/demos/style.tcl +155 -0
  1777. package/python/lib/tk9.0/demos/systray.tcl +89 -0
  1778. package/python/lib/tk9.0/demos/tclIndex +70 -0
  1779. package/python/lib/tk9.0/demos/tcolor +358 -0
  1780. package/python/lib/tk9.0/demos/text.tcl +113 -0
  1781. package/python/lib/tk9.0/demos/textpeer.tcl +62 -0
  1782. package/python/lib/tk9.0/demos/timer +47 -0
  1783. package/python/lib/tk9.0/demos/toolbar.tcl +92 -0
  1784. package/python/lib/tk9.0/demos/tree.tcl +89 -0
  1785. package/python/lib/tk9.0/demos/ttkbut.tcl +84 -0
  1786. package/python/lib/tk9.0/demos/ttkmenu.tcl +53 -0
  1787. package/python/lib/tk9.0/demos/ttknote.tcl +57 -0
  1788. package/python/lib/tk9.0/demos/ttkpane.tcl +112 -0
  1789. package/python/lib/tk9.0/demos/ttkprogress.tcl +46 -0
  1790. package/python/lib/tk9.0/demos/ttkscale.tcl +39 -0
  1791. package/python/lib/tk9.0/demos/ttkspin.tcl +49 -0
  1792. package/python/lib/tk9.0/demos/twind.tcl +358 -0
  1793. package/python/lib/tk9.0/demos/unicodeout.tcl +126 -0
  1794. package/python/lib/tk9.0/demos/vscale.tcl +50 -0
  1795. package/python/lib/tk9.0/demos/widget +713 -0
  1796. package/python/lib/tk9.0/demos/windowicons.tcl +108 -0
  1797. package/python/lib/tk9.0/dialog.tcl +175 -0
  1798. package/python/lib/tk9.0/entry.tcl +720 -0
  1799. package/python/lib/tk9.0/focus.tcl +178 -0
  1800. package/python/lib/tk9.0/fontchooser.tcl +512 -0
  1801. package/python/lib/tk9.0/iconbadges.tcl +253 -0
  1802. package/python/lib/tk9.0/iconlist.tcl +705 -0
  1803. package/python/lib/tk9.0/icons.tcl +54 -0
  1804. package/python/lib/tk9.0/images/README +7 -0
  1805. package/python/lib/tk9.0/images/logo.eps +2091 -0
  1806. package/python/lib/tk9.0/images/logo100.gif +0 -0
  1807. package/python/lib/tk9.0/images/logo64.gif +0 -0
  1808. package/python/lib/tk9.0/images/logoLarge.gif +0 -0
  1809. package/python/lib/tk9.0/images/logoMed.gif +0 -0
  1810. package/python/lib/tk9.0/images/pwrdLogo.eps +1897 -0
  1811. package/python/lib/tk9.0/images/pwrdLogo100.gif +0 -0
  1812. package/python/lib/tk9.0/images/pwrdLogo150.gif +0 -0
  1813. package/python/lib/tk9.0/images/pwrdLogo175.gif +0 -0
  1814. package/python/lib/tk9.0/images/pwrdLogo200.gif +0 -0
  1815. package/python/lib/tk9.0/images/pwrdLogo75.gif +0 -0
  1816. package/python/lib/tk9.0/images/tai-ku.gif +0 -0
  1817. package/python/lib/tk9.0/listbox.tcl +522 -0
  1818. package/python/lib/tk9.0/megawidget.tcl +297 -0
  1819. package/python/lib/tk9.0/menu.tcl +1376 -0
  1820. package/python/lib/tk9.0/mkpsenc.tcl +1488 -0
  1821. package/python/lib/tk9.0/msgbox.tcl +454 -0
  1822. package/python/lib/tk9.0/msgs/cs.msg +95 -0
  1823. package/python/lib/tk9.0/msgs/da.msg +96 -0
  1824. package/python/lib/tk9.0/msgs/de.msg +109 -0
  1825. package/python/lib/tk9.0/msgs/el.msg +104 -0
  1826. package/python/lib/tk9.0/msgs/en.msg +110 -0
  1827. package/python/lib/tk9.0/msgs/en_gb.msg +3 -0
  1828. package/python/lib/tk9.0/msgs/eo.msg +93 -0
  1829. package/python/lib/tk9.0/msgs/es.msg +94 -0
  1830. package/python/lib/tk9.0/msgs/fi.msg +114 -0
  1831. package/python/lib/tk9.0/msgs/fr.msg +90 -0
  1832. package/python/lib/tk9.0/msgs/hu.msg +96 -0
  1833. package/python/lib/tk9.0/msgs/it.msg +91 -0
  1834. package/python/lib/tk9.0/msgs/nl.msg +109 -0
  1835. package/python/lib/tk9.0/msgs/pl.msg +109 -0
  1836. package/python/lib/tk9.0/msgs/pt.msg +92 -0
  1837. package/python/lib/tk9.0/msgs/ru.msg +112 -0
  1838. package/python/lib/tk9.0/msgs/sv.msg +94 -0
  1839. package/python/lib/tk9.0/msgs/zh_cn.msg +111 -0
  1840. package/python/lib/tk9.0/optMenu.tcl +43 -0
  1841. package/python/lib/tk9.0/palette.tcl +283 -0
  1842. package/python/lib/tk9.0/panedwindow.tcl +194 -0
  1843. package/python/lib/tk9.0/pkgIndex.tcl +3 -0
  1844. package/python/lib/tk9.0/print.tcl +1460 -0
  1845. package/python/lib/tk9.0/safetk.tcl +262 -0
  1846. package/python/lib/tk9.0/scale.tcl +299 -0
  1847. package/python/lib/tk9.0/scaling.tcl +232 -0
  1848. package/python/lib/tk9.0/scrlbar.tcl +500 -0
  1849. package/python/lib/tk9.0/spinbox.tcl +580 -0
  1850. package/python/lib/tk9.0/systray.tcl +483 -0
  1851. package/python/lib/tk9.0/tclIndex +252 -0
  1852. package/python/lib/tk9.0/tearoff.tcl +155 -0
  1853. package/python/lib/tk9.0/text.tcl +1295 -0
  1854. package/python/lib/tk9.0/tk.tcl +853 -0
  1855. package/python/lib/tk9.0/tkAppInit.c +200 -0
  1856. package/python/lib/tk9.0/tkfbox.tcl +1251 -0
  1857. package/python/lib/tk9.0/ttk/altTheme.tcl +153 -0
  1858. package/python/lib/tk9.0/ttk/aquaTheme.tcl +178 -0
  1859. package/python/lib/tk9.0/ttk/button.tcl +83 -0
  1860. package/python/lib/tk9.0/ttk/clamTheme.tcl +196 -0
  1861. package/python/lib/tk9.0/ttk/classicTheme.tcl +145 -0
  1862. package/python/lib/tk9.0/ttk/combobox.tcl +555 -0
  1863. package/python/lib/tk9.0/ttk/cursors.tcl +205 -0
  1864. package/python/lib/tk9.0/ttk/defaults.tcl +231 -0
  1865. package/python/lib/tk9.0/ttk/entry.tcl +678 -0
  1866. package/python/lib/tk9.0/ttk/fonts.tcl +152 -0
  1867. package/python/lib/tk9.0/ttk/menubutton.tcl +237 -0
  1868. package/python/lib/tk9.0/ttk/notebook.tcl +255 -0
  1869. package/python/lib/tk9.0/ttk/panedwindow.tcl +89 -0
  1870. package/python/lib/tk9.0/ttk/progress.tcl +55 -0
  1871. package/python/lib/tk9.0/ttk/scale.tcl +94 -0
  1872. package/python/lib/tk9.0/ttk/scrollbar.tcl +119 -0
  1873. package/python/lib/tk9.0/ttk/sizegrip.tcl +102 -0
  1874. package/python/lib/tk9.0/ttk/spinbox.tcl +204 -0
  1875. package/python/lib/tk9.0/ttk/treeview.tcl +464 -0
  1876. package/python/lib/tk9.0/ttk/ttk.tcl +223 -0
  1877. package/python/lib/tk9.0/ttk/utils.tcl +317 -0
  1878. package/python/lib/tk9.0/ttk/vistaTheme.tcl +259 -0
  1879. package/python/lib/tk9.0/ttk/winTheme.tcl +119 -0
  1880. package/python/lib/tk9.0/ttk/xpTheme.tcl +95 -0
  1881. package/python/lib/tk9.0/xmfbox.tcl +982 -0
  1882. package/python/share/man/man1/python3.13.1 +740 -0
  1883. package/runtime-manifest.json +7 -0
@@ -0,0 +1,2219 @@
1
+ """Read/write support for Maildir, mbox, MH, Babyl, and MMDF mailboxes."""
2
+
3
+ # Notes for authors of new mailbox subclasses:
4
+ #
5
+ # Remember to fsync() changes to disk before closing a modified file
6
+ # or returning from a flush() method. See functions _sync_flush() and
7
+ # _sync_close().
8
+
9
+ import os
10
+ import time
11
+ import calendar
12
+ import socket
13
+ import errno
14
+ import copy
15
+ import warnings
16
+ import email
17
+ import email.message
18
+ import email.generator
19
+ import io
20
+ import contextlib
21
+ from types import GenericAlias
22
+ try:
23
+ import fcntl
24
+ except ImportError:
25
+ fcntl = None
26
+
27
+ __all__ = ['Mailbox', 'Maildir', 'mbox', 'MH', 'Babyl', 'MMDF',
28
+ 'Message', 'MaildirMessage', 'mboxMessage', 'MHMessage',
29
+ 'BabylMessage', 'MMDFMessage', 'Error', 'NoSuchMailboxError',
30
+ 'NotEmptyError', 'ExternalClashError', 'FormatError']
31
+
32
+ linesep = os.linesep.encode('ascii')
33
+
34
+ class Mailbox:
35
+ """A group of messages in a particular place."""
36
+
37
+ def __init__(self, path, factory=None, create=True):
38
+ """Initialize a Mailbox instance."""
39
+ self._path = os.path.abspath(os.path.expanduser(path))
40
+ self._factory = factory
41
+
42
+ def add(self, message):
43
+ """Add message and return assigned key."""
44
+ raise NotImplementedError('Method must be implemented by subclass')
45
+
46
+ def remove(self, key):
47
+ """Remove the keyed message; raise KeyError if it doesn't exist."""
48
+ raise NotImplementedError('Method must be implemented by subclass')
49
+
50
+ def __delitem__(self, key):
51
+ self.remove(key)
52
+
53
+ def discard(self, key):
54
+ """If the keyed message exists, remove it."""
55
+ try:
56
+ self.remove(key)
57
+ except KeyError:
58
+ pass
59
+
60
+ def __setitem__(self, key, message):
61
+ """Replace the keyed message; raise KeyError if it doesn't exist."""
62
+ raise NotImplementedError('Method must be implemented by subclass')
63
+
64
+ def get(self, key, default=None):
65
+ """Return the keyed message, or default if it doesn't exist."""
66
+ try:
67
+ return self.__getitem__(key)
68
+ except KeyError:
69
+ return default
70
+
71
+ def __getitem__(self, key):
72
+ """Return the keyed message; raise KeyError if it doesn't exist."""
73
+ if not self._factory:
74
+ return self.get_message(key)
75
+ else:
76
+ with contextlib.closing(self.get_file(key)) as file:
77
+ return self._factory(file)
78
+
79
+ def get_message(self, key):
80
+ """Return a Message representation or raise a KeyError."""
81
+ raise NotImplementedError('Method must be implemented by subclass')
82
+
83
+ def get_string(self, key):
84
+ """Return a string representation or raise a KeyError.
85
+
86
+ Uses email.message.Message to create a 7bit clean string
87
+ representation of the message."""
88
+ return email.message_from_bytes(self.get_bytes(key)).as_string()
89
+
90
+ def get_bytes(self, key):
91
+ """Return a byte string representation or raise a KeyError."""
92
+ raise NotImplementedError('Method must be implemented by subclass')
93
+
94
+ def get_file(self, key):
95
+ """Return a file-like representation or raise a KeyError."""
96
+ raise NotImplementedError('Method must be implemented by subclass')
97
+
98
+ def iterkeys(self):
99
+ """Return an iterator over keys."""
100
+ raise NotImplementedError('Method must be implemented by subclass')
101
+
102
+ def keys(self):
103
+ """Return a list of keys."""
104
+ return list(self.iterkeys())
105
+
106
+ def itervalues(self):
107
+ """Return an iterator over all messages."""
108
+ for key in self.iterkeys():
109
+ try:
110
+ value = self[key]
111
+ except KeyError:
112
+ continue
113
+ yield value
114
+
115
+ def __iter__(self):
116
+ return self.itervalues()
117
+
118
+ def values(self):
119
+ """Return a list of messages. Memory intensive."""
120
+ return list(self.itervalues())
121
+
122
+ def iteritems(self):
123
+ """Return an iterator over (key, message) tuples."""
124
+ for key in self.iterkeys():
125
+ try:
126
+ value = self[key]
127
+ except KeyError:
128
+ continue
129
+ yield (key, value)
130
+
131
+ def items(self):
132
+ """Return a list of (key, message) tuples. Memory intensive."""
133
+ return list(self.iteritems())
134
+
135
+ def __contains__(self, key):
136
+ """Return True if the keyed message exists, False otherwise."""
137
+ raise NotImplementedError('Method must be implemented by subclass')
138
+
139
+ def __len__(self):
140
+ """Return a count of messages in the mailbox."""
141
+ raise NotImplementedError('Method must be implemented by subclass')
142
+
143
+ def clear(self):
144
+ """Delete all messages."""
145
+ for key in self.keys():
146
+ self.discard(key)
147
+
148
+ def pop(self, key, default=None):
149
+ """Delete the keyed message and return it, or default."""
150
+ try:
151
+ result = self[key]
152
+ except KeyError:
153
+ return default
154
+ self.discard(key)
155
+ return result
156
+
157
+ def popitem(self):
158
+ """Delete an arbitrary (key, message) pair and return it."""
159
+ for key in self.iterkeys():
160
+ return (key, self.pop(key)) # This is only run once.
161
+ else:
162
+ raise KeyError('No messages in mailbox')
163
+
164
+ def update(self, arg=None):
165
+ """Change the messages that correspond to certain keys."""
166
+ if hasattr(arg, 'iteritems'):
167
+ source = arg.iteritems()
168
+ elif hasattr(arg, 'items'):
169
+ source = arg.items()
170
+ else:
171
+ source = arg
172
+ bad_key = False
173
+ for key, message in source:
174
+ try:
175
+ self[key] = message
176
+ except KeyError:
177
+ bad_key = True
178
+ if bad_key:
179
+ raise KeyError('No message with key(s)')
180
+
181
+ def flush(self):
182
+ """Write any pending changes to the disk."""
183
+ raise NotImplementedError('Method must be implemented by subclass')
184
+
185
+ def lock(self):
186
+ """Lock the mailbox."""
187
+ raise NotImplementedError('Method must be implemented by subclass')
188
+
189
+ def unlock(self):
190
+ """Unlock the mailbox if it is locked."""
191
+ raise NotImplementedError('Method must be implemented by subclass')
192
+
193
+ def close(self):
194
+ """Flush and close the mailbox."""
195
+ raise NotImplementedError('Method must be implemented by subclass')
196
+
197
+ def _string_to_bytes(self, message):
198
+ # If a message is not 7bit clean, we refuse to handle it since it
199
+ # likely came from reading invalid messages in text mode, and that way
200
+ # lies mojibake.
201
+ try:
202
+ return message.encode('ascii')
203
+ except UnicodeError:
204
+ raise ValueError("String input must be ASCII-only; "
205
+ "use bytes or a Message instead")
206
+
207
+ # Whether each message must end in a newline
208
+ _append_newline = False
209
+
210
+ def _dump_message(self, message, target, mangle_from_=False):
211
+ # This assumes the target file is open in binary mode.
212
+ """Dump message contents to target file."""
213
+ if isinstance(message, email.message.Message):
214
+ buffer = io.BytesIO()
215
+ gen = email.generator.BytesGenerator(buffer, mangle_from_, 0)
216
+ gen.flatten(message)
217
+ buffer.seek(0)
218
+ data = buffer.read()
219
+ data = data.replace(b'\n', linesep)
220
+ target.write(data)
221
+ if self._append_newline and not data.endswith(linesep):
222
+ # Make sure the message ends with a newline
223
+ target.write(linesep)
224
+ elif isinstance(message, (str, bytes, io.StringIO)):
225
+ if isinstance(message, io.StringIO):
226
+ warnings.warn("Use of StringIO input is deprecated, "
227
+ "use BytesIO instead", DeprecationWarning, 3)
228
+ message = message.getvalue()
229
+ if isinstance(message, str):
230
+ message = self._string_to_bytes(message)
231
+ if mangle_from_:
232
+ message = message.replace(b'\nFrom ', b'\n>From ')
233
+ message = message.replace(b'\n', linesep)
234
+ target.write(message)
235
+ if self._append_newline and not message.endswith(linesep):
236
+ # Make sure the message ends with a newline
237
+ target.write(linesep)
238
+ elif hasattr(message, 'read'):
239
+ if hasattr(message, 'buffer'):
240
+ warnings.warn("Use of text mode files is deprecated, "
241
+ "use a binary mode file instead", DeprecationWarning, 3)
242
+ message = message.buffer
243
+ lastline = None
244
+ while True:
245
+ line = message.readline()
246
+ # Universal newline support.
247
+ if line.endswith(b'\r\n'):
248
+ line = line[:-2] + b'\n'
249
+ elif line.endswith(b'\r'):
250
+ line = line[:-1] + b'\n'
251
+ if not line:
252
+ break
253
+ if mangle_from_ and line.startswith(b'From '):
254
+ line = b'>From ' + line[5:]
255
+ line = line.replace(b'\n', linesep)
256
+ target.write(line)
257
+ lastline = line
258
+ if self._append_newline and lastline and not lastline.endswith(linesep):
259
+ # Make sure the message ends with a newline
260
+ target.write(linesep)
261
+ else:
262
+ raise TypeError('Invalid message type: %s' % type(message))
263
+
264
+ __class_getitem__ = classmethod(GenericAlias)
265
+
266
+
267
+ class Maildir(Mailbox):
268
+ """A qmail-style Maildir mailbox."""
269
+
270
+ colon = ':'
271
+
272
+ def __init__(self, dirname, factory=None, create=True):
273
+ """Initialize a Maildir instance."""
274
+ Mailbox.__init__(self, dirname, factory, create)
275
+ self._paths = {
276
+ 'tmp': os.path.join(self._path, 'tmp'),
277
+ 'new': os.path.join(self._path, 'new'),
278
+ 'cur': os.path.join(self._path, 'cur'),
279
+ }
280
+ if not os.path.exists(self._path):
281
+ if create:
282
+ os.mkdir(self._path, 0o700)
283
+ for path in self._paths.values():
284
+ os.mkdir(path, 0o700)
285
+ else:
286
+ raise NoSuchMailboxError(self._path)
287
+ self._toc = {}
288
+ self._toc_mtimes = {'cur': 0, 'new': 0}
289
+ self._last_read = 0 # Records last time we read cur/new
290
+ self._skewfactor = 0.1 # Adjust if os/fs clocks are skewing
291
+
292
+ def add(self, message):
293
+ """Add message and return assigned key."""
294
+ tmp_file = self._create_tmp()
295
+ try:
296
+ self._dump_message(message, tmp_file)
297
+ except BaseException:
298
+ tmp_file.close()
299
+ os.remove(tmp_file.name)
300
+ raise
301
+ _sync_close(tmp_file)
302
+ if isinstance(message, MaildirMessage):
303
+ subdir = message.get_subdir()
304
+ suffix = self.colon + message.get_info()
305
+ if suffix == self.colon:
306
+ suffix = ''
307
+ else:
308
+ subdir = 'new'
309
+ suffix = ''
310
+ uniq = os.path.basename(tmp_file.name).split(self.colon)[0]
311
+ dest = os.path.join(self._path, subdir, uniq + suffix)
312
+ if isinstance(message, MaildirMessage):
313
+ os.utime(tmp_file.name,
314
+ (os.path.getatime(tmp_file.name), message.get_date()))
315
+ # No file modification should be done after the file is moved to its
316
+ # final position in order to prevent race conditions with changes
317
+ # from other programs
318
+ try:
319
+ try:
320
+ os.link(tmp_file.name, dest)
321
+ except (AttributeError, PermissionError):
322
+ os.rename(tmp_file.name, dest)
323
+ else:
324
+ os.remove(tmp_file.name)
325
+ except OSError as e:
326
+ os.remove(tmp_file.name)
327
+ if e.errno == errno.EEXIST:
328
+ raise ExternalClashError('Name clash with existing message: %s'
329
+ % dest)
330
+ else:
331
+ raise
332
+ return uniq
333
+
334
+ def remove(self, key):
335
+ """Remove the keyed message; raise KeyError if it doesn't exist."""
336
+ os.remove(os.path.join(self._path, self._lookup(key)))
337
+
338
+ def discard(self, key):
339
+ """If the keyed message exists, remove it."""
340
+ # This overrides an inapplicable implementation in the superclass.
341
+ try:
342
+ self.remove(key)
343
+ except (KeyError, FileNotFoundError):
344
+ pass
345
+
346
+ def __setitem__(self, key, message):
347
+ """Replace the keyed message; raise KeyError if it doesn't exist."""
348
+ old_subpath = self._lookup(key)
349
+ temp_key = self.add(message)
350
+ temp_subpath = self._lookup(temp_key)
351
+ if isinstance(message, MaildirMessage):
352
+ # temp's subdir and suffix were specified by message.
353
+ dominant_subpath = temp_subpath
354
+ else:
355
+ # temp's subdir and suffix were defaults from add().
356
+ dominant_subpath = old_subpath
357
+ subdir = os.path.dirname(dominant_subpath)
358
+ if self.colon in dominant_subpath:
359
+ suffix = self.colon + dominant_subpath.split(self.colon)[-1]
360
+ else:
361
+ suffix = ''
362
+ self.discard(key)
363
+ tmp_path = os.path.join(self._path, temp_subpath)
364
+ new_path = os.path.join(self._path, subdir, key + suffix)
365
+ if isinstance(message, MaildirMessage):
366
+ os.utime(tmp_path,
367
+ (os.path.getatime(tmp_path), message.get_date()))
368
+ # No file modification should be done after the file is moved to its
369
+ # final position in order to prevent race conditions with changes
370
+ # from other programs
371
+ os.rename(tmp_path, new_path)
372
+
373
+ def get_message(self, key):
374
+ """Return a Message representation or raise a KeyError."""
375
+ subpath = self._lookup(key)
376
+ with open(os.path.join(self._path, subpath), 'rb') as f:
377
+ if self._factory:
378
+ msg = self._factory(f)
379
+ else:
380
+ msg = MaildirMessage(f)
381
+ subdir, name = os.path.split(subpath)
382
+ msg.set_subdir(subdir)
383
+ if self.colon in name:
384
+ msg.set_info(name.split(self.colon)[-1])
385
+ msg.set_date(os.path.getmtime(os.path.join(self._path, subpath)))
386
+ return msg
387
+
388
+ def get_bytes(self, key):
389
+ """Return a bytes representation or raise a KeyError."""
390
+ with open(os.path.join(self._path, self._lookup(key)), 'rb') as f:
391
+ return f.read().replace(linesep, b'\n')
392
+
393
+ def get_file(self, key):
394
+ """Return a file-like representation or raise a KeyError."""
395
+ f = open(os.path.join(self._path, self._lookup(key)), 'rb')
396
+ return _ProxyFile(f)
397
+
398
+ def get_info(self, key):
399
+ """Get the keyed message's "info" as a string."""
400
+ subpath = self._lookup(key)
401
+ if self.colon in subpath:
402
+ return subpath.split(self.colon)[-1]
403
+ return ''
404
+
405
+ def set_info(self, key, info: str):
406
+ """Set the keyed message's "info" string."""
407
+ if not isinstance(info, str):
408
+ raise TypeError(f'info must be a string: {type(info)}')
409
+ old_subpath = self._lookup(key)
410
+ new_subpath = old_subpath.split(self.colon)[0]
411
+ if info:
412
+ new_subpath += self.colon + info
413
+ if new_subpath == old_subpath:
414
+ return
415
+ old_path = os.path.join(self._path, old_subpath)
416
+ new_path = os.path.join(self._path, new_subpath)
417
+ os.rename(old_path, new_path)
418
+ self._toc[key] = new_subpath
419
+
420
+ def get_flags(self, key):
421
+ """Return as a string the standard flags that are set on the keyed message."""
422
+ info = self.get_info(key)
423
+ if info.startswith('2,'):
424
+ return info[2:]
425
+ return ''
426
+
427
+ def set_flags(self, key, flags: str):
428
+ """Set the given flags and unset all others on the keyed message."""
429
+ if not isinstance(flags, str):
430
+ raise TypeError(f'flags must be a string: {type(flags)}')
431
+ # TODO: check if flags are valid standard flag characters?
432
+ self.set_info(key, '2,' + ''.join(sorted(set(flags))))
433
+
434
+ def add_flag(self, key, flag: str):
435
+ """Set the given flag(s) without changing others on the keyed message."""
436
+ if not isinstance(flag, str):
437
+ raise TypeError(f'flag must be a string: {type(flag)}')
438
+ # TODO: check that flag is a valid standard flag character?
439
+ self.set_flags(key, ''.join(set(self.get_flags(key)) | set(flag)))
440
+
441
+ def remove_flag(self, key, flag: str):
442
+ """Unset the given string flag(s) without changing others on the keyed message."""
443
+ if not isinstance(flag, str):
444
+ raise TypeError(f'flag must be a string: {type(flag)}')
445
+ if self.get_flags(key):
446
+ self.set_flags(key, ''.join(set(self.get_flags(key)) - set(flag)))
447
+
448
+ def iterkeys(self):
449
+ """Return an iterator over keys."""
450
+ self._refresh()
451
+ for key in self._toc:
452
+ try:
453
+ self._lookup(key)
454
+ except KeyError:
455
+ continue
456
+ yield key
457
+
458
+ def __contains__(self, key):
459
+ """Return True if the keyed message exists, False otherwise."""
460
+ self._refresh()
461
+ return key in self._toc
462
+
463
+ def __len__(self):
464
+ """Return a count of messages in the mailbox."""
465
+ self._refresh()
466
+ return len(self._toc)
467
+
468
+ def flush(self):
469
+ """Write any pending changes to disk."""
470
+ # Maildir changes are always written immediately, so there's nothing
471
+ # to do.
472
+ pass
473
+
474
+ def lock(self):
475
+ """Lock the mailbox."""
476
+ return
477
+
478
+ def unlock(self):
479
+ """Unlock the mailbox if it is locked."""
480
+ return
481
+
482
+ def close(self):
483
+ """Flush and close the mailbox."""
484
+ return
485
+
486
+ def list_folders(self):
487
+ """Return a list of folder names."""
488
+ result = []
489
+ for entry in os.listdir(self._path):
490
+ if len(entry) > 1 and entry[0] == '.' and \
491
+ os.path.isdir(os.path.join(self._path, entry)):
492
+ result.append(entry[1:])
493
+ return result
494
+
495
+ def get_folder(self, folder):
496
+ """Return a Maildir instance for the named folder."""
497
+ return Maildir(os.path.join(self._path, '.' + folder),
498
+ factory=self._factory,
499
+ create=False)
500
+
501
+ def add_folder(self, folder):
502
+ """Create a folder and return a Maildir instance representing it."""
503
+ path = os.path.join(self._path, '.' + folder)
504
+ result = Maildir(path, factory=self._factory)
505
+ maildirfolder_path = os.path.join(path, 'maildirfolder')
506
+ if not os.path.exists(maildirfolder_path):
507
+ os.close(os.open(maildirfolder_path, os.O_CREAT | os.O_WRONLY,
508
+ 0o666))
509
+ return result
510
+
511
+ def remove_folder(self, folder):
512
+ """Delete the named folder, which must be empty."""
513
+ path = os.path.join(self._path, '.' + folder)
514
+ for entry in os.listdir(os.path.join(path, 'new')) + \
515
+ os.listdir(os.path.join(path, 'cur')):
516
+ if len(entry) < 1 or entry[0] != '.':
517
+ raise NotEmptyError('Folder contains message(s): %s' % folder)
518
+ for entry in os.listdir(path):
519
+ if entry != 'new' and entry != 'cur' and entry != 'tmp' and \
520
+ os.path.isdir(os.path.join(path, entry)):
521
+ raise NotEmptyError("Folder contains subdirectory '%s': %s" %
522
+ (folder, entry))
523
+ for root, dirs, files in os.walk(path, topdown=False):
524
+ for entry in files:
525
+ os.remove(os.path.join(root, entry))
526
+ for entry in dirs:
527
+ os.rmdir(os.path.join(root, entry))
528
+ os.rmdir(path)
529
+
530
+ def clean(self):
531
+ """Delete old files in "tmp"."""
532
+ now = time.time()
533
+ for entry in os.listdir(os.path.join(self._path, 'tmp')):
534
+ path = os.path.join(self._path, 'tmp', entry)
535
+ if now - os.path.getatime(path) > 129600: # 60 * 60 * 36
536
+ os.remove(path)
537
+
538
+ _count = 1 # This is used to generate unique file names.
539
+
540
+ def _create_tmp(self):
541
+ """Create a file in the tmp subdirectory and open and return it."""
542
+ now = time.time()
543
+ hostname = socket.gethostname()
544
+ if '/' in hostname:
545
+ hostname = hostname.replace('/', r'\057')
546
+ if ':' in hostname:
547
+ hostname = hostname.replace(':', r'\072')
548
+ uniq = "%s.M%sP%sQ%s.%s" % (int(now), int(now % 1 * 1e6), os.getpid(),
549
+ Maildir._count, hostname)
550
+ path = os.path.join(self._path, 'tmp', uniq)
551
+ try:
552
+ os.stat(path)
553
+ except FileNotFoundError:
554
+ Maildir._count += 1
555
+ try:
556
+ return _create_carefully(path)
557
+ except FileExistsError:
558
+ pass
559
+
560
+ # Fall through to here if stat succeeded or open raised EEXIST.
561
+ raise ExternalClashError('Name clash prevented file creation: %s' %
562
+ path)
563
+
564
+ def _refresh(self):
565
+ """Update table of contents mapping."""
566
+ # If it has been less than two seconds since the last _refresh() call,
567
+ # we have to unconditionally re-read the mailbox just in case it has
568
+ # been modified, because os.path.mtime() has a 2 sec resolution in the
569
+ # most common worst case (FAT) and a 1 sec resolution typically. This
570
+ # results in a few unnecessary re-reads when _refresh() is called
571
+ # multiple times in that interval, but once the clock ticks over, we
572
+ # will only re-read as needed. Because the filesystem might be being
573
+ # served by an independent system with its own clock, we record and
574
+ # compare with the mtimes from the filesystem. Because the other
575
+ # system's clock might be skewing relative to our clock, we add an
576
+ # extra delta to our wait. The default is one tenth second, but is an
577
+ # instance variable and so can be adjusted if dealing with a
578
+ # particularly skewed or irregular system.
579
+ if time.time() - self._last_read > 2 + self._skewfactor:
580
+ refresh = False
581
+ for subdir in self._toc_mtimes:
582
+ mtime = os.path.getmtime(self._paths[subdir])
583
+ if mtime > self._toc_mtimes[subdir]:
584
+ refresh = True
585
+ self._toc_mtimes[subdir] = mtime
586
+ if not refresh:
587
+ return
588
+ # Refresh toc
589
+ self._toc = {}
590
+ for subdir in self._toc_mtimes:
591
+ path = self._paths[subdir]
592
+ for entry in os.listdir(path):
593
+ if entry.startswith('.'):
594
+ continue
595
+ p = os.path.join(path, entry)
596
+ if os.path.isdir(p):
597
+ continue
598
+ uniq = entry.split(self.colon)[0]
599
+ self._toc[uniq] = os.path.join(subdir, entry)
600
+ self._last_read = time.time()
601
+
602
+ def _lookup(self, key):
603
+ """Use TOC to return subpath for given key, or raise a KeyError."""
604
+ try:
605
+ if os.path.exists(os.path.join(self._path, self._toc[key])):
606
+ return self._toc[key]
607
+ except KeyError:
608
+ pass
609
+ self._refresh()
610
+ try:
611
+ return self._toc[key]
612
+ except KeyError:
613
+ raise KeyError('No message with key: %s' % key) from None
614
+
615
+ # This method is for backward compatibility only.
616
+ def next(self):
617
+ """Return the next message in a one-time iteration."""
618
+ if not hasattr(self, '_onetime_keys'):
619
+ self._onetime_keys = self.iterkeys()
620
+ while True:
621
+ try:
622
+ return self[next(self._onetime_keys)]
623
+ except StopIteration:
624
+ return None
625
+ except KeyError:
626
+ continue
627
+
628
+
629
+ class _singlefileMailbox(Mailbox):
630
+ """A single-file mailbox."""
631
+
632
+ def __init__(self, path, factory=None, create=True):
633
+ """Initialize a single-file mailbox."""
634
+ Mailbox.__init__(self, path, factory, create)
635
+ try:
636
+ f = open(self._path, 'rb+')
637
+ except OSError as e:
638
+ if e.errno == errno.ENOENT:
639
+ if create:
640
+ f = open(self._path, 'wb+')
641
+ else:
642
+ raise NoSuchMailboxError(self._path)
643
+ elif e.errno in (errno.EACCES, errno.EROFS):
644
+ f = open(self._path, 'rb')
645
+ else:
646
+ raise
647
+ self._file = f
648
+ self._toc = None
649
+ self._next_key = 0
650
+ self._pending = False # No changes require rewriting the file.
651
+ self._pending_sync = False # No need to sync the file
652
+ self._locked = False
653
+ self._file_length = None # Used to record mailbox size
654
+
655
+ def add(self, message):
656
+ """Add message and return assigned key."""
657
+ self._lookup()
658
+ self._toc[self._next_key] = self._append_message(message)
659
+ self._next_key += 1
660
+ # _append_message appends the message to the mailbox file. We
661
+ # don't need a full rewrite + rename, sync is enough.
662
+ self._pending_sync = True
663
+ return self._next_key - 1
664
+
665
+ def remove(self, key):
666
+ """Remove the keyed message; raise KeyError if it doesn't exist."""
667
+ self._lookup(key)
668
+ del self._toc[key]
669
+ self._pending = True
670
+
671
+ def __setitem__(self, key, message):
672
+ """Replace the keyed message; raise KeyError if it doesn't exist."""
673
+ self._lookup(key)
674
+ self._toc[key] = self._append_message(message)
675
+ self._pending = True
676
+
677
+ def iterkeys(self):
678
+ """Return an iterator over keys."""
679
+ self._lookup()
680
+ yield from self._toc.keys()
681
+
682
+ def __contains__(self, key):
683
+ """Return True if the keyed message exists, False otherwise."""
684
+ self._lookup()
685
+ return key in self._toc
686
+
687
+ def __len__(self):
688
+ """Return a count of messages in the mailbox."""
689
+ self._lookup()
690
+ return len(self._toc)
691
+
692
+ def lock(self):
693
+ """Lock the mailbox."""
694
+ if not self._locked:
695
+ _lock_file(self._file)
696
+ self._locked = True
697
+
698
+ def unlock(self):
699
+ """Unlock the mailbox if it is locked."""
700
+ if self._locked:
701
+ _unlock_file(self._file)
702
+ self._locked = False
703
+
704
+ def flush(self):
705
+ """Write any pending changes to disk."""
706
+ if not self._pending:
707
+ if self._pending_sync:
708
+ # Messages have only been added, so syncing the file
709
+ # is enough.
710
+ _sync_flush(self._file)
711
+ self._pending_sync = False
712
+ return
713
+
714
+ # In order to be writing anything out at all, self._toc must
715
+ # already have been generated (and presumably has been modified
716
+ # by adding or deleting an item).
717
+ assert self._toc is not None
718
+
719
+ # Check length of self._file; if it's changed, some other process
720
+ # has modified the mailbox since we scanned it.
721
+ self._file.seek(0, 2)
722
+ cur_len = self._file.tell()
723
+ if cur_len != self._file_length:
724
+ raise ExternalClashError('Size of mailbox file changed '
725
+ '(expected %i, found %i)' %
726
+ (self._file_length, cur_len))
727
+
728
+ new_file = _create_temporary(self._path)
729
+ try:
730
+ new_toc = {}
731
+ self._pre_mailbox_hook(new_file)
732
+ for key in sorted(self._toc.keys()):
733
+ start, stop = self._toc[key]
734
+ self._file.seek(start)
735
+ self._pre_message_hook(new_file)
736
+ new_start = new_file.tell()
737
+ while True:
738
+ buffer = self._file.read(min(4096,
739
+ stop - self._file.tell()))
740
+ if not buffer:
741
+ break
742
+ new_file.write(buffer)
743
+ new_toc[key] = (new_start, new_file.tell())
744
+ self._post_message_hook(new_file)
745
+ self._file_length = new_file.tell()
746
+ except:
747
+ new_file.close()
748
+ os.remove(new_file.name)
749
+ raise
750
+ _sync_close(new_file)
751
+ # self._file is about to get replaced, so no need to sync.
752
+ self._file.close()
753
+ # Make sure the new file's mode and owner are the same as the old file's
754
+ info = os.stat(self._path)
755
+ os.chmod(new_file.name, info.st_mode)
756
+ try:
757
+ os.chown(new_file.name, info.st_uid, info.st_gid)
758
+ except (AttributeError, OSError):
759
+ pass
760
+ try:
761
+ os.rename(new_file.name, self._path)
762
+ except FileExistsError:
763
+ os.remove(self._path)
764
+ os.rename(new_file.name, self._path)
765
+ self._file = open(self._path, 'rb+')
766
+ self._toc = new_toc
767
+ self._pending = False
768
+ self._pending_sync = False
769
+ if self._locked:
770
+ _lock_file(self._file, dotlock=False)
771
+
772
+ def _pre_mailbox_hook(self, f):
773
+ """Called before writing the mailbox to file f."""
774
+ return
775
+
776
+ def _pre_message_hook(self, f):
777
+ """Called before writing each message to file f."""
778
+ return
779
+
780
+ def _post_message_hook(self, f):
781
+ """Called after writing each message to file f."""
782
+ return
783
+
784
+ def close(self):
785
+ """Flush and close the mailbox."""
786
+ try:
787
+ self.flush()
788
+ finally:
789
+ try:
790
+ if self._locked:
791
+ self.unlock()
792
+ finally:
793
+ self._file.close() # Sync has been done by self.flush() above.
794
+
795
+ def _lookup(self, key=None):
796
+ """Return (start, stop) or raise KeyError."""
797
+ if self._toc is None:
798
+ self._generate_toc()
799
+ if key is not None:
800
+ try:
801
+ return self._toc[key]
802
+ except KeyError:
803
+ raise KeyError('No message with key: %s' % key) from None
804
+
805
+ def _append_message(self, message):
806
+ """Append message to mailbox and return (start, stop) offsets."""
807
+ self._file.seek(0, 2)
808
+ before = self._file.tell()
809
+ if len(self._toc) == 0 and not self._pending:
810
+ # This is the first message, and the _pre_mailbox_hook
811
+ # hasn't yet been called. If self._pending is True,
812
+ # messages have been removed, so _pre_mailbox_hook must
813
+ # have been called already.
814
+ self._pre_mailbox_hook(self._file)
815
+ try:
816
+ self._pre_message_hook(self._file)
817
+ offsets = self._install_message(message)
818
+ self._post_message_hook(self._file)
819
+ except BaseException:
820
+ self._file.truncate(before)
821
+ raise
822
+ self._file.flush()
823
+ self._file_length = self._file.tell() # Record current length of mailbox
824
+ return offsets
825
+
826
+
827
+
828
+ class _mboxMMDF(_singlefileMailbox):
829
+ """An mbox or MMDF mailbox."""
830
+
831
+ _mangle_from_ = True
832
+
833
+ def get_message(self, key):
834
+ """Return a Message representation or raise a KeyError."""
835
+ start, stop = self._lookup(key)
836
+ self._file.seek(start)
837
+ from_line = self._file.readline().replace(linesep, b'').decode('ascii')
838
+ string = self._file.read(stop - self._file.tell())
839
+ msg = self._message_factory(string.replace(linesep, b'\n'))
840
+ msg.set_unixfrom(from_line)
841
+ msg.set_from(from_line[5:])
842
+ return msg
843
+
844
+ def get_string(self, key, from_=False):
845
+ """Return a string representation or raise a KeyError."""
846
+ return email.message_from_bytes(
847
+ self.get_bytes(key, from_)).as_string(unixfrom=from_)
848
+
849
+ def get_bytes(self, key, from_=False):
850
+ """Return a string representation or raise a KeyError."""
851
+ start, stop = self._lookup(key)
852
+ self._file.seek(start)
853
+ if not from_:
854
+ self._file.readline()
855
+ string = self._file.read(stop - self._file.tell())
856
+ return string.replace(linesep, b'\n')
857
+
858
+ def get_file(self, key, from_=False):
859
+ """Return a file-like representation or raise a KeyError."""
860
+ start, stop = self._lookup(key)
861
+ self._file.seek(start)
862
+ if not from_:
863
+ self._file.readline()
864
+ return _PartialFile(self._file, self._file.tell(), stop)
865
+
866
+ def _install_message(self, message):
867
+ """Format a message and blindly write to self._file."""
868
+ from_line = None
869
+ if isinstance(message, str):
870
+ message = self._string_to_bytes(message)
871
+ if isinstance(message, bytes) and message.startswith(b'From '):
872
+ newline = message.find(b'\n')
873
+ if newline != -1:
874
+ from_line = message[:newline]
875
+ message = message[newline + 1:]
876
+ else:
877
+ from_line = message
878
+ message = b''
879
+ elif isinstance(message, _mboxMMDFMessage):
880
+ author = message.get_from().encode('ascii')
881
+ from_line = b'From ' + author
882
+ elif isinstance(message, email.message.Message):
883
+ from_line = message.get_unixfrom() # May be None.
884
+ if from_line is not None:
885
+ from_line = from_line.encode('ascii')
886
+ if from_line is None:
887
+ from_line = b'From MAILER-DAEMON ' + time.asctime(time.gmtime()).encode()
888
+ start = self._file.tell()
889
+ self._file.write(from_line + linesep)
890
+ self._dump_message(message, self._file, self._mangle_from_)
891
+ stop = self._file.tell()
892
+ return (start, stop)
893
+
894
+
895
+ class mbox(_mboxMMDF):
896
+ """A classic mbox mailbox."""
897
+
898
+ _mangle_from_ = True
899
+
900
+ # All messages must end in a newline character, and
901
+ # _post_message_hooks outputs an empty line between messages.
902
+ _append_newline = True
903
+
904
+ def __init__(self, path, factory=None, create=True):
905
+ """Initialize an mbox mailbox."""
906
+ self._message_factory = mboxMessage
907
+ _mboxMMDF.__init__(self, path, factory, create)
908
+
909
+ def _post_message_hook(self, f):
910
+ """Called after writing each message to file f."""
911
+ f.write(linesep)
912
+
913
+ def _generate_toc(self):
914
+ """Generate key-to-(start, stop) table of contents."""
915
+ starts, stops = [], []
916
+ last_was_empty = False
917
+ self._file.seek(0)
918
+ while True:
919
+ line_pos = self._file.tell()
920
+ line = self._file.readline()
921
+ if line.startswith(b'From '):
922
+ if len(stops) < len(starts):
923
+ if last_was_empty:
924
+ stops.append(line_pos - len(linesep))
925
+ else:
926
+ # The last line before the "From " line wasn't
927
+ # blank, but we consider it a start of a
928
+ # message anyway.
929
+ stops.append(line_pos)
930
+ starts.append(line_pos)
931
+ last_was_empty = False
932
+ elif not line:
933
+ if last_was_empty:
934
+ stops.append(line_pos - len(linesep))
935
+ else:
936
+ stops.append(line_pos)
937
+ break
938
+ elif line == linesep:
939
+ last_was_empty = True
940
+ else:
941
+ last_was_empty = False
942
+ self._toc = dict(enumerate(zip(starts, stops)))
943
+ self._next_key = len(self._toc)
944
+ self._file_length = self._file.tell()
945
+
946
+
947
+ class MMDF(_mboxMMDF):
948
+ """An MMDF mailbox."""
949
+
950
+ def __init__(self, path, factory=None, create=True):
951
+ """Initialize an MMDF mailbox."""
952
+ self._message_factory = MMDFMessage
953
+ _mboxMMDF.__init__(self, path, factory, create)
954
+
955
+ def _pre_message_hook(self, f):
956
+ """Called before writing each message to file f."""
957
+ f.write(b'\001\001\001\001' + linesep)
958
+
959
+ def _post_message_hook(self, f):
960
+ """Called after writing each message to file f."""
961
+ f.write(linesep + b'\001\001\001\001' + linesep)
962
+
963
+ def _generate_toc(self):
964
+ """Generate key-to-(start, stop) table of contents."""
965
+ starts, stops = [], []
966
+ self._file.seek(0)
967
+ next_pos = 0
968
+ while True:
969
+ line_pos = next_pos
970
+ line = self._file.readline()
971
+ next_pos = self._file.tell()
972
+ if line.startswith(b'\001\001\001\001' + linesep):
973
+ starts.append(next_pos)
974
+ while True:
975
+ line_pos = next_pos
976
+ line = self._file.readline()
977
+ next_pos = self._file.tell()
978
+ if line == b'\001\001\001\001' + linesep:
979
+ stops.append(line_pos - len(linesep))
980
+ break
981
+ elif not line:
982
+ stops.append(line_pos)
983
+ break
984
+ elif not line:
985
+ break
986
+ self._toc = dict(enumerate(zip(starts, stops)))
987
+ self._next_key = len(self._toc)
988
+ self._file.seek(0, 2)
989
+ self._file_length = self._file.tell()
990
+
991
+
992
+ class MH(Mailbox):
993
+ """An MH mailbox."""
994
+
995
+ def __init__(self, path, factory=None, create=True):
996
+ """Initialize an MH instance."""
997
+ Mailbox.__init__(self, path, factory, create)
998
+ if not os.path.exists(self._path):
999
+ if create:
1000
+ os.mkdir(self._path, 0o700)
1001
+ os.close(os.open(os.path.join(self._path, '.mh_sequences'),
1002
+ os.O_CREAT | os.O_EXCL | os.O_WRONLY, 0o600))
1003
+ else:
1004
+ raise NoSuchMailboxError(self._path)
1005
+ self._locked = False
1006
+
1007
+ def add(self, message):
1008
+ """Add message and return assigned key."""
1009
+ keys = self.keys()
1010
+ if len(keys) == 0:
1011
+ new_key = 1
1012
+ else:
1013
+ new_key = max(keys) + 1
1014
+ new_path = os.path.join(self._path, str(new_key))
1015
+ f = _create_carefully(new_path)
1016
+ closed = False
1017
+ try:
1018
+ if self._locked:
1019
+ _lock_file(f)
1020
+ try:
1021
+ try:
1022
+ self._dump_message(message, f)
1023
+ except BaseException:
1024
+ # Unlock and close so it can be deleted on Windows
1025
+ if self._locked:
1026
+ _unlock_file(f)
1027
+ _sync_close(f)
1028
+ closed = True
1029
+ os.remove(new_path)
1030
+ raise
1031
+ if isinstance(message, MHMessage):
1032
+ self._dump_sequences(message, new_key)
1033
+ finally:
1034
+ if self._locked:
1035
+ _unlock_file(f)
1036
+ finally:
1037
+ if not closed:
1038
+ _sync_close(f)
1039
+ return new_key
1040
+
1041
+ def remove(self, key):
1042
+ """Remove the keyed message; raise KeyError if it doesn't exist."""
1043
+ path = os.path.join(self._path, str(key))
1044
+ try:
1045
+ f = open(path, 'rb+')
1046
+ except OSError as e:
1047
+ if e.errno == errno.ENOENT:
1048
+ raise KeyError('No message with key: %s' % key)
1049
+ else:
1050
+ raise
1051
+ else:
1052
+ f.close()
1053
+ os.remove(path)
1054
+
1055
+ def __setitem__(self, key, message):
1056
+ """Replace the keyed message; raise KeyError if it doesn't exist."""
1057
+ path = os.path.join(self._path, str(key))
1058
+ try:
1059
+ f = open(path, 'rb+')
1060
+ except OSError as e:
1061
+ if e.errno == errno.ENOENT:
1062
+ raise KeyError('No message with key: %s' % key)
1063
+ else:
1064
+ raise
1065
+ try:
1066
+ if self._locked:
1067
+ _lock_file(f)
1068
+ try:
1069
+ os.close(os.open(path, os.O_WRONLY | os.O_TRUNC))
1070
+ self._dump_message(message, f)
1071
+ if isinstance(message, MHMessage):
1072
+ self._dump_sequences(message, key)
1073
+ finally:
1074
+ if self._locked:
1075
+ _unlock_file(f)
1076
+ finally:
1077
+ _sync_close(f)
1078
+
1079
+ def get_message(self, key):
1080
+ """Return a Message representation or raise a KeyError."""
1081
+ try:
1082
+ if self._locked:
1083
+ f = open(os.path.join(self._path, str(key)), 'rb+')
1084
+ else:
1085
+ f = open(os.path.join(self._path, str(key)), 'rb')
1086
+ except OSError as e:
1087
+ if e.errno == errno.ENOENT:
1088
+ raise KeyError('No message with key: %s' % key)
1089
+ else:
1090
+ raise
1091
+ with f:
1092
+ if self._locked:
1093
+ _lock_file(f)
1094
+ try:
1095
+ msg = MHMessage(f)
1096
+ finally:
1097
+ if self._locked:
1098
+ _unlock_file(f)
1099
+ for name, key_list in self.get_sequences().items():
1100
+ if key in key_list:
1101
+ msg.add_sequence(name)
1102
+ return msg
1103
+
1104
+ def get_bytes(self, key):
1105
+ """Return a bytes representation or raise a KeyError."""
1106
+ try:
1107
+ if self._locked:
1108
+ f = open(os.path.join(self._path, str(key)), 'rb+')
1109
+ else:
1110
+ f = open(os.path.join(self._path, str(key)), 'rb')
1111
+ except OSError as e:
1112
+ if e.errno == errno.ENOENT:
1113
+ raise KeyError('No message with key: %s' % key)
1114
+ else:
1115
+ raise
1116
+ with f:
1117
+ if self._locked:
1118
+ _lock_file(f)
1119
+ try:
1120
+ return f.read().replace(linesep, b'\n')
1121
+ finally:
1122
+ if self._locked:
1123
+ _unlock_file(f)
1124
+
1125
+ def get_file(self, key):
1126
+ """Return a file-like representation or raise a KeyError."""
1127
+ try:
1128
+ f = open(os.path.join(self._path, str(key)), 'rb')
1129
+ except OSError as e:
1130
+ if e.errno == errno.ENOENT:
1131
+ raise KeyError('No message with key: %s' % key)
1132
+ else:
1133
+ raise
1134
+ return _ProxyFile(f)
1135
+
1136
+ def iterkeys(self):
1137
+ """Return an iterator over keys."""
1138
+ return iter(sorted(int(entry) for entry in os.listdir(self._path)
1139
+ if entry.isdigit()))
1140
+
1141
+ def __contains__(self, key):
1142
+ """Return True if the keyed message exists, False otherwise."""
1143
+ return os.path.exists(os.path.join(self._path, str(key)))
1144
+
1145
+ def __len__(self):
1146
+ """Return a count of messages in the mailbox."""
1147
+ return len(list(self.iterkeys()))
1148
+
1149
+ def _open_mh_sequences_file(self, text):
1150
+ mode = '' if text else 'b'
1151
+ kwargs = {'encoding': 'ASCII'} if text else {}
1152
+ path = os.path.join(self._path, '.mh_sequences')
1153
+ while True:
1154
+ try:
1155
+ return open(path, 'r+' + mode, **kwargs)
1156
+ except FileNotFoundError:
1157
+ pass
1158
+ try:
1159
+ return open(path, 'x+' + mode, **kwargs)
1160
+ except FileExistsError:
1161
+ pass
1162
+
1163
+ def lock(self):
1164
+ """Lock the mailbox."""
1165
+ if not self._locked:
1166
+ self._file = self._open_mh_sequences_file(text=False)
1167
+ _lock_file(self._file)
1168
+ self._locked = True
1169
+
1170
+ def unlock(self):
1171
+ """Unlock the mailbox if it is locked."""
1172
+ if self._locked:
1173
+ _unlock_file(self._file)
1174
+ _sync_close(self._file)
1175
+ del self._file
1176
+ self._locked = False
1177
+
1178
+ def flush(self):
1179
+ """Write any pending changes to the disk."""
1180
+ return
1181
+
1182
+ def close(self):
1183
+ """Flush and close the mailbox."""
1184
+ if self._locked:
1185
+ self.unlock()
1186
+
1187
+ def list_folders(self):
1188
+ """Return a list of folder names."""
1189
+ result = []
1190
+ for entry in os.listdir(self._path):
1191
+ if os.path.isdir(os.path.join(self._path, entry)):
1192
+ result.append(entry)
1193
+ return result
1194
+
1195
+ def get_folder(self, folder):
1196
+ """Return an MH instance for the named folder."""
1197
+ return MH(os.path.join(self._path, folder),
1198
+ factory=self._factory, create=False)
1199
+
1200
+ def add_folder(self, folder):
1201
+ """Create a folder and return an MH instance representing it."""
1202
+ return MH(os.path.join(self._path, folder),
1203
+ factory=self._factory)
1204
+
1205
+ def remove_folder(self, folder):
1206
+ """Delete the named folder, which must be empty."""
1207
+ path = os.path.join(self._path, folder)
1208
+ entries = os.listdir(path)
1209
+ if entries == ['.mh_sequences']:
1210
+ os.remove(os.path.join(path, '.mh_sequences'))
1211
+ elif entries == []:
1212
+ pass
1213
+ else:
1214
+ raise NotEmptyError('Folder not empty: %s' % self._path)
1215
+ os.rmdir(path)
1216
+
1217
+ def get_sequences(self):
1218
+ """Return a name-to-key-list dictionary to define each sequence."""
1219
+ results = {}
1220
+ try:
1221
+ f = open(os.path.join(self._path, '.mh_sequences'), 'r', encoding='ASCII')
1222
+ except FileNotFoundError:
1223
+ return results
1224
+ with f:
1225
+ all_keys = set(self.keys())
1226
+ for line in f:
1227
+ try:
1228
+ name, contents = line.split(':')
1229
+ keys = set()
1230
+ for spec in contents.split():
1231
+ if spec.isdigit():
1232
+ keys.add(int(spec))
1233
+ else:
1234
+ start, stop = (int(x) for x in spec.split('-'))
1235
+ keys.update(range(start, stop + 1))
1236
+ results[name] = [key for key in sorted(keys) \
1237
+ if key in all_keys]
1238
+ if len(results[name]) == 0:
1239
+ del results[name]
1240
+ except ValueError:
1241
+ raise FormatError('Invalid sequence specification: %s' %
1242
+ line.rstrip())
1243
+ return results
1244
+
1245
+ def set_sequences(self, sequences):
1246
+ """Set sequences using the given name-to-key-list dictionary."""
1247
+ f = self._open_mh_sequences_file(text=True)
1248
+ try:
1249
+ os.close(os.open(f.name, os.O_WRONLY | os.O_TRUNC))
1250
+ for name, keys in sequences.items():
1251
+ if len(keys) == 0:
1252
+ continue
1253
+ f.write(name + ':')
1254
+ prev = None
1255
+ completing = False
1256
+ for key in sorted(set(keys)):
1257
+ if key - 1 == prev:
1258
+ if not completing:
1259
+ completing = True
1260
+ f.write('-')
1261
+ elif completing:
1262
+ completing = False
1263
+ f.write('%s %s' % (prev, key))
1264
+ else:
1265
+ f.write(' %s' % key)
1266
+ prev = key
1267
+ if completing:
1268
+ f.write(str(prev) + '\n')
1269
+ else:
1270
+ f.write('\n')
1271
+ finally:
1272
+ _sync_close(f)
1273
+
1274
+ def pack(self):
1275
+ """Re-name messages to eliminate numbering gaps. Invalidates keys."""
1276
+ sequences = self.get_sequences()
1277
+ prev = 0
1278
+ changes = []
1279
+ for key in self.iterkeys():
1280
+ if key - 1 != prev:
1281
+ changes.append((key, prev + 1))
1282
+ try:
1283
+ os.link(os.path.join(self._path, str(key)),
1284
+ os.path.join(self._path, str(prev + 1)))
1285
+ except (AttributeError, PermissionError):
1286
+ os.rename(os.path.join(self._path, str(key)),
1287
+ os.path.join(self._path, str(prev + 1)))
1288
+ else:
1289
+ os.unlink(os.path.join(self._path, str(key)))
1290
+ prev += 1
1291
+ self._next_key = prev + 1
1292
+ if len(changes) == 0:
1293
+ return
1294
+ for name, key_list in sequences.items():
1295
+ for old, new in changes:
1296
+ if old in key_list:
1297
+ key_list[key_list.index(old)] = new
1298
+ self.set_sequences(sequences)
1299
+
1300
+ def _dump_sequences(self, message, key):
1301
+ """Inspect a new MHMessage and update sequences appropriately."""
1302
+ pending_sequences = message.get_sequences()
1303
+ all_sequences = self.get_sequences()
1304
+ for name, key_list in all_sequences.items():
1305
+ if name in pending_sequences:
1306
+ key_list.append(key)
1307
+ elif key in key_list:
1308
+ del key_list[key_list.index(key)]
1309
+ for sequence in pending_sequences:
1310
+ if sequence not in all_sequences:
1311
+ all_sequences[sequence] = [key]
1312
+ self.set_sequences(all_sequences)
1313
+
1314
+
1315
+ class Babyl(_singlefileMailbox):
1316
+ """An Rmail-style Babyl mailbox."""
1317
+
1318
+ _special_labels = frozenset({'unseen', 'deleted', 'filed', 'answered',
1319
+ 'forwarded', 'edited', 'resent'})
1320
+
1321
+ def __init__(self, path, factory=None, create=True):
1322
+ """Initialize a Babyl mailbox."""
1323
+ _singlefileMailbox.__init__(self, path, factory, create)
1324
+ self._labels = {}
1325
+
1326
+ def add(self, message):
1327
+ """Add message and return assigned key."""
1328
+ key = _singlefileMailbox.add(self, message)
1329
+ if isinstance(message, BabylMessage):
1330
+ self._labels[key] = message.get_labels()
1331
+ return key
1332
+
1333
+ def remove(self, key):
1334
+ """Remove the keyed message; raise KeyError if it doesn't exist."""
1335
+ _singlefileMailbox.remove(self, key)
1336
+ if key in self._labels:
1337
+ del self._labels[key]
1338
+
1339
+ def __setitem__(self, key, message):
1340
+ """Replace the keyed message; raise KeyError if it doesn't exist."""
1341
+ _singlefileMailbox.__setitem__(self, key, message)
1342
+ if isinstance(message, BabylMessage):
1343
+ self._labels[key] = message.get_labels()
1344
+
1345
+ def get_message(self, key):
1346
+ """Return a Message representation or raise a KeyError."""
1347
+ start, stop = self._lookup(key)
1348
+ self._file.seek(start)
1349
+ self._file.readline() # Skip b'1,' line specifying labels.
1350
+ original_headers = io.BytesIO()
1351
+ while True:
1352
+ line = self._file.readline()
1353
+ if line == b'*** EOOH ***' + linesep or not line:
1354
+ break
1355
+ original_headers.write(line.replace(linesep, b'\n'))
1356
+ visible_headers = io.BytesIO()
1357
+ while True:
1358
+ line = self._file.readline()
1359
+ if line == linesep or not line:
1360
+ break
1361
+ visible_headers.write(line.replace(linesep, b'\n'))
1362
+ # Read up to the stop, or to the end
1363
+ n = stop - self._file.tell()
1364
+ assert n >= 0
1365
+ body = self._file.read(n)
1366
+ body = body.replace(linesep, b'\n')
1367
+ msg = BabylMessage(original_headers.getvalue() + body)
1368
+ msg.set_visible(visible_headers.getvalue())
1369
+ if key in self._labels:
1370
+ msg.set_labels(self._labels[key])
1371
+ return msg
1372
+
1373
+ def get_bytes(self, key):
1374
+ """Return a string representation or raise a KeyError."""
1375
+ start, stop = self._lookup(key)
1376
+ self._file.seek(start)
1377
+ self._file.readline() # Skip b'1,' line specifying labels.
1378
+ original_headers = io.BytesIO()
1379
+ while True:
1380
+ line = self._file.readline()
1381
+ if line == b'*** EOOH ***' + linesep or not line:
1382
+ break
1383
+ original_headers.write(line.replace(linesep, b'\n'))
1384
+ while True:
1385
+ line = self._file.readline()
1386
+ if line == linesep or not line:
1387
+ break
1388
+ headers = original_headers.getvalue()
1389
+ n = stop - self._file.tell()
1390
+ assert n >= 0
1391
+ data = self._file.read(n)
1392
+ data = data.replace(linesep, b'\n')
1393
+ return headers + data
1394
+
1395
+ def get_file(self, key):
1396
+ """Return a file-like representation or raise a KeyError."""
1397
+ return io.BytesIO(self.get_bytes(key).replace(b'\n', linesep))
1398
+
1399
+ def get_labels(self):
1400
+ """Return a list of user-defined labels in the mailbox."""
1401
+ self._lookup()
1402
+ labels = set()
1403
+ for label_list in self._labels.values():
1404
+ labels.update(label_list)
1405
+ labels.difference_update(self._special_labels)
1406
+ return list(labels)
1407
+
1408
+ def _generate_toc(self):
1409
+ """Generate key-to-(start, stop) table of contents."""
1410
+ starts, stops = [], []
1411
+ self._file.seek(0)
1412
+ next_pos = 0
1413
+ label_lists = []
1414
+ while True:
1415
+ line_pos = next_pos
1416
+ line = self._file.readline()
1417
+ next_pos = self._file.tell()
1418
+ if line == b'\037\014' + linesep:
1419
+ if len(stops) < len(starts):
1420
+ stops.append(line_pos - len(linesep))
1421
+ starts.append(next_pos)
1422
+ labels = [label.strip() for label
1423
+ in self._file.readline()[1:].split(b',')
1424
+ if label.strip()]
1425
+ label_lists.append(labels)
1426
+ elif line == b'\037' or line == b'\037' + linesep:
1427
+ if len(stops) < len(starts):
1428
+ stops.append(line_pos - len(linesep))
1429
+ elif not line:
1430
+ stops.append(line_pos - len(linesep))
1431
+ break
1432
+ self._toc = dict(enumerate(zip(starts, stops)))
1433
+ self._labels = dict(enumerate(label_lists))
1434
+ self._next_key = len(self._toc)
1435
+ self._file.seek(0, 2)
1436
+ self._file_length = self._file.tell()
1437
+
1438
+ def _pre_mailbox_hook(self, f):
1439
+ """Called before writing the mailbox to file f."""
1440
+ babyl = b'BABYL OPTIONS:' + linesep
1441
+ babyl += b'Version: 5' + linesep
1442
+ labels = self.get_labels()
1443
+ labels = (label.encode() for label in labels)
1444
+ babyl += b'Labels:' + b','.join(labels) + linesep
1445
+ babyl += b'\037'
1446
+ f.write(babyl)
1447
+
1448
+ def _pre_message_hook(self, f):
1449
+ """Called before writing each message to file f."""
1450
+ f.write(b'\014' + linesep)
1451
+
1452
+ def _post_message_hook(self, f):
1453
+ """Called after writing each message to file f."""
1454
+ f.write(linesep + b'\037')
1455
+
1456
+ def _install_message(self, message):
1457
+ """Write message contents and return (start, stop)."""
1458
+ start = self._file.tell()
1459
+ if isinstance(message, BabylMessage):
1460
+ special_labels = []
1461
+ labels = []
1462
+ for label in message.get_labels():
1463
+ if label in self._special_labels:
1464
+ special_labels.append(label)
1465
+ else:
1466
+ labels.append(label)
1467
+ self._file.write(b'1')
1468
+ for label in special_labels:
1469
+ self._file.write(b', ' + label.encode())
1470
+ self._file.write(b',,')
1471
+ for label in labels:
1472
+ self._file.write(b' ' + label.encode() + b',')
1473
+ self._file.write(linesep)
1474
+ else:
1475
+ self._file.write(b'1,,' + linesep)
1476
+ if isinstance(message, email.message.Message):
1477
+ orig_buffer = io.BytesIO()
1478
+ orig_generator = email.generator.BytesGenerator(orig_buffer, False, 0)
1479
+ orig_generator.flatten(message)
1480
+ orig_buffer.seek(0)
1481
+ while True:
1482
+ line = orig_buffer.readline()
1483
+ self._file.write(line.replace(b'\n', linesep))
1484
+ if line == b'\n' or not line:
1485
+ break
1486
+ self._file.write(b'*** EOOH ***' + linesep)
1487
+ if isinstance(message, BabylMessage):
1488
+ vis_buffer = io.BytesIO()
1489
+ vis_generator = email.generator.BytesGenerator(vis_buffer, False, 0)
1490
+ vis_generator.flatten(message.get_visible())
1491
+ while True:
1492
+ line = vis_buffer.readline()
1493
+ self._file.write(line.replace(b'\n', linesep))
1494
+ if line == b'\n' or not line:
1495
+ break
1496
+ else:
1497
+ orig_buffer.seek(0)
1498
+ while True:
1499
+ line = orig_buffer.readline()
1500
+ self._file.write(line.replace(b'\n', linesep))
1501
+ if line == b'\n' or not line:
1502
+ break
1503
+ while True:
1504
+ buffer = orig_buffer.read(4096) # Buffer size is arbitrary.
1505
+ if not buffer:
1506
+ break
1507
+ self._file.write(buffer.replace(b'\n', linesep))
1508
+ elif isinstance(message, (bytes, str, io.StringIO)):
1509
+ if isinstance(message, io.StringIO):
1510
+ warnings.warn("Use of StringIO input is deprecated, "
1511
+ "use BytesIO instead", DeprecationWarning, 3)
1512
+ message = message.getvalue()
1513
+ if isinstance(message, str):
1514
+ message = self._string_to_bytes(message)
1515
+ body_start = message.find(b'\n\n') + 2
1516
+ if body_start - 2 != -1:
1517
+ self._file.write(message[:body_start].replace(b'\n', linesep))
1518
+ self._file.write(b'*** EOOH ***' + linesep)
1519
+ self._file.write(message[:body_start].replace(b'\n', linesep))
1520
+ self._file.write(message[body_start:].replace(b'\n', linesep))
1521
+ else:
1522
+ self._file.write(b'*** EOOH ***' + linesep + linesep)
1523
+ self._file.write(message.replace(b'\n', linesep))
1524
+ elif hasattr(message, 'readline'):
1525
+ if hasattr(message, 'buffer'):
1526
+ warnings.warn("Use of text mode files is deprecated, "
1527
+ "use a binary mode file instead", DeprecationWarning, 3)
1528
+ message = message.buffer
1529
+ original_pos = message.tell()
1530
+ first_pass = True
1531
+ while True:
1532
+ line = message.readline()
1533
+ # Universal newline support.
1534
+ if line.endswith(b'\r\n'):
1535
+ line = line[:-2] + b'\n'
1536
+ elif line.endswith(b'\r'):
1537
+ line = line[:-1] + b'\n'
1538
+ self._file.write(line.replace(b'\n', linesep))
1539
+ if line == b'\n' or not line:
1540
+ if first_pass:
1541
+ first_pass = False
1542
+ self._file.write(b'*** EOOH ***' + linesep)
1543
+ message.seek(original_pos)
1544
+ else:
1545
+ break
1546
+ while True:
1547
+ line = message.readline()
1548
+ if not line:
1549
+ break
1550
+ # Universal newline support.
1551
+ if line.endswith(b'\r\n'):
1552
+ line = line[:-2] + linesep
1553
+ elif line.endswith(b'\r'):
1554
+ line = line[:-1] + linesep
1555
+ elif line.endswith(b'\n'):
1556
+ line = line[:-1] + linesep
1557
+ self._file.write(line)
1558
+ else:
1559
+ raise TypeError('Invalid message type: %s' % type(message))
1560
+ stop = self._file.tell()
1561
+ return (start, stop)
1562
+
1563
+
1564
+ class Message(email.message.Message):
1565
+ """Message with mailbox-format-specific properties."""
1566
+
1567
+ def __init__(self, message=None):
1568
+ """Initialize a Message instance."""
1569
+ if isinstance(message, email.message.Message):
1570
+ self._become_message(copy.deepcopy(message))
1571
+ if isinstance(message, Message):
1572
+ message._explain_to(self)
1573
+ elif isinstance(message, bytes):
1574
+ self._become_message(email.message_from_bytes(message))
1575
+ elif isinstance(message, str):
1576
+ self._become_message(email.message_from_string(message))
1577
+ elif isinstance(message, io.TextIOWrapper):
1578
+ self._become_message(email.message_from_file(message))
1579
+ elif hasattr(message, "read"):
1580
+ self._become_message(email.message_from_binary_file(message))
1581
+ elif message is None:
1582
+ email.message.Message.__init__(self)
1583
+ else:
1584
+ raise TypeError('Invalid message type: %s' % type(message))
1585
+
1586
+ def _become_message(self, message):
1587
+ """Assume the non-format-specific state of message."""
1588
+ type_specific = getattr(message, '_type_specific_attributes', [])
1589
+ for name in message.__dict__:
1590
+ if name not in type_specific:
1591
+ self.__dict__[name] = message.__dict__[name]
1592
+
1593
+ def _explain_to(self, message):
1594
+ """Copy format-specific state to message insofar as possible."""
1595
+ if isinstance(message, Message):
1596
+ return # There's nothing format-specific to explain.
1597
+ else:
1598
+ raise TypeError('Cannot convert to specified type')
1599
+
1600
+
1601
+ class MaildirMessage(Message):
1602
+ """Message with Maildir-specific properties."""
1603
+
1604
+ _type_specific_attributes = ['_subdir', '_info', '_date']
1605
+
1606
+ def __init__(self, message=None):
1607
+ """Initialize a MaildirMessage instance."""
1608
+ self._subdir = 'new'
1609
+ self._info = ''
1610
+ self._date = time.time()
1611
+ Message.__init__(self, message)
1612
+
1613
+ def get_subdir(self):
1614
+ """Return 'new' or 'cur'."""
1615
+ return self._subdir
1616
+
1617
+ def set_subdir(self, subdir):
1618
+ """Set subdir to 'new' or 'cur'."""
1619
+ if subdir == 'new' or subdir == 'cur':
1620
+ self._subdir = subdir
1621
+ else:
1622
+ raise ValueError("subdir must be 'new' or 'cur': %s" % subdir)
1623
+
1624
+ def get_flags(self):
1625
+ """Return as a string the flags that are set."""
1626
+ if self._info.startswith('2,'):
1627
+ return self._info[2:]
1628
+ else:
1629
+ return ''
1630
+
1631
+ def set_flags(self, flags):
1632
+ """Set the given flags and unset all others."""
1633
+ self._info = '2,' + ''.join(sorted(flags))
1634
+
1635
+ def add_flag(self, flag):
1636
+ """Set the given flag(s) without changing others."""
1637
+ self.set_flags(''.join(set(self.get_flags()) | set(flag)))
1638
+
1639
+ def remove_flag(self, flag):
1640
+ """Unset the given string flag(s) without changing others."""
1641
+ if self.get_flags():
1642
+ self.set_flags(''.join(set(self.get_flags()) - set(flag)))
1643
+
1644
+ def get_date(self):
1645
+ """Return delivery date of message, in seconds since the epoch."""
1646
+ return self._date
1647
+
1648
+ def set_date(self, date):
1649
+ """Set delivery date of message, in seconds since the epoch."""
1650
+ try:
1651
+ self._date = float(date)
1652
+ except ValueError:
1653
+ raise TypeError("can't convert to float: %s" % date) from None
1654
+
1655
+ def get_info(self):
1656
+ """Get the message's "info" as a string."""
1657
+ return self._info
1658
+
1659
+ def set_info(self, info):
1660
+ """Set the message's "info" string."""
1661
+ if isinstance(info, str):
1662
+ self._info = info
1663
+ else:
1664
+ raise TypeError('info must be a string: %s' % type(info))
1665
+
1666
+ def _explain_to(self, message):
1667
+ """Copy Maildir-specific state to message insofar as possible."""
1668
+ if isinstance(message, MaildirMessage):
1669
+ message.set_flags(self.get_flags())
1670
+ message.set_subdir(self.get_subdir())
1671
+ message.set_date(self.get_date())
1672
+ elif isinstance(message, _mboxMMDFMessage):
1673
+ flags = set(self.get_flags())
1674
+ if 'S' in flags:
1675
+ message.add_flag('R')
1676
+ if self.get_subdir() == 'cur':
1677
+ message.add_flag('O')
1678
+ if 'T' in flags:
1679
+ message.add_flag('D')
1680
+ if 'F' in flags:
1681
+ message.add_flag('F')
1682
+ if 'R' in flags:
1683
+ message.add_flag('A')
1684
+ message.set_from('MAILER-DAEMON', time.gmtime(self.get_date()))
1685
+ elif isinstance(message, MHMessage):
1686
+ flags = set(self.get_flags())
1687
+ if 'S' not in flags:
1688
+ message.add_sequence('unseen')
1689
+ if 'R' in flags:
1690
+ message.add_sequence('replied')
1691
+ if 'F' in flags:
1692
+ message.add_sequence('flagged')
1693
+ elif isinstance(message, BabylMessage):
1694
+ flags = set(self.get_flags())
1695
+ if 'S' not in flags:
1696
+ message.add_label('unseen')
1697
+ if 'T' in flags:
1698
+ message.add_label('deleted')
1699
+ if 'R' in flags:
1700
+ message.add_label('answered')
1701
+ if 'P' in flags:
1702
+ message.add_label('forwarded')
1703
+ elif isinstance(message, Message):
1704
+ pass
1705
+ else:
1706
+ raise TypeError('Cannot convert to specified type: %s' %
1707
+ type(message))
1708
+
1709
+
1710
+ class _mboxMMDFMessage(Message):
1711
+ """Message with mbox- or MMDF-specific properties."""
1712
+
1713
+ _type_specific_attributes = ['_from']
1714
+
1715
+ def __init__(self, message=None):
1716
+ """Initialize an mboxMMDFMessage instance."""
1717
+ self.set_from('MAILER-DAEMON', True)
1718
+ if isinstance(message, email.message.Message):
1719
+ unixfrom = message.get_unixfrom()
1720
+ if unixfrom is not None and unixfrom.startswith('From '):
1721
+ self.set_from(unixfrom[5:])
1722
+ Message.__init__(self, message)
1723
+
1724
+ def get_from(self):
1725
+ """Return contents of "From " line."""
1726
+ return self._from
1727
+
1728
+ def set_from(self, from_, time_=None):
1729
+ """Set "From " line, formatting and appending time_ if specified."""
1730
+ if time_ is not None:
1731
+ if time_ is True:
1732
+ time_ = time.gmtime()
1733
+ from_ += ' ' + time.asctime(time_)
1734
+ self._from = from_
1735
+
1736
+ def get_flags(self):
1737
+ """Return as a string the flags that are set."""
1738
+ return self.get('Status', '') + self.get('X-Status', '')
1739
+
1740
+ def set_flags(self, flags):
1741
+ """Set the given flags and unset all others."""
1742
+ flags = set(flags)
1743
+ status_flags, xstatus_flags = '', ''
1744
+ for flag in ('R', 'O'):
1745
+ if flag in flags:
1746
+ status_flags += flag
1747
+ flags.remove(flag)
1748
+ for flag in ('D', 'F', 'A'):
1749
+ if flag in flags:
1750
+ xstatus_flags += flag
1751
+ flags.remove(flag)
1752
+ xstatus_flags += ''.join(sorted(flags))
1753
+ try:
1754
+ self.replace_header('Status', status_flags)
1755
+ except KeyError:
1756
+ self.add_header('Status', status_flags)
1757
+ try:
1758
+ self.replace_header('X-Status', xstatus_flags)
1759
+ except KeyError:
1760
+ self.add_header('X-Status', xstatus_flags)
1761
+
1762
+ def add_flag(self, flag):
1763
+ """Set the given flag(s) without changing others."""
1764
+ self.set_flags(''.join(set(self.get_flags()) | set(flag)))
1765
+
1766
+ def remove_flag(self, flag):
1767
+ """Unset the given string flag(s) without changing others."""
1768
+ if 'Status' in self or 'X-Status' in self:
1769
+ self.set_flags(''.join(set(self.get_flags()) - set(flag)))
1770
+
1771
+ def _explain_to(self, message):
1772
+ """Copy mbox- or MMDF-specific state to message insofar as possible."""
1773
+ if isinstance(message, MaildirMessage):
1774
+ flags = set(self.get_flags())
1775
+ if 'O' in flags:
1776
+ message.set_subdir('cur')
1777
+ if 'F' in flags:
1778
+ message.add_flag('F')
1779
+ if 'A' in flags:
1780
+ message.add_flag('R')
1781
+ if 'R' in flags:
1782
+ message.add_flag('S')
1783
+ if 'D' in flags:
1784
+ message.add_flag('T')
1785
+ del message['status']
1786
+ del message['x-status']
1787
+ maybe_date = ' '.join(self.get_from().split()[-5:])
1788
+ try:
1789
+ message.set_date(calendar.timegm(time.strptime(maybe_date,
1790
+ '%a %b %d %H:%M:%S %Y')))
1791
+ except (ValueError, OverflowError):
1792
+ pass
1793
+ elif isinstance(message, _mboxMMDFMessage):
1794
+ message.set_flags(self.get_flags())
1795
+ message.set_from(self.get_from())
1796
+ elif isinstance(message, MHMessage):
1797
+ flags = set(self.get_flags())
1798
+ if 'R' not in flags:
1799
+ message.add_sequence('unseen')
1800
+ if 'A' in flags:
1801
+ message.add_sequence('replied')
1802
+ if 'F' in flags:
1803
+ message.add_sequence('flagged')
1804
+ del message['status']
1805
+ del message['x-status']
1806
+ elif isinstance(message, BabylMessage):
1807
+ flags = set(self.get_flags())
1808
+ if 'R' not in flags:
1809
+ message.add_label('unseen')
1810
+ if 'D' in flags:
1811
+ message.add_label('deleted')
1812
+ if 'A' in flags:
1813
+ message.add_label('answered')
1814
+ del message['status']
1815
+ del message['x-status']
1816
+ elif isinstance(message, Message):
1817
+ pass
1818
+ else:
1819
+ raise TypeError('Cannot convert to specified type: %s' %
1820
+ type(message))
1821
+
1822
+
1823
+ class mboxMessage(_mboxMMDFMessage):
1824
+ """Message with mbox-specific properties."""
1825
+
1826
+
1827
+ class MHMessage(Message):
1828
+ """Message with MH-specific properties."""
1829
+
1830
+ _type_specific_attributes = ['_sequences']
1831
+
1832
+ def __init__(self, message=None):
1833
+ """Initialize an MHMessage instance."""
1834
+ self._sequences = []
1835
+ Message.__init__(self, message)
1836
+
1837
+ def get_sequences(self):
1838
+ """Return a list of sequences that include the message."""
1839
+ return self._sequences[:]
1840
+
1841
+ def set_sequences(self, sequences):
1842
+ """Set the list of sequences that include the message."""
1843
+ self._sequences = list(sequences)
1844
+
1845
+ def add_sequence(self, sequence):
1846
+ """Add sequence to list of sequences including the message."""
1847
+ if isinstance(sequence, str):
1848
+ if not sequence in self._sequences:
1849
+ self._sequences.append(sequence)
1850
+ else:
1851
+ raise TypeError('sequence type must be str: %s' % type(sequence))
1852
+
1853
+ def remove_sequence(self, sequence):
1854
+ """Remove sequence from the list of sequences including the message."""
1855
+ try:
1856
+ self._sequences.remove(sequence)
1857
+ except ValueError:
1858
+ pass
1859
+
1860
+ def _explain_to(self, message):
1861
+ """Copy MH-specific state to message insofar as possible."""
1862
+ if isinstance(message, MaildirMessage):
1863
+ sequences = set(self.get_sequences())
1864
+ if 'unseen' in sequences:
1865
+ message.set_subdir('cur')
1866
+ else:
1867
+ message.set_subdir('cur')
1868
+ message.add_flag('S')
1869
+ if 'flagged' in sequences:
1870
+ message.add_flag('F')
1871
+ if 'replied' in sequences:
1872
+ message.add_flag('R')
1873
+ elif isinstance(message, _mboxMMDFMessage):
1874
+ sequences = set(self.get_sequences())
1875
+ if 'unseen' not in sequences:
1876
+ message.add_flag('RO')
1877
+ else:
1878
+ message.add_flag('O')
1879
+ if 'flagged' in sequences:
1880
+ message.add_flag('F')
1881
+ if 'replied' in sequences:
1882
+ message.add_flag('A')
1883
+ elif isinstance(message, MHMessage):
1884
+ for sequence in self.get_sequences():
1885
+ message.add_sequence(sequence)
1886
+ elif isinstance(message, BabylMessage):
1887
+ sequences = set(self.get_sequences())
1888
+ if 'unseen' in sequences:
1889
+ message.add_label('unseen')
1890
+ if 'replied' in sequences:
1891
+ message.add_label('answered')
1892
+ elif isinstance(message, Message):
1893
+ pass
1894
+ else:
1895
+ raise TypeError('Cannot convert to specified type: %s' %
1896
+ type(message))
1897
+
1898
+
1899
+ class BabylMessage(Message):
1900
+ """Message with Babyl-specific properties."""
1901
+
1902
+ _type_specific_attributes = ['_labels', '_visible']
1903
+
1904
+ def __init__(self, message=None):
1905
+ """Initialize a BabylMessage instance."""
1906
+ self._labels = []
1907
+ self._visible = Message()
1908
+ Message.__init__(self, message)
1909
+
1910
+ def get_labels(self):
1911
+ """Return a list of labels on the message."""
1912
+ return self._labels[:]
1913
+
1914
+ def set_labels(self, labels):
1915
+ """Set the list of labels on the message."""
1916
+ self._labels = list(labels)
1917
+
1918
+ def add_label(self, label):
1919
+ """Add label to list of labels on the message."""
1920
+ if isinstance(label, str):
1921
+ if label not in self._labels:
1922
+ self._labels.append(label)
1923
+ else:
1924
+ raise TypeError('label must be a string: %s' % type(label))
1925
+
1926
+ def remove_label(self, label):
1927
+ """Remove label from the list of labels on the message."""
1928
+ try:
1929
+ self._labels.remove(label)
1930
+ except ValueError:
1931
+ pass
1932
+
1933
+ def get_visible(self):
1934
+ """Return a Message representation of visible headers."""
1935
+ return Message(self._visible)
1936
+
1937
+ def set_visible(self, visible):
1938
+ """Set the Message representation of visible headers."""
1939
+ self._visible = Message(visible)
1940
+
1941
+ def update_visible(self):
1942
+ """Update and/or sensibly generate a set of visible headers."""
1943
+ for header in self._visible.keys():
1944
+ if header in self:
1945
+ self._visible.replace_header(header, self[header])
1946
+ else:
1947
+ del self._visible[header]
1948
+ for header in ('Date', 'From', 'Reply-To', 'To', 'CC', 'Subject'):
1949
+ if header in self and header not in self._visible:
1950
+ self._visible[header] = self[header]
1951
+
1952
+ def _explain_to(self, message):
1953
+ """Copy Babyl-specific state to message insofar as possible."""
1954
+ if isinstance(message, MaildirMessage):
1955
+ labels = set(self.get_labels())
1956
+ if 'unseen' in labels:
1957
+ message.set_subdir('cur')
1958
+ else:
1959
+ message.set_subdir('cur')
1960
+ message.add_flag('S')
1961
+ if 'forwarded' in labels or 'resent' in labels:
1962
+ message.add_flag('P')
1963
+ if 'answered' in labels:
1964
+ message.add_flag('R')
1965
+ if 'deleted' in labels:
1966
+ message.add_flag('T')
1967
+ elif isinstance(message, _mboxMMDFMessage):
1968
+ labels = set(self.get_labels())
1969
+ if 'unseen' not in labels:
1970
+ message.add_flag('RO')
1971
+ else:
1972
+ message.add_flag('O')
1973
+ if 'deleted' in labels:
1974
+ message.add_flag('D')
1975
+ if 'answered' in labels:
1976
+ message.add_flag('A')
1977
+ elif isinstance(message, MHMessage):
1978
+ labels = set(self.get_labels())
1979
+ if 'unseen' in labels:
1980
+ message.add_sequence('unseen')
1981
+ if 'answered' in labels:
1982
+ message.add_sequence('replied')
1983
+ elif isinstance(message, BabylMessage):
1984
+ message.set_visible(self.get_visible())
1985
+ for label in self.get_labels():
1986
+ message.add_label(label)
1987
+ elif isinstance(message, Message):
1988
+ pass
1989
+ else:
1990
+ raise TypeError('Cannot convert to specified type: %s' %
1991
+ type(message))
1992
+
1993
+
1994
+ class MMDFMessage(_mboxMMDFMessage):
1995
+ """Message with MMDF-specific properties."""
1996
+
1997
+
1998
+ class _ProxyFile:
1999
+ """A read-only wrapper of a file."""
2000
+
2001
+ def __init__(self, f, pos=None):
2002
+ """Initialize a _ProxyFile."""
2003
+ self._file = f
2004
+ if pos is None:
2005
+ self._pos = f.tell()
2006
+ else:
2007
+ self._pos = pos
2008
+
2009
+ def read(self, size=None):
2010
+ """Read bytes."""
2011
+ return self._read(size, self._file.read)
2012
+
2013
+ def read1(self, size=None):
2014
+ """Read bytes."""
2015
+ return self._read(size, self._file.read1)
2016
+
2017
+ def readline(self, size=None):
2018
+ """Read a line."""
2019
+ return self._read(size, self._file.readline)
2020
+
2021
+ def readlines(self, sizehint=None):
2022
+ """Read multiple lines."""
2023
+ result = []
2024
+ for line in self:
2025
+ result.append(line)
2026
+ if sizehint is not None:
2027
+ sizehint -= len(line)
2028
+ if sizehint <= 0:
2029
+ break
2030
+ return result
2031
+
2032
+ def __iter__(self):
2033
+ """Iterate over lines."""
2034
+ while line := self.readline():
2035
+ yield line
2036
+
2037
+ def tell(self):
2038
+ """Return the position."""
2039
+ return self._pos
2040
+
2041
+ def seek(self, offset, whence=0):
2042
+ """Change position."""
2043
+ if whence == 1:
2044
+ self._file.seek(self._pos)
2045
+ self._file.seek(offset, whence)
2046
+ self._pos = self._file.tell()
2047
+
2048
+ def close(self):
2049
+ """Close the file."""
2050
+ if hasattr(self, '_file'):
2051
+ try:
2052
+ if hasattr(self._file, 'close'):
2053
+ self._file.close()
2054
+ finally:
2055
+ del self._file
2056
+
2057
+ def _read(self, size, read_method):
2058
+ """Read size bytes using read_method."""
2059
+ if size is None:
2060
+ size = -1
2061
+ self._file.seek(self._pos)
2062
+ result = read_method(size)
2063
+ self._pos = self._file.tell()
2064
+ return result
2065
+
2066
+ def __enter__(self):
2067
+ """Context management protocol support."""
2068
+ return self
2069
+
2070
+ def __exit__(self, *exc):
2071
+ self.close()
2072
+
2073
+ def readable(self):
2074
+ return self._file.readable()
2075
+
2076
+ def writable(self):
2077
+ return self._file.writable()
2078
+
2079
+ def seekable(self):
2080
+ return self._file.seekable()
2081
+
2082
+ def flush(self):
2083
+ return self._file.flush()
2084
+
2085
+ @property
2086
+ def closed(self):
2087
+ if not hasattr(self, '_file'):
2088
+ return True
2089
+ if not hasattr(self._file, 'closed'):
2090
+ return False
2091
+ return self._file.closed
2092
+
2093
+ __class_getitem__ = classmethod(GenericAlias)
2094
+
2095
+
2096
+ class _PartialFile(_ProxyFile):
2097
+ """A read-only wrapper of part of a file."""
2098
+
2099
+ def __init__(self, f, start=None, stop=None):
2100
+ """Initialize a _PartialFile."""
2101
+ _ProxyFile.__init__(self, f, start)
2102
+ self._start = start
2103
+ self._stop = stop
2104
+
2105
+ def tell(self):
2106
+ """Return the position with respect to start."""
2107
+ return _ProxyFile.tell(self) - self._start
2108
+
2109
+ def seek(self, offset, whence=0):
2110
+ """Change position, possibly with respect to start or stop."""
2111
+ if whence == 0:
2112
+ self._pos = self._start
2113
+ whence = 1
2114
+ elif whence == 2:
2115
+ self._pos = self._stop
2116
+ whence = 1
2117
+ _ProxyFile.seek(self, offset, whence)
2118
+
2119
+ def _read(self, size, read_method):
2120
+ """Read size bytes using read_method, honoring start and stop."""
2121
+ remaining = self._stop - self._pos
2122
+ if remaining <= 0:
2123
+ return b''
2124
+ if size is None or size < 0 or size > remaining:
2125
+ size = remaining
2126
+ return _ProxyFile._read(self, size, read_method)
2127
+
2128
+ def close(self):
2129
+ # do *not* close the underlying file object for partial files,
2130
+ # since it's global to the mailbox object
2131
+ if hasattr(self, '_file'):
2132
+ del self._file
2133
+
2134
+
2135
+ def _lock_file(f, dotlock=True):
2136
+ """Lock file f using lockf and dot locking."""
2137
+ dotlock_done = False
2138
+ try:
2139
+ if fcntl:
2140
+ try:
2141
+ fcntl.lockf(f, fcntl.LOCK_EX | fcntl.LOCK_NB)
2142
+ except OSError as e:
2143
+ if e.errno in (errno.EAGAIN, errno.EACCES, errno.EROFS):
2144
+ raise ExternalClashError('lockf: lock unavailable: %s' %
2145
+ f.name)
2146
+ else:
2147
+ raise
2148
+ if dotlock:
2149
+ try:
2150
+ pre_lock = _create_temporary(f.name + '.lock')
2151
+ pre_lock.close()
2152
+ except OSError as e:
2153
+ if e.errno in (errno.EACCES, errno.EROFS):
2154
+ return # Without write access, just skip dotlocking.
2155
+ else:
2156
+ raise
2157
+ try:
2158
+ try:
2159
+ os.link(pre_lock.name, f.name + '.lock')
2160
+ dotlock_done = True
2161
+ except (AttributeError, PermissionError):
2162
+ os.rename(pre_lock.name, f.name + '.lock')
2163
+ dotlock_done = True
2164
+ else:
2165
+ os.unlink(pre_lock.name)
2166
+ except FileExistsError:
2167
+ os.remove(pre_lock.name)
2168
+ raise ExternalClashError('dot lock unavailable: %s' %
2169
+ f.name)
2170
+ except:
2171
+ if fcntl:
2172
+ fcntl.lockf(f, fcntl.LOCK_UN)
2173
+ if dotlock_done:
2174
+ os.remove(f.name + '.lock')
2175
+ raise
2176
+
2177
+ def _unlock_file(f):
2178
+ """Unlock file f using lockf and dot locking."""
2179
+ if fcntl:
2180
+ fcntl.lockf(f, fcntl.LOCK_UN)
2181
+ if os.path.exists(f.name + '.lock'):
2182
+ os.remove(f.name + '.lock')
2183
+
2184
+ def _create_carefully(path):
2185
+ """Create a file if it doesn't exist and open for reading and writing."""
2186
+ return open(path, 'xb+')
2187
+
2188
+ def _create_temporary(path):
2189
+ """Create a temp file based on path and open for reading and writing."""
2190
+ return _create_carefully('%s.%s.%s.%s' % (path, int(time.time()),
2191
+ socket.gethostname(),
2192
+ os.getpid()))
2193
+
2194
+ def _sync_flush(f):
2195
+ """Ensure changes to file f are physically on disk."""
2196
+ f.flush()
2197
+ if hasattr(os, 'fsync'):
2198
+ os.fsync(f.fileno())
2199
+
2200
+ def _sync_close(f):
2201
+ """Close file f, ensuring all changes are physically on disk."""
2202
+ _sync_flush(f)
2203
+ f.close()
2204
+
2205
+
2206
+ class Error(Exception):
2207
+ """Raised for module-specific errors."""
2208
+
2209
+ class NoSuchMailboxError(Error):
2210
+ """The specified mailbox does not exist and won't be created."""
2211
+
2212
+ class NotEmptyError(Error):
2213
+ """The specified mailbox is not empty and deletion was requested."""
2214
+
2215
+ class ExternalClashError(Error):
2216
+ """Another process caused an action to fail."""
2217
+
2218
+ class FormatError(Error):
2219
+ """A file appears to have an invalid format."""