@rowstile/cli-win32-x64 0.1.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (759) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +5 -0
  3. package/package.json +23 -0
  4. package/python/DLLs/_asyncio.pyd +0 -0
  5. package/python/DLLs/_bz2.pyd +0 -0
  6. package/python/DLLs/_ctypes.pyd +0 -0
  7. package/python/DLLs/_ctypes_test.pyd +0 -0
  8. package/python/DLLs/_decimal.pyd +0 -0
  9. package/python/DLLs/_elementtree.pyd +0 -0
  10. package/python/DLLs/_hashlib.pyd +0 -0
  11. package/python/DLLs/_lzma.pyd +0 -0
  12. package/python/DLLs/_multiprocessing.pyd +0 -0
  13. package/python/DLLs/_overlapped.pyd +0 -0
  14. package/python/DLLs/_queue.pyd +0 -0
  15. package/python/DLLs/_socket.pyd +0 -0
  16. package/python/DLLs/_sqlite3.pyd +0 -0
  17. package/python/DLLs/_ssl.pyd +0 -0
  18. package/python/DLLs/_testbuffer.pyd +0 -0
  19. package/python/DLLs/_testcapi.pyd +0 -0
  20. package/python/DLLs/_testclinic.pyd +0 -0
  21. package/python/DLLs/_testclinic_limited.pyd +0 -0
  22. package/python/DLLs/_testconsole.pyd +0 -0
  23. package/python/DLLs/_testimportmultiple.pyd +0 -0
  24. package/python/DLLs/_testinternalcapi.pyd +0 -0
  25. package/python/DLLs/_testlimitedcapi.pyd +0 -0
  26. package/python/DLLs/_testmultiphase.pyd +0 -0
  27. package/python/DLLs/_testsinglephase.pyd +0 -0
  28. package/python/DLLs/_uuid.pyd +0 -0
  29. package/python/DLLs/_wmi.pyd +0 -0
  30. package/python/DLLs/_zoneinfo.pyd +0 -0
  31. package/python/DLLs/libcrypto-3-x64.dll +0 -0
  32. package/python/DLLs/libffi-8.dll +0 -0
  33. package/python/DLLs/libssl-3-x64.dll +0 -0
  34. package/python/DLLs/pyexpat.pyd +0 -0
  35. package/python/DLLs/select.pyd +0 -0
  36. package/python/DLLs/sqlite3.dll +0 -0
  37. package/python/DLLs/unicodedata.pyd +0 -0
  38. package/python/DLLs/winsound.pyd +0 -0
  39. package/python/DLLs/zlib1.dll +0 -0
  40. package/python/LICENSE.txt +445 -0
  41. package/python/Lib/__future__.py +147 -0
  42. package/python/Lib/__hello__.py +16 -0
  43. package/python/Lib/__pycache__/__future__.cpython-313.pyc +0 -0
  44. package/python/Lib/__pycache__/_colorize.cpython-313.pyc +0 -0
  45. package/python/Lib/__pycache__/_compat_pickle.cpython-313.pyc +0 -0
  46. package/python/Lib/__pycache__/_compression.cpython-313.pyc +0 -0
  47. package/python/Lib/__pycache__/_markupbase.cpython-313.pyc +0 -0
  48. package/python/Lib/__pycache__/_opcode_metadata.cpython-313.pyc +0 -0
  49. package/python/Lib/__pycache__/_weakrefset.cpython-313.pyc +0 -0
  50. package/python/Lib/__pycache__/ast.cpython-313.pyc +0 -0
  51. package/python/Lib/__pycache__/base64.cpython-313.pyc +0 -0
  52. package/python/Lib/__pycache__/bisect.cpython-313.pyc +0 -0
  53. package/python/Lib/__pycache__/bz2.cpython-313.pyc +0 -0
  54. package/python/Lib/__pycache__/calendar.cpython-313.pyc +0 -0
  55. package/python/Lib/__pycache__/colorsys.cpython-313.pyc +0 -0
  56. package/python/Lib/__pycache__/compileall.cpython-313.pyc +0 -0
  57. package/python/Lib/__pycache__/configparser.cpython-313.pyc +0 -0
  58. package/python/Lib/__pycache__/contextlib.cpython-313.pyc +0 -0
  59. package/python/Lib/__pycache__/copy.cpython-313.pyc +0 -0
  60. package/python/Lib/__pycache__/copyreg.cpython-313.pyc +0 -0
  61. package/python/Lib/__pycache__/csv.cpython-313.pyc +0 -0
  62. package/python/Lib/__pycache__/dataclasses.cpython-313.pyc +0 -0
  63. package/python/Lib/__pycache__/datetime.cpython-313.pyc +0 -0
  64. package/python/Lib/__pycache__/decimal.cpython-313.pyc +0 -0
  65. package/python/Lib/__pycache__/dis.cpython-313.pyc +0 -0
  66. package/python/Lib/__pycache__/enum.cpython-313.pyc +0 -0
  67. package/python/Lib/__pycache__/filecmp.cpython-313.pyc +0 -0
  68. package/python/Lib/__pycache__/fnmatch.cpython-313.pyc +0 -0
  69. package/python/Lib/__pycache__/fractions.cpython-313.pyc +0 -0
  70. package/python/Lib/__pycache__/functools.cpython-313.pyc +0 -0
  71. package/python/Lib/__pycache__/getpass.cpython-313.pyc +0 -0
  72. package/python/Lib/__pycache__/gettext.cpython-313.pyc +0 -0
  73. package/python/Lib/__pycache__/glob.cpython-313.pyc +0 -0
  74. package/python/Lib/__pycache__/gzip.cpython-313.pyc +0 -0
  75. package/python/Lib/__pycache__/hashlib.cpython-313.pyc +0 -0
  76. package/python/Lib/__pycache__/heapq.cpython-313.pyc +0 -0
  77. package/python/Lib/__pycache__/hmac.cpython-313.pyc +0 -0
  78. package/python/Lib/__pycache__/inspect.cpython-313.pyc +0 -0
  79. package/python/Lib/__pycache__/ipaddress.cpython-313.pyc +0 -0
  80. package/python/Lib/__pycache__/keyword.cpython-313.pyc +0 -0
  81. package/python/Lib/__pycache__/linecache.cpython-313.pyc +0 -0
  82. package/python/Lib/__pycache__/locale.cpython-313.pyc +0 -0
  83. package/python/Lib/__pycache__/lzma.cpython-313.pyc +0 -0
  84. package/python/Lib/__pycache__/mimetypes.cpython-313.pyc +0 -0
  85. package/python/Lib/__pycache__/nturl2path.cpython-313.pyc +0 -0
  86. package/python/Lib/__pycache__/numbers.cpython-313.pyc +0 -0
  87. package/python/Lib/__pycache__/opcode.cpython-313.pyc +0 -0
  88. package/python/Lib/__pycache__/operator.cpython-313.pyc +0 -0
  89. package/python/Lib/__pycache__/optparse.cpython-313.pyc +0 -0
  90. package/python/Lib/__pycache__/pickle.cpython-313.pyc +0 -0
  91. package/python/Lib/__pycache__/pkgutil.cpython-313.pyc +0 -0
  92. package/python/Lib/__pycache__/platform.cpython-313.pyc +0 -0
  93. package/python/Lib/__pycache__/py_compile.cpython-313.pyc +0 -0
  94. package/python/Lib/__pycache__/queue.cpython-313.pyc +0 -0
  95. package/python/Lib/__pycache__/quopri.cpython-313.pyc +0 -0
  96. package/python/Lib/__pycache__/random.cpython-313.pyc +0 -0
  97. package/python/Lib/__pycache__/reprlib.cpython-313.pyc +0 -0
  98. package/python/Lib/__pycache__/selectors.cpython-313.pyc +0 -0
  99. package/python/Lib/__pycache__/shlex.cpython-313.pyc +0 -0
  100. package/python/Lib/__pycache__/shutil.cpython-313.pyc +0 -0
  101. package/python/Lib/__pycache__/signal.cpython-313.pyc +0 -0
  102. package/python/Lib/__pycache__/socket.cpython-313.pyc +0 -0
  103. package/python/Lib/__pycache__/socketserver.cpython-313.pyc +0 -0
  104. package/python/Lib/__pycache__/ssl.cpython-313.pyc +0 -0
  105. package/python/Lib/__pycache__/string.cpython-313.pyc +0 -0
  106. package/python/Lib/__pycache__/stringprep.cpython-313.pyc +0 -0
  107. package/python/Lib/__pycache__/struct.cpython-313.pyc +0 -0
  108. package/python/Lib/__pycache__/subprocess.cpython-313.pyc +0 -0
  109. package/python/Lib/__pycache__/tarfile.cpython-313.pyc +0 -0
  110. package/python/Lib/__pycache__/tempfile.cpython-313.pyc +0 -0
  111. package/python/Lib/__pycache__/textwrap.cpython-313.pyc +0 -0
  112. package/python/Lib/__pycache__/threading.cpython-313.pyc +0 -0
  113. package/python/Lib/__pycache__/token.cpython-313.pyc +0 -0
  114. package/python/Lib/__pycache__/tokenize.cpython-313.pyc +0 -0
  115. package/python/Lib/__pycache__/traceback.cpython-313.pyc +0 -0
  116. package/python/Lib/__pycache__/types.cpython-313.pyc +0 -0
  117. package/python/Lib/__pycache__/typing.cpython-313.pyc +0 -0
  118. package/python/Lib/__pycache__/uuid.cpython-313.pyc +0 -0
  119. package/python/Lib/__pycache__/warnings.cpython-313.pyc +0 -0
  120. package/python/Lib/__pycache__/weakref.cpython-313.pyc +0 -0
  121. package/python/Lib/_aix_support.py +108 -0
  122. package/python/Lib/_android_support.py +192 -0
  123. package/python/Lib/_apple_support.py +66 -0
  124. package/python/Lib/_collections_abc.py +1187 -0
  125. package/python/Lib/_colorize.py +119 -0
  126. package/python/Lib/_compat_pickle.py +251 -0
  127. package/python/Lib/_compression.py +162 -0
  128. package/python/Lib/_ios_support.py +71 -0
  129. package/python/Lib/_markupbase.py +396 -0
  130. package/python/Lib/_opcode_metadata.py +343 -0
  131. package/python/Lib/_osx_support.py +579 -0
  132. package/python/Lib/_py_abc.py +147 -0
  133. package/python/Lib/_pydatetime.py +2640 -0
  134. package/python/Lib/_pydecimal.py +6356 -0
  135. package/python/Lib/_pyio.py +2714 -0
  136. package/python/Lib/_pylong.py +363 -0
  137. package/python/Lib/_pyrepl/__init__.py +19 -0
  138. package/python/Lib/_pyrepl/__main__.py +10 -0
  139. package/python/Lib/_pyrepl/_minimal_curses.py +68 -0
  140. package/python/Lib/_pyrepl/_threading_handler.py +74 -0
  141. package/python/Lib/_pyrepl/base_eventqueue.py +110 -0
  142. package/python/Lib/_pyrepl/commands.py +492 -0
  143. package/python/Lib/_pyrepl/completing_reader.py +295 -0
  144. package/python/Lib/_pyrepl/console.py +229 -0
  145. package/python/Lib/_pyrepl/curses.py +33 -0
  146. package/python/Lib/_pyrepl/fancy_termios.py +82 -0
  147. package/python/Lib/_pyrepl/historical_reader.py +419 -0
  148. package/python/Lib/_pyrepl/input.py +114 -0
  149. package/python/Lib/_pyrepl/keymap.py +213 -0
  150. package/python/Lib/_pyrepl/main.py +59 -0
  151. package/python/Lib/_pyrepl/mypy.ini +29 -0
  152. package/python/Lib/_pyrepl/pager.py +175 -0
  153. package/python/Lib/_pyrepl/reader.py +764 -0
  154. package/python/Lib/_pyrepl/readline.py +599 -0
  155. package/python/Lib/_pyrepl/simple_interact.py +180 -0
  156. package/python/Lib/_pyrepl/trace.py +21 -0
  157. package/python/Lib/_pyrepl/types.py +10 -0
  158. package/python/Lib/_pyrepl/unix_console.py +852 -0
  159. package/python/Lib/_pyrepl/unix_eventqueue.py +76 -0
  160. package/python/Lib/_pyrepl/utils.py +83 -0
  161. package/python/Lib/_pyrepl/windows_console.py +687 -0
  162. package/python/Lib/_pyrepl/windows_eventqueue.py +42 -0
  163. package/python/Lib/_sitebuiltins.py +91 -0
  164. package/python/Lib/_strptime.py +800 -0
  165. package/python/Lib/_threading_local.py +120 -0
  166. package/python/Lib/_weakrefset.py +205 -0
  167. package/python/Lib/abc.py +188 -0
  168. package/python/Lib/antigravity.py +17 -0
  169. package/python/Lib/argparse.py +2690 -0
  170. package/python/Lib/ast.py +1865 -0
  171. package/python/Lib/asyncio/__init__.py +47 -0
  172. package/python/Lib/asyncio/__main__.py +211 -0
  173. package/python/Lib/asyncio/base_events.py +2086 -0
  174. package/python/Lib/asyncio/base_futures.py +67 -0
  175. package/python/Lib/asyncio/base_subprocess.py +312 -0
  176. package/python/Lib/asyncio/base_tasks.py +94 -0
  177. package/python/Lib/asyncio/constants.py +41 -0
  178. package/python/Lib/asyncio/coroutines.py +109 -0
  179. package/python/Lib/asyncio/events.py +885 -0
  180. package/python/Lib/asyncio/exceptions.py +62 -0
  181. package/python/Lib/asyncio/format_helpers.py +84 -0
  182. package/python/Lib/asyncio/futures.py +425 -0
  183. package/python/Lib/asyncio/locks.py +617 -0
  184. package/python/Lib/asyncio/log.py +7 -0
  185. package/python/Lib/asyncio/mixins.py +21 -0
  186. package/python/Lib/asyncio/proactor_events.py +891 -0
  187. package/python/Lib/asyncio/protocols.py +216 -0
  188. package/python/Lib/asyncio/queues.py +309 -0
  189. package/python/Lib/asyncio/runners.py +217 -0
  190. package/python/Lib/asyncio/selector_events.py +1328 -0
  191. package/python/Lib/asyncio/sslproto.py +929 -0
  192. package/python/Lib/asyncio/staggered.py +174 -0
  193. package/python/Lib/asyncio/streams.py +787 -0
  194. package/python/Lib/asyncio/subprocess.py +229 -0
  195. package/python/Lib/asyncio/taskgroups.py +278 -0
  196. package/python/Lib/asyncio/tasks.py +1121 -0
  197. package/python/Lib/asyncio/threads.py +26 -0
  198. package/python/Lib/asyncio/timeouts.py +185 -0
  199. package/python/Lib/asyncio/transports.py +337 -0
  200. package/python/Lib/asyncio/trsock.py +98 -0
  201. package/python/Lib/asyncio/unix_events.py +1550 -0
  202. package/python/Lib/asyncio/windows_events.py +906 -0
  203. package/python/Lib/asyncio/windows_utils.py +181 -0
  204. package/python/Lib/base64.py +628 -0
  205. package/python/Lib/bdb.py +973 -0
  206. package/python/Lib/bisect.py +118 -0
  207. package/python/Lib/bz2.py +352 -0
  208. package/python/Lib/cProfile.py +197 -0
  209. package/python/Lib/calendar.py +813 -0
  210. package/python/Lib/cmd.py +409 -0
  211. package/python/Lib/code.py +386 -0
  212. package/python/Lib/codecs.py +1132 -0
  213. package/python/Lib/codeop.py +155 -0
  214. package/python/Lib/collections/__init__.py +1603 -0
  215. package/python/Lib/collections/__pycache__/__init__.cpython-313.pyc +0 -0
  216. package/python/Lib/colorsys.py +166 -0
  217. package/python/Lib/compileall.py +470 -0
  218. package/python/Lib/concurrent/__init__.py +1 -0
  219. package/python/Lib/concurrent/futures/__init__.py +54 -0
  220. package/python/Lib/concurrent/futures/_base.py +660 -0
  221. package/python/Lib/concurrent/futures/process.py +892 -0
  222. package/python/Lib/concurrent/futures/thread.py +240 -0
  223. package/python/Lib/configparser.py +1396 -0
  224. package/python/Lib/contextlib.py +814 -0
  225. package/python/Lib/contextvars.py +4 -0
  226. package/python/Lib/copy.py +306 -0
  227. package/python/Lib/copyreg.py +217 -0
  228. package/python/Lib/csv.py +527 -0
  229. package/python/Lib/ctypes/__init__.py +602 -0
  230. package/python/Lib/ctypes/__pycache__/__init__.cpython-313.pyc +0 -0
  231. package/python/Lib/ctypes/__pycache__/_endian.cpython-313.pyc +0 -0
  232. package/python/Lib/ctypes/__pycache__/wintypes.cpython-313.pyc +0 -0
  233. package/python/Lib/ctypes/_aix.py +327 -0
  234. package/python/Lib/ctypes/_endian.py +78 -0
  235. package/python/Lib/ctypes/macholib/README.ctypes +7 -0
  236. package/python/Lib/ctypes/macholib/__init__.py +9 -0
  237. package/python/Lib/ctypes/macholib/dyld.py +165 -0
  238. package/python/Lib/ctypes/macholib/dylib.py +42 -0
  239. package/python/Lib/ctypes/macholib/fetch_macholib +2 -0
  240. package/python/Lib/ctypes/macholib/fetch_macholib.bat +1 -0
  241. package/python/Lib/ctypes/macholib/framework.py +42 -0
  242. package/python/Lib/ctypes/util.py +387 -0
  243. package/python/Lib/ctypes/wintypes.py +202 -0
  244. package/python/Lib/curses/__init__.py +101 -0
  245. package/python/Lib/curses/ascii.py +99 -0
  246. package/python/Lib/curses/has_key.py +192 -0
  247. package/python/Lib/curses/panel.py +6 -0
  248. package/python/Lib/curses/textpad.py +236 -0
  249. package/python/Lib/dataclasses.py +1679 -0
  250. package/python/Lib/datetime.py +9 -0
  251. package/python/Lib/dbm/__init__.py +194 -0
  252. package/python/Lib/dbm/dumb.py +319 -0
  253. package/python/Lib/dbm/gnu.py +3 -0
  254. package/python/Lib/dbm/ndbm.py +3 -0
  255. package/python/Lib/dbm/sqlite3.py +144 -0
  256. package/python/Lib/decimal.py +109 -0
  257. package/python/Lib/difflib.py +2058 -0
  258. package/python/Lib/dis.py +1075 -0
  259. package/python/Lib/doctest.py +2919 -0
  260. package/python/Lib/email/__init__.py +61 -0
  261. package/python/Lib/email/__pycache__/__init__.cpython-313.pyc +0 -0
  262. package/python/Lib/email/__pycache__/_encoded_words.cpython-313.pyc +0 -0
  263. package/python/Lib/email/__pycache__/_parseaddr.cpython-313.pyc +0 -0
  264. package/python/Lib/email/__pycache__/_policybase.cpython-313.pyc +0 -0
  265. package/python/Lib/email/__pycache__/base64mime.cpython-313.pyc +0 -0
  266. package/python/Lib/email/__pycache__/charset.cpython-313.pyc +0 -0
  267. package/python/Lib/email/__pycache__/encoders.cpython-313.pyc +0 -0
  268. package/python/Lib/email/__pycache__/errors.cpython-313.pyc +0 -0
  269. package/python/Lib/email/__pycache__/feedparser.cpython-313.pyc +0 -0
  270. package/python/Lib/email/__pycache__/header.cpython-313.pyc +0 -0
  271. package/python/Lib/email/__pycache__/iterators.cpython-313.pyc +0 -0
  272. package/python/Lib/email/__pycache__/message.cpython-313.pyc +0 -0
  273. package/python/Lib/email/__pycache__/parser.cpython-313.pyc +0 -0
  274. package/python/Lib/email/__pycache__/quoprimime.cpython-313.pyc +0 -0
  275. package/python/Lib/email/__pycache__/utils.cpython-313.pyc +0 -0
  276. package/python/Lib/email/_encoded_words.py +233 -0
  277. package/python/Lib/email/_header_value_parser.py +3153 -0
  278. package/python/Lib/email/_parseaddr.py +563 -0
  279. package/python/Lib/email/_policybase.py +382 -0
  280. package/python/Lib/email/architecture.rst +216 -0
  281. package/python/Lib/email/base64mime.py +115 -0
  282. package/python/Lib/email/charset.py +396 -0
  283. package/python/Lib/email/contentmanager.py +254 -0
  284. package/python/Lib/email/encoders.py +65 -0
  285. package/python/Lib/email/errors.py +117 -0
  286. package/python/Lib/email/feedparser.py +536 -0
  287. package/python/Lib/email/generator.py +530 -0
  288. package/python/Lib/email/header.py +582 -0
  289. package/python/Lib/email/headerregistry.py +618 -0
  290. package/python/Lib/email/iterators.py +68 -0
  291. package/python/Lib/email/message.py +1217 -0
  292. package/python/Lib/email/mime/__init__.py +0 -0
  293. package/python/Lib/email/mime/application.py +37 -0
  294. package/python/Lib/email/mime/audio.py +97 -0
  295. package/python/Lib/email/mime/base.py +29 -0
  296. package/python/Lib/email/mime/image.py +152 -0
  297. package/python/Lib/email/mime/message.py +33 -0
  298. package/python/Lib/email/mime/multipart.py +47 -0
  299. package/python/Lib/email/mime/nonmultipart.py +21 -0
  300. package/python/Lib/email/mime/text.py +40 -0
  301. package/python/Lib/email/parser.py +127 -0
  302. package/python/Lib/email/policy.py +232 -0
  303. package/python/Lib/email/quoprimime.py +300 -0
  304. package/python/Lib/email/utils.py +497 -0
  305. package/python/Lib/encodings/__init__.py +179 -0
  306. package/python/Lib/encodings/__pycache__/__init__.cpython-313.pyc +0 -0
  307. package/python/Lib/encodings/__pycache__/aliases.cpython-313.pyc +0 -0
  308. package/python/Lib/encodings/__pycache__/cp1252.cpython-313.pyc +0 -0
  309. package/python/Lib/encodings/__pycache__/cp437.cpython-313.pyc +0 -0
  310. package/python/Lib/encodings/__pycache__/hex_codec.cpython-313.pyc +0 -0
  311. package/python/Lib/encodings/__pycache__/idna.cpython-313.pyc +0 -0
  312. package/python/Lib/encodings/__pycache__/utf_8.cpython-313.pyc +0 -0
  313. package/python/Lib/encodings/aliases.py +560 -0
  314. package/python/Lib/encodings/ascii.py +50 -0
  315. package/python/Lib/encodings/base64_codec.py +55 -0
  316. package/python/Lib/encodings/big5.py +39 -0
  317. package/python/Lib/encodings/big5hkscs.py +39 -0
  318. package/python/Lib/encodings/bz2_codec.py +78 -0
  319. package/python/Lib/encodings/charmap.py +69 -0
  320. package/python/Lib/encodings/cp037.py +307 -0
  321. package/python/Lib/encodings/cp1006.py +307 -0
  322. package/python/Lib/encodings/cp1026.py +307 -0
  323. package/python/Lib/encodings/cp1125.py +698 -0
  324. package/python/Lib/encodings/cp1140.py +307 -0
  325. package/python/Lib/encodings/cp1250.py +307 -0
  326. package/python/Lib/encodings/cp1251.py +307 -0
  327. package/python/Lib/encodings/cp1252.py +307 -0
  328. package/python/Lib/encodings/cp1253.py +307 -0
  329. package/python/Lib/encodings/cp1254.py +307 -0
  330. package/python/Lib/encodings/cp1255.py +307 -0
  331. package/python/Lib/encodings/cp1256.py +307 -0
  332. package/python/Lib/encodings/cp1257.py +307 -0
  333. package/python/Lib/encodings/cp1258.py +307 -0
  334. package/python/Lib/encodings/cp273.py +307 -0
  335. package/python/Lib/encodings/cp424.py +307 -0
  336. package/python/Lib/encodings/cp437.py +698 -0
  337. package/python/Lib/encodings/cp500.py +307 -0
  338. package/python/Lib/encodings/cp720.py +309 -0
  339. package/python/Lib/encodings/cp737.py +698 -0
  340. package/python/Lib/encodings/cp775.py +697 -0
  341. package/python/Lib/encodings/cp850.py +698 -0
  342. package/python/Lib/encodings/cp852.py +698 -0
  343. package/python/Lib/encodings/cp855.py +698 -0
  344. package/python/Lib/encodings/cp856.py +307 -0
  345. package/python/Lib/encodings/cp857.py +694 -0
  346. package/python/Lib/encodings/cp858.py +698 -0
  347. package/python/Lib/encodings/cp860.py +698 -0
  348. package/python/Lib/encodings/cp861.py +698 -0
  349. package/python/Lib/encodings/cp862.py +698 -0
  350. package/python/Lib/encodings/cp863.py +698 -0
  351. package/python/Lib/encodings/cp864.py +690 -0
  352. package/python/Lib/encodings/cp865.py +698 -0
  353. package/python/Lib/encodings/cp866.py +698 -0
  354. package/python/Lib/encodings/cp869.py +689 -0
  355. package/python/Lib/encodings/cp874.py +307 -0
  356. package/python/Lib/encodings/cp875.py +307 -0
  357. package/python/Lib/encodings/cp932.py +39 -0
  358. package/python/Lib/encodings/cp949.py +39 -0
  359. package/python/Lib/encodings/cp950.py +39 -0
  360. package/python/Lib/encodings/euc_jis_2004.py +39 -0
  361. package/python/Lib/encodings/euc_jisx0213.py +39 -0
  362. package/python/Lib/encodings/euc_jp.py +39 -0
  363. package/python/Lib/encodings/euc_kr.py +39 -0
  364. package/python/Lib/encodings/gb18030.py +39 -0
  365. package/python/Lib/encodings/gb2312.py +39 -0
  366. package/python/Lib/encodings/gbk.py +39 -0
  367. package/python/Lib/encodings/hex_codec.py +55 -0
  368. package/python/Lib/encodings/hp_roman8.py +314 -0
  369. package/python/Lib/encodings/hz.py +39 -0
  370. package/python/Lib/encodings/idna.py +387 -0
  371. package/python/Lib/encodings/iso2022_jp.py +39 -0
  372. package/python/Lib/encodings/iso2022_jp_1.py +39 -0
  373. package/python/Lib/encodings/iso2022_jp_2.py +39 -0
  374. package/python/Lib/encodings/iso2022_jp_2004.py +39 -0
  375. package/python/Lib/encodings/iso2022_jp_3.py +39 -0
  376. package/python/Lib/encodings/iso2022_jp_ext.py +39 -0
  377. package/python/Lib/encodings/iso2022_kr.py +39 -0
  378. package/python/Lib/encodings/iso8859_1.py +307 -0
  379. package/python/Lib/encodings/iso8859_10.py +307 -0
  380. package/python/Lib/encodings/iso8859_11.py +307 -0
  381. package/python/Lib/encodings/iso8859_13.py +307 -0
  382. package/python/Lib/encodings/iso8859_14.py +307 -0
  383. package/python/Lib/encodings/iso8859_15.py +307 -0
  384. package/python/Lib/encodings/iso8859_16.py +307 -0
  385. package/python/Lib/encodings/iso8859_2.py +307 -0
  386. package/python/Lib/encodings/iso8859_3.py +307 -0
  387. package/python/Lib/encodings/iso8859_4.py +307 -0
  388. package/python/Lib/encodings/iso8859_5.py +307 -0
  389. package/python/Lib/encodings/iso8859_6.py +307 -0
  390. package/python/Lib/encodings/iso8859_7.py +307 -0
  391. package/python/Lib/encodings/iso8859_8.py +307 -0
  392. package/python/Lib/encodings/iso8859_9.py +307 -0
  393. package/python/Lib/encodings/johab.py +39 -0
  394. package/python/Lib/encodings/koi8_r.py +307 -0
  395. package/python/Lib/encodings/koi8_t.py +308 -0
  396. package/python/Lib/encodings/koi8_u.py +307 -0
  397. package/python/Lib/encodings/kz1048.py +307 -0
  398. package/python/Lib/encodings/latin_1.py +50 -0
  399. package/python/Lib/encodings/mac_arabic.py +698 -0
  400. package/python/Lib/encodings/mac_croatian.py +307 -0
  401. package/python/Lib/encodings/mac_cyrillic.py +307 -0
  402. package/python/Lib/encodings/mac_farsi.py +307 -0
  403. package/python/Lib/encodings/mac_greek.py +307 -0
  404. package/python/Lib/encodings/mac_iceland.py +307 -0
  405. package/python/Lib/encodings/mac_latin2.py +312 -0
  406. package/python/Lib/encodings/mac_roman.py +307 -0
  407. package/python/Lib/encodings/mac_romanian.py +307 -0
  408. package/python/Lib/encodings/mac_turkish.py +307 -0
  409. package/python/Lib/encodings/mbcs.py +47 -0
  410. package/python/Lib/encodings/oem.py +41 -0
  411. package/python/Lib/encodings/palmos.py +308 -0
  412. package/python/Lib/encodings/ptcp154.py +312 -0
  413. package/python/Lib/encodings/punycode.py +253 -0
  414. package/python/Lib/encodings/quopri_codec.py +56 -0
  415. package/python/Lib/encodings/raw_unicode_escape.py +46 -0
  416. package/python/Lib/encodings/rot_13.py +113 -0
  417. package/python/Lib/encodings/shift_jis.py +39 -0
  418. package/python/Lib/encodings/shift_jis_2004.py +39 -0
  419. package/python/Lib/encodings/shift_jisx0213.py +39 -0
  420. package/python/Lib/encodings/tis_620.py +307 -0
  421. package/python/Lib/encodings/undefined.py +49 -0
  422. package/python/Lib/encodings/unicode_escape.py +46 -0
  423. package/python/Lib/encodings/utf_16.py +155 -0
  424. package/python/Lib/encodings/utf_16_be.py +42 -0
  425. package/python/Lib/encodings/utf_16_le.py +42 -0
  426. package/python/Lib/encodings/utf_32.py +150 -0
  427. package/python/Lib/encodings/utf_32_be.py +37 -0
  428. package/python/Lib/encodings/utf_32_le.py +37 -0
  429. package/python/Lib/encodings/utf_7.py +38 -0
  430. package/python/Lib/encodings/utf_8.py +42 -0
  431. package/python/Lib/encodings/utf_8_sig.py +130 -0
  432. package/python/Lib/encodings/uu_codec.py +103 -0
  433. package/python/Lib/encodings/zlib_codec.py +77 -0
  434. package/python/Lib/enum.py +2183 -0
  435. package/python/Lib/filecmp.py +320 -0
  436. package/python/Lib/fileinput.py +442 -0
  437. package/python/Lib/fnmatch.py +192 -0
  438. package/python/Lib/fractions.py +1043 -0
  439. package/python/Lib/ftplib.py +975 -0
  440. package/python/Lib/functools.py +1036 -0
  441. package/python/Lib/genericpath.py +200 -0
  442. package/python/Lib/getopt.py +215 -0
  443. package/python/Lib/getpass.py +192 -0
  444. package/python/Lib/gettext.py +657 -0
  445. package/python/Lib/glob.py +572 -0
  446. package/python/Lib/graphlib.py +250 -0
  447. package/python/Lib/gzip.py +693 -0
  448. package/python/Lib/hashlib.py +255 -0
  449. package/python/Lib/heapq.py +603 -0
  450. package/python/Lib/hmac.py +220 -0
  451. package/python/Lib/html/__init__.py +132 -0
  452. package/python/Lib/html/__pycache__/__init__.cpython-313.pyc +0 -0
  453. package/python/Lib/html/__pycache__/entities.cpython-313.pyc +0 -0
  454. package/python/Lib/html/__pycache__/parser.cpython-313.pyc +0 -0
  455. package/python/Lib/html/entities.py +2513 -0
  456. package/python/Lib/html/parser.py +583 -0
  457. package/python/Lib/http/__init__.py +202 -0
  458. package/python/Lib/http/__pycache__/__init__.cpython-313.pyc +0 -0
  459. package/python/Lib/http/__pycache__/client.cpython-313.pyc +0 -0
  460. package/python/Lib/http/__pycache__/cookiejar.cpython-313.pyc +0 -0
  461. package/python/Lib/http/__pycache__/cookies.cpython-313.pyc +0 -0
  462. package/python/Lib/http/client.py +1598 -0
  463. package/python/Lib/http/cookiejar.py +2122 -0
  464. package/python/Lib/http/cookies.py +635 -0
  465. package/python/Lib/http/server.py +1355 -0
  466. package/python/Lib/imaplib.py +1769 -0
  467. package/python/Lib/importlib/__init__.py +136 -0
  468. package/python/Lib/importlib/__pycache__/__init__.cpython-313.pyc +0 -0
  469. package/python/Lib/importlib/__pycache__/_abc.cpython-313.pyc +0 -0
  470. package/python/Lib/importlib/__pycache__/abc.cpython-313.pyc +0 -0
  471. package/python/Lib/importlib/__pycache__/readers.cpython-313.pyc +0 -0
  472. package/python/Lib/importlib/_abc.py +39 -0
  473. package/python/Lib/importlib/_bootstrap.py +1559 -0
  474. package/python/Lib/importlib/_bootstrap_external.py +1826 -0
  475. package/python/Lib/importlib/abc.py +243 -0
  476. package/python/Lib/importlib/machinery.py +21 -0
  477. package/python/Lib/importlib/metadata/__init__.py +1093 -0
  478. package/python/Lib/importlib/metadata/__pycache__/__init__.cpython-313.pyc +0 -0
  479. package/python/Lib/importlib/metadata/__pycache__/_adapters.cpython-313.pyc +0 -0
  480. package/python/Lib/importlib/metadata/__pycache__/_collections.cpython-313.pyc +0 -0
  481. package/python/Lib/importlib/metadata/__pycache__/_functools.cpython-313.pyc +0 -0
  482. package/python/Lib/importlib/metadata/__pycache__/_itertools.cpython-313.pyc +0 -0
  483. package/python/Lib/importlib/metadata/__pycache__/_meta.cpython-313.pyc +0 -0
  484. package/python/Lib/importlib/metadata/__pycache__/_text.cpython-313.pyc +0 -0
  485. package/python/Lib/importlib/metadata/_adapters.py +89 -0
  486. package/python/Lib/importlib/metadata/_collections.py +30 -0
  487. package/python/Lib/importlib/metadata/_functools.py +104 -0
  488. package/python/Lib/importlib/metadata/_itertools.py +73 -0
  489. package/python/Lib/importlib/metadata/_meta.py +67 -0
  490. package/python/Lib/importlib/metadata/_text.py +99 -0
  491. package/python/Lib/importlib/metadata/diagnose.py +21 -0
  492. package/python/Lib/importlib/readers.py +12 -0
  493. package/python/Lib/importlib/resources/__init__.py +43 -0
  494. package/python/Lib/importlib/resources/__pycache__/__init__.cpython-313.pyc +0 -0
  495. package/python/Lib/importlib/resources/__pycache__/_adapters.cpython-313.pyc +0 -0
  496. package/python/Lib/importlib/resources/__pycache__/_common.cpython-313.pyc +0 -0
  497. package/python/Lib/importlib/resources/__pycache__/_functional.cpython-313.pyc +0 -0
  498. package/python/Lib/importlib/resources/__pycache__/_itertools.cpython-313.pyc +0 -0
  499. package/python/Lib/importlib/resources/__pycache__/abc.cpython-313.pyc +0 -0
  500. package/python/Lib/importlib/resources/__pycache__/readers.cpython-313.pyc +0 -0
  501. package/python/Lib/importlib/resources/_adapters.py +168 -0
  502. package/python/Lib/importlib/resources/_common.py +211 -0
  503. package/python/Lib/importlib/resources/_functional.py +81 -0
  504. package/python/Lib/importlib/resources/_itertools.py +38 -0
  505. package/python/Lib/importlib/resources/abc.py +173 -0
  506. package/python/Lib/importlib/resources/readers.py +203 -0
  507. package/python/Lib/importlib/resources/simple.py +106 -0
  508. package/python/Lib/importlib/simple.py +14 -0
  509. package/python/Lib/importlib/util.py +274 -0
  510. package/python/Lib/inspect.py +3479 -0
  511. package/python/Lib/io.py +99 -0
  512. package/python/Lib/ipaddress.py +2440 -0
  513. package/python/Lib/json/__init__.py +365 -0
  514. package/python/Lib/json/__pycache__/__init__.cpython-313.pyc +0 -0
  515. package/python/Lib/json/__pycache__/decoder.cpython-313.pyc +0 -0
  516. package/python/Lib/json/__pycache__/encoder.cpython-313.pyc +0 -0
  517. package/python/Lib/json/__pycache__/scanner.cpython-313.pyc +0 -0
  518. package/python/Lib/json/decoder.py +364 -0
  519. package/python/Lib/json/encoder.py +446 -0
  520. package/python/Lib/json/scanner.py +73 -0
  521. package/python/Lib/json/tool.py +90 -0
  522. package/python/Lib/keyword.py +64 -0
  523. package/python/Lib/linecache.py +236 -0
  524. package/python/Lib/locale.py +1987 -0
  525. package/python/Lib/logging/__init__.py +2330 -0
  526. package/python/Lib/logging/__pycache__/__init__.cpython-313.pyc +0 -0
  527. package/python/Lib/logging/__pycache__/config.cpython-313.pyc +0 -0
  528. package/python/Lib/logging/__pycache__/handlers.cpython-313.pyc +0 -0
  529. package/python/Lib/logging/config.py +1080 -0
  530. package/python/Lib/logging/handlers.py +1629 -0
  531. package/python/Lib/lzma.py +364 -0
  532. package/python/Lib/mailbox.py +2219 -0
  533. package/python/Lib/mimetypes.py +679 -0
  534. package/python/Lib/modulefinder.py +671 -0
  535. package/python/Lib/multiprocessing/__init__.py +37 -0
  536. package/python/Lib/multiprocessing/connection.py +1216 -0
  537. package/python/Lib/multiprocessing/context.py +383 -0
  538. package/python/Lib/multiprocessing/dummy/__init__.py +126 -0
  539. package/python/Lib/multiprocessing/dummy/connection.py +75 -0
  540. package/python/Lib/multiprocessing/forkserver.py +373 -0
  541. package/python/Lib/multiprocessing/heap.py +337 -0
  542. package/python/Lib/multiprocessing/managers.py +1397 -0
  543. package/python/Lib/multiprocessing/pool.py +957 -0
  544. package/python/Lib/multiprocessing/popen_fork.py +97 -0
  545. package/python/Lib/multiprocessing/popen_forkserver.py +74 -0
  546. package/python/Lib/multiprocessing/popen_spawn_posix.py +76 -0
  547. package/python/Lib/multiprocessing/popen_spawn_win32.py +147 -0
  548. package/python/Lib/multiprocessing/process.py +436 -0
  549. package/python/Lib/multiprocessing/queues.py +399 -0
  550. package/python/Lib/multiprocessing/reduction.py +281 -0
  551. package/python/Lib/multiprocessing/resource_sharer.py +154 -0
  552. package/python/Lib/multiprocessing/resource_tracker.py +499 -0
  553. package/python/Lib/multiprocessing/shared_memory.py +544 -0
  554. package/python/Lib/multiprocessing/sharedctypes.py +240 -0
  555. package/python/Lib/multiprocessing/spawn.py +307 -0
  556. package/python/Lib/multiprocessing/synchronize.py +404 -0
  557. package/python/Lib/multiprocessing/util.py +562 -0
  558. package/python/Lib/netrc.py +199 -0
  559. package/python/Lib/ntpath.py +872 -0
  560. package/python/Lib/nturl2path.py +69 -0
  561. package/python/Lib/numbers.py +427 -0
  562. package/python/Lib/opcode.py +115 -0
  563. package/python/Lib/operator.py +467 -0
  564. package/python/Lib/optparse.py +1681 -0
  565. package/python/Lib/os.py +1184 -0
  566. package/python/Lib/pathlib/__init__.py +12 -0
  567. package/python/Lib/pathlib/__pycache__/__init__.cpython-313.pyc +0 -0
  568. package/python/Lib/pathlib/__pycache__/_abc.cpython-313.pyc +0 -0
  569. package/python/Lib/pathlib/__pycache__/_local.cpython-313.pyc +0 -0
  570. package/python/Lib/pathlib/_abc.py +930 -0
  571. package/python/Lib/pathlib/_local.py +861 -0
  572. package/python/Lib/pdb.py +2550 -0
  573. package/python/Lib/pickle.py +1860 -0
  574. package/python/Lib/pickletools.py +2904 -0
  575. package/python/Lib/pkgutil.py +529 -0
  576. package/python/Lib/platform.py +1454 -0
  577. package/python/Lib/plistlib.py +948 -0
  578. package/python/Lib/poplib.py +477 -0
  579. package/python/Lib/posixpath.py +578 -0
  580. package/python/Lib/pprint.py +658 -0
  581. package/python/Lib/profile.py +616 -0
  582. package/python/Lib/pstats.py +778 -0
  583. package/python/Lib/pty.py +211 -0
  584. package/python/Lib/py_compile.py +212 -0
  585. package/python/Lib/pyclbr.py +314 -0
  586. package/python/Lib/pydoc.py +2861 -0
  587. package/python/Lib/queue.py +383 -0
  588. package/python/Lib/quopri.py +237 -0
  589. package/python/Lib/random.py +1078 -0
  590. package/python/Lib/re/__init__.py +428 -0
  591. package/python/Lib/re/__pycache__/__init__.cpython-313.pyc +0 -0
  592. package/python/Lib/re/__pycache__/_casefix.cpython-313.pyc +0 -0
  593. package/python/Lib/re/__pycache__/_compiler.cpython-313.pyc +0 -0
  594. package/python/Lib/re/__pycache__/_constants.cpython-313.pyc +0 -0
  595. package/python/Lib/re/__pycache__/_parser.cpython-313.pyc +0 -0
  596. package/python/Lib/re/_casefix.py +106 -0
  597. package/python/Lib/re/_compiler.py +768 -0
  598. package/python/Lib/re/_constants.py +222 -0
  599. package/python/Lib/re/_parser.py +1081 -0
  600. package/python/Lib/reprlib.py +230 -0
  601. package/python/Lib/rlcompleter.py +222 -0
  602. package/python/Lib/runpy.py +326 -0
  603. package/python/Lib/sched.py +167 -0
  604. package/python/Lib/secrets.py +71 -0
  605. package/python/Lib/selectors.py +603 -0
  606. package/python/Lib/shelve.py +250 -0
  607. package/python/Lib/shlex.py +345 -0
  608. package/python/Lib/shutil.py +1569 -0
  609. package/python/Lib/signal.py +94 -0
  610. package/python/Lib/site.py +773 -0
  611. package/python/Lib/smtplib.py +1123 -0
  612. package/python/Lib/socket.py +988 -0
  613. package/python/Lib/socketserver.py +863 -0
  614. package/python/Lib/sqlite3/__init__.py +70 -0
  615. package/python/Lib/sqlite3/__main__.py +139 -0
  616. package/python/Lib/sqlite3/dbapi2.py +108 -0
  617. package/python/Lib/sqlite3/dump.py +118 -0
  618. package/python/Lib/sre_compile.py +7 -0
  619. package/python/Lib/sre_constants.py +7 -0
  620. package/python/Lib/sre_parse.py +7 -0
  621. package/python/Lib/ssl.py +1529 -0
  622. package/python/Lib/stat.py +212 -0
  623. package/python/Lib/statistics.py +1817 -0
  624. package/python/Lib/string.py +314 -0
  625. package/python/Lib/stringprep.py +272 -0
  626. package/python/Lib/struct.py +15 -0
  627. package/python/Lib/subprocess.py +2258 -0
  628. package/python/Lib/symtable.py +414 -0
  629. package/python/Lib/sysconfig/__init__.py +734 -0
  630. package/python/Lib/sysconfig/__main__.py +248 -0
  631. package/python/Lib/sysconfig/__pycache__/__init__.cpython-313.pyc +0 -0
  632. package/python/Lib/tabnanny.py +340 -0
  633. package/python/Lib/tarfile.py +3136 -0
  634. package/python/Lib/tempfile.py +958 -0
  635. package/python/Lib/textwrap.py +497 -0
  636. package/python/Lib/this.py +28 -0
  637. package/python/Lib/threading.py +1602 -0
  638. package/python/Lib/timeit.py +381 -0
  639. package/python/Lib/token.py +141 -0
  640. package/python/Lib/tokenize.py +592 -0
  641. package/python/Lib/tomllib/__init__.py +10 -0
  642. package/python/Lib/tomllib/__pycache__/__init__.cpython-313.pyc +0 -0
  643. package/python/Lib/tomllib/__pycache__/_parser.cpython-313.pyc +0 -0
  644. package/python/Lib/tomllib/__pycache__/_re.cpython-313.pyc +0 -0
  645. package/python/Lib/tomllib/__pycache__/_types.cpython-313.pyc +0 -0
  646. package/python/Lib/tomllib/_parser.py +703 -0
  647. package/python/Lib/tomllib/_re.py +107 -0
  648. package/python/Lib/tomllib/_types.py +10 -0
  649. package/python/Lib/tomllib/mypy.ini +15 -0
  650. package/python/Lib/trace.py +754 -0
  651. package/python/Lib/traceback.py +1639 -0
  652. package/python/Lib/tracemalloc.py +560 -0
  653. package/python/Lib/tty.py +73 -0
  654. package/python/Lib/types.py +346 -0
  655. package/python/Lib/typing.py +3846 -0
  656. package/python/Lib/unittest/__init__.py +80 -0
  657. package/python/Lib/unittest/__main__.py +18 -0
  658. package/python/Lib/unittest/_log.py +86 -0
  659. package/python/Lib/unittest/async_case.py +146 -0
  660. package/python/Lib/unittest/case.py +1478 -0
  661. package/python/Lib/unittest/loader.py +460 -0
  662. package/python/Lib/unittest/main.py +280 -0
  663. package/python/Lib/unittest/mock.py +3189 -0
  664. package/python/Lib/unittest/result.py +256 -0
  665. package/python/Lib/unittest/runner.py +292 -0
  666. package/python/Lib/unittest/signals.py +71 -0
  667. package/python/Lib/unittest/suite.py +379 -0
  668. package/python/Lib/unittest/util.py +170 -0
  669. package/python/Lib/urllib/__init__.py +0 -0
  670. package/python/Lib/urllib/__pycache__/__init__.cpython-313.pyc +0 -0
  671. package/python/Lib/urllib/__pycache__/error.cpython-313.pyc +0 -0
  672. package/python/Lib/urllib/__pycache__/parse.cpython-313.pyc +0 -0
  673. package/python/Lib/urllib/__pycache__/request.cpython-313.pyc +0 -0
  674. package/python/Lib/urllib/__pycache__/response.cpython-313.pyc +0 -0
  675. package/python/Lib/urllib/error.py +74 -0
  676. package/python/Lib/urllib/parse.py +1264 -0
  677. package/python/Lib/urllib/request.py +2796 -0
  678. package/python/Lib/urllib/response.py +84 -0
  679. package/python/Lib/urllib/robotparser.py +363 -0
  680. package/python/Lib/uuid.py +784 -0
  681. package/python/Lib/warnings.py +735 -0
  682. package/python/Lib/wave.py +665 -0
  683. package/python/Lib/weakref.py +674 -0
  684. package/python/Lib/webbrowser.py +724 -0
  685. package/python/Lib/wsgiref/__init__.py +25 -0
  686. package/python/Lib/wsgiref/handlers.py +575 -0
  687. package/python/Lib/wsgiref/headers.py +192 -0
  688. package/python/Lib/wsgiref/simple_server.py +161 -0
  689. package/python/Lib/wsgiref/types.py +54 -0
  690. package/python/Lib/wsgiref/util.py +159 -0
  691. package/python/Lib/wsgiref/validate.py +438 -0
  692. package/python/Lib/xml/__init__.py +20 -0
  693. package/python/Lib/xml/__pycache__/__init__.cpython-313.pyc +0 -0
  694. package/python/Lib/xml/dom/NodeFilter.py +27 -0
  695. package/python/Lib/xml/dom/__init__.py +140 -0
  696. package/python/Lib/xml/dom/domreg.py +99 -0
  697. package/python/Lib/xml/dom/expatbuilder.py +962 -0
  698. package/python/Lib/xml/dom/minicompat.py +109 -0
  699. package/python/Lib/xml/dom/minidom.py +2024 -0
  700. package/python/Lib/xml/dom/pulldom.py +336 -0
  701. package/python/Lib/xml/dom/xmlbuilder.py +389 -0
  702. package/python/Lib/xml/etree/ElementInclude.py +186 -0
  703. package/python/Lib/xml/etree/ElementPath.py +430 -0
  704. package/python/Lib/xml/etree/ElementTree.py +2116 -0
  705. package/python/Lib/xml/etree/__init__.py +33 -0
  706. package/python/Lib/xml/etree/cElementTree.py +3 -0
  707. package/python/Lib/xml/parsers/__init__.py +8 -0
  708. package/python/Lib/xml/parsers/__pycache__/__init__.cpython-313.pyc +0 -0
  709. package/python/Lib/xml/parsers/__pycache__/expat.cpython-313.pyc +0 -0
  710. package/python/Lib/xml/parsers/expat.py +8 -0
  711. package/python/Lib/xml/sax/__init__.py +94 -0
  712. package/python/Lib/xml/sax/_exceptions.py +127 -0
  713. package/python/Lib/xml/sax/expatreader.py +454 -0
  714. package/python/Lib/xml/sax/handler.py +387 -0
  715. package/python/Lib/xml/sax/saxutils.py +369 -0
  716. package/python/Lib/xml/sax/xmlreader.py +378 -0
  717. package/python/Lib/xmlrpc/__init__.py +1 -0
  718. package/python/Lib/xmlrpc/__pycache__/__init__.cpython-313.pyc +0 -0
  719. package/python/Lib/xmlrpc/__pycache__/client.cpython-313.pyc +0 -0
  720. package/python/Lib/xmlrpc/client.py +1503 -0
  721. package/python/Lib/xmlrpc/server.py +1002 -0
  722. package/python/Lib/zipapp.py +229 -0
  723. package/python/Lib/zipfile/__init__.py +2391 -0
  724. package/python/Lib/zipfile/__main__.py +4 -0
  725. package/python/Lib/zipfile/__pycache__/__init__.cpython-313.pyc +0 -0
  726. package/python/Lib/zipfile/_path/__init__.py +452 -0
  727. package/python/Lib/zipfile/_path/__pycache__/__init__.cpython-313.pyc +0 -0
  728. package/python/Lib/zipfile/_path/__pycache__/glob.cpython-313.pyc +0 -0
  729. package/python/Lib/zipfile/_path/glob.py +113 -0
  730. package/python/Lib/zipimport.py +803 -0
  731. package/python/Lib/zoneinfo/__init__.py +34 -0
  732. package/python/Lib/zoneinfo/_common.py +172 -0
  733. package/python/Lib/zoneinfo/_tzpath.py +189 -0
  734. package/python/Lib/zoneinfo/_zoneinfo.py +779 -0
  735. package/python/licenses/LICENSE.bdb.txt +126 -0
  736. package/python/licenses/LICENSE.bzip2.txt +37 -0
  737. package/python/licenses/LICENSE.cpython.txt +771 -0
  738. package/python/licenses/LICENSE.expat.txt +21 -0
  739. package/python/licenses/LICENSE.libX11.txt +942 -0
  740. package/python/licenses/LICENSE.libXau.txt +21 -0
  741. package/python/licenses/LICENSE.libedit.txt +29 -0
  742. package/python/licenses/LICENSE.libffi.txt +21 -0
  743. package/python/licenses/LICENSE.liblzma.txt +13 -0
  744. package/python/licenses/LICENSE.libuuid.txt +27 -0
  745. package/python/licenses/LICENSE.libxcb.txt +30 -0
  746. package/python/licenses/LICENSE.mpdecimal.txt +24 -0
  747. package/python/licenses/LICENSE.ncurses.txt +29 -0
  748. package/python/licenses/LICENSE.openssl-1.1.txt +124 -0
  749. package/python/licenses/LICENSE.openssl-3.txt +177 -0
  750. package/python/licenses/LICENSE.sqlite.txt +23 -0
  751. package/python/licenses/LICENSE.tcl.txt +40 -0
  752. package/python/licenses/LICENSE.tix.txt +54 -0
  753. package/python/licenses/LICENSE.zlib.txt +21 -0
  754. package/python/python.exe +0 -0
  755. package/python/python3.dll +0 -0
  756. package/python/python313.dll +0 -0
  757. package/python/pythonw.exe +0 -0
  758. package/python/vcruntime140.dll +0 -0
  759. package/python/vcruntime140_1.dll +0 -0
