@pairling/runtime-darwin-x64 0.1.0 → 0.2.0

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 (1238) hide show
  1. package/bin/pairling-connectd +0 -0
  2. package/manifest.json +9 -3
  3. package/package.json +1 -1
  4. package/python/bin/2to3-3.12 +7 -0
  5. package/python/bin/idle3.12 +7 -0
  6. package/python/bin/pip +8 -0
  7. package/python/bin/pip3 +8 -0
  8. package/python/bin/pip3.12 +8 -0
  9. package/python/bin/pydoc3.12 +7 -0
  10. package/python/bin/python3 +0 -0
  11. package/python/bin/python3.12 +0 -0
  12. package/python/bin/python3.12-config +76 -0
  13. package/python/include/python3.12/Python.h +109 -0
  14. package/python/include/python3.12/abstract.h +899 -0
  15. package/python/include/python3.12/bltinmodule.h +14 -0
  16. package/python/include/python3.12/boolobject.h +42 -0
  17. package/python/include/python3.12/bytearrayobject.h +44 -0
  18. package/python/include/python3.12/bytesobject.h +69 -0
  19. package/python/include/python3.12/ceval.h +168 -0
  20. package/python/include/python3.12/codecs.h +248 -0
  21. package/python/include/python3.12/compile.h +22 -0
  22. package/python/include/python3.12/complexobject.h +30 -0
  23. package/python/include/python3.12/cpython/abstract.h +206 -0
  24. package/python/include/python3.12/cpython/bytearrayobject.h +34 -0
  25. package/python/include/python3.12/cpython/bytesobject.h +133 -0
  26. package/python/include/python3.12/cpython/cellobject.h +44 -0
  27. package/python/include/python3.12/cpython/ceval.h +35 -0
  28. package/python/include/python3.12/cpython/classobject.h +71 -0
  29. package/python/include/python3.12/cpython/code.h +389 -0
  30. package/python/include/python3.12/cpython/compile.h +69 -0
  31. package/python/include/python3.12/cpython/complexobject.h +44 -0
  32. package/python/include/python3.12/cpython/context.h +78 -0
  33. package/python/include/python3.12/cpython/descrobject.h +64 -0
  34. package/python/include/python3.12/cpython/dictobject.h +118 -0
  35. package/python/include/python3.12/cpython/fileobject.h +19 -0
  36. package/python/include/python3.12/cpython/fileutils.h +8 -0
  37. package/python/include/python3.12/cpython/floatobject.h +27 -0
  38. package/python/include/python3.12/cpython/frameobject.h +29 -0
  39. package/python/include/python3.12/cpython/funcobject.h +190 -0
  40. package/python/include/python3.12/cpython/genobject.h +89 -0
  41. package/python/include/python3.12/cpython/import.h +46 -0
  42. package/python/include/python3.12/cpython/initconfig.h +256 -0
  43. package/python/include/python3.12/cpython/interpreteridobject.h +11 -0
  44. package/python/include/python3.12/cpython/listobject.h +47 -0
  45. package/python/include/python3.12/cpython/longintrepr.h +133 -0
  46. package/python/include/python3.12/cpython/longobject.h +100 -0
  47. package/python/include/python3.12/cpython/memoryobject.h +52 -0
  48. package/python/include/python3.12/cpython/methodobject.h +66 -0
  49. package/python/include/python3.12/cpython/modsupport.h +109 -0
  50. package/python/include/python3.12/cpython/object.h +575 -0
  51. package/python/include/python3.12/cpython/objimpl.h +95 -0
  52. package/python/include/python3.12/cpython/odictobject.h +43 -0
  53. package/python/include/python3.12/cpython/picklebufobject.h +31 -0
  54. package/python/include/python3.12/cpython/pthread_stubs.h +88 -0
  55. package/python/include/python3.12/cpython/pyctype.h +39 -0
  56. package/python/include/python3.12/cpython/pydebug.h +38 -0
  57. package/python/include/python3.12/cpython/pyerrors.h +178 -0
  58. package/python/include/python3.12/cpython/pyfpe.h +15 -0
  59. package/python/include/python3.12/cpython/pyframe.h +35 -0
  60. package/python/include/python3.12/cpython/pylifecycle.h +111 -0
  61. package/python/include/python3.12/cpython/pymem.h +98 -0
  62. package/python/include/python3.12/cpython/pystate.h +456 -0
  63. package/python/include/python3.12/cpython/pythonrun.h +121 -0
  64. package/python/include/python3.12/cpython/pythread.h +42 -0
  65. package/python/include/python3.12/cpython/pytime.h +331 -0
  66. package/python/include/python3.12/cpython/setobject.h +72 -0
  67. package/python/include/python3.12/cpython/sysmodule.h +16 -0
  68. package/python/include/python3.12/cpython/traceback.h +16 -0
  69. package/python/include/python3.12/cpython/tupleobject.h +39 -0
  70. package/python/include/python3.12/cpython/unicodeobject.h +976 -0
  71. package/python/include/python3.12/cpython/warnings.h +20 -0
  72. package/python/include/python3.12/cpython/weakrefobject.h +56 -0
  73. package/python/include/python3.12/datetime.h +267 -0
  74. package/python/include/python3.12/descrobject.h +100 -0
  75. package/python/include/python3.12/dictobject.h +97 -0
  76. package/python/include/python3.12/dynamic_annotations.h +499 -0
  77. package/python/include/python3.12/enumobject.h +17 -0
  78. package/python/include/python3.12/errcode.h +38 -0
  79. package/python/include/python3.12/exports.h +36 -0
  80. package/python/include/python3.12/fileobject.h +49 -0
  81. package/python/include/python3.12/fileutils.h +26 -0
  82. package/python/include/python3.12/floatobject.h +54 -0
  83. package/python/include/python3.12/frameobject.h +20 -0
  84. package/python/include/python3.12/genericaliasobject.h +14 -0
  85. package/python/include/python3.12/import.h +98 -0
  86. package/python/include/python3.12/internal/pycore_abstract.h +25 -0
  87. package/python/include/python3.12/internal/pycore_asdl.h +112 -0
  88. package/python/include/python3.12/internal/pycore_ast.h +922 -0
  89. package/python/include/python3.12/internal/pycore_ast_state.h +265 -0
  90. package/python/include/python3.12/internal/pycore_atexit.h +57 -0
  91. package/python/include/python3.12/internal/pycore_atomic.h +557 -0
  92. package/python/include/python3.12/internal/pycore_atomic_funcs.h +94 -0
  93. package/python/include/python3.12/internal/pycore_bitutils.h +186 -0
  94. package/python/include/python3.12/internal/pycore_blocks_output_buffer.h +317 -0
  95. package/python/include/python3.12/internal/pycore_bytes_methods.h +73 -0
  96. package/python/include/python3.12/internal/pycore_bytesobject.h +47 -0
  97. package/python/include/python3.12/internal/pycore_call.h +133 -0
  98. package/python/include/python3.12/internal/pycore_ceval.h +164 -0
  99. package/python/include/python3.12/internal/pycore_ceval_state.h +103 -0
  100. package/python/include/python3.12/internal/pycore_code.h +496 -0
  101. package/python/include/python3.12/internal/pycore_compile.h +118 -0
  102. package/python/include/python3.12/internal/pycore_condvar.h +99 -0
  103. package/python/include/python3.12/internal/pycore_context.h +71 -0
  104. package/python/include/python3.12/internal/pycore_descrobject.h +26 -0
  105. package/python/include/python3.12/internal/pycore_dict.h +199 -0
  106. package/python/include/python3.12/internal/pycore_dict_state.h +50 -0
  107. package/python/include/python3.12/internal/pycore_dtoa.h +69 -0
  108. package/python/include/python3.12/internal/pycore_emscripten_signal.h +25 -0
  109. package/python/include/python3.12/internal/pycore_exceptions.h +37 -0
  110. package/python/include/python3.12/internal/pycore_faulthandler.h +99 -0
  111. package/python/include/python3.12/internal/pycore_fileutils.h +292 -0
  112. package/python/include/python3.12/internal/pycore_fileutils_windows.h +98 -0
  113. package/python/include/python3.12/internal/pycore_floatobject.h +71 -0
  114. package/python/include/python3.12/internal/pycore_flowgraph.h +120 -0
  115. package/python/include/python3.12/internal/pycore_format.h +27 -0
  116. package/python/include/python3.12/internal/pycore_frame.h +283 -0
  117. package/python/include/python3.12/internal/pycore_function.h +26 -0
  118. package/python/include/python3.12/internal/pycore_gc.h +211 -0
  119. package/python/include/python3.12/internal/pycore_genobject.h +49 -0
  120. package/python/include/python3.12/internal/pycore_getopt.h +22 -0
  121. package/python/include/python3.12/internal/pycore_gil.h +50 -0
  122. package/python/include/python3.12/internal/pycore_global_objects.h +105 -0
  123. package/python/include/python3.12/internal/pycore_global_objects_fini_generated.h +1517 -0
  124. package/python/include/python3.12/internal/pycore_global_strings.h +777 -0
  125. package/python/include/python3.12/internal/pycore_hamt.h +134 -0
  126. package/python/include/python3.12/internal/pycore_hashtable.h +149 -0
  127. package/python/include/python3.12/internal/pycore_import.h +183 -0
  128. package/python/include/python3.12/internal/pycore_initconfig.h +179 -0
  129. package/python/include/python3.12/internal/pycore_instruments.h +106 -0
  130. package/python/include/python3.12/internal/pycore_interp.h +275 -0
  131. package/python/include/python3.12/internal/pycore_intrinsics.h +32 -0
  132. package/python/include/python3.12/internal/pycore_list.h +83 -0
  133. package/python/include/python3.12/internal/pycore_long.h +258 -0
  134. package/python/include/python3.12/internal/pycore_memoryobject.h +18 -0
  135. package/python/include/python3.12/internal/pycore_moduleobject.h +45 -0
  136. package/python/include/python3.12/internal/pycore_namespace.h +20 -0
  137. package/python/include/python3.12/internal/pycore_object.h +455 -0
  138. package/python/include/python3.12/internal/pycore_object_state.h +42 -0
  139. package/python/include/python3.12/internal/pycore_obmalloc.h +700 -0
  140. package/python/include/python3.12/internal/pycore_obmalloc_init.h +73 -0
  141. package/python/include/python3.12/internal/pycore_opcode.h +587 -0
  142. package/python/include/python3.12/internal/pycore_opcode_utils.h +92 -0
  143. package/python/include/python3.12/internal/pycore_parser.h +66 -0
  144. package/python/include/python3.12/internal/pycore_pathconfig.h +24 -0
  145. package/python/include/python3.12/internal/pycore_pyarena.h +64 -0
  146. package/python/include/python3.12/internal/pycore_pyerrors.h +129 -0
  147. package/python/include/python3.12/internal/pycore_pyhash.h +40 -0
  148. package/python/include/python3.12/internal/pycore_pylifecycle.h +99 -0
  149. package/python/include/python3.12/internal/pycore_pymath.h +205 -0
  150. package/python/include/python3.12/internal/pycore_pymem.h +98 -0
  151. package/python/include/python3.12/internal/pycore_pymem_init.h +85 -0
  152. package/python/include/python3.12/internal/pycore_pystate.h +180 -0
  153. package/python/include/python3.12/internal/pycore_pythread.h +81 -0
  154. package/python/include/python3.12/internal/pycore_range.h +21 -0
  155. package/python/include/python3.12/internal/pycore_runtime.h +235 -0
  156. package/python/include/python3.12/internal/pycore_runtime_init.h +188 -0
  157. package/python/include/python3.12/internal/pycore_runtime_init_generated.h +1511 -0
  158. package/python/include/python3.12/internal/pycore_signal.h +98 -0
  159. package/python/include/python3.12/internal/pycore_sliceobject.h +22 -0
  160. package/python/include/python3.12/internal/pycore_strhex.h +36 -0
  161. package/python/include/python3.12/internal/pycore_structseq.h +39 -0
  162. package/python/include/python3.12/internal/pycore_symtable.h +160 -0
  163. package/python/include/python3.12/internal/pycore_sysmodule.h +34 -0
  164. package/python/include/python3.12/internal/pycore_time.h +25 -0
  165. package/python/include/python3.12/internal/pycore_token.h +108 -0
  166. package/python/include/python3.12/internal/pycore_traceback.h +101 -0
  167. package/python/include/python3.12/internal/pycore_tracemalloc.h +123 -0
  168. package/python/include/python3.12/internal/pycore_tuple.h +79 -0
  169. package/python/include/python3.12/internal/pycore_typeobject.h +151 -0
  170. package/python/include/python3.12/internal/pycore_typevarobject.h +24 -0
  171. package/python/include/python3.12/internal/pycore_ucnhash.h +34 -0
  172. package/python/include/python3.12/internal/pycore_unicodeobject.h +86 -0
  173. package/python/include/python3.12/internal/pycore_unicodeobject_generated.h +2832 -0
  174. package/python/include/python3.12/internal/pycore_unionobject.h +23 -0
  175. package/python/include/python3.12/internal/pycore_warnings.h +29 -0
  176. package/python/include/python3.12/interpreteridobject.h +17 -0
  177. package/python/include/python3.12/intrcheck.h +30 -0
  178. package/python/include/python3.12/iterobject.h +27 -0
  179. package/python/include/python3.12/listobject.h +52 -0
  180. package/python/include/python3.12/longobject.h +108 -0
  181. package/python/include/python3.12/marshal.h +31 -0
  182. package/python/include/python3.12/memoryobject.h +34 -0
  183. package/python/include/python3.12/methodobject.h +132 -0
  184. package/python/include/python3.12/modsupport.h +168 -0
  185. package/python/include/python3.12/moduleobject.h +119 -0
  186. package/python/include/python3.12/object.h +993 -0
  187. package/python/include/python3.12/objimpl.h +234 -0
  188. package/python/include/python3.12/opcode.h +271 -0
  189. package/python/include/python3.12/osdefs.h +51 -0
  190. package/python/include/python3.12/osmodule.h +17 -0
  191. package/python/include/python3.12/patchlevel.h +35 -0
  192. package/python/include/python3.12/py_curses.h +99 -0
  193. package/python/include/python3.12/pybuffer.h +145 -0
  194. package/python/include/python3.12/pycapsule.h +59 -0
  195. package/python/include/python3.12/pyconfig.h +1943 -0
  196. package/python/include/python3.12/pydtrace.h +59 -0
  197. package/python/include/python3.12/pyerrors.h +337 -0
  198. package/python/include/python3.12/pyexpat.h +62 -0
  199. package/python/include/python3.12/pyframe.h +26 -0
  200. package/python/include/python3.12/pyhash.h +144 -0
  201. package/python/include/python3.12/pylifecycle.h +78 -0
  202. package/python/include/python3.12/pymacconfig.h +99 -0
  203. package/python/include/python3.12/pymacro.h +172 -0
  204. package/python/include/python3.12/pymath.h +62 -0
  205. package/python/include/python3.12/pymem.h +104 -0
  206. package/python/include/python3.12/pyport.h +782 -0
  207. package/python/include/python3.12/pystate.h +132 -0
  208. package/python/include/python3.12/pystats.h +110 -0
  209. package/python/include/python3.12/pystrcmp.h +23 -0
  210. package/python/include/python3.12/pystrtod.h +46 -0
  211. package/python/include/python3.12/pythonrun.h +49 -0
  212. package/python/include/python3.12/pythread.h +135 -0
  213. package/python/include/python3.12/pytypedefs.h +30 -0
  214. package/python/include/python3.12/rangeobject.h +27 -0
  215. package/python/include/python3.12/setobject.h +49 -0
  216. package/python/include/python3.12/sliceobject.h +65 -0
  217. package/python/include/python3.12/structmember.h +56 -0
  218. package/python/include/python3.12/structseq.h +49 -0
  219. package/python/include/python3.12/sysmodule.h +54 -0
  220. package/python/include/python3.12/traceback.h +26 -0
  221. package/python/include/python3.12/tracemalloc.h +77 -0
  222. package/python/include/python3.12/tupleobject.h +46 -0
  223. package/python/include/python3.12/typeslots.h +88 -0
  224. package/python/include/python3.12/unicodeobject.h +1020 -0
  225. package/python/include/python3.12/warnings.h +45 -0
  226. package/python/include/python3.12/weakrefobject.h +42 -0
  227. package/python/lib/libpython3.12.dylib +0 -0
  228. package/python/lib/python3.12/LICENSE.txt +279 -0
  229. package/python/lib/python3.12/__future__.py +147 -0
  230. package/python/lib/python3.12/__hello__.py +16 -0
  231. package/python/lib/python3.12/__phello__/__init__.py +7 -0
  232. package/python/lib/python3.12/__phello__/spam.py +7 -0
  233. package/python/lib/python3.12/_aix_support.py +108 -0
  234. package/python/lib/python3.12/_collections_abc.py +1173 -0
  235. package/python/lib/python3.12/_compat_pickle.py +252 -0
  236. package/python/lib/python3.12/_compression.py +162 -0
  237. package/python/lib/python3.12/_markupbase.py +396 -0
  238. package/python/lib/python3.12/_osx_support.py +579 -0
  239. package/python/lib/python3.12/_py_abc.py +147 -0
  240. package/python/lib/python3.12/_pydatetime.py +2643 -0
  241. package/python/lib/python3.12/_pydecimal.py +6339 -0
  242. package/python/lib/python3.12/_pyio.py +2698 -0
  243. package/python/lib/python3.12/_pylong.py +329 -0
  244. package/python/lib/python3.12/_sitebuiltins.py +103 -0
  245. package/python/lib/python3.12/_strptime.py +664 -0
  246. package/python/lib/python3.12/_sysconfigdata__darwin_darwin.py +984 -0
  247. package/python/lib/python3.12/_threading_local.py +242 -0
  248. package/python/lib/python3.12/_weakrefset.py +205 -0
  249. package/python/lib/python3.12/abc.py +188 -0
  250. package/python/lib/python3.12/aifc.py +984 -0
  251. package/python/lib/python3.12/antigravity.py +17 -0
  252. package/python/lib/python3.12/argparse.py +2650 -0
  253. package/python/lib/python3.12/ast.py +1840 -0
  254. package/python/lib/python3.12/asyncio/__init__.py +47 -0
  255. package/python/lib/python3.12/asyncio/__main__.py +128 -0
  256. package/python/lib/python3.12/asyncio/base_events.py +2024 -0
  257. package/python/lib/python3.12/asyncio/base_futures.py +67 -0
  258. package/python/lib/python3.12/asyncio/base_subprocess.py +285 -0
  259. package/python/lib/python3.12/asyncio/base_tasks.py +94 -0
  260. package/python/lib/python3.12/asyncio/constants.py +41 -0
  261. package/python/lib/python3.12/asyncio/coroutines.py +109 -0
  262. package/python/lib/python3.12/asyncio/events.py +868 -0
  263. package/python/lib/python3.12/asyncio/exceptions.py +62 -0
  264. package/python/lib/python3.12/asyncio/format_helpers.py +76 -0
  265. package/python/lib/python3.12/asyncio/futures.py +430 -0
  266. package/python/lib/python3.12/asyncio/locks.py +586 -0
  267. package/python/lib/python3.12/asyncio/log.py +7 -0
  268. package/python/lib/python3.12/asyncio/mixins.py +21 -0
  269. package/python/lib/python3.12/asyncio/proactor_events.py +897 -0
  270. package/python/lib/python3.12/asyncio/protocols.py +216 -0
  271. package/python/lib/python3.12/asyncio/queues.py +244 -0
  272. package/python/lib/python3.12/asyncio/runners.py +216 -0
  273. package/python/lib/python3.12/asyncio/selector_events.py +1324 -0
  274. package/python/lib/python3.12/asyncio/sslproto.py +929 -0
  275. package/python/lib/python3.12/asyncio/staggered.py +174 -0
  276. package/python/lib/python3.12/asyncio/streams.py +770 -0
  277. package/python/lib/python3.12/asyncio/subprocess.py +229 -0
  278. package/python/lib/python3.12/asyncio/taskgroups.py +268 -0
  279. package/python/lib/python3.12/asyncio/tasks.py +1065 -0
  280. package/python/lib/python3.12/asyncio/threads.py +25 -0
  281. package/python/lib/python3.12/asyncio/timeouts.py +168 -0
  282. package/python/lib/python3.12/asyncio/transports.py +335 -0
  283. package/python/lib/python3.12/asyncio/trsock.py +98 -0
  284. package/python/lib/python3.12/asyncio/unix_events.py +1500 -0
  285. package/python/lib/python3.12/asyncio/windows_events.py +901 -0
  286. package/python/lib/python3.12/asyncio/windows_utils.py +173 -0
  287. package/python/lib/python3.12/base64.py +586 -0
  288. package/python/lib/python3.12/bdb.py +920 -0
  289. package/python/lib/python3.12/bisect.py +118 -0
  290. package/python/lib/python3.12/bz2.py +344 -0
  291. package/python/lib/python3.12/cProfile.py +195 -0
  292. package/python/lib/python3.12/calendar.py +808 -0
  293. package/python/lib/python3.12/cgi.py +1014 -0
  294. package/python/lib/python3.12/cgitb.py +332 -0
  295. package/python/lib/python3.12/chunk.py +173 -0
  296. package/python/lib/python3.12/cmd.py +401 -0
  297. package/python/lib/python3.12/code.py +324 -0
  298. package/python/lib/python3.12/codecs.py +1129 -0
  299. package/python/lib/python3.12/codeop.py +161 -0
  300. package/python/lib/python3.12/collections/__init__.py +1592 -0
  301. package/python/lib/python3.12/collections/abc.py +3 -0
  302. package/python/lib/python3.12/colorsys.py +166 -0
  303. package/python/lib/python3.12/compileall.py +469 -0
  304. package/python/lib/python3.12/concurrent/__init__.py +1 -0
  305. package/python/lib/python3.12/concurrent/futures/__init__.py +54 -0
  306. package/python/lib/python3.12/concurrent/futures/_base.py +654 -0
  307. package/python/lib/python3.12/concurrent/futures/process.py +876 -0
  308. package/python/lib/python3.12/concurrent/futures/thread.py +240 -0
  309. package/python/lib/python3.12/config-3.12-darwin/Makefile +3224 -0
  310. package/python/lib/python3.12/config-3.12-darwin/Setup +303 -0
  311. package/python/lib/python3.12/config-3.12-darwin/Setup.bootstrap +36 -0
  312. package/python/lib/python3.12/config-3.12-darwin/Setup.local +90 -0
  313. package/python/lib/python3.12/config-3.12-darwin/Setup.stdlib +183 -0
  314. package/python/lib/python3.12/config-3.12-darwin/config.c +246 -0
  315. package/python/lib/python3.12/config-3.12-darwin/config.c.in +71 -0
  316. package/python/lib/python3.12/config-3.12-darwin/install-sh +541 -0
  317. package/python/lib/python3.12/config-3.12-darwin/makesetup +353 -0
  318. package/python/lib/python3.12/config-3.12-darwin/python-config.py +76 -0
  319. package/python/lib/python3.12/config-3.12-darwin/python.o +0 -0
  320. package/python/lib/python3.12/configparser.py +1333 -0
  321. package/python/lib/python3.12/contextlib.py +800 -0
  322. package/python/lib/python3.12/contextvars.py +4 -0
  323. package/python/lib/python3.12/copy.py +292 -0
  324. package/python/lib/python3.12/copyreg.py +217 -0
  325. package/python/lib/python3.12/crypt.py +124 -0
  326. package/python/lib/python3.12/csv.py +451 -0
  327. package/python/lib/python3.12/ctypes/__init__.py +582 -0
  328. package/python/lib/python3.12/ctypes/_aix.py +327 -0
  329. package/python/lib/python3.12/ctypes/_endian.py +78 -0
  330. package/python/lib/python3.12/ctypes/macholib/README.ctypes +7 -0
  331. package/python/lib/python3.12/ctypes/macholib/__init__.py +9 -0
  332. package/python/lib/python3.12/ctypes/macholib/dyld.py +165 -0
  333. package/python/lib/python3.12/ctypes/macholib/dylib.py +42 -0
  334. package/python/lib/python3.12/ctypes/macholib/fetch_macholib +2 -0
  335. package/python/lib/python3.12/ctypes/macholib/fetch_macholib.bat +1 -0
  336. package/python/lib/python3.12/ctypes/macholib/framework.py +42 -0
  337. package/python/lib/python3.12/ctypes/util.py +379 -0
  338. package/python/lib/python3.12/ctypes/wintypes.py +202 -0
  339. package/python/lib/python3.12/curses/__init__.py +101 -0
  340. package/python/lib/python3.12/curses/ascii.py +99 -0
  341. package/python/lib/python3.12/curses/has_key.py +192 -0
  342. package/python/lib/python3.12/curses/panel.py +6 -0
  343. package/python/lib/python3.12/curses/textpad.py +204 -0
  344. package/python/lib/python3.12/dataclasses.py +1588 -0
  345. package/python/lib/python3.12/datetime.py +9 -0
  346. package/python/lib/python3.12/dbm/__init__.py +190 -0
  347. package/python/lib/python3.12/dbm/dumb.py +317 -0
  348. package/python/lib/python3.12/dbm/gnu.py +3 -0
  349. package/python/lib/python3.12/dbm/ndbm.py +3 -0
  350. package/python/lib/python3.12/decimal.py +108 -0
  351. package/python/lib/python3.12/difflib.py +2056 -0
  352. package/python/lib/python3.12/dis.py +805 -0
  353. package/python/lib/python3.12/doctest.py +2845 -0
  354. package/python/lib/python3.12/email/__init__.py +61 -0
  355. package/python/lib/python3.12/email/_encoded_words.py +233 -0
  356. package/python/lib/python3.12/email/_header_value_parser.py +3108 -0
  357. package/python/lib/python3.12/email/_parseaddr.py +557 -0
  358. package/python/lib/python3.12/email/_policybase.py +382 -0
  359. package/python/lib/python3.12/email/architecture.rst +216 -0
  360. package/python/lib/python3.12/email/base64mime.py +115 -0
  361. package/python/lib/python3.12/email/charset.py +398 -0
  362. package/python/lib/python3.12/email/contentmanager.py +251 -0
  363. package/python/lib/python3.12/email/encoders.py +65 -0
  364. package/python/lib/python3.12/email/errors.py +117 -0
  365. package/python/lib/python3.12/email/feedparser.py +534 -0
  366. package/python/lib/python3.12/email/generator.py +530 -0
  367. package/python/lib/python3.12/email/header.py +573 -0
  368. package/python/lib/python3.12/email/headerregistry.py +604 -0
  369. package/python/lib/python3.12/email/iterators.py +68 -0
  370. package/python/lib/python3.12/email/message.py +1215 -0
  371. package/python/lib/python3.12/email/mime/__init__.py +0 -0
  372. package/python/lib/python3.12/email/mime/application.py +37 -0
  373. package/python/lib/python3.12/email/mime/audio.py +100 -0
  374. package/python/lib/python3.12/email/mime/base.py +29 -0
  375. package/python/lib/python3.12/email/mime/image.py +152 -0
  376. package/python/lib/python3.12/email/mime/message.py +33 -0
  377. package/python/lib/python3.12/email/mime/multipart.py +47 -0
  378. package/python/lib/python3.12/email/mime/nonmultipart.py +21 -0
  379. package/python/lib/python3.12/email/mime/text.py +40 -0
  380. package/python/lib/python3.12/email/parser.py +127 -0
  381. package/python/lib/python3.12/email/policy.py +232 -0
  382. package/python/lib/python3.12/email/quoprimime.py +300 -0
  383. package/python/lib/python3.12/email/utils.py +486 -0
  384. package/python/lib/python3.12/encodings/__init__.py +174 -0
  385. package/python/lib/python3.12/encodings/aliases.py +551 -0
  386. package/python/lib/python3.12/encodings/ascii.py +50 -0
  387. package/python/lib/python3.12/encodings/base64_codec.py +55 -0
  388. package/python/lib/python3.12/encodings/big5.py +39 -0
  389. package/python/lib/python3.12/encodings/big5hkscs.py +39 -0
  390. package/python/lib/python3.12/encodings/bz2_codec.py +78 -0
  391. package/python/lib/python3.12/encodings/charmap.py +69 -0
  392. package/python/lib/python3.12/encodings/cp037.py +307 -0
  393. package/python/lib/python3.12/encodings/cp1006.py +307 -0
  394. package/python/lib/python3.12/encodings/cp1026.py +307 -0
  395. package/python/lib/python3.12/encodings/cp1125.py +698 -0
  396. package/python/lib/python3.12/encodings/cp1140.py +307 -0
  397. package/python/lib/python3.12/encodings/cp1250.py +307 -0
  398. package/python/lib/python3.12/encodings/cp1251.py +307 -0
  399. package/python/lib/python3.12/encodings/cp1252.py +307 -0
  400. package/python/lib/python3.12/encodings/cp1253.py +307 -0
  401. package/python/lib/python3.12/encodings/cp1254.py +307 -0
  402. package/python/lib/python3.12/encodings/cp1255.py +307 -0
  403. package/python/lib/python3.12/encodings/cp1256.py +307 -0
  404. package/python/lib/python3.12/encodings/cp1257.py +307 -0
  405. package/python/lib/python3.12/encodings/cp1258.py +307 -0
  406. package/python/lib/python3.12/encodings/cp273.py +307 -0
  407. package/python/lib/python3.12/encodings/cp424.py +307 -0
  408. package/python/lib/python3.12/encodings/cp437.py +698 -0
  409. package/python/lib/python3.12/encodings/cp500.py +307 -0
  410. package/python/lib/python3.12/encodings/cp720.py +309 -0
  411. package/python/lib/python3.12/encodings/cp737.py +698 -0
  412. package/python/lib/python3.12/encodings/cp775.py +697 -0
  413. package/python/lib/python3.12/encodings/cp850.py +698 -0
  414. package/python/lib/python3.12/encodings/cp852.py +698 -0
  415. package/python/lib/python3.12/encodings/cp855.py +698 -0
  416. package/python/lib/python3.12/encodings/cp856.py +307 -0
  417. package/python/lib/python3.12/encodings/cp857.py +694 -0
  418. package/python/lib/python3.12/encodings/cp858.py +698 -0
  419. package/python/lib/python3.12/encodings/cp860.py +698 -0
  420. package/python/lib/python3.12/encodings/cp861.py +698 -0
  421. package/python/lib/python3.12/encodings/cp862.py +698 -0
  422. package/python/lib/python3.12/encodings/cp863.py +698 -0
  423. package/python/lib/python3.12/encodings/cp864.py +690 -0
  424. package/python/lib/python3.12/encodings/cp865.py +698 -0
  425. package/python/lib/python3.12/encodings/cp866.py +698 -0
  426. package/python/lib/python3.12/encodings/cp869.py +689 -0
  427. package/python/lib/python3.12/encodings/cp874.py +307 -0
  428. package/python/lib/python3.12/encodings/cp875.py +307 -0
  429. package/python/lib/python3.12/encodings/cp932.py +39 -0
  430. package/python/lib/python3.12/encodings/cp949.py +39 -0
  431. package/python/lib/python3.12/encodings/cp950.py +39 -0
  432. package/python/lib/python3.12/encodings/euc_jis_2004.py +39 -0
  433. package/python/lib/python3.12/encodings/euc_jisx0213.py +39 -0
  434. package/python/lib/python3.12/encodings/euc_jp.py +39 -0
  435. package/python/lib/python3.12/encodings/euc_kr.py +39 -0
  436. package/python/lib/python3.12/encodings/gb18030.py +39 -0
  437. package/python/lib/python3.12/encodings/gb2312.py +39 -0
  438. package/python/lib/python3.12/encodings/gbk.py +39 -0
  439. package/python/lib/python3.12/encodings/hex_codec.py +55 -0
  440. package/python/lib/python3.12/encodings/hp_roman8.py +314 -0
  441. package/python/lib/python3.12/encodings/hz.py +39 -0
  442. package/python/lib/python3.12/encodings/idna.py +317 -0
  443. package/python/lib/python3.12/encodings/iso2022_jp.py +39 -0
  444. package/python/lib/python3.12/encodings/iso2022_jp_1.py +39 -0
  445. package/python/lib/python3.12/encodings/iso2022_jp_2.py +39 -0
  446. package/python/lib/python3.12/encodings/iso2022_jp_2004.py +39 -0
  447. package/python/lib/python3.12/encodings/iso2022_jp_3.py +39 -0
  448. package/python/lib/python3.12/encodings/iso2022_jp_ext.py +39 -0
  449. package/python/lib/python3.12/encodings/iso2022_kr.py +39 -0
  450. package/python/lib/python3.12/encodings/iso8859_1.py +307 -0
  451. package/python/lib/python3.12/encodings/iso8859_10.py +307 -0
  452. package/python/lib/python3.12/encodings/iso8859_11.py +307 -0
  453. package/python/lib/python3.12/encodings/iso8859_13.py +307 -0
  454. package/python/lib/python3.12/encodings/iso8859_14.py +307 -0
  455. package/python/lib/python3.12/encodings/iso8859_15.py +307 -0
  456. package/python/lib/python3.12/encodings/iso8859_16.py +307 -0
  457. package/python/lib/python3.12/encodings/iso8859_2.py +307 -0
  458. package/python/lib/python3.12/encodings/iso8859_3.py +307 -0
  459. package/python/lib/python3.12/encodings/iso8859_4.py +307 -0
  460. package/python/lib/python3.12/encodings/iso8859_5.py +307 -0
  461. package/python/lib/python3.12/encodings/iso8859_6.py +307 -0
  462. package/python/lib/python3.12/encodings/iso8859_7.py +307 -0
  463. package/python/lib/python3.12/encodings/iso8859_8.py +307 -0
  464. package/python/lib/python3.12/encodings/iso8859_9.py +307 -0
  465. package/python/lib/python3.12/encodings/johab.py +39 -0
  466. package/python/lib/python3.12/encodings/koi8_r.py +307 -0
  467. package/python/lib/python3.12/encodings/koi8_t.py +308 -0
  468. package/python/lib/python3.12/encodings/koi8_u.py +307 -0
  469. package/python/lib/python3.12/encodings/kz1048.py +307 -0
  470. package/python/lib/python3.12/encodings/latin_1.py +50 -0
  471. package/python/lib/python3.12/encodings/mac_arabic.py +698 -0
  472. package/python/lib/python3.12/encodings/mac_croatian.py +307 -0
  473. package/python/lib/python3.12/encodings/mac_cyrillic.py +307 -0
  474. package/python/lib/python3.12/encodings/mac_farsi.py +307 -0
  475. package/python/lib/python3.12/encodings/mac_greek.py +307 -0
  476. package/python/lib/python3.12/encodings/mac_iceland.py +307 -0
  477. package/python/lib/python3.12/encodings/mac_latin2.py +312 -0
  478. package/python/lib/python3.12/encodings/mac_roman.py +307 -0
  479. package/python/lib/python3.12/encodings/mac_romanian.py +307 -0
  480. package/python/lib/python3.12/encodings/mac_turkish.py +307 -0
  481. package/python/lib/python3.12/encodings/mbcs.py +47 -0
  482. package/python/lib/python3.12/encodings/oem.py +41 -0
  483. package/python/lib/python3.12/encodings/palmos.py +308 -0
  484. package/python/lib/python3.12/encodings/ptcp154.py +312 -0
  485. package/python/lib/python3.12/encodings/punycode.py +237 -0
  486. package/python/lib/python3.12/encodings/quopri_codec.py +56 -0
  487. package/python/lib/python3.12/encodings/raw_unicode_escape.py +46 -0
  488. package/python/lib/python3.12/encodings/rot_13.py +113 -0
  489. package/python/lib/python3.12/encodings/shift_jis.py +39 -0
  490. package/python/lib/python3.12/encodings/shift_jis_2004.py +39 -0
  491. package/python/lib/python3.12/encodings/shift_jisx0213.py +39 -0
  492. package/python/lib/python3.12/encodings/tis_620.py +307 -0
  493. package/python/lib/python3.12/encodings/undefined.py +49 -0
  494. package/python/lib/python3.12/encodings/unicode_escape.py +46 -0
  495. package/python/lib/python3.12/encodings/utf_16.py +155 -0
  496. package/python/lib/python3.12/encodings/utf_16_be.py +42 -0
  497. package/python/lib/python3.12/encodings/utf_16_le.py +42 -0
  498. package/python/lib/python3.12/encodings/utf_32.py +150 -0
  499. package/python/lib/python3.12/encodings/utf_32_be.py +37 -0
  500. package/python/lib/python3.12/encodings/utf_32_le.py +37 -0
  501. package/python/lib/python3.12/encodings/utf_7.py +38 -0
  502. package/python/lib/python3.12/encodings/utf_8.py +42 -0
  503. package/python/lib/python3.12/encodings/utf_8_sig.py +130 -0
  504. package/python/lib/python3.12/encodings/uu_codec.py +103 -0
  505. package/python/lib/python3.12/encodings/zlib_codec.py +77 -0
  506. package/python/lib/python3.12/ensurepip/__init__.py +291 -0
  507. package/python/lib/python3.12/ensurepip/__main__.py +5 -0
  508. package/python/lib/python3.12/ensurepip/_bundled/pip-25.0.1-py3-none-any.whl +0 -0
  509. package/python/lib/python3.12/ensurepip/_uninstall.py +31 -0
  510. package/python/lib/python3.12/enum.py +2108 -0
  511. package/python/lib/python3.12/filecmp.py +315 -0
  512. package/python/lib/python3.12/fileinput.py +442 -0
  513. package/python/lib/python3.12/fnmatch.py +185 -0
  514. package/python/lib/python3.12/fractions.py +990 -0
  515. package/python/lib/python3.12/ftplib.py +966 -0
  516. package/python/lib/python3.12/functools.py +1009 -0
  517. package/python/lib/python3.12/genericpath.py +176 -0
  518. package/python/lib/python3.12/getopt.py +215 -0
  519. package/python/lib/python3.12/getpass.py +185 -0
  520. package/python/lib/python3.12/gettext.py +646 -0
  521. package/python/lib/python3.12/glob.py +252 -0
  522. package/python/lib/python3.12/graphlib.py +250 -0
  523. package/python/lib/python3.12/gzip.py +711 -0
  524. package/python/lib/python3.12/hashlib.py +253 -0
  525. package/python/lib/python3.12/heapq.py +603 -0
  526. package/python/lib/python3.12/hmac.py +219 -0
  527. package/python/lib/python3.12/html/__init__.py +132 -0
  528. package/python/lib/python3.12/html/entities.py +2513 -0
  529. package/python/lib/python3.12/html/parser.py +535 -0
  530. package/python/lib/python3.12/http/__init__.py +200 -0
  531. package/python/lib/python3.12/http/client.py +1570 -0
  532. package/python/lib/python3.12/http/cookiejar.py +2121 -0
  533. package/python/lib/python3.12/http/cookies.py +615 -0
  534. package/python/lib/python3.12/http/server.py +1335 -0
  535. package/python/lib/python3.12/imaplib.py +1641 -0
  536. package/python/lib/python3.12/imghdr.py +180 -0
  537. package/python/lib/python3.12/importlib/__init__.py +138 -0
  538. package/python/lib/python3.12/importlib/_abc.py +39 -0
  539. package/python/lib/python3.12/importlib/_bootstrap.py +1551 -0
  540. package/python/lib/python3.12/importlib/_bootstrap_external.py +1749 -0
  541. package/python/lib/python3.12/importlib/abc.py +239 -0
  542. package/python/lib/python3.12/importlib/machinery.py +20 -0
  543. package/python/lib/python3.12/importlib/metadata/__init__.py +966 -0
  544. package/python/lib/python3.12/importlib/metadata/_adapters.py +89 -0
  545. package/python/lib/python3.12/importlib/metadata/_collections.py +30 -0
  546. package/python/lib/python3.12/importlib/metadata/_functools.py +104 -0
  547. package/python/lib/python3.12/importlib/metadata/_itertools.py +73 -0
  548. package/python/lib/python3.12/importlib/metadata/_meta.py +63 -0
  549. package/python/lib/python3.12/importlib/metadata/_text.py +99 -0
  550. package/python/lib/python3.12/importlib/readers.py +12 -0
  551. package/python/lib/python3.12/importlib/resources/__init__.py +38 -0
  552. package/python/lib/python3.12/importlib/resources/_adapters.py +168 -0
  553. package/python/lib/python3.12/importlib/resources/_common.py +208 -0
  554. package/python/lib/python3.12/importlib/resources/_itertools.py +38 -0
  555. package/python/lib/python3.12/importlib/resources/_legacy.py +98 -0
  556. package/python/lib/python3.12/importlib/resources/abc.py +173 -0
  557. package/python/lib/python3.12/importlib/resources/readers.py +146 -0
  558. package/python/lib/python3.12/importlib/resources/simple.py +106 -0
  559. package/python/lib/python3.12/importlib/simple.py +14 -0
  560. package/python/lib/python3.12/importlib/util.py +270 -0
  561. package/python/lib/python3.12/inspect.py +3433 -0
  562. package/python/lib/python3.12/io.py +99 -0
  563. package/python/lib/python3.12/ipaddress.py +2430 -0
  564. package/python/lib/python3.12/json/__init__.py +359 -0
  565. package/python/lib/python3.12/json/decoder.py +357 -0
  566. package/python/lib/python3.12/json/encoder.py +443 -0
  567. package/python/lib/python3.12/json/scanner.py +73 -0
  568. package/python/lib/python3.12/json/tool.py +85 -0
  569. package/python/lib/python3.12/keyword.py +64 -0
  570. package/python/lib/python3.12/lib-dynload/.empty +0 -0
  571. package/python/lib/python3.12/lib-dynload/_crypt.cpython-312-darwin.so +0 -0
  572. package/python/lib/python3.12/lib-dynload/_dbm.cpython-312-darwin.so +0 -0
  573. package/python/lib/python3.12/linecache.py +185 -0
  574. package/python/lib/python3.12/locale.py +1779 -0
  575. package/python/lib/python3.12/logging/__init__.py +2345 -0
  576. package/python/lib/python3.12/logging/config.py +1078 -0
  577. package/python/lib/python3.12/logging/handlers.py +1624 -0
  578. package/python/lib/python3.12/lzma.py +356 -0
  579. package/python/lib/python3.12/mailbox.py +2153 -0
  580. package/python/lib/python3.12/mailcap.py +302 -0
  581. package/python/lib/python3.12/mimetypes.py +656 -0
  582. package/python/lib/python3.12/modulefinder.py +666 -0
  583. package/python/lib/python3.12/multiprocessing/__init__.py +37 -0
  584. package/python/lib/python3.12/multiprocessing/connection.py +1178 -0
  585. package/python/lib/python3.12/multiprocessing/context.py +377 -0
  586. package/python/lib/python3.12/multiprocessing/dummy/__init__.py +126 -0
  587. package/python/lib/python3.12/multiprocessing/dummy/connection.py +75 -0
  588. package/python/lib/python3.12/multiprocessing/forkserver.py +350 -0
  589. package/python/lib/python3.12/multiprocessing/heap.py +337 -0
  590. package/python/lib/python3.12/multiprocessing/managers.py +1387 -0
  591. package/python/lib/python3.12/multiprocessing/pool.py +957 -0
  592. package/python/lib/python3.12/multiprocessing/popen_fork.py +83 -0
  593. package/python/lib/python3.12/multiprocessing/popen_forkserver.py +74 -0
  594. package/python/lib/python3.12/multiprocessing/popen_spawn_posix.py +72 -0
  595. package/python/lib/python3.12/multiprocessing/popen_spawn_win32.py +145 -0
  596. package/python/lib/python3.12/multiprocessing/process.py +439 -0
  597. package/python/lib/python3.12/multiprocessing/queues.py +401 -0
  598. package/python/lib/python3.12/multiprocessing/reduction.py +281 -0
  599. package/python/lib/python3.12/multiprocessing/resource_sharer.py +154 -0
  600. package/python/lib/python3.12/multiprocessing/resource_tracker.py +294 -0
  601. package/python/lib/python3.12/multiprocessing/shared_memory.py +534 -0
  602. package/python/lib/python3.12/multiprocessing/sharedctypes.py +240 -0
  603. package/python/lib/python3.12/multiprocessing/spawn.py +307 -0
  604. package/python/lib/python3.12/multiprocessing/synchronize.py +404 -0
  605. package/python/lib/python3.12/multiprocessing/util.py +494 -0
  606. package/python/lib/python3.12/netrc.py +192 -0
  607. package/python/lib/python3.12/nntplib.py +1093 -0
  608. package/python/lib/python3.12/ntpath.py +869 -0
  609. package/python/lib/python3.12/nturl2path.py +69 -0
  610. package/python/lib/python3.12/numbers.py +418 -0
  611. package/python/lib/python3.12/opcode.py +493 -0
  612. package/python/lib/python3.12/operator.py +467 -0
  613. package/python/lib/python3.12/optparse.py +1681 -0
  614. package/python/lib/python3.12/os.py +1159 -0
  615. package/python/lib/python3.12/pathlib.py +1435 -0
  616. package/python/lib/python3.12/pdb.py +1987 -0
  617. package/python/lib/python3.12/pickle.py +1866 -0
  618. package/python/lib/python3.12/pickletools.py +2904 -0
  619. package/python/lib/python3.12/pipes.py +250 -0
  620. package/python/lib/python3.12/pkgutil.py +529 -0
  621. package/python/lib/python3.12/platform.py +1359 -0
  622. package/python/lib/python3.12/plistlib.py +920 -0
  623. package/python/lib/python3.12/poplib.py +478 -0
  624. package/python/lib/python3.12/posixpath.py +577 -0
  625. package/python/lib/python3.12/pprint.py +658 -0
  626. package/python/lib/python3.12/profile.py +615 -0
  627. package/python/lib/python3.12/pstats.py +778 -0
  628. package/python/lib/python3.12/pty.py +211 -0
  629. package/python/lib/python3.12/py_compile.py +212 -0
  630. package/python/lib/python3.12/pyclbr.py +314 -0
  631. package/python/lib/python3.12/pydoc.py +2950 -0
  632. package/python/lib/python3.12/pydoc_data/__init__.py +0 -0
  633. package/python/lib/python3.12/pydoc_data/_pydoc.css +112 -0
  634. package/python/lib/python3.12/pydoc_data/topics.py +12500 -0
  635. package/python/lib/python3.12/queue.py +326 -0
  636. package/python/lib/python3.12/quopri.py +237 -0
  637. package/python/lib/python3.12/random.py +996 -0
  638. package/python/lib/python3.12/re/__init__.py +385 -0
  639. package/python/lib/python3.12/re/_casefix.py +106 -0
  640. package/python/lib/python3.12/re/_compiler.py +770 -0
  641. package/python/lib/python3.12/re/_constants.py +220 -0
  642. package/python/lib/python3.12/re/_parser.py +1080 -0
  643. package/python/lib/python3.12/reprlib.py +214 -0
  644. package/python/lib/python3.12/rlcompleter.py +219 -0
  645. package/python/lib/python3.12/runpy.py +319 -0
  646. package/python/lib/python3.12/sched.py +167 -0
  647. package/python/lib/python3.12/secrets.py +71 -0
  648. package/python/lib/python3.12/selectors.py +623 -0
  649. package/python/lib/python3.12/shelve.py +243 -0
  650. package/python/lib/python3.12/shlex.py +345 -0
  651. package/python/lib/python3.12/shutil.py +1566 -0
  652. package/python/lib/python3.12/signal.py +94 -0
  653. package/python/lib/python3.12/site-packages/README.txt +2 -0
  654. package/python/lib/python3.12/site-packages/pip/__init__.py +13 -0
  655. package/python/lib/python3.12/site-packages/pip/__main__.py +24 -0
  656. package/python/lib/python3.12/site-packages/pip/__pip-runner__.py +50 -0
  657. package/python/lib/python3.12/site-packages/pip/_internal/__init__.py +18 -0
  658. package/python/lib/python3.12/site-packages/pip/_internal/build_env.py +606 -0
  659. package/python/lib/python3.12/site-packages/pip/_internal/cache.py +291 -0
  660. package/python/lib/python3.12/site-packages/pip/_internal/cli/__init__.py +3 -0
  661. package/python/lib/python3.12/site-packages/pip/_internal/cli/autocompletion.py +184 -0
  662. package/python/lib/python3.12/site-packages/pip/_internal/cli/base_command.py +264 -0
  663. package/python/lib/python3.12/site-packages/pip/_internal/cli/cmdoptions.py +1298 -0
  664. package/python/lib/python3.12/site-packages/pip/_internal/cli/command_context.py +28 -0
  665. package/python/lib/python3.12/site-packages/pip/_internal/cli/index_command.py +212 -0
  666. package/python/lib/python3.12/site-packages/pip/_internal/cli/main.py +85 -0
  667. package/python/lib/python3.12/site-packages/pip/_internal/cli/main_parser.py +136 -0
  668. package/python/lib/python3.12/site-packages/pip/_internal/cli/parser.py +358 -0
  669. package/python/lib/python3.12/site-packages/pip/_internal/cli/progress_bars.py +153 -0
  670. package/python/lib/python3.12/site-packages/pip/_internal/cli/req_command.py +472 -0
  671. package/python/lib/python3.12/site-packages/pip/_internal/cli/spinners.py +235 -0
  672. package/python/lib/python3.12/site-packages/pip/_internal/cli/status_codes.py +6 -0
  673. package/python/lib/python3.12/site-packages/pip/_internal/commands/__init__.py +139 -0
  674. package/python/lib/python3.12/site-packages/pip/_internal/commands/cache.py +255 -0
  675. package/python/lib/python3.12/site-packages/pip/_internal/commands/check.py +66 -0
  676. package/python/lib/python3.12/site-packages/pip/_internal/commands/completion.py +136 -0
  677. package/python/lib/python3.12/site-packages/pip/_internal/commands/configuration.py +288 -0
  678. package/python/lib/python3.12/site-packages/pip/_internal/commands/debug.py +196 -0
  679. package/python/lib/python3.12/site-packages/pip/_internal/commands/download.py +146 -0
  680. package/python/lib/python3.12/site-packages/pip/_internal/commands/freeze.py +107 -0
  681. package/python/lib/python3.12/site-packages/pip/_internal/commands/hash.py +58 -0
  682. package/python/lib/python3.12/site-packages/pip/_internal/commands/help.py +40 -0
  683. package/python/lib/python3.12/site-packages/pip/_internal/commands/index.py +166 -0
  684. package/python/lib/python3.12/site-packages/pip/_internal/commands/inspect.py +92 -0
  685. package/python/lib/python3.12/site-packages/pip/_internal/commands/install.py +904 -0
  686. package/python/lib/python3.12/site-packages/pip/_internal/commands/list.py +403 -0
  687. package/python/lib/python3.12/site-packages/pip/_internal/commands/lock.py +175 -0
  688. package/python/lib/python3.12/site-packages/pip/_internal/commands/search.py +178 -0
  689. package/python/lib/python3.12/site-packages/pip/_internal/commands/show.py +231 -0
  690. package/python/lib/python3.12/site-packages/pip/_internal/commands/uninstall.py +113 -0
  691. package/python/lib/python3.12/site-packages/pip/_internal/commands/wheel.py +171 -0
  692. package/python/lib/python3.12/site-packages/pip/_internal/configuration.py +396 -0
  693. package/python/lib/python3.12/site-packages/pip/_internal/distributions/__init__.py +21 -0
  694. package/python/lib/python3.12/site-packages/pip/_internal/distributions/base.py +55 -0
  695. package/python/lib/python3.12/site-packages/pip/_internal/distributions/installed.py +33 -0
  696. package/python/lib/python3.12/site-packages/pip/_internal/distributions/sdist.py +164 -0
  697. package/python/lib/python3.12/site-packages/pip/_internal/distributions/wheel.py +44 -0
  698. package/python/lib/python3.12/site-packages/pip/_internal/exceptions.py +971 -0
  699. package/python/lib/python3.12/site-packages/pip/_internal/index/__init__.py +1 -0
  700. package/python/lib/python3.12/site-packages/pip/_internal/index/collector.py +488 -0
  701. package/python/lib/python3.12/site-packages/pip/_internal/index/package_finder.py +1113 -0
  702. package/python/lib/python3.12/site-packages/pip/_internal/index/sources.py +287 -0
  703. package/python/lib/python3.12/site-packages/pip/_internal/locations/__init__.py +438 -0
  704. package/python/lib/python3.12/site-packages/pip/_internal/locations/_distutils.py +173 -0
  705. package/python/lib/python3.12/site-packages/pip/_internal/locations/_sysconfig.py +218 -0
  706. package/python/lib/python3.12/site-packages/pip/_internal/locations/base.py +82 -0
  707. package/python/lib/python3.12/site-packages/pip/_internal/main.py +12 -0
  708. package/python/lib/python3.12/site-packages/pip/_internal/metadata/__init__.py +169 -0
  709. package/python/lib/python3.12/site-packages/pip/_internal/metadata/_json.py +87 -0
  710. package/python/lib/python3.12/site-packages/pip/_internal/metadata/base.py +685 -0
  711. package/python/lib/python3.12/site-packages/pip/_internal/metadata/importlib/__init__.py +6 -0
  712. package/python/lib/python3.12/site-packages/pip/_internal/metadata/importlib/_compat.py +87 -0
  713. package/python/lib/python3.12/site-packages/pip/_internal/metadata/importlib/_dists.py +235 -0
  714. package/python/lib/python3.12/site-packages/pip/_internal/metadata/importlib/_envs.py +143 -0
  715. package/python/lib/python3.12/site-packages/pip/_internal/metadata/pkg_resources.py +298 -0
  716. package/python/lib/python3.12/site-packages/pip/_internal/models/__init__.py +1 -0
  717. package/python/lib/python3.12/site-packages/pip/_internal/models/candidate.py +23 -0
  718. package/python/lib/python3.12/site-packages/pip/_internal/models/direct_url.py +42 -0
  719. package/python/lib/python3.12/site-packages/pip/_internal/models/format_control.py +78 -0
  720. package/python/lib/python3.12/site-packages/pip/_internal/models/index.py +28 -0
  721. package/python/lib/python3.12/site-packages/pip/_internal/models/installation_report.py +57 -0
  722. package/python/lib/python3.12/site-packages/pip/_internal/models/link.py +617 -0
  723. package/python/lib/python3.12/site-packages/pip/_internal/models/release_control.py +91 -0
  724. package/python/lib/python3.12/site-packages/pip/_internal/models/scheme.py +23 -0
  725. package/python/lib/python3.12/site-packages/pip/_internal/models/search_scope.py +124 -0
  726. package/python/lib/python3.12/site-packages/pip/_internal/models/selection_prefs.py +36 -0
  727. package/python/lib/python3.12/site-packages/pip/_internal/models/target_python.py +122 -0
  728. package/python/lib/python3.12/site-packages/pip/_internal/models/wheel.py +80 -0
  729. package/python/lib/python3.12/site-packages/pip/_internal/network/__init__.py +1 -0
  730. package/python/lib/python3.12/site-packages/pip/_internal/network/auth.py +570 -0
  731. package/python/lib/python3.12/site-packages/pip/_internal/network/cache.py +128 -0
  732. package/python/lib/python3.12/site-packages/pip/_internal/network/download.py +340 -0
  733. package/python/lib/python3.12/site-packages/pip/_internal/network/lazy_wheel.py +215 -0
  734. package/python/lib/python3.12/site-packages/pip/_internal/network/session.py +537 -0
  735. package/python/lib/python3.12/site-packages/pip/_internal/network/utils.py +98 -0
  736. package/python/lib/python3.12/site-packages/pip/_internal/network/xmlrpc.py +61 -0
  737. package/python/lib/python3.12/site-packages/pip/_internal/operations/__init__.py +0 -0
  738. package/python/lib/python3.12/site-packages/pip/_internal/operations/build/__init__.py +0 -0
  739. package/python/lib/python3.12/site-packages/pip/_internal/operations/build/build_tracker.py +140 -0
  740. package/python/lib/python3.12/site-packages/pip/_internal/operations/build/metadata.py +38 -0
  741. package/python/lib/python3.12/site-packages/pip/_internal/operations/build/metadata_editable.py +41 -0
  742. package/python/lib/python3.12/site-packages/pip/_internal/operations/build/wheel.py +38 -0
  743. package/python/lib/python3.12/site-packages/pip/_internal/operations/build/wheel_editable.py +47 -0
  744. package/python/lib/python3.12/site-packages/pip/_internal/operations/check.py +175 -0
  745. package/python/lib/python3.12/site-packages/pip/_internal/operations/freeze.py +259 -0
  746. package/python/lib/python3.12/site-packages/pip/_internal/operations/install/__init__.py +1 -0
  747. package/python/lib/python3.12/site-packages/pip/_internal/operations/install/wheel.py +759 -0
  748. package/python/lib/python3.12/site-packages/pip/_internal/operations/prepare.py +751 -0
  749. package/python/lib/python3.12/site-packages/pip/_internal/pyproject.py +123 -0
  750. package/python/lib/python3.12/site-packages/pip/_internal/req/__init__.py +103 -0
  751. package/python/lib/python3.12/site-packages/pip/_internal/req/constructors.py +677 -0
  752. package/python/lib/python3.12/site-packages/pip/_internal/req/pep723.py +41 -0
  753. package/python/lib/python3.12/site-packages/pip/_internal/req/req_dependency_group.py +86 -0
  754. package/python/lib/python3.12/site-packages/pip/_internal/req/req_file.py +622 -0
  755. package/python/lib/python3.12/site-packages/pip/_internal/req/req_install.py +838 -0
  756. package/python/lib/python3.12/site-packages/pip/_internal/req/req_set.py +81 -0
  757. package/python/lib/python3.12/site-packages/pip/_internal/req/req_uninstall.py +639 -0
  758. package/python/lib/python3.12/site-packages/pip/_internal/resolution/__init__.py +0 -0
  759. package/python/lib/python3.12/site-packages/pip/_internal/resolution/base.py +20 -0
  760. package/python/lib/python3.12/site-packages/pip/_internal/resolution/legacy/__init__.py +0 -0
  761. package/python/lib/python3.12/site-packages/pip/_internal/resolution/legacy/resolver.py +598 -0
  762. package/python/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__init__.py +0 -0
  763. package/python/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/base.py +164 -0
  764. package/python/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/candidates.py +599 -0
  765. package/python/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/factory.py +914 -0
  766. package/python/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py +166 -0
  767. package/python/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/provider.py +306 -0
  768. package/python/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/reporter.py +98 -0
  769. package/python/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/requirements.py +251 -0
  770. package/python/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/resolver.py +332 -0
  771. package/python/lib/python3.12/site-packages/pip/_internal/self_outdated_check.py +246 -0
  772. package/python/lib/python3.12/site-packages/pip/_internal/utils/__init__.py +0 -0
  773. package/python/lib/python3.12/site-packages/pip/_internal/utils/_jaraco_text.py +109 -0
  774. package/python/lib/python3.12/site-packages/pip/_internal/utils/_log.py +38 -0
  775. package/python/lib/python3.12/site-packages/pip/_internal/utils/appdirs.py +52 -0
  776. package/python/lib/python3.12/site-packages/pip/_internal/utils/compat.py +85 -0
  777. package/python/lib/python3.12/site-packages/pip/_internal/utils/compatibility_tags.py +201 -0
  778. package/python/lib/python3.12/site-packages/pip/_internal/utils/datetime.py +28 -0
  779. package/python/lib/python3.12/site-packages/pip/_internal/utils/deprecation.py +139 -0
  780. package/python/lib/python3.12/site-packages/pip/_internal/utils/direct_url_helpers.py +92 -0
  781. package/python/lib/python3.12/site-packages/pip/_internal/utils/egg_link.py +81 -0
  782. package/python/lib/python3.12/site-packages/pip/_internal/utils/entrypoints.py +88 -0
  783. package/python/lib/python3.12/site-packages/pip/_internal/utils/filesystem.py +201 -0
  784. package/python/lib/python3.12/site-packages/pip/_internal/utils/filetypes.py +24 -0
  785. package/python/lib/python3.12/site-packages/pip/_internal/utils/glibc.py +102 -0
  786. package/python/lib/python3.12/site-packages/pip/_internal/utils/hashes.py +150 -0
  787. package/python/lib/python3.12/site-packages/pip/_internal/utils/logging.py +396 -0
  788. package/python/lib/python3.12/site-packages/pip/_internal/utils/misc.py +771 -0
  789. package/python/lib/python3.12/site-packages/pip/_internal/utils/packaging.py +44 -0
  790. package/python/lib/python3.12/site-packages/pip/_internal/utils/pylock.py +283 -0
  791. package/python/lib/python3.12/site-packages/pip/_internal/utils/retry.py +45 -0
  792. package/python/lib/python3.12/site-packages/pip/_internal/utils/subprocess.py +248 -0
  793. package/python/lib/python3.12/site-packages/pip/_internal/utils/temp_dir.py +294 -0
  794. package/python/lib/python3.12/site-packages/pip/_internal/utils/unpacking.py +381 -0
  795. package/python/lib/python3.12/site-packages/pip/_internal/utils/urls.py +55 -0
  796. package/python/lib/python3.12/site-packages/pip/_internal/utils/virtualenv.py +105 -0
  797. package/python/lib/python3.12/site-packages/pip/_internal/utils/wheel.py +132 -0
  798. package/python/lib/python3.12/site-packages/pip/_internal/vcs/__init__.py +15 -0
  799. package/python/lib/python3.12/site-packages/pip/_internal/vcs/bazaar.py +130 -0
  800. package/python/lib/python3.12/site-packages/pip/_internal/vcs/git.py +571 -0
  801. package/python/lib/python3.12/site-packages/pip/_internal/vcs/mercurial.py +186 -0
  802. package/python/lib/python3.12/site-packages/pip/_internal/vcs/subversion.py +335 -0
  803. package/python/lib/python3.12/site-packages/pip/_internal/vcs/versioncontrol.py +695 -0
  804. package/python/lib/python3.12/site-packages/pip/_internal/wheel_builder.py +261 -0
  805. package/python/lib/python3.12/site-packages/pip/_vendor/README.rst +178 -0
  806. package/python/lib/python3.12/site-packages/pip/_vendor/__init__.py +117 -0
  807. package/python/lib/python3.12/site-packages/pip/_vendor/cachecontrol/LICENSE.txt +13 -0
  808. package/python/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__init__.py +32 -0
  809. package/python/lib/python3.12/site-packages/pip/_vendor/cachecontrol/_cmd.py +70 -0
  810. package/python/lib/python3.12/site-packages/pip/_vendor/cachecontrol/adapter.py +167 -0
  811. package/python/lib/python3.12/site-packages/pip/_vendor/cachecontrol/cache.py +75 -0
  812. package/python/lib/python3.12/site-packages/pip/_vendor/cachecontrol/caches/__init__.py +8 -0
  813. package/python/lib/python3.12/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py +145 -0
  814. package/python/lib/python3.12/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py +48 -0
  815. package/python/lib/python3.12/site-packages/pip/_vendor/cachecontrol/controller.py +511 -0
  816. package/python/lib/python3.12/site-packages/pip/_vendor/cachecontrol/filewrapper.py +121 -0
  817. package/python/lib/python3.12/site-packages/pip/_vendor/cachecontrol/heuristics.py +157 -0
  818. package/python/lib/python3.12/site-packages/pip/_vendor/cachecontrol/py.typed +0 -0
  819. package/python/lib/python3.12/site-packages/pip/_vendor/cachecontrol/serialize.py +146 -0
  820. package/python/lib/python3.12/site-packages/pip/_vendor/cachecontrol/wrapper.py +43 -0
  821. package/python/lib/python3.12/site-packages/pip/_vendor/certifi/LICENSE +20 -0
  822. package/python/lib/python3.12/site-packages/pip/_vendor/certifi/__init__.py +4 -0
  823. package/python/lib/python3.12/site-packages/pip/_vendor/certifi/__main__.py +12 -0
  824. package/python/lib/python3.12/site-packages/pip/_vendor/certifi/cacert.pem +4494 -0
  825. package/python/lib/python3.12/site-packages/pip/_vendor/certifi/core.py +83 -0
  826. package/python/lib/python3.12/site-packages/pip/_vendor/certifi/py.typed +0 -0
  827. package/python/lib/python3.12/site-packages/pip/_vendor/distlib/LICENSE.txt +284 -0
  828. package/python/lib/python3.12/site-packages/pip/_vendor/distlib/__init__.py +33 -0
  829. package/python/lib/python3.12/site-packages/pip/_vendor/distlib/compat.py +1137 -0
  830. package/python/lib/python3.12/site-packages/pip/_vendor/distlib/resources.py +358 -0
  831. package/python/lib/python3.12/site-packages/pip/_vendor/distlib/scripts.py +447 -0
  832. package/python/lib/python3.12/site-packages/pip/_vendor/distlib/t32.exe +0 -0
  833. package/python/lib/python3.12/site-packages/pip/_vendor/distlib/t64-arm.exe +0 -0
  834. package/python/lib/python3.12/site-packages/pip/_vendor/distlib/t64.exe +0 -0
  835. package/python/lib/python3.12/site-packages/pip/_vendor/distlib/util.py +1984 -0
  836. package/python/lib/python3.12/site-packages/pip/_vendor/distlib/w32.exe +0 -0
  837. package/python/lib/python3.12/site-packages/pip/_vendor/distlib/w64-arm.exe +0 -0
  838. package/python/lib/python3.12/site-packages/pip/_vendor/distlib/w64.exe +0 -0
  839. package/python/lib/python3.12/site-packages/pip/_vendor/distro/LICENSE +202 -0
  840. package/python/lib/python3.12/site-packages/pip/_vendor/distro/__init__.py +54 -0
  841. package/python/lib/python3.12/site-packages/pip/_vendor/distro/__main__.py +4 -0
  842. package/python/lib/python3.12/site-packages/pip/_vendor/distro/distro.py +1403 -0
  843. package/python/lib/python3.12/site-packages/pip/_vendor/distro/py.typed +0 -0
  844. package/python/lib/python3.12/site-packages/pip/_vendor/idna/LICENSE.md +31 -0
  845. package/python/lib/python3.12/site-packages/pip/_vendor/idna/__init__.py +45 -0
  846. package/python/lib/python3.12/site-packages/pip/_vendor/idna/codec.py +122 -0
  847. package/python/lib/python3.12/site-packages/pip/_vendor/idna/compat.py +15 -0
  848. package/python/lib/python3.12/site-packages/pip/_vendor/idna/core.py +437 -0
  849. package/python/lib/python3.12/site-packages/pip/_vendor/idna/idnadata.py +4309 -0
  850. package/python/lib/python3.12/site-packages/pip/_vendor/idna/intranges.py +57 -0
  851. package/python/lib/python3.12/site-packages/pip/_vendor/idna/package_data.py +1 -0
  852. package/python/lib/python3.12/site-packages/pip/_vendor/idna/py.typed +0 -0
  853. package/python/lib/python3.12/site-packages/pip/_vendor/idna/uts46data.py +8841 -0
  854. package/python/lib/python3.12/site-packages/pip/_vendor/msgpack/COPYING +14 -0
  855. package/python/lib/python3.12/site-packages/pip/_vendor/msgpack/__init__.py +55 -0
  856. package/python/lib/python3.12/site-packages/pip/_vendor/msgpack/exceptions.py +48 -0
  857. package/python/lib/python3.12/site-packages/pip/_vendor/msgpack/ext.py +170 -0
  858. package/python/lib/python3.12/site-packages/pip/_vendor/msgpack/fallback.py +929 -0
  859. package/python/lib/python3.12/site-packages/pip/_vendor/packaging/LICENSE +3 -0
  860. package/python/lib/python3.12/site-packages/pip/_vendor/packaging/LICENSE.APACHE +177 -0
  861. package/python/lib/python3.12/site-packages/pip/_vendor/packaging/LICENSE.BSD +23 -0
  862. package/python/lib/python3.12/site-packages/pip/_vendor/packaging/__init__.py +15 -0
  863. package/python/lib/python3.12/site-packages/pip/_vendor/packaging/_elffile.py +108 -0
  864. package/python/lib/python3.12/site-packages/pip/_vendor/packaging/_manylinux.py +262 -0
  865. package/python/lib/python3.12/site-packages/pip/_vendor/packaging/_musllinux.py +85 -0
  866. package/python/lib/python3.12/site-packages/pip/_vendor/packaging/_parser.py +393 -0
  867. package/python/lib/python3.12/site-packages/pip/_vendor/packaging/_structures.py +33 -0
  868. package/python/lib/python3.12/site-packages/pip/_vendor/packaging/_tokenizer.py +193 -0
  869. package/python/lib/python3.12/site-packages/pip/_vendor/packaging/dependency_groups.py +302 -0
  870. package/python/lib/python3.12/site-packages/pip/_vendor/packaging/direct_url.py +325 -0
  871. package/python/lib/python3.12/site-packages/pip/_vendor/packaging/errors.py +94 -0
  872. package/python/lib/python3.12/site-packages/pip/_vendor/packaging/licenses/__init__.py +186 -0
  873. package/python/lib/python3.12/site-packages/pip/_vendor/packaging/licenses/_spdx.py +799 -0
  874. package/python/lib/python3.12/site-packages/pip/_vendor/packaging/markers.py +492 -0
  875. package/python/lib/python3.12/site-packages/pip/_vendor/packaging/metadata.py +964 -0
  876. package/python/lib/python3.12/site-packages/pip/_vendor/packaging/py.typed +0 -0
  877. package/python/lib/python3.12/site-packages/pip/_vendor/packaging/pylock.py +905 -0
  878. package/python/lib/python3.12/site-packages/pip/_vendor/packaging/requirements.py +129 -0
  879. package/python/lib/python3.12/site-packages/pip/_vendor/packaging/specifiers.py +1943 -0
  880. package/python/lib/python3.12/site-packages/pip/_vendor/packaging/tags.py +932 -0
  881. package/python/lib/python3.12/site-packages/pip/_vendor/packaging/utils.py +296 -0
  882. package/python/lib/python3.12/site-packages/pip/_vendor/packaging/version.py +1231 -0
  883. package/python/lib/python3.12/site-packages/pip/_vendor/pkg_resources/LICENSE +17 -0
  884. package/python/lib/python3.12/site-packages/pip/_vendor/pkg_resources/__init__.py +3676 -0
  885. package/python/lib/python3.12/site-packages/pip/_vendor/platformdirs/LICENSE +21 -0
  886. package/python/lib/python3.12/site-packages/pip/_vendor/platformdirs/__init__.py +631 -0
  887. package/python/lib/python3.12/site-packages/pip/_vendor/platformdirs/__main__.py +55 -0
  888. package/python/lib/python3.12/site-packages/pip/_vendor/platformdirs/android.py +249 -0
  889. package/python/lib/python3.12/site-packages/pip/_vendor/platformdirs/api.py +299 -0
  890. package/python/lib/python3.12/site-packages/pip/_vendor/platformdirs/macos.py +146 -0
  891. package/python/lib/python3.12/site-packages/pip/_vendor/platformdirs/py.typed +0 -0
  892. package/python/lib/python3.12/site-packages/pip/_vendor/platformdirs/unix.py +272 -0
  893. package/python/lib/python3.12/site-packages/pip/_vendor/platformdirs/version.py +34 -0
  894. package/python/lib/python3.12/site-packages/pip/_vendor/platformdirs/windows.py +278 -0
  895. package/python/lib/python3.12/site-packages/pip/_vendor/pygments/LICENSE +25 -0
  896. package/python/lib/python3.12/site-packages/pip/_vendor/pygments/__init__.py +82 -0
  897. package/python/lib/python3.12/site-packages/pip/_vendor/pygments/__main__.py +17 -0
  898. package/python/lib/python3.12/site-packages/pip/_vendor/pygments/console.py +70 -0
  899. package/python/lib/python3.12/site-packages/pip/_vendor/pygments/filter.py +70 -0
  900. package/python/lib/python3.12/site-packages/pip/_vendor/pygments/filters/__init__.py +940 -0
  901. package/python/lib/python3.12/site-packages/pip/_vendor/pygments/formatter.py +129 -0
  902. package/python/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__init__.py +157 -0
  903. package/python/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/_mapping.py +23 -0
  904. package/python/lib/python3.12/site-packages/pip/_vendor/pygments/lexer.py +963 -0
  905. package/python/lib/python3.12/site-packages/pip/_vendor/pygments/lexers/__init__.py +362 -0
  906. package/python/lib/python3.12/site-packages/pip/_vendor/pygments/lexers/_mapping.py +602 -0
  907. package/python/lib/python3.12/site-packages/pip/_vendor/pygments/lexers/python.py +1201 -0
  908. package/python/lib/python3.12/site-packages/pip/_vendor/pygments/modeline.py +43 -0
  909. package/python/lib/python3.12/site-packages/pip/_vendor/pygments/plugin.py +72 -0
  910. package/python/lib/python3.12/site-packages/pip/_vendor/pygments/regexopt.py +91 -0
  911. package/python/lib/python3.12/site-packages/pip/_vendor/pygments/scanner.py +104 -0
  912. package/python/lib/python3.12/site-packages/pip/_vendor/pygments/sphinxext.py +247 -0
  913. package/python/lib/python3.12/site-packages/pip/_vendor/pygments/style.py +203 -0
  914. package/python/lib/python3.12/site-packages/pip/_vendor/pygments/styles/__init__.py +61 -0
  915. package/python/lib/python3.12/site-packages/pip/_vendor/pygments/styles/_mapping.py +54 -0
  916. package/python/lib/python3.12/site-packages/pip/_vendor/pygments/token.py +214 -0
  917. package/python/lib/python3.12/site-packages/pip/_vendor/pygments/unistring.py +153 -0
  918. package/python/lib/python3.12/site-packages/pip/_vendor/pygments/util.py +324 -0
  919. package/python/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/LICENSE +21 -0
  920. package/python/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/__init__.py +31 -0
  921. package/python/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_impl.py +410 -0
  922. package/python/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/__init__.py +21 -0
  923. package/python/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py +389 -0
  924. package/python/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/py.typed +0 -0
  925. package/python/lib/python3.12/site-packages/pip/_vendor/requests/LICENSE +175 -0
  926. package/python/lib/python3.12/site-packages/pip/_vendor/requests/__init__.py +178 -0
  927. package/python/lib/python3.12/site-packages/pip/_vendor/requests/__version__.py +14 -0
  928. package/python/lib/python3.12/site-packages/pip/_vendor/requests/_internal_utils.py +51 -0
  929. package/python/lib/python3.12/site-packages/pip/_vendor/requests/adapters.py +697 -0
  930. package/python/lib/python3.12/site-packages/pip/_vendor/requests/api.py +157 -0
  931. package/python/lib/python3.12/site-packages/pip/_vendor/requests/auth.py +314 -0
  932. package/python/lib/python3.12/site-packages/pip/_vendor/requests/certs.py +18 -0
  933. package/python/lib/python3.12/site-packages/pip/_vendor/requests/compat.py +90 -0
  934. package/python/lib/python3.12/site-packages/pip/_vendor/requests/cookies.py +561 -0
  935. package/python/lib/python3.12/site-packages/pip/_vendor/requests/exceptions.py +152 -0
  936. package/python/lib/python3.12/site-packages/pip/_vendor/requests/help.py +124 -0
  937. package/python/lib/python3.12/site-packages/pip/_vendor/requests/hooks.py +34 -0
  938. package/python/lib/python3.12/site-packages/pip/_vendor/requests/models.py +1041 -0
  939. package/python/lib/python3.12/site-packages/pip/_vendor/requests/packages.py +25 -0
  940. package/python/lib/python3.12/site-packages/pip/_vendor/requests/sessions.py +834 -0
  941. package/python/lib/python3.12/site-packages/pip/_vendor/requests/status_codes.py +128 -0
  942. package/python/lib/python3.12/site-packages/pip/_vendor/requests/structures.py +99 -0
  943. package/python/lib/python3.12/site-packages/pip/_vendor/requests/utils.py +1083 -0
  944. package/python/lib/python3.12/site-packages/pip/_vendor/resolvelib/LICENSE +13 -0
  945. package/python/lib/python3.12/site-packages/pip/_vendor/resolvelib/__init__.py +27 -0
  946. package/python/lib/python3.12/site-packages/pip/_vendor/resolvelib/providers.py +196 -0
  947. package/python/lib/python3.12/site-packages/pip/_vendor/resolvelib/py.typed +0 -0
  948. package/python/lib/python3.12/site-packages/pip/_vendor/resolvelib/reporters.py +55 -0
  949. package/python/lib/python3.12/site-packages/pip/_vendor/resolvelib/resolvers/__init__.py +27 -0
  950. package/python/lib/python3.12/site-packages/pip/_vendor/resolvelib/resolvers/abstract.py +47 -0
  951. package/python/lib/python3.12/site-packages/pip/_vendor/resolvelib/resolvers/criterion.py +48 -0
  952. package/python/lib/python3.12/site-packages/pip/_vendor/resolvelib/resolvers/exceptions.py +57 -0
  953. package/python/lib/python3.12/site-packages/pip/_vendor/resolvelib/resolvers/resolution.py +627 -0
  954. package/python/lib/python3.12/site-packages/pip/_vendor/resolvelib/structs.py +209 -0
  955. package/python/lib/python3.12/site-packages/pip/_vendor/rich/LICENSE +19 -0
  956. package/python/lib/python3.12/site-packages/pip/_vendor/rich/__init__.py +177 -0
  957. package/python/lib/python3.12/site-packages/pip/_vendor/rich/__main__.py +245 -0
  958. package/python/lib/python3.12/site-packages/pip/_vendor/rich/_cell_widths.py +454 -0
  959. package/python/lib/python3.12/site-packages/pip/_vendor/rich/_emoji_codes.py +3610 -0
  960. package/python/lib/python3.12/site-packages/pip/_vendor/rich/_emoji_replace.py +32 -0
  961. package/python/lib/python3.12/site-packages/pip/_vendor/rich/_export_format.py +76 -0
  962. package/python/lib/python3.12/site-packages/pip/_vendor/rich/_extension.py +10 -0
  963. package/python/lib/python3.12/site-packages/pip/_vendor/rich/_fileno.py +24 -0
  964. package/python/lib/python3.12/site-packages/pip/_vendor/rich/_inspect.py +268 -0
  965. package/python/lib/python3.12/site-packages/pip/_vendor/rich/_log_render.py +94 -0
  966. package/python/lib/python3.12/site-packages/pip/_vendor/rich/_loop.py +43 -0
  967. package/python/lib/python3.12/site-packages/pip/_vendor/rich/_null_file.py +69 -0
  968. package/python/lib/python3.12/site-packages/pip/_vendor/rich/_palettes.py +309 -0
  969. package/python/lib/python3.12/site-packages/pip/_vendor/rich/_pick.py +17 -0
  970. package/python/lib/python3.12/site-packages/pip/_vendor/rich/_ratio.py +153 -0
  971. package/python/lib/python3.12/site-packages/pip/_vendor/rich/_spinners.py +482 -0
  972. package/python/lib/python3.12/site-packages/pip/_vendor/rich/_stack.py +16 -0
  973. package/python/lib/python3.12/site-packages/pip/_vendor/rich/_timer.py +19 -0
  974. package/python/lib/python3.12/site-packages/pip/_vendor/rich/_win32_console.py +661 -0
  975. package/python/lib/python3.12/site-packages/pip/_vendor/rich/_windows.py +71 -0
  976. package/python/lib/python3.12/site-packages/pip/_vendor/rich/_windows_renderer.py +56 -0
  977. package/python/lib/python3.12/site-packages/pip/_vendor/rich/_wrap.py +93 -0
  978. package/python/lib/python3.12/site-packages/pip/_vendor/rich/abc.py +33 -0
  979. package/python/lib/python3.12/site-packages/pip/_vendor/rich/align.py +306 -0
  980. package/python/lib/python3.12/site-packages/pip/_vendor/rich/ansi.py +241 -0
  981. package/python/lib/python3.12/site-packages/pip/_vendor/rich/bar.py +93 -0
  982. package/python/lib/python3.12/site-packages/pip/_vendor/rich/box.py +474 -0
  983. package/python/lib/python3.12/site-packages/pip/_vendor/rich/cells.py +174 -0
  984. package/python/lib/python3.12/site-packages/pip/_vendor/rich/color.py +621 -0
  985. package/python/lib/python3.12/site-packages/pip/_vendor/rich/color_triplet.py +38 -0
  986. package/python/lib/python3.12/site-packages/pip/_vendor/rich/columns.py +187 -0
  987. package/python/lib/python3.12/site-packages/pip/_vendor/rich/console.py +2680 -0
  988. package/python/lib/python3.12/site-packages/pip/_vendor/rich/constrain.py +37 -0
  989. package/python/lib/python3.12/site-packages/pip/_vendor/rich/containers.py +167 -0
  990. package/python/lib/python3.12/site-packages/pip/_vendor/rich/control.py +219 -0
  991. package/python/lib/python3.12/site-packages/pip/_vendor/rich/default_styles.py +193 -0
  992. package/python/lib/python3.12/site-packages/pip/_vendor/rich/diagnose.py +39 -0
  993. package/python/lib/python3.12/site-packages/pip/_vendor/rich/emoji.py +91 -0
  994. package/python/lib/python3.12/site-packages/pip/_vendor/rich/errors.py +34 -0
  995. package/python/lib/python3.12/site-packages/pip/_vendor/rich/file_proxy.py +57 -0
  996. package/python/lib/python3.12/site-packages/pip/_vendor/rich/filesize.py +88 -0
  997. package/python/lib/python3.12/site-packages/pip/_vendor/rich/highlighter.py +232 -0
  998. package/python/lib/python3.12/site-packages/pip/_vendor/rich/json.py +139 -0
  999. package/python/lib/python3.12/site-packages/pip/_vendor/rich/jupyter.py +101 -0
  1000. package/python/lib/python3.12/site-packages/pip/_vendor/rich/layout.py +442 -0
  1001. package/python/lib/python3.12/site-packages/pip/_vendor/rich/live.py +400 -0
  1002. package/python/lib/python3.12/site-packages/pip/_vendor/rich/live_render.py +106 -0
  1003. package/python/lib/python3.12/site-packages/pip/_vendor/rich/logging.py +297 -0
  1004. package/python/lib/python3.12/site-packages/pip/_vendor/rich/markup.py +251 -0
  1005. package/python/lib/python3.12/site-packages/pip/_vendor/rich/measure.py +151 -0
  1006. package/python/lib/python3.12/site-packages/pip/_vendor/rich/padding.py +141 -0
  1007. package/python/lib/python3.12/site-packages/pip/_vendor/rich/pager.py +34 -0
  1008. package/python/lib/python3.12/site-packages/pip/_vendor/rich/palette.py +100 -0
  1009. package/python/lib/python3.12/site-packages/pip/_vendor/rich/panel.py +317 -0
  1010. package/python/lib/python3.12/site-packages/pip/_vendor/rich/pretty.py +1016 -0
  1011. package/python/lib/python3.12/site-packages/pip/_vendor/rich/progress.py +1715 -0
  1012. package/python/lib/python3.12/site-packages/pip/_vendor/rich/progress_bar.py +223 -0
  1013. package/python/lib/python3.12/site-packages/pip/_vendor/rich/prompt.py +400 -0
  1014. package/python/lib/python3.12/site-packages/pip/_vendor/rich/protocol.py +42 -0
  1015. package/python/lib/python3.12/site-packages/pip/_vendor/rich/py.typed +0 -0
  1016. package/python/lib/python3.12/site-packages/pip/_vendor/rich/region.py +10 -0
  1017. package/python/lib/python3.12/site-packages/pip/_vendor/rich/repr.py +149 -0
  1018. package/python/lib/python3.12/site-packages/pip/_vendor/rich/rule.py +130 -0
  1019. package/python/lib/python3.12/site-packages/pip/_vendor/rich/scope.py +86 -0
  1020. package/python/lib/python3.12/site-packages/pip/_vendor/rich/screen.py +54 -0
  1021. package/python/lib/python3.12/site-packages/pip/_vendor/rich/segment.py +752 -0
  1022. package/python/lib/python3.12/site-packages/pip/_vendor/rich/spinner.py +132 -0
  1023. package/python/lib/python3.12/site-packages/pip/_vendor/rich/status.py +131 -0
  1024. package/python/lib/python3.12/site-packages/pip/_vendor/rich/style.py +792 -0
  1025. package/python/lib/python3.12/site-packages/pip/_vendor/rich/styled.py +42 -0
  1026. package/python/lib/python3.12/site-packages/pip/_vendor/rich/syntax.py +985 -0
  1027. package/python/lib/python3.12/site-packages/pip/_vendor/rich/table.py +1006 -0
  1028. package/python/lib/python3.12/site-packages/pip/_vendor/rich/terminal_theme.py +153 -0
  1029. package/python/lib/python3.12/site-packages/pip/_vendor/rich/text.py +1361 -0
  1030. package/python/lib/python3.12/site-packages/pip/_vendor/rich/theme.py +115 -0
  1031. package/python/lib/python3.12/site-packages/pip/_vendor/rich/themes.py +5 -0
  1032. package/python/lib/python3.12/site-packages/pip/_vendor/rich/traceback.py +899 -0
  1033. package/python/lib/python3.12/site-packages/pip/_vendor/rich/tree.py +257 -0
  1034. package/python/lib/python3.12/site-packages/pip/_vendor/tomli/LICENSE +21 -0
  1035. package/python/lib/python3.12/site-packages/pip/_vendor/tomli/__init__.py +8 -0
  1036. package/python/lib/python3.12/site-packages/pip/_vendor/tomli/_parser.py +788 -0
  1037. package/python/lib/python3.12/site-packages/pip/_vendor/tomli/_re.py +115 -0
  1038. package/python/lib/python3.12/site-packages/pip/_vendor/tomli/_types.py +10 -0
  1039. package/python/lib/python3.12/site-packages/pip/_vendor/tomli/py.typed +1 -0
  1040. package/python/lib/python3.12/site-packages/pip/_vendor/tomli_w/LICENSE +21 -0
  1041. package/python/lib/python3.12/site-packages/pip/_vendor/tomli_w/__init__.py +4 -0
  1042. package/python/lib/python3.12/site-packages/pip/_vendor/tomli_w/_writer.py +229 -0
  1043. package/python/lib/python3.12/site-packages/pip/_vendor/tomli_w/py.typed +1 -0
  1044. package/python/lib/python3.12/site-packages/pip/_vendor/truststore/LICENSE +21 -0
  1045. package/python/lib/python3.12/site-packages/pip/_vendor/truststore/__init__.py +36 -0
  1046. package/python/lib/python3.12/site-packages/pip/_vendor/truststore/_api.py +341 -0
  1047. package/python/lib/python3.12/site-packages/pip/_vendor/truststore/_macos.py +571 -0
  1048. package/python/lib/python3.12/site-packages/pip/_vendor/truststore/_openssl.py +68 -0
  1049. package/python/lib/python3.12/site-packages/pip/_vendor/truststore/_ssl_constants.py +31 -0
  1050. package/python/lib/python3.12/site-packages/pip/_vendor/truststore/_windows.py +567 -0
  1051. package/python/lib/python3.12/site-packages/pip/_vendor/truststore/py.typed +0 -0
  1052. package/python/lib/python3.12/site-packages/pip/_vendor/urllib3/LICENSE.txt +21 -0
  1053. package/python/lib/python3.12/site-packages/pip/_vendor/urllib3/__init__.py +211 -0
  1054. package/python/lib/python3.12/site-packages/pip/_vendor/urllib3/_base_connection.py +165 -0
  1055. package/python/lib/python3.12/site-packages/pip/_vendor/urllib3/_collections.py +487 -0
  1056. package/python/lib/python3.12/site-packages/pip/_vendor/urllib3/_request_methods.py +278 -0
  1057. package/python/lib/python3.12/site-packages/pip/_vendor/urllib3/_version.py +34 -0
  1058. package/python/lib/python3.12/site-packages/pip/_vendor/urllib3/connection.py +1099 -0
  1059. package/python/lib/python3.12/site-packages/pip/_vendor/urllib3/connectionpool.py +1178 -0
  1060. package/python/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__init__.py +0 -0
  1061. package/python/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/emscripten/__init__.py +17 -0
  1062. package/python/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/emscripten/connection.py +260 -0
  1063. package/python/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/emscripten/emscripten_fetch_worker.js +110 -0
  1064. package/python/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/emscripten/fetch.py +726 -0
  1065. package/python/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/emscripten/request.py +22 -0
  1066. package/python/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/emscripten/response.py +277 -0
  1067. package/python/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py +564 -0
  1068. package/python/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/socks.py +228 -0
  1069. package/python/lib/python3.12/site-packages/pip/_vendor/urllib3/exceptions.py +335 -0
  1070. package/python/lib/python3.12/site-packages/pip/_vendor/urllib3/fields.py +341 -0
  1071. package/python/lib/python3.12/site-packages/pip/_vendor/urllib3/filepost.py +89 -0
  1072. package/python/lib/python3.12/site-packages/pip/_vendor/urllib3/http2/__init__.py +53 -0
  1073. package/python/lib/python3.12/site-packages/pip/_vendor/urllib3/http2/connection.py +356 -0
  1074. package/python/lib/python3.12/site-packages/pip/_vendor/urllib3/http2/probe.py +87 -0
  1075. package/python/lib/python3.12/site-packages/pip/_vendor/urllib3/poolmanager.py +651 -0
  1076. package/python/lib/python3.12/site-packages/pip/_vendor/urllib3/py.typed +2 -0
  1077. package/python/lib/python3.12/site-packages/pip/_vendor/urllib3/response.py +1474 -0
  1078. package/python/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__init__.py +42 -0
  1079. package/python/lib/python3.12/site-packages/pip/_vendor/urllib3/util/connection.py +137 -0
  1080. package/python/lib/python3.12/site-packages/pip/_vendor/urllib3/util/proxy.py +43 -0
  1081. package/python/lib/python3.12/site-packages/pip/_vendor/urllib3/util/request.py +254 -0
  1082. package/python/lib/python3.12/site-packages/pip/_vendor/urllib3/util/response.py +101 -0
  1083. package/python/lib/python3.12/site-packages/pip/_vendor/urllib3/util/retry.py +549 -0
  1084. package/python/lib/python3.12/site-packages/pip/_vendor/urllib3/util/ssl_.py +527 -0
  1085. package/python/lib/python3.12/site-packages/pip/_vendor/urllib3/util/ssl_match_hostname.py +159 -0
  1086. package/python/lib/python3.12/site-packages/pip/_vendor/urllib3/util/ssltransport.py +271 -0
  1087. package/python/lib/python3.12/site-packages/pip/_vendor/urllib3/util/timeout.py +275 -0
  1088. package/python/lib/python3.12/site-packages/pip/_vendor/urllib3/util/url.py +469 -0
  1089. package/python/lib/python3.12/site-packages/pip/_vendor/urllib3/util/util.py +42 -0
  1090. package/python/lib/python3.12/site-packages/pip/_vendor/urllib3/util/wait.py +124 -0
  1091. package/python/lib/python3.12/site-packages/pip/_vendor/vendor.txt +18 -0
  1092. package/python/lib/python3.12/site-packages/pip/py.typed +4 -0
  1093. package/python/lib/python3.12/site-packages/pip-26.1.2.dist-info/INSTALLER +1 -0
  1094. package/python/lib/python3.12/site-packages/pip-26.1.2.dist-info/METADATA +109 -0
  1095. package/python/lib/python3.12/site-packages/pip-26.1.2.dist-info/RECORD +866 -0
  1096. package/python/lib/python3.12/site-packages/pip-26.1.2.dist-info/REQUESTED +0 -0
  1097. package/python/lib/python3.12/site-packages/pip-26.1.2.dist-info/WHEEL +4 -0
  1098. package/python/lib/python3.12/site-packages/pip-26.1.2.dist-info/direct_url.json +1 -0
  1099. package/python/lib/python3.12/site-packages/pip-26.1.2.dist-info/entry_points.txt +4 -0
  1100. package/python/lib/python3.12/site-packages/pip-26.1.2.dist-info/licenses/AUTHORS.txt +868 -0
  1101. package/python/lib/python3.12/site-packages/pip-26.1.2.dist-info/licenses/LICENSE.txt +20 -0
  1102. package/python/lib/python3.12/site-packages/pip-26.1.2.dist-info/licenses/src/pip/_vendor/cachecontrol/LICENSE.txt +13 -0
  1103. package/python/lib/python3.12/site-packages/pip-26.1.2.dist-info/licenses/src/pip/_vendor/certifi/LICENSE +20 -0
  1104. package/python/lib/python3.12/site-packages/pip-26.1.2.dist-info/licenses/src/pip/_vendor/distlib/LICENSE.txt +284 -0
  1105. package/python/lib/python3.12/site-packages/pip-26.1.2.dist-info/licenses/src/pip/_vendor/distro/LICENSE +202 -0
  1106. package/python/lib/python3.12/site-packages/pip-26.1.2.dist-info/licenses/src/pip/_vendor/idna/LICENSE.md +31 -0
  1107. package/python/lib/python3.12/site-packages/pip-26.1.2.dist-info/licenses/src/pip/_vendor/msgpack/COPYING +14 -0
  1108. package/python/lib/python3.12/site-packages/pip-26.1.2.dist-info/licenses/src/pip/_vendor/packaging/LICENSE +3 -0
  1109. package/python/lib/python3.12/site-packages/pip-26.1.2.dist-info/licenses/src/pip/_vendor/packaging/LICENSE.APACHE +177 -0
  1110. package/python/lib/python3.12/site-packages/pip-26.1.2.dist-info/licenses/src/pip/_vendor/packaging/LICENSE.BSD +23 -0
  1111. package/python/lib/python3.12/site-packages/pip-26.1.2.dist-info/licenses/src/pip/_vendor/pkg_resources/LICENSE +17 -0
  1112. package/python/lib/python3.12/site-packages/pip-26.1.2.dist-info/licenses/src/pip/_vendor/platformdirs/LICENSE +21 -0
  1113. package/python/lib/python3.12/site-packages/pip-26.1.2.dist-info/licenses/src/pip/_vendor/pygments/LICENSE +25 -0
  1114. package/python/lib/python3.12/site-packages/pip-26.1.2.dist-info/licenses/src/pip/_vendor/pyproject_hooks/LICENSE +21 -0
  1115. package/python/lib/python3.12/site-packages/pip-26.1.2.dist-info/licenses/src/pip/_vendor/requests/LICENSE +175 -0
  1116. package/python/lib/python3.12/site-packages/pip-26.1.2.dist-info/licenses/src/pip/_vendor/resolvelib/LICENSE +13 -0
  1117. package/python/lib/python3.12/site-packages/pip-26.1.2.dist-info/licenses/src/pip/_vendor/rich/LICENSE +19 -0
  1118. package/python/lib/python3.12/site-packages/pip-26.1.2.dist-info/licenses/src/pip/_vendor/tomli/LICENSE +21 -0
  1119. package/python/lib/python3.12/site-packages/pip-26.1.2.dist-info/licenses/src/pip/_vendor/tomli_w/LICENSE +21 -0
  1120. package/python/lib/python3.12/site-packages/pip-26.1.2.dist-info/licenses/src/pip/_vendor/truststore/LICENSE +21 -0
  1121. package/python/lib/python3.12/site-packages/pip-26.1.2.dist-info/licenses/src/pip/_vendor/urllib3/LICENSE.txt +21 -0
  1122. package/python/lib/python3.12/site.py +693 -0
  1123. package/python/lib/python3.12/smtplib.py +1109 -0
  1124. package/python/lib/python3.12/sndhdr.py +271 -0
  1125. package/python/lib/python3.12/socket.py +983 -0
  1126. package/python/lib/python3.12/socketserver.py +863 -0
  1127. package/python/lib/python3.12/sqlite3/__init__.py +70 -0
  1128. package/python/lib/python3.12/sqlite3/__main__.py +127 -0
  1129. package/python/lib/python3.12/sqlite3/dbapi2.py +108 -0
  1130. package/python/lib/python3.12/sqlite3/dump.py +89 -0
  1131. package/python/lib/python3.12/sre_compile.py +7 -0
  1132. package/python/lib/python3.12/sre_constants.py +7 -0
  1133. package/python/lib/python3.12/sre_parse.py +7 -0
  1134. package/python/lib/python3.12/ssl.py +1488 -0
  1135. package/python/lib/python3.12/stat.py +195 -0
  1136. package/python/lib/python3.12/statistics.py +1454 -0
  1137. package/python/lib/python3.12/string.py +309 -0
  1138. package/python/lib/python3.12/stringprep.py +272 -0
  1139. package/python/lib/python3.12/struct.py +15 -0
  1140. package/python/lib/python3.12/subprocess.py +2216 -0
  1141. package/python/lib/python3.12/sunau.py +533 -0
  1142. package/python/lib/python3.12/symtable.py +362 -0
  1143. package/python/lib/python3.12/sysconfig.py +894 -0
  1144. package/python/lib/python3.12/tabnanny.py +340 -0
  1145. package/python/lib/python3.12/tarfile.py +3031 -0
  1146. package/python/lib/python3.12/telnetlib.py +680 -0
  1147. package/python/lib/python3.12/tempfile.py +956 -0
  1148. package/python/lib/python3.12/textwrap.py +491 -0
  1149. package/python/lib/python3.12/this.py +28 -0
  1150. package/python/lib/python3.12/threading.py +1708 -0
  1151. package/python/lib/python3.12/timeit.py +381 -0
  1152. package/python/lib/python3.12/token.py +143 -0
  1153. package/python/lib/python3.12/tokenize.py +594 -0
  1154. package/python/lib/python3.12/tomllib/__init__.py +10 -0
  1155. package/python/lib/python3.12/tomllib/_parser.py +691 -0
  1156. package/python/lib/python3.12/tomllib/_re.py +107 -0
  1157. package/python/lib/python3.12/tomllib/_types.py +10 -0
  1158. package/python/lib/python3.12/trace.py +748 -0
  1159. package/python/lib/python3.12/traceback.py +1187 -0
  1160. package/python/lib/python3.12/tracemalloc.py +560 -0
  1161. package/python/lib/python3.12/tty.py +73 -0
  1162. package/python/lib/python3.12/turtle.py +4207 -0
  1163. package/python/lib/python3.12/types.py +333 -0
  1164. package/python/lib/python3.12/typing.py +3494 -0
  1165. package/python/lib/python3.12/unittest/__init__.py +85 -0
  1166. package/python/lib/python3.12/unittest/__main__.py +18 -0
  1167. package/python/lib/python3.12/unittest/_log.py +86 -0
  1168. package/python/lib/python3.12/unittest/async_case.py +143 -0
  1169. package/python/lib/python3.12/unittest/case.py +1456 -0
  1170. package/python/lib/python3.12/unittest/loader.py +497 -0
  1171. package/python/lib/python3.12/unittest/main.py +291 -0
  1172. package/python/lib/python3.12/unittest/mock.py +3054 -0
  1173. package/python/lib/python3.12/unittest/result.py +256 -0
  1174. package/python/lib/python3.12/unittest/runner.py +292 -0
  1175. package/python/lib/python3.12/unittest/signals.py +71 -0
  1176. package/python/lib/python3.12/unittest/suite.py +379 -0
  1177. package/python/lib/python3.12/unittest/util.py +170 -0
  1178. package/python/lib/python3.12/urllib/__init__.py +0 -0
  1179. package/python/lib/python3.12/urllib/error.py +74 -0
  1180. package/python/lib/python3.12/urllib/parse.py +1262 -0
  1181. package/python/lib/python3.12/urllib/request.py +2816 -0
  1182. package/python/lib/python3.12/urllib/response.py +84 -0
  1183. package/python/lib/python3.12/urllib/robotparser.py +275 -0
  1184. package/python/lib/python3.12/uu.py +216 -0
  1185. package/python/lib/python3.12/uuid.py +793 -0
  1186. package/python/lib/python3.12/venv/__init__.py +608 -0
  1187. package/python/lib/python3.12/venv/__main__.py +10 -0
  1188. package/python/lib/python3.12/venv/scripts/common/Activate.ps1 +247 -0
  1189. package/python/lib/python3.12/venv/scripts/common/activate +76 -0
  1190. package/python/lib/python3.12/venv/scripts/posix/activate.csh +27 -0
  1191. package/python/lib/python3.12/venv/scripts/posix/activate.fish +69 -0
  1192. package/python/lib/python3.12/warnings.py +598 -0
  1193. package/python/lib/python3.12/wave.py +653 -0
  1194. package/python/lib/python3.12/weakref.py +674 -0
  1195. package/python/lib/python3.12/webbrowser.py +689 -0
  1196. package/python/lib/python3.12/wsgiref/__init__.py +25 -0
  1197. package/python/lib/python3.12/wsgiref/handlers.py +573 -0
  1198. package/python/lib/python3.12/wsgiref/headers.py +192 -0
  1199. package/python/lib/python3.12/wsgiref/simple_server.py +165 -0
  1200. package/python/lib/python3.12/wsgiref/types.py +54 -0
  1201. package/python/lib/python3.12/wsgiref/util.py +159 -0
  1202. package/python/lib/python3.12/wsgiref/validate.py +438 -0
  1203. package/python/lib/python3.12/xdrlib.py +242 -0
  1204. package/python/lib/python3.12/xml/__init__.py +20 -0
  1205. package/python/lib/python3.12/xml/dom/NodeFilter.py +27 -0
  1206. package/python/lib/python3.12/xml/dom/__init__.py +140 -0
  1207. package/python/lib/python3.12/xml/dom/domreg.py +99 -0
  1208. package/python/lib/python3.12/xml/dom/expatbuilder.py +962 -0
  1209. package/python/lib/python3.12/xml/dom/minicompat.py +109 -0
  1210. package/python/lib/python3.12/xml/dom/minidom.py +2008 -0
  1211. package/python/lib/python3.12/xml/dom/pulldom.py +336 -0
  1212. package/python/lib/python3.12/xml/dom/xmlbuilder.py +389 -0
  1213. package/python/lib/python3.12/xml/etree/ElementInclude.py +186 -0
  1214. package/python/lib/python3.12/xml/etree/ElementPath.py +423 -0
  1215. package/python/lib/python3.12/xml/etree/ElementTree.py +2085 -0
  1216. package/python/lib/python3.12/xml/etree/__init__.py +33 -0
  1217. package/python/lib/python3.12/xml/etree/cElementTree.py +3 -0
  1218. package/python/lib/python3.12/xml/parsers/__init__.py +8 -0
  1219. package/python/lib/python3.12/xml/parsers/expat.py +8 -0
  1220. package/python/lib/python3.12/xml/sax/__init__.py +94 -0
  1221. package/python/lib/python3.12/xml/sax/_exceptions.py +127 -0
  1222. package/python/lib/python3.12/xml/sax/expatreader.py +454 -0
  1223. package/python/lib/python3.12/xml/sax/handler.py +387 -0
  1224. package/python/lib/python3.12/xml/sax/saxutils.py +369 -0
  1225. package/python/lib/python3.12/xml/sax/xmlreader.py +378 -0
  1226. package/python/lib/python3.12/xmlrpc/__init__.py +1 -0
  1227. package/python/lib/python3.12/xmlrpc/client.py +1529 -0
  1228. package/python/lib/python3.12/xmlrpc/server.py +1002 -0
  1229. package/python/lib/python3.12/zipapp.py +206 -0
  1230. package/python/lib/python3.12/zipfile/__init__.py +2340 -0
  1231. package/python/lib/python3.12/zipfile/__main__.py +4 -0
  1232. package/python/lib/python3.12/zipfile/_path/__init__.py +412 -0
  1233. package/python/lib/python3.12/zipfile/_path/glob.py +53 -0
  1234. package/python/lib/python3.12/zipimport.py +712 -0
  1235. package/python/lib/python3.12/zoneinfo/__init__.py +31 -0
  1236. package/python/lib/python3.12/zoneinfo/_common.py +164 -0
  1237. package/python/lib/python3.12/zoneinfo/_tzpath.py +181 -0
  1238. package/python/lib/python3.12/zoneinfo/_zoneinfo.py +772 -0