@@ -0,0 +1,814 @@
1
+ """Utilities for with-statement contexts. See PEP 343."""
2
+ import abc
3
+ import os
4
+ import sys
5
+ import _collections_abc
6
+ from collections import deque
7
+ from functools import wraps
8
+ from types import MethodType, GenericAlias
9
+
10
+ __all__ = ["asynccontextmanager", "contextmanager", "closing", "nullcontext",
11
+ "AbstractContextManager", "AbstractAsyncContextManager",
12
+ "AsyncExitStack", "ContextDecorator", "ExitStack",
13
+ "redirect_stdout", "redirect_stderr", "suppress", "aclosing",
14
+ "chdir"]
15
+
16
+
17
+ class AbstractContextManager(abc.ABC):
18
+
19
+ """An abstract base class for context managers."""
20
+
21
+ __class_getitem__ = classmethod(GenericAlias)
22
+
23
+ __slots__ = ()
24
+
25
+ def __enter__(self):
26
+ """Return `self` upon entering the runtime context."""
27
+ return self
28
+
29
+ @abc.abstractmethod
30
+ def __exit__(self, exc_type, exc_value, traceback):
31
+ """Raise any exception triggered within the runtime context."""
32
+ return None
33
+
34
+ @classmethod
35
+ def __subclasshook__(cls, C):
36
+ if cls is AbstractContextManager:
37
+ return _collections_abc._check_methods(C, "__enter__", "__exit__")
38
+ return NotImplemented
39
+
40
+
41
+ class AbstractAsyncContextManager(abc.ABC):
42
+
43
+ """An abstract base class for asynchronous context managers."""
44
+
45
+ __class_getitem__ = classmethod(GenericAlias)
46
+
47
+ __slots__ = ()
48
+
49
+ async def __aenter__(self):
50
+ """Return `self` upon entering the runtime context."""
51
+ return self
52
+
53
+ @abc.abstractmethod
54
+ async def __aexit__(self, exc_type, exc_value, traceback):
55
+ """Raise any exception triggered within the runtime context."""
56
+ return None
57
+
58
+ @classmethod
59
+ def __subclasshook__(cls, C):
60
+ if cls is AbstractAsyncContextManager:
61
+ return _collections_abc._check_methods(C, "__aenter__",
62
+ "__aexit__")
63
+ return NotImplemented
64
+
65
+
66
+ class ContextDecorator(object):
67
+ "A base class or mixin that enables context managers to work as decorators."
68
+
69
+ def _recreate_cm(self):
70
+ """Return a recreated instance of self.
71
+
72
+ Allows an otherwise one-shot context manager like
73
+ _GeneratorContextManager to support use as
74
+ a decorator via implicit recreation.
75
+
76
+ This is a private interface just for _GeneratorContextManager.
77
+ See issue #11647 for details.
78
+ """
79
+ return self
80
+
81
+ def __call__(self, func):
82
+ @wraps(func)
83
+ def inner(*args, **kwds):
84
+ with self._recreate_cm():
85
+ return func(*args, **kwds)
86
+ return inner
87
+
88
+
89
+ class AsyncContextDecorator(object):
90
+ "A base class or mixin that enables async context managers to work as decorators."
91
+
92
+ def _recreate_cm(self):
93
+ """Return a recreated instance of self.
94
+ """
95
+ return self
96
+
97
+ def __call__(self, func):
98
+ @wraps(func)
99
+ async def inner(*args, **kwds):
100
+ async with self._recreate_cm():
101
+ return await func(*args, **kwds)
102
+ return inner
103
+
104
+
105
+ class _GeneratorContextManagerBase:
106
+ """Shared functionality for @contextmanager and @asynccontextmanager."""
107
+
108
+ def __init__(self, func, args, kwds):
109
+ self.gen = func(*args, **kwds)
110
+ self.func, self.args, self.kwds = func, args, kwds
111
+ # Issue 19330: ensure context manager instances have good docstrings
112
+ doc = getattr(func, "__doc__", None)
113
+ if doc is None:
114
+ doc = type(self).__doc__
115
+ self.__doc__ = doc
116
+ # Unfortunately, this still doesn't provide good help output when
117
+ # inspecting the created context manager instances, since pydoc
118
+ # currently bypasses the instance docstring and shows the docstring
119
+ # for the class instead.
120
+ # See http://bugs.python.org/issue19404 for more details.
121
+
122
+ def _recreate_cm(self):
123
+ # _GCMB instances are one-shot context managers, so the
124
+ # CM must be recreated each time a decorated function is
125
+ # called
126
+ return self.__class__(self.func, self.args, self.kwds)
127
+
128
+
129
+ class _GeneratorContextManager(
130
+ _GeneratorContextManagerBase,
131
+ AbstractContextManager,
132
+ ContextDecorator,
133
+ ):
134
+ """Helper for @contextmanager decorator."""
135
+
136
+ def __enter__(self):
137
+ # do not keep args and kwds alive unnecessarily
138
+ # they are only needed for recreation, which is not possible anymore
139
+ del self.args, self.kwds, self.func
140
+ try:
141
+ return next(self.gen)
142
+ except StopIteration:
143
+ raise RuntimeError("generator didn't yield") from None
144
+
145
+ def __exit__(self, typ, value, traceback):
146
+ if typ is None:
147
+ try:
148
+ next(self.gen)
149
+ except StopIteration:
150
+ return False
151
+ else:
152
+ try:
153
+ raise RuntimeError("generator didn't stop")
154
+ finally:
155
+ self.gen.close()
156
+ else:
157
+ if value is None:
158
+ # Need to force instantiation so we can reliably
159
+ # tell if we get the same exception back
160
+ value = typ()
161
+ try:
162
+ self.gen.throw(value)
163
+ except StopIteration as exc:
164
+ # Suppress StopIteration *unless* it's the same exception that
165
+ # was passed to throw(). This prevents a StopIteration
166
+ # raised inside the "with" statement from being suppressed.
167
+ return exc is not value
168
+ except RuntimeError as exc:
169
+ # Don't re-raise the passed in exception. (issue27122)
170
+ if exc is value:
171
+ exc.__traceback__ = traceback
172
+ return False
173
+ # Avoid suppressing if a StopIteration exception
174
+ # was passed to throw() and later wrapped into a RuntimeError
175
+ # (see PEP 479 for sync generators; async generators also
176
+ # have this behavior). But do this only if the exception wrapped
177
+ # by the RuntimeError is actually Stop(Async)Iteration (see
178
+ # issue29692).
179
+ if (
180
+ isinstance(value, StopIteration)
181
+ and exc.__cause__ is value
182
+ ):
183
+ value.__traceback__ = traceback
184
+ return False
185
+ raise
186
+ except BaseException as exc:
187
+ # only re-raise if it's *not* the exception that was
188
+ # passed to throw(), because __exit__() must not raise
189
+ # an exception unless __exit__() itself failed. But throw()
190
+ # has to raise the exception to signal propagation, so this
191
+ # fixes the impedance mismatch between the throw() protocol
192
+ # and the __exit__() protocol.
193
+ if exc is not value:
194
+ raise
195
+ exc.__traceback__ = traceback
196
+ return False
197
+ try:
198
+ raise RuntimeError("generator didn't stop after throw()")
199
+ finally:
200
+ self.gen.close()
201
+
202
+ class _AsyncGeneratorContextManager(
203
+ _GeneratorContextManagerBase,
204
+ AbstractAsyncContextManager,
205
+ AsyncContextDecorator,
206
+ ):
207
+ """Helper for @asynccontextmanager decorator."""
208
+
209
+ async def __aenter__(self):
210
+ # do not keep args and kwds alive unnecessarily
211
+ # they are only needed for recreation, which is not possible anymore
212
+ del self.args, self.kwds, self.func
213
+ try:
214
+ return await anext(self.gen)
215
+ except StopAsyncIteration:
216
+ raise RuntimeError("generator didn't yield") from None
217
+
218
+ async def __aexit__(self, typ, value, traceback):
219
+ if typ is None:
220
+ try:
221
+ await anext(self.gen)
222
+ except StopAsyncIteration:
223
+ return False
224
+ else:
225
+ try:
226
+ raise RuntimeError("generator didn't stop")
227
+ finally:
228
+ await self.gen.aclose()
229
+ else:
230
+ if value is None:
231
+ # Need to force instantiation so we can reliably
232
+ # tell if we get the same exception back
233
+ value = typ()
234
+ try:
235
+ await self.gen.athrow(value)
236
+ except StopAsyncIteration as exc:
237
+ # Suppress StopIteration *unless* it's the same exception that
238
+ # was passed to throw(). This prevents a StopIteration
239
+ # raised inside the "with" statement from being suppressed.
240
+ return exc is not value
241
+ except RuntimeError as exc:
242
+ # Don't re-raise the passed in exception. (issue27122)
243
+ if exc is value:
244
+ exc.__traceback__ = traceback
245
+ return False
246
+ # Avoid suppressing if a Stop(Async)Iteration exception
247
+ # was passed to athrow() and later wrapped into a RuntimeError
248
+ # (see PEP 479 for sync generators; async generators also
249
+ # have this behavior). But do this only if the exception wrapped
250
+ # by the RuntimeError is actually Stop(Async)Iteration (see
251
+ # issue29692).
252
+ if (
253
+ isinstance(value, (StopIteration, StopAsyncIteration))
254
+ and exc.__cause__ is value
255
+ ):
256
+ value.__traceback__ = traceback
257
+ return False
258
+ raise
259
+ except BaseException as exc:
260
+ # only re-raise if it's *not* the exception that was
261
+ # passed to throw(), because __exit__() must not raise
262
+ # an exception unless __exit__() itself failed. But throw()
263
+ # has to raise the exception to signal propagation, so this
264
+ # fixes the impedance mismatch between the throw() protocol
265
+ # and the __exit__() protocol.
266
+ if exc is not value:
267
+ raise
268
+ exc.__traceback__ = traceback
269
+ return False
270
+ try:
271
+ raise RuntimeError("generator didn't stop after athrow()")
272
+ finally:
273
+ await self.gen.aclose()
274
+
275
+
276
+ def contextmanager(func):
277
+ """@contextmanager decorator.
278
+
279
+ Typical usage:
280
+
281
+ @contextmanager
282
+ def some_generator(<arguments>):
283
+ <setup>
284
+ try:
285
+ yield <value>
286
+ finally:
287
+ <cleanup>
288
+
289
+ This makes this:
290
+
291
+ with some_generator(<arguments>) as <variable>:
292
+ <body>
293
+
294
+ equivalent to this:
295
+
296
+ <setup>
297
+ try:
298
+ <variable> = <value>
299
+ <body>
300
+ finally:
301
+ <cleanup>
302
+ """
303
+ @wraps(func)
304
+ def helper(*args, **kwds):
305
+ return _GeneratorContextManager(func, args, kwds)
306
+ return helper
307
+
308
+
309
+ def asynccontextmanager(func):
310
+ """@asynccontextmanager decorator.
311
+
312
+ Typical usage:
313
+
314
+ @asynccontextmanager
315
+ async def some_async_generator(<arguments>):
316
+ <setup>
317
+ try:
318
+ yield <value>
319
+ finally:
320
+ <cleanup>
321
+
322
+ This makes this:
323
+
324
+ async with some_async_generator(<arguments>) as <variable>:
325
+ <body>
326
+
327
+ equivalent to this:
328
+
329
+ <setup>
330
+ try:
331
+ <variable> = <value>
332
+ <body>
333
+ finally:
334
+ <cleanup>
335
+ """
336
+ @wraps(func)
337
+ def helper(*args, **kwds):
338
+ return _AsyncGeneratorContextManager(func, args, kwds)
339
+ return helper
340
+
341
+
342
+ class closing(AbstractContextManager):
343
+ """Context to automatically close something at the end of a block.
344
+
345
+ Code like this:
346
+
347
+ with closing(<module>.open(<arguments>)) as f:
348
+ <block>
349
+
350
+ is equivalent to this:
351
+
352
+ f = <module>.open(<arguments>)
353
+ try:
354
+ <block>
355
+ finally:
356
+ f.close()
357
+
358
+ """
359
+ def __init__(self, thing):
360
+ self.thing = thing
361
+ def __enter__(self):
362
+ return self.thing
363
+ def __exit__(self, *exc_info):
364
+ self.thing.close()
365
+
366
+
367
+ class aclosing(AbstractAsyncContextManager):
368
+ """Async context manager for safely finalizing an asynchronously cleaned-up
369
+ resource such as an async generator, calling its ``aclose()`` method.
370
+
371
+ Code like this:
372
+
373
+ async with aclosing(<module>.fetch(<arguments>)) as agen:
374
+ <block>
375
+
376
+ is equivalent to this:
377
+
378
+ agen = <module>.fetch(<arguments>)
379
+ try:
380
+ <block>
381
+ finally:
382
+ await agen.aclose()
383
+
384
+ """
385
+ def __init__(self, thing):
386
+ self.thing = thing
387
+ async def __aenter__(self):
388
+ return self.thing
389
+ async def __aexit__(self, *exc_info):
390
+ await self.thing.aclose()
391
+
392
+
393
+ class _RedirectStream(AbstractContextManager):
394
+
395
+ _stream = None
396
+
397
+ def __init__(self, new_target):
398
+ self._new_target = new_target
399
+ # We use a list of old targets to make this CM re-entrant
400
+ self._old_targets = []
401
+
402
+ def __enter__(self):
403
+ self._old_targets.append(getattr(sys, self._stream))
404
+ setattr(sys, self._stream, self._new_target)
405
+ return self._new_target
406
+
407
+ def __exit__(self, exctype, excinst, exctb):
408
+ setattr(sys, self._stream, self._old_targets.pop())
409
+
410
+
411
+ class redirect_stdout(_RedirectStream):
412
+ """Context manager for temporarily redirecting stdout to another file.
413
+
414
+ # How to send help() to stderr
415
+ with redirect_stdout(sys.stderr):
416
+ help(dir)
417
+
418
+ # How to write help() to a file
419
+ with open('help.txt', 'w') as f:
420
+ with redirect_stdout(f):
421
+ help(pow)
422
+ """
423
+
424
+ _stream = "stdout"
425
+
426
+
427
+ class redirect_stderr(_RedirectStream):
428
+ """Context manager for temporarily redirecting stderr to another file."""
429
+
430
+ _stream = "stderr"
431
+
432
+
433
+ class suppress(AbstractContextManager):
434
+ """Context manager to suppress specified exceptions
435
+
436
+ After the exception is suppressed, execution proceeds with the next
437
+ statement following the with statement.
438
+
439
+ with suppress(FileNotFoundError):
440
+ os.remove(somefile)
441
+ # Execution still resumes here if the file was already removed
442
+ """
443
+
444
+ def __init__(self, *exceptions):
445
+ self._exceptions = exceptions
446
+
447
+ def __enter__(self):
448
+ pass
449
+
450
+ def __exit__(self, exctype, excinst, exctb):
451
+ # Unlike isinstance and issubclass, CPython exception handling
452
+ # currently only looks at the concrete type hierarchy (ignoring
453
+ # the instance and subclass checking hooks). While Guido considers
454
+ # that a bug rather than a feature, it's a fairly hard one to fix
455
+ # due to various internal implementation details. suppress provides
456
+ # the simpler issubclass based semantics, rather than trying to
457
+ # exactly reproduce the limitations of the CPython interpreter.
458
+ #
459
+ # See http://bugs.python.org/issue12029 for more details
460
+ if exctype is None:
461
+ return
462
+ if issubclass(exctype, self._exceptions):
463
+ return True
464
+ if issubclass(exctype, BaseExceptionGroup):
465
+ match, rest = excinst.split(self._exceptions)
466
+ if rest is None:
467
+ return True
468
+ raise rest
469
+ return False
470
+
471
+
472
+ class _BaseExitStack:
473
+ """A base class for ExitStack and AsyncExitStack."""
474
+
475
+ @staticmethod
476
+ def _create_exit_wrapper(cm, cm_exit):
477
+ return MethodType(cm_exit, cm)
478
+
479
+ @staticmethod
480
+ def _create_cb_wrapper(callback, /, *args, **kwds):
481
+ def _exit_wrapper(exc_type, exc, tb):
482
+ callback(*args, **kwds)
483
+ return _exit_wrapper
484
+
485
+ def __init__(self):
486
+ self._exit_callbacks = deque()
487
+
488
+ def pop_all(self):
489
+ """Preserve the context stack by transferring it to a new instance."""
490
+ new_stack = type(self)()
491
+ new_stack._exit_callbacks = self._exit_callbacks
492
+ self._exit_callbacks = deque()
493
+ return new_stack
494
+
495
+ def push(self, exit):
496
+ """Registers a callback with the standard __exit__ method signature.
497
+
498
+ Can suppress exceptions the same way __exit__ method can.
499
+ Also accepts any object with an __exit__ method (registering a call
500
+ to the method instead of the object itself).
501
+ """
502
+ # We use an unbound method rather than a bound method to follow
503
+ # the standard lookup behaviour for special methods.
504
+ _cb_type = type(exit)
505
+
506
+ try:
507
+ exit_method = _cb_type.__exit__
508
+ except AttributeError:
509
+ # Not a context manager, so assume it's a callable.
510
+ self._push_exit_callback(exit)
511
+ else:
512
+ self._push_cm_exit(exit, exit_method)
513
+ return exit # Allow use as a decorator.
514
+
515
+ def enter_context(self, cm):
516
+ """Enters the supplied context manager.
517
+
518
+ If successful, also pushes its __exit__ method as a callback and
519
+ returns the result of the __enter__ method.
520
+ """
521
+ # We look up the special methods on the type to match the with
522
+ # statement.
523
+ cls = type(cm)
524
+ try:
525
+ _enter = cls.__enter__
526
+ _exit = cls.__exit__
527
+ except AttributeError:
528
+ raise TypeError(f"'{cls.__module__}.{cls.__qualname__}' object does "
529
+ f"not support the context manager protocol") from None
530
+ result = _enter(cm)
531
+ self._push_cm_exit(cm, _exit)
532
+ return result
533
+
534
+ def callback(self, callback, /, *args, **kwds):
535
+ """Registers an arbitrary callback and arguments.
536
+
537
+ Cannot suppress exceptions.
538
+ """
539
+ _exit_wrapper = self._create_cb_wrapper(callback, *args, **kwds)
540
+
541
+ # We changed the signature, so using @wraps is not appropriate, but
542
+ # setting __wrapped__ may still help with introspection.
543
+ _exit_wrapper.__wrapped__ = callback
544
+ self._push_exit_callback(_exit_wrapper)
545
+ return callback # Allow use as a decorator
546
+
547
+ def _push_cm_exit(self, cm, cm_exit):
548
+ """Helper to correctly register callbacks to __exit__ methods."""
549
+ _exit_wrapper = self._create_exit_wrapper(cm, cm_exit)
550
+ self._push_exit_callback(_exit_wrapper, True)
551
+
552
+ def _push_exit_callback(self, callback, is_sync=True):
553
+ self._exit_callbacks.append((is_sync, callback))
554
+
555
+
556
+ # Inspired by discussions on http://bugs.python.org/issue13585
557
+ class ExitStack(_BaseExitStack, AbstractContextManager):
558
+ """Context manager for dynamic management of a stack of exit callbacks.
559
+
560
+ For example:
561
+ with ExitStack() as stack:
562
+ files = [stack.enter_context(open(fname)) for fname in filenames]
563
+ # All opened files will automatically be closed at the end of
564
+ # the with statement, even if attempts to open files later
565
+ # in the list raise an exception.
566
+ """
567
+
568
+ def __enter__(self):
569
+ return self
570
+
571
+ def __exit__(self, *exc_details):
572
+ exc = exc_details[1]
573
+ received_exc = exc is not None
574
+
575
+ # We manipulate the exception state so it behaves as though
576
+ # we were actually nesting multiple with statements
577
+ frame_exc = sys.exception()
578
+ def _fix_exception_context(new_exc, old_exc):
579
+ # Context may not be correct, so find the end of the chain
580
+ while 1:
581
+ exc_context = new_exc.__context__
582
+ if exc_context is None or exc_context is old_exc:
583
+ # Context is already set correctly (see issue 20317)
584
+ return
585
+ if exc_context is frame_exc:
586
+ break
587
+ new_exc = exc_context
588
+ # Change the end of the chain to point to the exception
589
+ # we expect it to reference
590
+ new_exc.__context__ = old_exc
591
+
592
+ # Callbacks are invoked in LIFO order to match the behaviour of
593
+ # nested context managers
594
+ suppressed_exc = False
595
+ pending_raise = False
596
+ while self._exit_callbacks:
597
+ is_sync, cb = self._exit_callbacks.pop()
598
+ assert is_sync
599
+ try:
600
+ if exc is None:
601
+ exc_details = None, None, None
602
+ else:
603
+ exc_details = type(exc), exc, exc.__traceback__
604
+ if cb(*exc_details):
605
+ suppressed_exc = True
606
+ pending_raise = False
607
+ exc = None
608
+ except BaseException as new_exc:
609
+ # simulate the stack of exceptions by setting the context
610
+ _fix_exception_context(new_exc, exc)
611
+ pending_raise = True
612
+ exc = new_exc
613
+
614
+ if pending_raise:
615
+ try:
616
+ # bare "raise exc" replaces our carefully
617
+ # set-up context
618
+ fixed_ctx = exc.__context__
619
+ raise exc
620
+ except BaseException:
621
+ exc.__context__ = fixed_ctx
622
+ raise
623
+ return received_exc and suppressed_exc
624
+
625
+ def close(self):
626
+ """Immediately unwind the context stack."""
627
+ self.__exit__(None, None, None)
628
+
629
+
630
+ # Inspired by discussions on https://bugs.python.org/issue29302
631
+ class AsyncExitStack(_BaseExitStack, AbstractAsyncContextManager):
632
+ """Async context manager for dynamic management of a stack of exit
633
+ callbacks.
634
+
635
+ For example:
636
+ async with AsyncExitStack() as stack:
637
+ connections = [await stack.enter_async_context(get_connection())
638
+ for i in range(5)]
639
+ # All opened connections will automatically be released at the
640
+ # end of the async with statement, even if attempts to open a
641
+ # connection later in the list raise an exception.
642
+ """
643
+
644
+ @staticmethod
645
+ def _create_async_exit_wrapper(cm, cm_exit):
646
+ return MethodType(cm_exit, cm)
647
+
648
+ @staticmethod
649
+ def _create_async_cb_wrapper(callback, /, *args, **kwds):
650
+ async def _exit_wrapper(exc_type, exc, tb):
651
+ await callback(*args, **kwds)
652
+ return _exit_wrapper
653
+
654
+ async def enter_async_context(self, cm):
655
+ """Enters the supplied async context manager.
656
+
657
+ If successful, also pushes its __aexit__ method as a callback and
658
+ returns the result of the __aenter__ method.
659
+ """
660
+ cls = type(cm)
661
+ try:
662
+ _enter = cls.__aenter__
663
+ _exit = cls.__aexit__
664
+ except AttributeError:
665
+ raise TypeError(f"'{cls.__module__}.{cls.__qualname__}' object does "
666
+ f"not support the asynchronous context manager protocol"
667
+ ) from None
668
+ result = await _enter(cm)
669
+ self._push_async_cm_exit(cm, _exit)
670
+ return result
671
+
672
+ def push_async_exit(self, exit):
673
+ """Registers a coroutine function with the standard __aexit__ method
674
+ signature.
675
+
676
+ Can suppress exceptions the same way __aexit__ method can.
677
+ Also accepts any object with an __aexit__ method (registering a call
678
+ to the method instead of the object itself).
679
+ """
680
+ _cb_type = type(exit)
681
+ try:
682
+ exit_method = _cb_type.__aexit__
683
+ except AttributeError:
684
+ # Not an async context manager, so assume it's a coroutine function
685
+ self._push_exit_callback(exit, False)
686
+ else:
687
+ self._push_async_cm_exit(exit, exit_method)
688
+ return exit # Allow use as a decorator
689
+
690
+ def push_async_callback(self, callback, /, *args, **kwds):
691
+ """Registers an arbitrary coroutine function and arguments.
692
+
693
+ Cannot suppress exceptions.
694
+ """
695
+ _exit_wrapper = self._create_async_cb_wrapper(callback, *args, **kwds)
696
+
697
+ # We changed the signature, so using @wraps is not appropriate, but
698
+ # setting __wrapped__ may still help with introspection.
699
+ _exit_wrapper.__wrapped__ = callback
700
+ self._push_exit_callback(_exit_wrapper, False)
701
+ return callback # Allow use as a decorator
702
+
703
+ async def aclose(self):
704
+ """Immediately unwind the context stack."""
705
+ await self.__aexit__(None, None, None)
706
+
707
+ def _push_async_cm_exit(self, cm, cm_exit):
708
+ """Helper to correctly register coroutine function to __aexit__
709
+ method."""
710
+ _exit_wrapper = self._create_async_exit_wrapper(cm, cm_exit)
711
+ self._push_exit_callback(_exit_wrapper, False)
712
+
713
+ async def __aenter__(self):
714
+ return self
715
+
716
+ async def __aexit__(self, *exc_details):
717
+ exc = exc_details[1]
718
+ received_exc = exc is not None
719
+
720
+ # We manipulate the exception state so it behaves as though
721
+ # we were actually nesting multiple with statements
722
+ frame_exc = sys.exception()
723
+ def _fix_exception_context(new_exc, old_exc):
724
+ # Context may not be correct, so find the end of the chain
725
+ while 1:
726
+ exc_context = new_exc.__context__
727
+ if exc_context is None or exc_context is old_exc:
728
+ # Context is already set correctly (see issue 20317)
729
+ return
730
+ if exc_context is frame_exc:
731
+ break
732
+ new_exc = exc_context
733
+ # Change the end of the chain to point to the exception
734
+ # we expect it to reference
735
+ new_exc.__context__ = old_exc
736
+
737
+ # Callbacks are invoked in LIFO order to match the behaviour of
738
+ # nested context managers
739
+ suppressed_exc = False
740
+ pending_raise = False
741
+ while self._exit_callbacks:
742
+ is_sync, cb = self._exit_callbacks.pop()
743
+ try:
744
+ if exc is None:
745
+ exc_details = None, None, None
746
+ else:
747
+ exc_details = type(exc), exc, exc.__traceback__
748
+ if is_sync:
749
+ cb_suppress = cb(*exc_details)
750
+ else:
751
+ cb_suppress = await cb(*exc_details)
752
+
753
+ if cb_suppress:
754
+ suppressed_exc = True
755
+ pending_raise = False
756
+ exc = None
757
+ except BaseException as new_exc:
758
+ # simulate the stack of exceptions by setting the context
759
+ _fix_exception_context(new_exc, exc)
760
+ pending_raise = True
761
+ exc = new_exc
762
+
763
+ if pending_raise:
764
+ try:
765
+ # bare "raise exc" replaces our carefully
766
+ # set-up context
767
+ fixed_ctx = exc.__context__
768
+ raise exc
769
+ except BaseException:
770
+ exc.__context__ = fixed_ctx
771
+ raise
772
+ return received_exc and suppressed_exc
773
+
774
+
775
+ class nullcontext(AbstractContextManager, AbstractAsyncContextManager):
776
+ """Context manager that does no additional processing.
777
+
778
+ Used as a stand-in for a normal context manager, when a particular
779
+ block of code is only sometimes used with a normal context manager:
780
+
781
+ cm = optional_cm if condition else nullcontext()
782
+ with cm:
783
+ # Perform operation, using optional_cm if condition is True
784
+ """
785
+
786
+ def __init__(self, enter_result=None):
787
+ self.enter_result = enter_result
788
+
789
+ def __enter__(self):
790
+ return self.enter_result
791
+
792
+ def __exit__(self, *excinfo):
793
+ pass
794
+
795
+ async def __aenter__(self):
796
+ return self.enter_result
797
+
798
+ async def __aexit__(self, *excinfo):
799
+ pass
800
+
801
+
802
+ class chdir(AbstractContextManager):
803
+ """Non thread-safe context manager to change the current working directory."""
804
+
805
+ def __init__(self, path):
806
+ self.path = path
807
+ self._old_cwd = []
808
+
809
+ def __enter__(self):
810
+ self._old_cwd.append(os.getcwd())
811
+ os.chdir(self.path)
812
+
813
+ def __exit__(self, *excinfo):
814
+ os.chdir(self._old_cwd.pop())