@@ -0,0 +1,1387 @@
1
+ #
2
+ # Module providing manager classes for dealing
3
+ # with shared objects
4
+ #
5
+ # multiprocessing/managers.py
6
+ #
7
+ # Copyright (c) 2006-2008, R Oudkerk
8
+ # Licensed to PSF under a Contributor Agreement.
9
+ #
10
+
11
+ __all__ = [ 'BaseManager', 'SyncManager', 'BaseProxy', 'Token' ]
12
+
13
+ #
14
+ # Imports
15
+ #
16
+
17
+ import sys
18
+ import threading
19
+ import signal
20
+ import array
21
+ import queue
22
+ import time
23
+ import types
24
+ import os
25
+ from os import getpid
26
+
27
+ from traceback import format_exc
28
+
29
+ from . import connection
30
+ from .context import reduction, get_spawning_popen, ProcessError
31
+ from . import pool
32
+ from . import process
33
+ from . import util
34
+ from . import get_context
35
+ try:
36
+ from . import shared_memory
37
+ except ImportError:
38
+ HAS_SHMEM = False
39
+ else:
40
+ HAS_SHMEM = True
41
+ __all__.append('SharedMemoryManager')
42
+
43
+ #
44
+ # Register some things for pickling
45
+ #
46
+
47
+ def reduce_array(a):
48
+ return array.array, (a.typecode, a.tobytes())
49
+ reduction.register(array.array, reduce_array)
50
+
51
+ view_types = [type(getattr({}, name)()) for name in ('items','keys','values')]
52
+ def rebuild_as_list(obj):
53
+ return list, (list(obj),)
54
+ for view_type in view_types:
55
+ reduction.register(view_type, rebuild_as_list)
56
+ del view_type, view_types
57
+
58
+ #
59
+ # Type for identifying shared objects
60
+ #
61
+
62
+ class Token(object):
63
+ '''
64
+ Type to uniquely identify a shared object
65
+ '''
66
+ __slots__ = ('typeid', 'address', 'id')
67
+
68
+ def __init__(self, typeid, address, id):
69
+ (self.typeid, self.address, self.id) = (typeid, address, id)
70
+
71
+ def __getstate__(self):
72
+ return (self.typeid, self.address, self.id)
73
+
74
+ def __setstate__(self, state):
75
+ (self.typeid, self.address, self.id) = state
76
+
77
+ def __repr__(self):
78
+ return '%s(typeid=%r, address=%r, id=%r)' % \
79
+ (self.__class__.__name__, self.typeid, self.address, self.id)
80
+
81
+ #
82
+ # Function for communication with a manager's server process
83
+ #
84
+
85
+ def dispatch(c, id, methodname, args=(), kwds={}):
86
+ '''
87
+ Send a message to manager using connection `c` and return response
88
+ '''
89
+ c.send((id, methodname, args, kwds))
90
+ kind, result = c.recv()
91
+ if kind == '#RETURN':
92
+ return result
93
+ raise convert_to_error(kind, result)
94
+
95
+ def convert_to_error(kind, result):
96
+ if kind == '#ERROR':
97
+ return result
98
+ elif kind in ('#TRACEBACK', '#UNSERIALIZABLE'):
99
+ if not isinstance(result, str):
100
+ raise TypeError(
101
+ "Result {0!r} (kind '{1}') type is {2}, not str".format(
102
+ result, kind, type(result)))
103
+ if kind == '#UNSERIALIZABLE':
104
+ return RemoteError('Unserializable message: %s\n' % result)
105
+ else:
106
+ return RemoteError(result)
107
+ else:
108
+ return ValueError('Unrecognized message type {!r}'.format(kind))
109
+
110
+ class RemoteError(Exception):
111
+ def __str__(self):
112
+ return ('\n' + '-'*75 + '\n' + str(self.args[0]) + '-'*75)
113
+
114
+ #
115
+ # Functions for finding the method names of an object
116
+ #
117
+
118
+ def all_methods(obj):
119
+ '''
120
+ Return a list of names of methods of `obj`
121
+ '''
122
+ temp = []
123
+ for name in dir(obj):
124
+ func = getattr(obj, name)
125
+ if callable(func):
126
+ temp.append(name)
127
+ return temp
128
+
129
+ def public_methods(obj):
130
+ '''
131
+ Return a list of names of methods of `obj` which do not start with '_'
132
+ '''
133
+ return [name for name in all_methods(obj) if name[0] != '_']
134
+
135
+ #
136
+ # Server which is run in a process controlled by a manager
137
+ #
138
+
139
+ class Server(object):
140
+ '''
141
+ Server class which runs in a process controlled by a manager object
142
+ '''
143
+ public = ['shutdown', 'create', 'accept_connection', 'get_methods',
144
+ 'debug_info', 'number_of_objects', 'dummy', 'incref', 'decref']
145
+
146
+ def __init__(self, registry, address, authkey, serializer):
147
+ if not isinstance(authkey, bytes):
148
+ raise TypeError(
149
+ "Authkey {0!r} is type {1!s}, not bytes".format(
150
+ authkey, type(authkey)))
151
+ self.registry = registry
152
+ self.authkey = process.AuthenticationString(authkey)
153
+ Listener, Client = listener_client[serializer]
154
+
155
+ # do authentication later
156
+ self.listener = Listener(address=address, backlog=128)
157
+ self.address = self.listener.address
158
+
159
+ self.id_to_obj = {'0': (None, ())}
160
+ self.id_to_refcount = {}
161
+ self.id_to_local_proxy_obj = {}
162
+ self.mutex = threading.Lock()
163
+
164
+ def serve_forever(self):
165
+ '''
166
+ Run the server forever
167
+ '''
168
+ self.stop_event = threading.Event()
169
+ process.current_process()._manager_server = self
170
+ try:
171
+ accepter = threading.Thread(target=self.accepter)
172
+ accepter.daemon = True
173
+ accepter.start()
174
+ try:
175
+ while not self.stop_event.is_set():
176
+ self.stop_event.wait(1)
177
+ except (KeyboardInterrupt, SystemExit):
178
+ pass
179
+ finally:
180
+ if sys.stdout != sys.__stdout__: # what about stderr?
181
+ util.debug('resetting stdout, stderr')
182
+ sys.stdout = sys.__stdout__
183
+ sys.stderr = sys.__stderr__
184
+ sys.exit(0)
185
+
186
+ def accepter(self):
187
+ while True:
188
+ try:
189
+ c = self.listener.accept()
190
+ except OSError:
191
+ continue
192
+ t = threading.Thread(target=self.handle_request, args=(c,))
193
+ t.daemon = True
194
+ t.start()
195
+
196
+ def _handle_request(self, c):
197
+ request = None
198
+ try:
199
+ connection.deliver_challenge(c, self.authkey)
200
+ connection.answer_challenge(c, self.authkey)
201
+ request = c.recv()
202
+ ignore, funcname, args, kwds = request
203
+ assert funcname in self.public, '%r unrecognized' % funcname
204
+ func = getattr(self, funcname)
205
+ except Exception:
206
+ msg = ('#TRACEBACK', format_exc())
207
+ else:
208
+ try:
209
+ result = func(c, *args, **kwds)
210
+ except Exception:
211
+ msg = ('#TRACEBACK', format_exc())
212
+ else:
213
+ msg = ('#RETURN', result)
214
+
215
+ try:
216
+ c.send(msg)
217
+ except Exception as e:
218
+ try:
219
+ c.send(('#TRACEBACK', format_exc()))
220
+ except Exception:
221
+ pass
222
+ util.info('Failure to send message: %r', msg)
223
+ util.info(' ... request was %r', request)
224
+ util.info(' ... exception was %r', e)
225
+
226
+ def handle_request(self, conn):
227
+ '''
228
+ Handle a new connection
229
+ '''
230
+ try:
231
+ self._handle_request(conn)
232
+ except SystemExit:
233
+ # Server.serve_client() calls sys.exit(0) on EOF
234
+ pass
235
+ finally:
236
+ conn.close()
237
+
238
+ def serve_client(self, conn):
239
+ '''
240
+ Handle requests from the proxies in a particular process/thread
241
+ '''
242
+ util.debug('starting server thread to service %r',
243
+ threading.current_thread().name)
244
+
245
+ recv = conn.recv
246
+ send = conn.send
247
+ id_to_obj = self.id_to_obj
248
+
249
+ while not self.stop_event.is_set():
250
+
251
+ try:
252
+ methodname = obj = None
253
+ request = recv()
254
+ ident, methodname, args, kwds = request
255
+ try:
256
+ obj, exposed, gettypeid = id_to_obj[ident]
257
+ except KeyError as ke:
258
+ try:
259
+ obj, exposed, gettypeid = \
260
+ self.id_to_local_proxy_obj[ident]
261
+ except KeyError:
262
+ raise ke
263
+
264
+ if methodname not in exposed:
265
+ raise AttributeError(
266
+ 'method %r of %r object is not in exposed=%r' %
267
+ (methodname, type(obj), exposed)
268
+ )
269
+
270
+ function = getattr(obj, methodname)
271
+
272
+ try:
273
+ res = function(*args, **kwds)
274
+ except Exception as e:
275
+ msg = ('#ERROR', e)
276
+ else:
277
+ typeid = gettypeid and gettypeid.get(methodname, None)
278
+ if typeid:
279
+ rident, rexposed = self.create(conn, typeid, res)
280
+ token = Token(typeid, self.address, rident)
281
+ msg = ('#PROXY', (rexposed, token))
282
+ else:
283
+ msg = ('#RETURN', res)
284
+
285
+ except AttributeError:
286
+ if methodname is None:
287
+ msg = ('#TRACEBACK', format_exc())
288
+ else:
289
+ try:
290
+ fallback_func = self.fallback_mapping[methodname]
291
+ result = fallback_func(
292
+ self, conn, ident, obj, *args, **kwds
293
+ )
294
+ msg = ('#RETURN', result)
295
+ except Exception:
296
+ msg = ('#TRACEBACK', format_exc())
297
+
298
+ except EOFError:
299
+ util.debug('got EOF -- exiting thread serving %r',
300
+ threading.current_thread().name)
301
+ sys.exit(0)
302
+
303
+ except Exception:
304
+ msg = ('#TRACEBACK', format_exc())
305
+
306
+ try:
307
+ try:
308
+ send(msg)
309
+ except Exception:
310
+ send(('#UNSERIALIZABLE', format_exc()))
311
+ except Exception as e:
312
+ util.info('exception in thread serving %r',
313
+ threading.current_thread().name)
314
+ util.info(' ... message was %r', msg)
315
+ util.info(' ... exception was %r', e)
316
+ conn.close()
317
+ sys.exit(1)
318
+
319
+ def fallback_getvalue(self, conn, ident, obj):
320
+ return obj
321
+
322
+ def fallback_str(self, conn, ident, obj):
323
+ return str(obj)
324
+
325
+ def fallback_repr(self, conn, ident, obj):
326
+ return repr(obj)
327
+
328
+ fallback_mapping = {
329
+ '__str__':fallback_str,
330
+ '__repr__':fallback_repr,
331
+ '#GETVALUE':fallback_getvalue
332
+ }
333
+
334
+ def dummy(self, c):
335
+ pass
336
+
337
+ def debug_info(self, c):
338
+ '''
339
+ Return some info --- useful to spot problems with refcounting
340
+ '''
341
+ # Perhaps include debug info about 'c'?
342
+ with self.mutex:
343
+ result = []
344
+ keys = list(self.id_to_refcount.keys())
345
+ keys.sort()
346
+ for ident in keys:
347
+ if ident != '0':
348
+ result.append(' %s: refcount=%s\n %s' %
349
+ (ident, self.id_to_refcount[ident],
350
+ str(self.id_to_obj[ident][0])[:75]))
351
+ return '\n'.join(result)
352
+
353
+ def number_of_objects(self, c):
354
+ '''
355
+ Number of shared objects
356
+ '''
357
+ # Doesn't use (len(self.id_to_obj) - 1) as we shouldn't count ident='0'
358
+ return len(self.id_to_refcount)
359
+
360
+ def shutdown(self, c):
361
+ '''
362
+ Shutdown this process
363
+ '''
364
+ try:
365
+ util.debug('manager received shutdown message')
366
+ c.send(('#RETURN', None))
367
+ except:
368
+ import traceback
369
+ traceback.print_exc()
370
+ finally:
371
+ self.stop_event.set()
372
+
373
+ def create(self, c, typeid, /, *args, **kwds):
374
+ '''
375
+ Create a new shared object and return its id
376
+ '''
377
+ with self.mutex:
378
+ callable, exposed, method_to_typeid, proxytype = \
379
+ self.registry[typeid]
380
+
381
+ if callable is None:
382
+ if kwds or (len(args) != 1):
383
+ raise ValueError(
384
+ "Without callable, must have one non-keyword argument")
385
+ obj = args[0]
386
+ else:
387
+ obj = callable(*args, **kwds)
388
+
389
+ if exposed is None:
390
+ exposed = public_methods(obj)
391
+ if method_to_typeid is not None:
392
+ if not isinstance(method_to_typeid, dict):
393
+ raise TypeError(
394
+ "Method_to_typeid {0!r}: type {1!s}, not dict".format(
395
+ method_to_typeid, type(method_to_typeid)))
396
+ exposed = list(exposed) + list(method_to_typeid)
397
+
398
+ ident = '%x' % id(obj) # convert to string because xmlrpclib
399
+ # only has 32 bit signed integers
400
+ util.debug('%r callable returned object with id %r', typeid, ident)
401
+
402
+ self.id_to_obj[ident] = (obj, set(exposed), method_to_typeid)
403
+ if ident not in self.id_to_refcount:
404
+ self.id_to_refcount[ident] = 0
405
+
406
+ self.incref(c, ident)
407
+ return ident, tuple(exposed)
408
+
409
+ def get_methods(self, c, token):
410
+ '''
411
+ Return the methods of the shared object indicated by token
412
+ '''
413
+ return tuple(self.id_to_obj[token.id][1])
414
+
415
+ def accept_connection(self, c, name):
416
+ '''
417
+ Spawn a new thread to serve this connection
418
+ '''
419
+ threading.current_thread().name = name
420
+ c.send(('#RETURN', None))
421
+ self.serve_client(c)
422
+
423
+ def incref(self, c, ident):
424
+ with self.mutex:
425
+ try:
426
+ self.id_to_refcount[ident] += 1
427
+ except KeyError as ke:
428
+ # If no external references exist but an internal (to the
429
+ # manager) still does and a new external reference is created
430
+ # from it, restore the manager's tracking of it from the
431
+ # previously stashed internal ref.
432
+ if ident in self.id_to_local_proxy_obj:
433
+ self.id_to_refcount[ident] = 1
434
+ self.id_to_obj[ident] = \
435
+ self.id_to_local_proxy_obj[ident]
436
+ util.debug('Server re-enabled tracking & INCREF %r', ident)
437
+ else:
438
+ raise ke
439
+
440
+ def decref(self, c, ident):
441
+ if ident not in self.id_to_refcount and \
442
+ ident in self.id_to_local_proxy_obj:
443
+ util.debug('Server DECREF skipping %r', ident)
444
+ return
445
+
446
+ with self.mutex:
447
+ if self.id_to_refcount[ident] <= 0:
448
+ raise AssertionError(
449
+ "Id {0!s} ({1!r}) has refcount {2:n}, not 1+".format(
450
+ ident, self.id_to_obj[ident],
451
+ self.id_to_refcount[ident]))
452
+ self.id_to_refcount[ident] -= 1
453
+ if self.id_to_refcount[ident] == 0:
454
+ del self.id_to_refcount[ident]
455
+
456
+ if ident not in self.id_to_refcount:
457
+ # Two-step process in case the object turns out to contain other
458
+ # proxy objects (e.g. a managed list of managed lists).
459
+ # Otherwise, deleting self.id_to_obj[ident] would trigger the
460
+ # deleting of the stored value (another managed object) which would
461
+ # in turn attempt to acquire the mutex that is already held here.
462
+ self.id_to_obj[ident] = (None, (), None) # thread-safe
463
+ util.debug('disposing of obj with id %r', ident)
464
+ with self.mutex:
465
+ del self.id_to_obj[ident]
466
+
467
+
468
+ #
469
+ # Class to represent state of a manager
470
+ #
471
+
472
+ class State(object):
473
+ __slots__ = ['value']
474
+ INITIAL = 0
475
+ STARTED = 1
476
+ SHUTDOWN = 2
477
+
478
+ #
479
+ # Mapping from serializer name to Listener and Client types
480
+ #
481
+
482
+ listener_client = {
483
+ 'pickle' : (connection.Listener, connection.Client),
484
+ 'xmlrpclib' : (connection.XmlListener, connection.XmlClient)
485
+ }
486
+
487
+ #
488
+ # Definition of BaseManager
489
+ #
490
+
491
+ class BaseManager(object):
492
+ '''
493
+ Base class for managers
494
+ '''
495
+ _registry = {}
496
+ _Server = Server
497
+
498
+ def __init__(self, address=None, authkey=None, serializer='pickle',
499
+ ctx=None, *, shutdown_timeout=1.0):
500
+ if authkey is None:
501
+ authkey = process.current_process().authkey
502
+ self._address = address # XXX not final address if eg ('', 0)
503
+ self._authkey = process.AuthenticationString(authkey)
504
+ self._state = State()
505
+ self._state.value = State.INITIAL
506
+ self._serializer = serializer
507
+ self._Listener, self._Client = listener_client[serializer]
508
+ self._ctx = ctx or get_context()
509
+ self._shutdown_timeout = shutdown_timeout
510
+
511
+ def get_server(self):
512
+ '''
513
+ Return server object with serve_forever() method and address attribute
514
+ '''
515
+ if self._state.value != State.INITIAL:
516
+ if self._state.value == State.STARTED:
517
+ raise ProcessError("Already started server")
518
+ elif self._state.value == State.SHUTDOWN:
519
+ raise ProcessError("Manager has shut down")
520
+ else:
521
+ raise ProcessError(
522
+ "Unknown state {!r}".format(self._state.value))
523
+ return Server(self._registry, self._address,
524
+ self._authkey, self._serializer)
525
+
526
+ def connect(self):
527
+ '''
528
+ Connect manager object to the server process
529
+ '''
530
+ Listener, Client = listener_client[self._serializer]
531
+ conn = Client(self._address, authkey=self._authkey)
532
+ dispatch(conn, None, 'dummy')
533
+ self._state.value = State.STARTED
534
+
535
+ def start(self, initializer=None, initargs=()):
536
+ '''
537
+ Spawn a server process for this manager object
538
+ '''
539
+ if self._state.value != State.INITIAL:
540
+ if self._state.value == State.STARTED:
541
+ raise ProcessError("Already started server")
542
+ elif self._state.value == State.SHUTDOWN:
543
+ raise ProcessError("Manager has shut down")
544
+ else:
545
+ raise ProcessError(
546
+ "Unknown state {!r}".format(self._state.value))
547
+
548
+ if initializer is not None and not callable(initializer):
549
+ raise TypeError('initializer must be a callable')
550
+
551
+ # pipe over which we will retrieve address of server
552
+ reader, writer = connection.Pipe(duplex=False)
553
+
554
+ # spawn process which runs a server
555
+ self._process = self._ctx.Process(
556
+ target=type(self)._run_server,
557
+ args=(self._registry, self._address, self._authkey,
558
+ self._serializer, writer, initializer, initargs),
559
+ )
560
+ ident = ':'.join(str(i) for i in self._process._identity)
561
+ self._process.name = type(self).__name__ + '-' + ident
562
+ self._process.start()
563
+
564
+ # get address of server
565
+ writer.close()
566
+ self._address = reader.recv()
567
+ reader.close()
568
+
569
+ # register a finalizer
570
+ self._state.value = State.STARTED
571
+ self.shutdown = util.Finalize(
572
+ self, type(self)._finalize_manager,
573
+ args=(self._process, self._address, self._authkey, self._state,
574
+ self._Client, self._shutdown_timeout),
575
+ exitpriority=0
576
+ )
577
+
578
+ @classmethod
579
+ def _run_server(cls, registry, address, authkey, serializer, writer,
580
+ initializer=None, initargs=()):
581
+ '''
582
+ Create a server, report its address and run it
583
+ '''
584
+ # bpo-36368: protect server process from KeyboardInterrupt signals
585
+ signal.signal(signal.SIGINT, signal.SIG_IGN)
586
+
587
+ if initializer is not None:
588
+ initializer(*initargs)
589
+
590
+ # create server
591
+ server = cls._Server(registry, address, authkey, serializer)
592
+
593
+ # inform parent process of the server's address
594
+ writer.send(server.address)
595
+ writer.close()
596
+
597
+ # run the manager
598
+ util.info('manager serving at %r', server.address)
599
+ server.serve_forever()
600
+
601
+ def _create(self, typeid, /, *args, **kwds):
602
+ '''
603
+ Create a new shared object; return the token and exposed tuple
604
+ '''
605
+ assert self._state.value == State.STARTED, 'server not yet started'
606
+ conn = self._Client(self._address, authkey=self._authkey)
607
+ try:
608
+ id, exposed = dispatch(conn, None, 'create', (typeid,)+args, kwds)
609
+ finally:
610
+ conn.close()
611
+ return Token(typeid, self._address, id), exposed
612
+
613
+ def join(self, timeout=None):
614
+ '''
615
+ Join the manager process (if it has been spawned)
616
+ '''
617
+ if self._process is not None:
618
+ self._process.join(timeout)
619
+ if not self._process.is_alive():
620
+ self._process = None
621
+
622
+ def _debug_info(self):
623
+ '''
624
+ Return some info about the servers shared objects and connections
625
+ '''
626
+ conn = self._Client(self._address, authkey=self._authkey)
627
+ try:
628
+ return dispatch(conn, None, 'debug_info')
629
+ finally:
630
+ conn.close()
631
+
632
+ def _number_of_objects(self):
633
+ '''
634
+ Return the number of shared objects
635
+ '''
636
+ conn = self._Client(self._address, authkey=self._authkey)
637
+ try:
638
+ return dispatch(conn, None, 'number_of_objects')
639
+ finally:
640
+ conn.close()
641
+
642
+ def __enter__(self):
643
+ if self._state.value == State.INITIAL:
644
+ self.start()
645
+ if self._state.value != State.STARTED:
646
+ if self._state.value == State.INITIAL:
647
+ raise ProcessError("Unable to start server")
648
+ elif self._state.value == State.SHUTDOWN:
649
+ raise ProcessError("Manager has shut down")
650
+ else:
651
+ raise ProcessError(
652
+ "Unknown state {!r}".format(self._state.value))
653
+ return self
654
+
655
+ def __exit__(self, exc_type, exc_val, exc_tb):
656
+ self.shutdown()
657
+
658
+ @staticmethod
659
+ def _finalize_manager(process, address, authkey, state, _Client,
660
+ shutdown_timeout):
661
+ '''
662
+ Shutdown the manager process; will be registered as a finalizer
663
+ '''
664
+ if process.is_alive():
665
+ util.info('sending shutdown message to manager')
666
+ try:
667
+ conn = _Client(address, authkey=authkey)
668
+ try:
669
+ dispatch(conn, None, 'shutdown')
670
+ finally:
671
+ conn.close()
672
+ except Exception:
673
+ pass
674
+
675
+ process.join(timeout=shutdown_timeout)
676
+ if process.is_alive():
677
+ util.info('manager still alive')
678
+ if hasattr(process, 'terminate'):
679
+ util.info('trying to `terminate()` manager process')
680
+ process.terminate()
681
+ process.join(timeout=shutdown_timeout)
682
+ if process.is_alive():
683
+ util.info('manager still alive after terminate')
684
+ process.kill()
685
+ process.join()
686
+
687
+ state.value = State.SHUTDOWN
688
+ try:
689
+ del BaseProxy._address_to_local[address]
690
+ except KeyError:
691
+ pass
692
+
693
+ @property
694
+ def address(self):
695
+ return self._address
696
+
697
+ @classmethod
698
+ def register(cls, typeid, callable=None, proxytype=None, exposed=None,
699
+ method_to_typeid=None, create_method=True):
700
+ '''
701
+ Register a typeid with the manager type
702
+ '''
703
+ if '_registry' not in cls.__dict__:
704
+ cls._registry = cls._registry.copy()
705
+
706
+ if proxytype is None:
707
+ proxytype = AutoProxy
708
+
709
+ exposed = exposed or getattr(proxytype, '_exposed_', None)
710
+
711
+ method_to_typeid = method_to_typeid or \
712
+ getattr(proxytype, '_method_to_typeid_', None)
713
+
714
+ if method_to_typeid:
715
+ for key, value in list(method_to_typeid.items()): # isinstance?
716
+ assert type(key) is str, '%r is not a string' % key
717
+ assert type(value) is str, '%r is not a string' % value
718
+
719
+ cls._registry[typeid] = (
720
+ callable, exposed, method_to_typeid, proxytype
721
+ )
722
+
723
+ if create_method:
724
+ def temp(self, /, *args, **kwds):
725
+ util.debug('requesting creation of a shared %r object', typeid)
726
+ token, exp = self._create(typeid, *args, **kwds)
727
+ proxy = proxytype(
728
+ token, self._serializer, manager=self,
729
+ authkey=self._authkey, exposed=exp
730
+ )
731
+ conn = self._Client(token.address, authkey=self._authkey)
732
+ dispatch(conn, None, 'decref', (token.id,))
733
+ return proxy
734
+ temp.__name__ = typeid
735
+ setattr(cls, typeid, temp)
736
+
737
+ #
738
+ # Subclass of set which get cleared after a fork
739
+ #
740
+
741
+ class ProcessLocalSet(set):
742
+ def __init__(self):
743
+ util.register_after_fork(self, lambda obj: obj.clear())
744
+ def __reduce__(self):
745
+ return type(self), ()
746
+
747
+ #
748
+ # Definition of BaseProxy
749
+ #
750
+
751
+ class BaseProxy(object):
752
+ '''
753
+ A base for proxies of shared objects
754
+ '''
755
+ _address_to_local = {}
756
+ _mutex = util.ForkAwareThreadLock()
757
+
758
+ # Each instance gets a `_serial` number. Unlike `id(...)`, this number
759
+ # is never reused.
760
+ _next_serial = 1
761
+
762
+ def __init__(self, token, serializer, manager=None,
763
+ authkey=None, exposed=None, incref=True, manager_owned=False):
764
+ with BaseProxy._mutex:
765
+ tls_serials = BaseProxy._address_to_local.get(token.address, None)
766
+ if tls_serials is None:
767
+ tls_serials = util.ForkAwareLocal(), ProcessLocalSet()
768
+ BaseProxy._address_to_local[token.address] = tls_serials
769
+
770
+ self._serial = BaseProxy._next_serial
771
+ BaseProxy._next_serial += 1
772
+
773
+ # self._tls is used to record the connection used by this
774
+ # thread to communicate with the manager at token.address
775
+ self._tls = tls_serials[0]
776
+
777
+ # self._all_serials is a set used to record the identities of all
778
+ # shared objects for which the current process owns references and
779
+ # which are in the manager at token.address
780
+ self._all_serials = tls_serials[1]
781
+
782
+ self._token = token
783
+ self._id = self._token.id
784
+ self._manager = manager
785
+ self._serializer = serializer
786
+ self._Client = listener_client[serializer][1]
787
+
788
+ # Should be set to True only when a proxy object is being created
789
+ # on the manager server; primary use case: nested proxy objects.
790
+ # RebuildProxy detects when a proxy is being created on the manager
791
+ # and sets this value appropriately.
792
+ self._owned_by_manager = manager_owned
793
+
794
+ if authkey is not None:
795
+ self._authkey = process.AuthenticationString(authkey)
796
+ elif self._manager is not None:
797
+ self._authkey = self._manager._authkey
798
+ else:
799
+ self._authkey = process.current_process().authkey
800
+
801
+ if incref:
802
+ self._incref()
803
+
804
+ util.register_after_fork(self, BaseProxy._after_fork)
805
+
806
+ def _connect(self):
807
+ util.debug('making connection to manager')
808
+ name = process.current_process().name
809
+ if threading.current_thread().name != 'MainThread':
810
+ name += '|' + threading.current_thread().name
811
+ conn = self._Client(self._token.address, authkey=self._authkey)
812
+ dispatch(conn, None, 'accept_connection', (name,))
813
+ self._tls.connection = conn
814
+
815
+ def _callmethod(self, methodname, args=(), kwds={}):
816
+ '''
817
+ Try to call a method of the referent and return a copy of the result
818
+ '''
819
+ try:
820
+ conn = self._tls.connection
821
+ except AttributeError:
822
+ util.debug('thread %r does not own a connection',
823
+ threading.current_thread().name)
824
+ self._connect()
825
+ conn = self._tls.connection
826
+
827
+ conn.send((self._id, methodname, args, kwds))
828
+ kind, result = conn.recv()
829
+
830
+ if kind == '#RETURN':
831
+ return result
832
+ elif kind == '#PROXY':
833
+ exposed, token = result
834
+ proxytype = self._manager._registry[token.typeid][-1]
835
+ token.address = self._token.address
836
+ proxy = proxytype(
837
+ token, self._serializer, manager=self._manager,
838
+ authkey=self._authkey, exposed=exposed
839
+ )
840
+ conn = self._Client(token.address, authkey=self._authkey)
841
+ dispatch(conn, None, 'decref', (token.id,))
842
+ return proxy
843
+ raise convert_to_error(kind, result)
844
+
845
+ def _getvalue(self):
846
+ '''
847
+ Get a copy of the value of the referent
848
+ '''
849
+ return self._callmethod('#GETVALUE')
850
+
851
+ def _incref(self):
852
+ if self._owned_by_manager:
853
+ util.debug('owned_by_manager skipped INCREF of %r', self._token.id)
854
+ return
855
+
856
+ conn = self._Client(self._token.address, authkey=self._authkey)
857
+ dispatch(conn, None, 'incref', (self._id,))
858
+ util.debug('INCREF %r', self._token.id)
859
+
860
+ self._all_serials.add(self._serial)
861
+
862
+ state = self._manager and self._manager._state
863
+
864
+ self._close = util.Finalize(
865
+ self, BaseProxy._decref,
866
+ args=(self._token, self._serial, self._authkey, state,
867
+ self._tls, self._all_serials, self._Client),
868
+ exitpriority=10
869
+ )
870
+
871
+ @staticmethod
872
+ def _decref(token, serial, authkey, state, tls, idset, _Client):
873
+ idset.discard(serial)
874
+
875
+ # check whether manager is still alive
876
+ if state is None or state.value == State.STARTED:
877
+ # tell manager this process no longer cares about referent
878
+ try:
879
+ util.debug('DECREF %r', token.id)
880
+ conn = _Client(token.address, authkey=authkey)
881
+ dispatch(conn, None, 'decref', (token.id,))
882
+ except Exception as e:
883
+ util.debug('... decref failed %s', e)
884
+
885
+ else:
886
+ util.debug('DECREF %r -- manager already shutdown', token.id)
887
+
888
+ # check whether we can close this thread's connection because
889
+ # the process owns no more references to objects for this manager
890
+ if not idset and hasattr(tls, 'connection'):
891
+ util.debug('thread %r has no more proxies so closing conn',
892
+ threading.current_thread().name)
893
+ tls.connection.close()
894
+ del tls.connection
895
+
896
+ def _after_fork(self):
897
+ self._manager = None
898
+ try:
899
+ self._incref()
900
+ except Exception as e:
901
+ # the proxy may just be for a manager which has shutdown
902
+ util.info('incref failed: %s' % e)
903
+
904
+ def __reduce__(self):
905
+ kwds = {}
906
+ if get_spawning_popen() is not None:
907
+ kwds['authkey'] = self._authkey
908
+
909
+ if getattr(self, '_isauto', False):
910
+ kwds['exposed'] = self._exposed_
911
+ return (RebuildProxy,
912
+ (AutoProxy, self._token, self._serializer, kwds))
913
+ else:
914
+ return (RebuildProxy,
915
+ (type(self), self._token, self._serializer, kwds))
916
+
917
+ def __deepcopy__(self, memo):
918
+ return self._getvalue()
919
+
920
+ def __repr__(self):
921
+ return '<%s object, typeid %r at %#x>' % \
922
+ (type(self).__name__, self._token.typeid, id(self))
923
+
924
+ def __str__(self):
925
+ '''
926
+ Return representation of the referent (or a fall-back if that fails)
927
+ '''
928
+ try:
929
+ return self._callmethod('__repr__')
930
+ except Exception:
931
+ return repr(self)[:-1] + "; '__str__()' failed>"
932
+
933
+ #
934
+ # Function used for unpickling
935
+ #
936
+
937
+ def RebuildProxy(func, token, serializer, kwds):
938
+ '''
939
+ Function used for unpickling proxy objects.
940
+ '''
941
+ server = getattr(process.current_process(), '_manager_server', None)
942
+ if server and server.address == token.address:
943
+ util.debug('Rebuild a proxy owned by manager, token=%r', token)
944
+ kwds['manager_owned'] = True
945
+ if token.id not in server.id_to_local_proxy_obj:
946
+ server.id_to_local_proxy_obj[token.id] = \
947
+ server.id_to_obj[token.id]
948
+ incref = (
949
+ kwds.pop('incref', True) and
950
+ not getattr(process.current_process(), '_inheriting', False)
951
+ )
952
+ return func(token, serializer, incref=incref, **kwds)
953
+
954
+ #
955
+ # Functions to create proxies and proxy types
956
+ #
957
+
958
+ def MakeProxyType(name, exposed, _cache={}):
959
+ '''
960
+ Return a proxy type whose methods are given by `exposed`
961
+ '''
962
+ exposed = tuple(exposed)
963
+ try:
964
+ return _cache[(name, exposed)]
965
+ except KeyError:
966
+ pass
967
+
968
+ dic = {}
969
+
970
+ for meth in exposed:
971
+ exec('''def %s(self, /, *args, **kwds):
972
+ return self._callmethod(%r, args, kwds)''' % (meth, meth), dic)
973
+
974
+ ProxyType = type(name, (BaseProxy,), dic)
975
+ ProxyType._exposed_ = exposed
976
+ _cache[(name, exposed)] = ProxyType
977
+ return ProxyType
978
+
979
+
980
+ def AutoProxy(token, serializer, manager=None, authkey=None,
981
+ exposed=None, incref=True, manager_owned=False):
982
+ '''
983
+ Return an auto-proxy for `token`
984
+ '''
985
+ _Client = listener_client[serializer][1]
986
+
987
+ if exposed is None:
988
+ conn = _Client(token.address, authkey=authkey)
989
+ try:
990
+ exposed = dispatch(conn, None, 'get_methods', (token,))
991
+ finally:
992
+ conn.close()
993
+
994
+ if authkey is None and manager is not None:
995
+ authkey = manager._authkey
996
+ if authkey is None:
997
+ authkey = process.current_process().authkey
998
+
999
+ ProxyType = MakeProxyType('AutoProxy[%s]' % token.typeid, exposed)
1000
+ proxy = ProxyType(token, serializer, manager=manager, authkey=authkey,
1001
+ incref=incref, manager_owned=manager_owned)
1002
+ proxy._isauto = True
1003
+ return proxy
1004
+
1005
+ #
1006
+ # Types/callables which we will register with SyncManager
1007
+ #
1008
+
1009
+ class Namespace(object):
1010
+ def __init__(self, /, **kwds):
1011
+ self.__dict__.update(kwds)
1012
+ def __repr__(self):
1013
+ items = list(self.__dict__.items())
1014
+ temp = []
1015
+ for name, value in items:
1016
+ if not name.startswith('_'):
1017
+ temp.append('%s=%r' % (name, value))
1018
+ temp.sort()
1019
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(temp))
1020
+
1021
+ class Value(object):
1022
+ def __init__(self, typecode, value, lock=True):
1023
+ self._typecode = typecode
1024
+ self._value = value
1025
+ def get(self):
1026
+ return self._value
1027
+ def set(self, value):
1028
+ self._value = value
1029
+ def __repr__(self):
1030
+ return '%s(%r, %r)'%(type(self).__name__, self._typecode, self._value)
1031
+ value = property(get, set)
1032
+
1033
+ def Array(typecode, sequence, lock=True):
1034
+ return array.array(typecode, sequence)
1035
+
1036
+ #
1037
+ # Proxy types used by SyncManager
1038
+ #
1039
+
1040
+ class IteratorProxy(BaseProxy):
1041
+ _exposed_ = ('__next__', 'send', 'throw', 'close')
1042
+ def __iter__(self):
1043
+ return self
1044
+ def __next__(self, *args):
1045
+ return self._callmethod('__next__', args)
1046
+ def send(self, *args):
1047
+ return self._callmethod('send', args)
1048
+ def throw(self, *args):
1049
+ return self._callmethod('throw', args)
1050
+ def close(self, *args):
1051
+ return self._callmethod('close', args)
1052
+
1053
+
1054
+ class AcquirerProxy(BaseProxy):
1055
+ _exposed_ = ('acquire', 'release')
1056
+ def acquire(self, blocking=True, timeout=None):
1057
+ args = (blocking,) if timeout is None else (blocking, timeout)
1058
+ return self._callmethod('acquire', args)
1059
+ def release(self):
1060
+ return self._callmethod('release')
1061
+ def __enter__(self):
1062
+ return self._callmethod('acquire')
1063
+ def __exit__(self, exc_type, exc_val, exc_tb):
1064
+ return self._callmethod('release')
1065
+
1066
+
1067
+ class ConditionProxy(AcquirerProxy):
1068
+ _exposed_ = ('acquire', 'release', 'wait', 'notify', 'notify_all')
1069
+ def wait(self, timeout=None):
1070
+ return self._callmethod('wait', (timeout,))
1071
+ def notify(self, n=1):
1072
+ return self._callmethod('notify', (n,))
1073
+ def notify_all(self):
1074
+ return self._callmethod('notify_all')
1075
+ def wait_for(self, predicate, timeout=None):
1076
+ result = predicate()
1077
+ if result:
1078
+ return result
1079
+ if timeout is not None:
1080
+ endtime = time.monotonic() + timeout
1081
+ else:
1082
+ endtime = None
1083
+ waittime = None
1084
+ while not result:
1085
+ if endtime is not None:
1086
+ waittime = endtime - time.monotonic()
1087
+ if waittime <= 0:
1088
+ break
1089
+ self.wait(waittime)
1090
+ result = predicate()
1091
+ return result
1092
+
1093
+
1094
+ class EventProxy(BaseProxy):
1095
+ _exposed_ = ('is_set', 'set', 'clear', 'wait')
1096
+ def is_set(self):
1097
+ return self._callmethod('is_set')
1098
+ def set(self):
1099
+ return self._callmethod('set')
1100
+ def clear(self):
1101
+ return self._callmethod('clear')
1102
+ def wait(self, timeout=None):
1103
+ return self._callmethod('wait', (timeout,))
1104
+
1105
+
1106
+ class BarrierProxy(BaseProxy):
1107
+ _exposed_ = ('__getattribute__', 'wait', 'abort', 'reset')
1108
+ def wait(self, timeout=None):
1109
+ return self._callmethod('wait', (timeout,))
1110
+ def abort(self):
1111
+ return self._callmethod('abort')
1112
+ def reset(self):
1113
+ return self._callmethod('reset')
1114
+ @property
1115
+ def parties(self):
1116
+ return self._callmethod('__getattribute__', ('parties',))
1117
+ @property
1118
+ def n_waiting(self):
1119
+ return self._callmethod('__getattribute__', ('n_waiting',))
1120
+ @property
1121
+ def broken(self):
1122
+ return self._callmethod('__getattribute__', ('broken',))
1123
+
1124
+
1125
+ class NamespaceProxy(BaseProxy):
1126
+ _exposed_ = ('__getattribute__', '__setattr__', '__delattr__')
1127
+ def __getattr__(self, key):
1128
+ if key[0] == '_':
1129
+ return object.__getattribute__(self, key)
1130
+ callmethod = object.__getattribute__(self, '_callmethod')
1131
+ return callmethod('__getattribute__', (key,))
1132
+ def __setattr__(self, key, value):
1133
+ if key[0] == '_':
1134
+ return object.__setattr__(self, key, value)
1135
+ callmethod = object.__getattribute__(self, '_callmethod')
1136
+ return callmethod('__setattr__', (key, value))
1137
+ def __delattr__(self, key):
1138
+ if key[0] == '_':
1139
+ return object.__delattr__(self, key)
1140
+ callmethod = object.__getattribute__(self, '_callmethod')
1141
+ return callmethod('__delattr__', (key,))
1142
+
1143
+
1144
+ class ValueProxy(BaseProxy):
1145
+ _exposed_ = ('get', 'set')
1146
+ def get(self):
1147
+ return self._callmethod('get')
1148
+ def set(self, value):
1149
+ return self._callmethod('set', (value,))
1150
+ value = property(get, set)
1151
+
1152
+ __class_getitem__ = classmethod(types.GenericAlias)
1153
+
1154
+
1155
+ BaseListProxy = MakeProxyType('BaseListProxy', (
1156
+ '__add__', '__contains__', '__delitem__', '__getitem__', '__len__',
1157
+ '__mul__', '__reversed__', '__rmul__', '__setitem__',
1158
+ 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove',
1159
+ 'reverse', 'sort', '__imul__'
1160
+ ))
1161
+ class ListProxy(BaseListProxy):
1162
+ def __iadd__(self, value):
1163
+ self._callmethod('extend', (value,))
1164
+ return self
1165
+ def __imul__(self, value):
1166
+ self._callmethod('__imul__', (value,))
1167
+ return self
1168
+
1169
+
1170
+ DictProxy = MakeProxyType('DictProxy', (
1171
+ '__contains__', '__delitem__', '__getitem__', '__iter__', '__len__',
1172
+ '__setitem__', 'clear', 'copy', 'get', 'items',
1173
+ 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values'
1174
+ ))
1175
+ DictProxy._method_to_typeid_ = {
1176
+ '__iter__': 'Iterator',
1177
+ }
1178
+
1179
+
1180
+ ArrayProxy = MakeProxyType('ArrayProxy', (
1181
+ '__len__', '__getitem__', '__setitem__'
1182
+ ))
1183
+
1184
+
1185
+ BasePoolProxy = MakeProxyType('PoolProxy', (
1186
+ 'apply', 'apply_async', 'close', 'imap', 'imap_unordered', 'join',
1187
+ 'map', 'map_async', 'starmap', 'starmap_async', 'terminate',
1188
+ ))
1189
+ BasePoolProxy._method_to_typeid_ = {
1190
+ 'apply_async': 'AsyncResult',
1191
+ 'map_async': 'AsyncResult',
1192
+ 'starmap_async': 'AsyncResult',
1193
+ 'imap': 'Iterator',
1194
+ 'imap_unordered': 'Iterator'
1195
+ }
1196
+ class PoolProxy(BasePoolProxy):
1197
+ def __enter__(self):
1198
+ return self
1199
+ def __exit__(self, exc_type, exc_val, exc_tb):
1200
+ self.terminate()
1201
+
1202
+ #
1203
+ # Definition of SyncManager
1204
+ #
1205
+
1206
+ class SyncManager(BaseManager):
1207
+ '''
1208
+ Subclass of `BaseManager` which supports a number of shared object types.
1209
+
1210
+ The types registered are those intended for the synchronization
1211
+ of threads, plus `dict`, `list` and `Namespace`.
1212
+
1213
+ The `multiprocessing.Manager()` function creates started instances of
1214
+ this class.
1215
+ '''
1216
+
1217
+ SyncManager.register('Queue', queue.Queue)
1218
+ SyncManager.register('JoinableQueue', queue.Queue)
1219
+ SyncManager.register('Event', threading.Event, EventProxy)
1220
+ SyncManager.register('Lock', threading.Lock, AcquirerProxy)
1221
+ SyncManager.register('RLock', threading.RLock, AcquirerProxy)
1222
+ SyncManager.register('Semaphore', threading.Semaphore, AcquirerProxy)
1223
+ SyncManager.register('BoundedSemaphore', threading.BoundedSemaphore,
1224
+ AcquirerProxy)
1225
+ SyncManager.register('Condition', threading.Condition, ConditionProxy)
1226
+ SyncManager.register('Barrier', threading.Barrier, BarrierProxy)
1227
+ SyncManager.register('Pool', pool.Pool, PoolProxy)
1228
+ SyncManager.register('list', list, ListProxy)
1229
+ SyncManager.register('dict', dict, DictProxy)
1230
+ SyncManager.register('Value', Value, ValueProxy)
1231
+ SyncManager.register('Array', Array, ArrayProxy)
1232
+ SyncManager.register('Namespace', Namespace, NamespaceProxy)
1233
+
1234
+ # types returned by methods of PoolProxy
1235
+ SyncManager.register('Iterator', proxytype=IteratorProxy, create_method=False)
1236
+ SyncManager.register('AsyncResult', create_method=False)
1237
+
1238
+ #
1239
+ # Definition of SharedMemoryManager and SharedMemoryServer
1240
+ #
1241
+
1242
+ if HAS_SHMEM:
1243
+ class _SharedMemoryTracker:
1244
+ "Manages one or more shared memory segments."
1245
+
1246
+ def __init__(self, name, segment_names=[]):
1247
+ self.shared_memory_context_name = name
1248
+ self.segment_names = segment_names
1249
+
1250
+ def register_segment(self, segment_name):
1251
+ "Adds the supplied shared memory block name to tracker."
1252
+ util.debug(f"Register segment {segment_name!r} in pid {getpid()}")
1253
+ self.segment_names.append(segment_name)
1254
+
1255
+ def destroy_segment(self, segment_name):
1256
+ """Calls unlink() on the shared memory block with the supplied name
1257
+ and removes it from the list of blocks being tracked."""
1258
+ util.debug(f"Destroy segment {segment_name!r} in pid {getpid()}")
1259
+ self.segment_names.remove(segment_name)
1260
+ segment = shared_memory.SharedMemory(segment_name)
1261
+ segment.close()
1262
+ segment.unlink()
1263
+
1264
+ def unlink(self):
1265
+ "Calls destroy_segment() on all tracked shared memory blocks."
1266
+ for segment_name in self.segment_names[:]:
1267
+ self.destroy_segment(segment_name)
1268
+
1269
+ def __del__(self):
1270
+ util.debug(f"Call {self.__class__.__name__}.__del__ in {getpid()}")
1271
+ self.unlink()
1272
+
1273
+ def __getstate__(self):
1274
+ return (self.shared_memory_context_name, self.segment_names)
1275
+
1276
+ def __setstate__(self, state):
1277
+ self.__init__(*state)
1278
+
1279
+
1280
+ class SharedMemoryServer(Server):
1281
+
1282
+ public = Server.public + \
1283
+ ['track_segment', 'release_segment', 'list_segments']
1284
+
1285
+ def __init__(self, *args, **kwargs):
1286
+ Server.__init__(self, *args, **kwargs)
1287
+ address = self.address
1288
+ # The address of Linux abstract namespaces can be bytes
1289
+ if isinstance(address, bytes):
1290
+ address = os.fsdecode(address)
1291
+ self.shared_memory_context = \
1292
+ _SharedMemoryTracker(f"shm_{address}_{getpid()}")
1293
+ util.debug(f"SharedMemoryServer started by pid {getpid()}")
1294
+
1295
+ def create(self, c, typeid, /, *args, **kwargs):
1296
+ """Create a new distributed-shared object (not backed by a shared
1297
+ memory block) and return its id to be used in a Proxy Object."""
1298
+ # Unless set up as a shared proxy, don't make shared_memory_context
1299
+ # a standard part of kwargs. This makes things easier for supplying
1300
+ # simple functions.
1301
+ if hasattr(self.registry[typeid][-1], "_shared_memory_proxy"):
1302
+ kwargs['shared_memory_context'] = self.shared_memory_context
1303
+ return Server.create(self, c, typeid, *args, **kwargs)
1304
+
1305
+ def shutdown(self, c):
1306
+ "Call unlink() on all tracked shared memory, terminate the Server."
1307
+ self.shared_memory_context.unlink()
1308
+ return Server.shutdown(self, c)
1309
+
1310
+ def track_segment(self, c, segment_name):
1311
+ "Adds the supplied shared memory block name to Server's tracker."
1312
+ self.shared_memory_context.register_segment(segment_name)
1313
+
1314
+ def release_segment(self, c, segment_name):
1315
+ """Calls unlink() on the shared memory block with the supplied name
1316
+ and removes it from the tracker instance inside the Server."""
1317
+ self.shared_memory_context.destroy_segment(segment_name)
1318
+
1319
+ def list_segments(self, c):
1320
+ """Returns a list of names of shared memory blocks that the Server
1321
+ is currently tracking."""
1322
+ return self.shared_memory_context.segment_names
1323
+
1324
+
1325
+ class SharedMemoryManager(BaseManager):
1326
+ """Like SyncManager but uses SharedMemoryServer instead of Server.
1327
+
1328
+ It provides methods for creating and returning SharedMemory instances
1329
+ and for creating a list-like object (ShareableList) backed by shared
1330
+ memory. It also provides methods that create and return Proxy Objects
1331
+ that support synchronization across processes (i.e. multi-process-safe
1332
+ locks and semaphores).
1333
+ """
1334
+
1335
+ _Server = SharedMemoryServer
1336
+
1337
+ def __init__(self, *args, **kwargs):
1338
+ if os.name == "posix":
1339
+ # bpo-36867: Ensure the resource_tracker is running before
1340
+ # launching the manager process, so that concurrent
1341
+ # shared_memory manipulation both in the manager and in the
1342
+ # current process does not create two resource_tracker
1343
+ # processes.
1344
+ from . import resource_tracker
1345
+ resource_tracker.ensure_running()
1346
+ BaseManager.__init__(self, *args, **kwargs)
1347
+ util.debug(f"{self.__class__.__name__} created by pid {getpid()}")
1348
+
1349
+ def __del__(self):
1350
+ util.debug(f"{self.__class__.__name__}.__del__ by pid {getpid()}")
1351
+
1352
+ def get_server(self):
1353
+ 'Better than monkeypatching for now; merge into Server ultimately'
1354
+ if self._state.value != State.INITIAL:
1355
+ if self._state.value == State.STARTED:
1356
+ raise ProcessError("Already started SharedMemoryServer")
1357
+ elif self._state.value == State.SHUTDOWN:
1358
+ raise ProcessError("SharedMemoryManager has shut down")
1359
+ else:
1360
+ raise ProcessError(
1361
+ "Unknown state {!r}".format(self._state.value))
1362
+ return self._Server(self._registry, self._address,
1363
+ self._authkey, self._serializer)
1364
+
1365
+ def SharedMemory(self, size):
1366
+ """Returns a new SharedMemory instance with the specified size in
1367
+ bytes, to be tracked by the manager."""
1368
+ with self._Client(self._address, authkey=self._authkey) as conn:
1369
+ sms = shared_memory.SharedMemory(None, create=True, size=size)
1370
+ try:
1371
+ dispatch(conn, None, 'track_segment', (sms.name,))
1372
+ except BaseException as e:
1373
+ sms.unlink()
1374
+ raise e
1375
+ return sms
1376
+
1377
+ def ShareableList(self, sequence):
1378
+ """Returns a new ShareableList instance populated with the values
1379
+ from the input sequence, to be tracked by the manager."""
1380
+ with self._Client(self._address, authkey=self._authkey) as conn:
1381
+ sl = shared_memory.ShareableList(sequence)
1382
+ try:
1383
+ dispatch(conn, None, 'track_segment', (sl.shm.name,))
1384
+ except BaseException as e:
1385
+ sl.shm.unlink()
1386
+ raise e
1387
+ return sl