@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,906 @@
1
+ """Selector and proactor event loops for Windows."""
2
+
3
+ import sys
4
+
5
+ if sys.platform != 'win32': # pragma: no cover
6
+ raise ImportError('win32 only')
7
+
8
+ import _overlapped
9
+ import _winapi
10
+ import errno
11
+ from functools import partial
12
+ import math
13
+ import msvcrt
14
+ import socket
15
+ import struct
16
+ import time
17
+ import weakref
18
+
19
+ from . import events
20
+ from . import base_subprocess
21
+ from . import futures
22
+ from . import exceptions
23
+ from . import proactor_events
24
+ from . import selector_events
25
+ from . import tasks
26
+ from . import windows_utils
27
+ from .log import logger
28
+
29
+
30
+ __all__ = (
31
+ 'SelectorEventLoop', 'ProactorEventLoop', 'IocpProactor',
32
+ 'DefaultEventLoopPolicy', 'WindowsSelectorEventLoopPolicy',
33
+ 'WindowsProactorEventLoopPolicy', 'EventLoop',
34
+ )
35
+
36
+
37
+ NULL = _winapi.NULL
38
+ INFINITE = _winapi.INFINITE
39
+ ERROR_CONNECTION_REFUSED = 1225
40
+ ERROR_CONNECTION_ABORTED = 1236
41
+
42
+ # Initial delay in seconds for connect_pipe() before retrying to connect
43
+ CONNECT_PIPE_INIT_DELAY = 0.001
44
+
45
+ # Maximum delay in seconds for connect_pipe() before retrying to connect
46
+ CONNECT_PIPE_MAX_DELAY = 0.100
47
+
48
+
49
+ class _OverlappedFuture(futures.Future):
50
+ """Subclass of Future which represents an overlapped operation.
51
+
52
+ Cancelling it will immediately cancel the overlapped operation.
53
+ """
54
+
55
+ def __init__(self, ov, *, loop=None):
56
+ super().__init__(loop=loop)
57
+ if self._source_traceback:
58
+ del self._source_traceback[-1]
59
+ self._ov = ov
60
+
61
+ def _repr_info(self):
62
+ info = super()._repr_info()
63
+ if self._ov is not None:
64
+ state = 'pending' if self._ov.pending else 'completed'
65
+ info.insert(1, f'overlapped=<{state}, {self._ov.address:#x}>')
66
+ return info
67
+
68
+ def _cancel_overlapped(self):
69
+ if self._ov is None:
70
+ return
71
+ try:
72
+ self._ov.cancel()
73
+ except OSError as exc:
74
+ context = {
75
+ 'message': 'Cancelling an overlapped future failed',
76
+ 'exception': exc,
77
+ 'future': self,
78
+ }
79
+ if self._source_traceback:
80
+ context['source_traceback'] = self._source_traceback
81
+ self._loop.call_exception_handler(context)
82
+ self._ov = None
83
+
84
+ def cancel(self, msg=None):
85
+ self._cancel_overlapped()
86
+ return super().cancel(msg=msg)
87
+
88
+ def set_exception(self, exception):
89
+ super().set_exception(exception)
90
+ self._cancel_overlapped()
91
+
92
+ def set_result(self, result):
93
+ super().set_result(result)
94
+ self._ov = None
95
+
96
+
97
+ class _BaseWaitHandleFuture(futures.Future):
98
+ """Subclass of Future which represents a wait handle."""
99
+
100
+ def __init__(self, ov, handle, wait_handle, *, loop=None):
101
+ super().__init__(loop=loop)
102
+ if self._source_traceback:
103
+ del self._source_traceback[-1]
104
+ # Keep a reference to the Overlapped object to keep it alive until the
105
+ # wait is unregistered
106
+ self._ov = ov
107
+ self._handle = handle
108
+ self._wait_handle = wait_handle
109
+
110
+ # Should we call UnregisterWaitEx() if the wait completes
111
+ # or is cancelled?
112
+ self._registered = True
113
+
114
+ def _poll(self):
115
+ # non-blocking wait: use a timeout of 0 millisecond
116
+ return (_winapi.WaitForSingleObject(self._handle, 0) ==
117
+ _winapi.WAIT_OBJECT_0)
118
+
119
+ def _repr_info(self):
120
+ info = super()._repr_info()
121
+ info.append(f'handle={self._handle:#x}')
122
+ if self._handle is not None:
123
+ state = 'signaled' if self._poll() else 'waiting'
124
+ info.append(state)
125
+ if self._wait_handle is not None:
126
+ info.append(f'wait_handle={self._wait_handle:#x}')
127
+ return info
128
+
129
+ def _unregister_wait_cb(self, fut):
130
+ # The wait was unregistered: it's not safe to destroy the Overlapped
131
+ # object
132
+ self._ov = None
133
+
134
+ def _unregister_wait(self):
135
+ if not self._registered:
136
+ return
137
+ self._registered = False
138
+
139
+ wait_handle = self._wait_handle
140
+ self._wait_handle = None
141
+ try:
142
+ _overlapped.UnregisterWait(wait_handle)
143
+ except OSError as exc:
144
+ if exc.winerror != _overlapped.ERROR_IO_PENDING:
145
+ context = {
146
+ 'message': 'Failed to unregister the wait handle',
147
+ 'exception': exc,
148
+ 'future': self,
149
+ }
150
+ if self._source_traceback:
151
+ context['source_traceback'] = self._source_traceback
152
+ self._loop.call_exception_handler(context)
153
+ return
154
+ # ERROR_IO_PENDING means that the unregister is pending
155
+
156
+ self._unregister_wait_cb(None)
157
+
158
+ def cancel(self, msg=None):
159
+ self._unregister_wait()
160
+ return super().cancel(msg=msg)
161
+
162
+ def set_exception(self, exception):
163
+ self._unregister_wait()
164
+ super().set_exception(exception)
165
+
166
+ def set_result(self, result):
167
+ self._unregister_wait()
168
+ super().set_result(result)
169
+
170
+
171
+ class _WaitCancelFuture(_BaseWaitHandleFuture):
172
+ """Subclass of Future which represents a wait for the cancellation of a
173
+ _WaitHandleFuture using an event.
174
+ """
175
+
176
+ def __init__(self, ov, event, wait_handle, *, loop=None):
177
+ super().__init__(ov, event, wait_handle, loop=loop)
178
+
179
+ self._done_callback = None
180
+
181
+ def cancel(self):
182
+ raise RuntimeError("_WaitCancelFuture must not be cancelled")
183
+
184
+ def set_result(self, result):
185
+ super().set_result(result)
186
+ if self._done_callback is not None:
187
+ self._done_callback(self)
188
+
189
+ def set_exception(self, exception):
190
+ super().set_exception(exception)
191
+ if self._done_callback is not None:
192
+ self._done_callback(self)
193
+
194
+
195
+ class _WaitHandleFuture(_BaseWaitHandleFuture):
196
+ def __init__(self, ov, handle, wait_handle, proactor, *, loop=None):
197
+ super().__init__(ov, handle, wait_handle, loop=loop)
198
+ self._proactor = proactor
199
+ self._unregister_proactor = True
200
+ self._event = _overlapped.CreateEvent(None, True, False, None)
201
+ self._event_fut = None
202
+
203
+ def _unregister_wait_cb(self, fut):
204
+ if self._event is not None:
205
+ _winapi.CloseHandle(self._event)
206
+ self._event = None
207
+ self._event_fut = None
208
+
209
+ # If the wait was cancelled, the wait may never be signalled, so
210
+ # it's required to unregister it. Otherwise, IocpProactor.close() will
211
+ # wait forever for an event which will never come.
212
+ #
213
+ # If the IocpProactor already received the event, it's safe to call
214
+ # _unregister() because we kept a reference to the Overlapped object
215
+ # which is used as a unique key.
216
+ self._proactor._unregister(self._ov)
217
+ self._proactor = None
218
+
219
+ super()._unregister_wait_cb(fut)
220
+
221
+ def _unregister_wait(self):
222
+ if not self._registered:
223
+ return
224
+ self._registered = False
225
+
226
+ wait_handle = self._wait_handle
227
+ self._wait_handle = None
228
+ try:
229
+ _overlapped.UnregisterWaitEx(wait_handle, self._event)
230
+ except OSError as exc:
231
+ if exc.winerror != _overlapped.ERROR_IO_PENDING:
232
+ context = {
233
+ 'message': 'Failed to unregister the wait handle',
234
+ 'exception': exc,
235
+ 'future': self,
236
+ }
237
+ if self._source_traceback:
238
+ context['source_traceback'] = self._source_traceback
239
+ self._loop.call_exception_handler(context)
240
+ return
241
+ # ERROR_IO_PENDING is not an error, the wait was unregistered
242
+
243
+ self._event_fut = self._proactor._wait_cancel(self._event,
244
+ self._unregister_wait_cb)
245
+
246
+
247
+ class PipeServer(object):
248
+ """Class representing a pipe server.
249
+
250
+ This is much like a bound, listening socket.
251
+ """
252
+ def __init__(self, address):
253
+ self._address = address
254
+ self._free_instances = weakref.WeakSet()
255
+ # initialize the pipe attribute before calling _server_pipe_handle()
256
+ # because this function can raise an exception and the destructor calls
257
+ # the close() method
258
+ self._pipe = None
259
+ self._accept_pipe_future = None
260
+ self._pipe = self._server_pipe_handle(True)
261
+
262
+ def _get_unconnected_pipe(self):
263
+ # Create new instance and return previous one. This ensures
264
+ # that (until the server is closed) there is always at least
265
+ # one pipe handle for address. Therefore if a client attempt
266
+ # to connect it will not fail with FileNotFoundError.
267
+ tmp, self._pipe = self._pipe, self._server_pipe_handle(False)
268
+ return tmp
269
+
270
+ def _server_pipe_handle(self, first):
271
+ # Return a wrapper for a new pipe handle.
272
+ if self.closed():
273
+ return None
274
+ flags = _winapi.PIPE_ACCESS_DUPLEX | _winapi.FILE_FLAG_OVERLAPPED
275
+ if first:
276
+ flags |= _winapi.FILE_FLAG_FIRST_PIPE_INSTANCE
277
+ h = _winapi.CreateNamedPipe(
278
+ self._address, flags,
279
+ _winapi.PIPE_TYPE_MESSAGE | _winapi.PIPE_READMODE_MESSAGE |
280
+ _winapi.PIPE_WAIT,
281
+ _winapi.PIPE_UNLIMITED_INSTANCES,
282
+ windows_utils.BUFSIZE, windows_utils.BUFSIZE,
283
+ _winapi.NMPWAIT_WAIT_FOREVER, _winapi.NULL)
284
+ pipe = windows_utils.PipeHandle(h)
285
+ self._free_instances.add(pipe)
286
+ return pipe
287
+
288
+ def closed(self):
289
+ return (self._address is None)
290
+
291
+ def close(self):
292
+ if self._accept_pipe_future is not None:
293
+ self._accept_pipe_future.cancel()
294
+ self._accept_pipe_future = None
295
+ # Close all instances which have not been connected to by a client.
296
+ if self._address is not None:
297
+ for pipe in self._free_instances:
298
+ pipe.close()
299
+ self._pipe = None
300
+ self._address = None
301
+ self._free_instances.clear()
302
+
303
+ __del__ = close
304
+
305
+
306
+ class _WindowsSelectorEventLoop(selector_events.BaseSelectorEventLoop):
307
+ """Windows version of selector event loop."""
308
+
309
+
310
+ class ProactorEventLoop(proactor_events.BaseProactorEventLoop):
311
+ """Windows version of proactor event loop using IOCP."""
312
+
313
+ def __init__(self, proactor=None):
314
+ if proactor is None:
315
+ proactor = IocpProactor()
316
+ super().__init__(proactor)
317
+
318
+ def _run_forever_setup(self):
319
+ assert self._self_reading_future is None
320
+ self.call_soon(self._loop_self_reading)
321
+ super()._run_forever_setup()
322
+
323
+ def _run_forever_cleanup(self):
324
+ super()._run_forever_cleanup()
325
+ if self._self_reading_future is not None:
326
+ ov = self._self_reading_future._ov
327
+ self._self_reading_future.cancel()
328
+ # self_reading_future always uses IOCP, so even though it's
329
+ # been cancelled, we need to make sure that the IOCP message
330
+ # is received so that the kernel is not holding on to the
331
+ # memory, possibly causing memory corruption later. Only
332
+ # unregister it if IO is complete in all respects. Otherwise
333
+ # we need another _poll() later to complete the IO.
334
+ if ov is not None and not ov.pending:
335
+ self._proactor._unregister(ov)
336
+ self._self_reading_future = None
337
+
338
+ async def create_pipe_connection(self, protocol_factory, address):
339
+ f = self._proactor.connect_pipe(address)
340
+ pipe = await f
341
+ protocol = protocol_factory()
342
+ trans = self._make_duplex_pipe_transport(pipe, protocol,
343
+ extra={'addr': address})
344
+ return trans, protocol
345
+
346
+ async def start_serving_pipe(self, protocol_factory, address):
347
+ server = PipeServer(address)
348
+
349
+ def loop_accept_pipe(f=None):
350
+ pipe = None
351
+ try:
352
+ if f:
353
+ pipe = f.result()
354
+ server._free_instances.discard(pipe)
355
+
356
+ if server.closed():
357
+ # A client connected before the server was closed:
358
+ # drop the client (close the pipe) and exit
359
+ pipe.close()
360
+ return
361
+
362
+ protocol = protocol_factory()
363
+ self._make_duplex_pipe_transport(
364
+ pipe, protocol, extra={'addr': address})
365
+
366
+ pipe = server._get_unconnected_pipe()
367
+ if pipe is None:
368
+ return
369
+
370
+ f = self._proactor.accept_pipe(pipe)
371
+ except BrokenPipeError:
372
+ if pipe and pipe.fileno() != -1:
373
+ pipe.close()
374
+ self.call_soon(loop_accept_pipe)
375
+ except OSError as exc:
376
+ if pipe and pipe.fileno() != -1:
377
+ self.call_exception_handler({
378
+ 'message': 'Pipe accept failed',
379
+ 'exception': exc,
380
+ 'pipe': pipe,
381
+ })
382
+ pipe.close()
383
+ elif self._debug:
384
+ logger.warning("Accept pipe failed on pipe %r",
385
+ pipe, exc_info=True)
386
+ self.call_soon(loop_accept_pipe)
387
+ except exceptions.CancelledError:
388
+ if pipe:
389
+ pipe.close()
390
+ else:
391
+ server._accept_pipe_future = f
392
+ f.add_done_callback(loop_accept_pipe)
393
+
394
+ self.call_soon(loop_accept_pipe)
395
+ return [server]
396
+
397
+ async def _make_subprocess_transport(self, protocol, args, shell,
398
+ stdin, stdout, stderr, bufsize,
399
+ extra=None, **kwargs):
400
+ waiter = self.create_future()
401
+ transp = _WindowsSubprocessTransport(self, protocol, args, shell,
402
+ stdin, stdout, stderr, bufsize,
403
+ waiter=waiter, extra=extra,
404
+ **kwargs)
405
+ try:
406
+ await waiter
407
+ except (SystemExit, KeyboardInterrupt):
408
+ raise
409
+ except BaseException:
410
+ transp.close()
411
+ await transp._wait()
412
+ raise
413
+
414
+ return transp
415
+
416
+
417
+ class IocpProactor:
418
+ """Proactor implementation using IOCP."""
419
+
420
+ def __init__(self, concurrency=INFINITE):
421
+ self._loop = None
422
+ self._results = []
423
+ self._iocp = _overlapped.CreateIoCompletionPort(
424
+ _overlapped.INVALID_HANDLE_VALUE, NULL, 0, concurrency)
425
+ self._cache = {}
426
+ self._registered = weakref.WeakSet()
427
+ self._unregistered = []
428
+ self._stopped_serving = weakref.WeakSet()
429
+
430
+ def _check_closed(self):
431
+ if self._iocp is None:
432
+ raise RuntimeError('IocpProactor is closed')
433
+
434
+ def __repr__(self):
435
+ info = ['overlapped#=%s' % len(self._cache),
436
+ 'result#=%s' % len(self._results)]
437
+ if self._iocp is None:
438
+ info.append('closed')
439
+ return '<%s %s>' % (self.__class__.__name__, " ".join(info))
440
+
441
+ def set_loop(self, loop):
442
+ self._loop = loop
443
+
444
+ def select(self, timeout=None):
445
+ if not self._results:
446
+ self._poll(timeout)
447
+ tmp = self._results
448
+ self._results = []
449
+ try:
450
+ return tmp
451
+ finally:
452
+ # Needed to break cycles when an exception occurs.
453
+ tmp = None
454
+
455
+ def _result(self, value):
456
+ fut = self._loop.create_future()
457
+ fut.set_result(value)
458
+ return fut
459
+
460
+ @staticmethod
461
+ def finish_socket_func(trans, key, ov):
462
+ try:
463
+ return ov.getresult()
464
+ except OSError as exc:
465
+ if exc.winerror in (_overlapped.ERROR_NETNAME_DELETED,
466
+ _overlapped.ERROR_OPERATION_ABORTED):
467
+ raise ConnectionResetError(*exc.args)
468
+ else:
469
+ raise
470
+
471
+ @classmethod
472
+ def _finish_recvfrom(cls, trans, key, ov, *, empty_result):
473
+ try:
474
+ return cls.finish_socket_func(trans, key, ov)
475
+ except OSError as exc:
476
+ # WSARecvFrom will report ERROR_PORT_UNREACHABLE when the same
477
+ # socket is used to send to an address that is not listening.
478
+ if exc.winerror == _overlapped.ERROR_PORT_UNREACHABLE:
479
+ return empty_result, None
480
+ else:
481
+ raise
482
+
483
+ def recv(self, conn, nbytes, flags=0):
484
+ self._register_with_iocp(conn)
485
+ ov = _overlapped.Overlapped(NULL)
486
+ try:
487
+ if isinstance(conn, socket.socket):
488
+ ov.WSARecv(conn.fileno(), nbytes, flags)
489
+ else:
490
+ ov.ReadFile(conn.fileno(), nbytes)
491
+ except BrokenPipeError:
492
+ return self._result(b'')
493
+
494
+ return self._register(ov, conn, self.finish_socket_func)
495
+
496
+ def recv_into(self, conn, buf, flags=0):
497
+ self._register_with_iocp(conn)
498
+ ov = _overlapped.Overlapped(NULL)
499
+ try:
500
+ if isinstance(conn, socket.socket):
501
+ ov.WSARecvInto(conn.fileno(), buf, flags)
502
+ else:
503
+ ov.ReadFileInto(conn.fileno(), buf)
504
+ except BrokenPipeError:
505
+ return self._result(0)
506
+
507
+ return self._register(ov, conn, self.finish_socket_func)
508
+
509
+ def recvfrom(self, conn, nbytes, flags=0):
510
+ self._register_with_iocp(conn)
511
+ ov = _overlapped.Overlapped(NULL)
512
+ try:
513
+ ov.WSARecvFrom(conn.fileno(), nbytes, flags)
514
+ except BrokenPipeError:
515
+ return self._result((b'', None))
516
+
517
+ return self._register(ov, conn, partial(self._finish_recvfrom,
518
+ empty_result=b''))
519
+
520
+ def recvfrom_into(self, conn, buf, flags=0):
521
+ self._register_with_iocp(conn)
522
+ ov = _overlapped.Overlapped(NULL)
523
+ try:
524
+ ov.WSARecvFromInto(conn.fileno(), buf, flags)
525
+ except BrokenPipeError:
526
+ return self._result((0, None))
527
+
528
+ return self._register(ov, conn, partial(self._finish_recvfrom,
529
+ empty_result=0))
530
+
531
+ def sendto(self, conn, buf, flags=0, addr=None):
532
+ self._register_with_iocp(conn)
533
+ ov = _overlapped.Overlapped(NULL)
534
+
535
+ ov.WSASendTo(conn.fileno(), buf, flags, addr)
536
+
537
+ return self._register(ov, conn, self.finish_socket_func)
538
+
539
+ def send(self, conn, buf, flags=0):
540
+ self._register_with_iocp(conn)
541
+ ov = _overlapped.Overlapped(NULL)
542
+ if isinstance(conn, socket.socket):
543
+ ov.WSASend(conn.fileno(), buf, flags)
544
+ else:
545
+ ov.WriteFile(conn.fileno(), buf)
546
+
547
+ return self._register(ov, conn, self.finish_socket_func)
548
+
549
+ def accept(self, listener):
550
+ self._register_with_iocp(listener)
551
+ conn = self._get_accept_socket(listener.family)
552
+ ov = _overlapped.Overlapped(NULL)
553
+ ov.AcceptEx(listener.fileno(), conn.fileno())
554
+
555
+ def finish_accept(trans, key, ov):
556
+ ov.getresult()
557
+ # Use SO_UPDATE_ACCEPT_CONTEXT so getsockname() etc work.
558
+ buf = struct.pack('@P', listener.fileno())
559
+ conn.setsockopt(socket.SOL_SOCKET,
560
+ _overlapped.SO_UPDATE_ACCEPT_CONTEXT, buf)
561
+ conn.settimeout(listener.gettimeout())
562
+ return conn, conn.getpeername()
563
+
564
+ async def accept_coro(future, conn):
565
+ # Coroutine closing the accept socket if the future is cancelled
566
+ try:
567
+ await future
568
+ except exceptions.CancelledError:
569
+ conn.close()
570
+ raise
571
+
572
+ future = self._register(ov, listener, finish_accept)
573
+ coro = accept_coro(future, conn)
574
+ tasks.ensure_future(coro, loop=self._loop)
575
+ return future
576
+
577
+ def connect(self, conn, address):
578
+ if conn.type == socket.SOCK_DGRAM:
579
+ # WSAConnect will complete immediately for UDP sockets so we don't
580
+ # need to register any IOCP operation
581
+ _overlapped.WSAConnect(conn.fileno(), address)
582
+ fut = self._loop.create_future()
583
+ fut.set_result(None)
584
+ return fut
585
+
586
+ self._register_with_iocp(conn)
587
+ # The socket needs to be locally bound before we call ConnectEx().
588
+ try:
589
+ _overlapped.BindLocal(conn.fileno(), conn.family)
590
+ except OSError as e:
591
+ if e.winerror != errno.WSAEINVAL:
592
+ raise
593
+ # Probably already locally bound; check using getsockname().
594
+ if conn.getsockname()[1] == 0:
595
+ raise
596
+ ov = _overlapped.Overlapped(NULL)
597
+ ov.ConnectEx(conn.fileno(), address)
598
+
599
+ def finish_connect(trans, key, ov):
600
+ ov.getresult()
601
+ # Use SO_UPDATE_CONNECT_CONTEXT so getsockname() etc work.
602
+ conn.setsockopt(socket.SOL_SOCKET,
603
+ _overlapped.SO_UPDATE_CONNECT_CONTEXT, 0)
604
+ return conn
605
+
606
+ return self._register(ov, conn, finish_connect)
607
+
608
+ def sendfile(self, sock, file, offset, count):
609
+ self._register_with_iocp(sock)
610
+ ov = _overlapped.Overlapped(NULL)
611
+ offset_low = offset & 0xffff_ffff
612
+ offset_high = (offset >> 32) & 0xffff_ffff
613
+ # TransmitFile ignores OVERLAPPED.Offset for handles not opened with
614
+ # FILE_FLAG_OVERLAPPED, so seek the CRT file pointer to match.
615
+ file.seek(offset)
616
+ ov.TransmitFile(sock.fileno(),
617
+ msvcrt.get_osfhandle(file.fileno()),
618
+ offset_low, offset_high,
619
+ count, 0, 0)
620
+
621
+ return self._register(ov, sock, self.finish_socket_func)
622
+
623
+ def accept_pipe(self, pipe):
624
+ self._register_with_iocp(pipe)
625
+ ov = _overlapped.Overlapped(NULL)
626
+ connected = ov.ConnectNamedPipe(pipe.fileno())
627
+
628
+ if connected:
629
+ # ConnectNamePipe() failed with ERROR_PIPE_CONNECTED which means
630
+ # that the pipe is connected. There is no need to wait for the
631
+ # completion of the connection.
632
+ return self._result(pipe)
633
+
634
+ def finish_accept_pipe(trans, key, ov):
635
+ ov.getresult()
636
+ return pipe
637
+
638
+ return self._register(ov, pipe, finish_accept_pipe)
639
+
640
+ async def connect_pipe(self, address):
641
+ delay = CONNECT_PIPE_INIT_DELAY
642
+ while True:
643
+ # Unfortunately there is no way to do an overlapped connect to
644
+ # a pipe. Call CreateFile() in a loop until it doesn't fail with
645
+ # ERROR_PIPE_BUSY.
646
+ try:
647
+ handle = _overlapped.ConnectPipe(address)
648
+ break
649
+ except OSError as exc:
650
+ if exc.winerror != _overlapped.ERROR_PIPE_BUSY:
651
+ raise
652
+
653
+ # ConnectPipe() failed with ERROR_PIPE_BUSY: retry later
654
+ delay = min(delay * 2, CONNECT_PIPE_MAX_DELAY)
655
+ await tasks.sleep(delay)
656
+
657
+ return windows_utils.PipeHandle(handle)
658
+
659
+ def wait_for_handle(self, handle, timeout=None):
660
+ """Wait for a handle.
661
+
662
+ Return a Future object. The result of the future is True if the wait
663
+ completed, or False if the wait did not complete (on timeout).
664
+ """
665
+ return self._wait_for_handle(handle, timeout, False)
666
+
667
+ def _wait_cancel(self, event, done_callback):
668
+ fut = self._wait_for_handle(event, None, True)
669
+ # add_done_callback() cannot be used because the wait may only complete
670
+ # in IocpProactor.close(), while the event loop is not running.
671
+ fut._done_callback = done_callback
672
+ return fut
673
+
674
+ def _wait_for_handle(self, handle, timeout, _is_cancel):
675
+ self._check_closed()
676
+
677
+ if timeout is None:
678
+ ms = _winapi.INFINITE
679
+ else:
680
+ # RegisterWaitForSingleObject() has a resolution of 1 millisecond,
681
+ # round away from zero to wait *at least* timeout seconds.
682
+ ms = math.ceil(timeout * 1e3)
683
+
684
+ # We only create ov so we can use ov.address as a key for the cache.
685
+ ov = _overlapped.Overlapped(NULL)
686
+ wait_handle = _overlapped.RegisterWaitWithQueue(
687
+ handle, self._iocp, ov.address, ms)
688
+ if _is_cancel:
689
+ f = _WaitCancelFuture(ov, handle, wait_handle, loop=self._loop)
690
+ else:
691
+ f = _WaitHandleFuture(ov, handle, wait_handle, self,
692
+ loop=self._loop)
693
+ if f._source_traceback:
694
+ del f._source_traceback[-1]
695
+
696
+ def finish_wait_for_handle(trans, key, ov):
697
+ # Note that this second wait means that we should only use
698
+ # this with handles types where a successful wait has no
699
+ # effect. So events or processes are all right, but locks
700
+ # or semaphores are not. Also note if the handle is
701
+ # signalled and then quickly reset, then we may return
702
+ # False even though we have not timed out.
703
+ return f._poll()
704
+
705
+ self._cache[ov.address] = (f, ov, 0, finish_wait_for_handle)
706
+ return f
707
+
708
+ def _register_with_iocp(self, obj):
709
+ # To get notifications of finished ops on this objects sent to the
710
+ # completion port, were must register the handle.
711
+ if obj not in self._registered:
712
+ self._registered.add(obj)
713
+ _overlapped.CreateIoCompletionPort(obj.fileno(), self._iocp, 0, 0)
714
+ # XXX We could also use SetFileCompletionNotificationModes()
715
+ # to avoid sending notifications to completion port of ops
716
+ # that succeed immediately.
717
+
718
+ def _register(self, ov, obj, callback):
719
+ self._check_closed()
720
+
721
+ # Return a future which will be set with the result of the
722
+ # operation when it completes. The future's value is actually
723
+ # the value returned by callback().
724
+ f = _OverlappedFuture(ov, loop=self._loop)
725
+ if f._source_traceback:
726
+ del f._source_traceback[-1]
727
+ if not ov.pending:
728
+ # The operation has completed, so no need to postpone the
729
+ # work. We cannot take this short cut if we need the
730
+ # NumberOfBytes, CompletionKey values returned by
731
+ # PostQueuedCompletionStatus().
732
+ try:
733
+ value = callback(None, None, ov)
734
+ except OSError as e:
735
+ f.set_exception(e)
736
+ else:
737
+ f.set_result(value)
738
+ # Even if GetOverlappedResult() was called, we have to wait for the
739
+ # notification of the completion in GetQueuedCompletionStatus().
740
+ # Register the overlapped operation to keep a reference to the
741
+ # OVERLAPPED object, otherwise the memory is freed and Windows may
742
+ # read uninitialized memory.
743
+
744
+ # Register the overlapped operation for later. Note that
745
+ # we only store obj to prevent it from being garbage
746
+ # collected too early.
747
+ self._cache[ov.address] = (f, ov, obj, callback)
748
+ return f
749
+
750
+ def _unregister(self, ov):
751
+ """Unregister an overlapped object.
752
+
753
+ Call this method when its future has been cancelled. The event can
754
+ already be signalled (pending in the proactor event queue). It is also
755
+ safe if the event is never signalled (because it was cancelled).
756
+ """
757
+ self._check_closed()
758
+ self._unregistered.append(ov)
759
+
760
+ def _get_accept_socket(self, family):
761
+ s = socket.socket(family)
762
+ s.settimeout(0)
763
+ return s
764
+
765
+ def _poll(self, timeout=None):
766
+ if timeout is None:
767
+ ms = INFINITE
768
+ elif timeout < 0:
769
+ raise ValueError("negative timeout")
770
+ else:
771
+ # GetQueuedCompletionStatus() has a resolution of 1 millisecond,
772
+ # round away from zero to wait *at least* timeout seconds.
773
+ ms = math.ceil(timeout * 1e3)
774
+ if ms >= INFINITE:
775
+ raise ValueError("timeout too big")
776
+
777
+ while True:
778
+ status = _overlapped.GetQueuedCompletionStatus(self._iocp, ms)
779
+ if status is None:
780
+ break
781
+ ms = 0
782
+
783
+ err, transferred, key, address = status
784
+ try:
785
+ f, ov, obj, callback = self._cache.pop(address)
786
+ except KeyError:
787
+ if self._loop.get_debug():
788
+ self._loop.call_exception_handler({
789
+ 'message': ('GetQueuedCompletionStatus() returned an '
790
+ 'unexpected event'),
791
+ 'status': ('err=%s transferred=%s key=%#x address=%#x'
792
+ % (err, transferred, key, address)),
793
+ })
794
+
795
+ # key is either zero, or it is used to return a pipe
796
+ # handle which should be closed to avoid a leak.
797
+ if key not in (0, _overlapped.INVALID_HANDLE_VALUE):
798
+ _winapi.CloseHandle(key)
799
+ continue
800
+
801
+ if obj in self._stopped_serving:
802
+ f.cancel()
803
+ # Don't call the callback if _register() already read the result or
804
+ # if the overlapped has been cancelled
805
+ elif not f.done():
806
+ try:
807
+ value = callback(transferred, key, ov)
808
+ except OSError as e:
809
+ f.set_exception(e)
810
+ self._results.append(f)
811
+ else:
812
+ f.set_result(value)
813
+ self._results.append(f)
814
+ finally:
815
+ f = None
816
+
817
+ # Remove unregistered futures
818
+ for ov in self._unregistered:
819
+ self._cache.pop(ov.address, None)
820
+ self._unregistered.clear()
821
+
822
+ def _stop_serving(self, obj):
823
+ # obj is a socket or pipe handle. It will be closed in
824
+ # BaseProactorEventLoop._stop_serving() which will make any
825
+ # pending operations fail quickly.
826
+ self._stopped_serving.add(obj)
827
+
828
+ def close(self):
829
+ if self._iocp is None:
830
+ # already closed
831
+ return
832
+
833
+ # Cancel remaining registered operations.
834
+ for fut, ov, obj, callback in list(self._cache.values()):
835
+ if fut.cancelled():
836
+ # Nothing to do with cancelled futures
837
+ pass
838
+ elif isinstance(fut, _WaitCancelFuture):
839
+ # _WaitCancelFuture must not be cancelled
840
+ pass
841
+ else:
842
+ try:
843
+ fut.cancel()
844
+ except OSError as exc:
845
+ if self._loop is not None:
846
+ context = {
847
+ 'message': 'Cancelling a future failed',
848
+ 'exception': exc,
849
+ 'future': fut,
850
+ }
851
+ if fut._source_traceback:
852
+ context['source_traceback'] = fut._source_traceback
853
+ self._loop.call_exception_handler(context)
854
+
855
+ # Wait until all cancelled overlapped complete: don't exit with running
856
+ # overlapped to prevent a crash. Display progress every second if the
857
+ # loop is still running.
858
+ msg_update = 1.0
859
+ start_time = time.monotonic()
860
+ next_msg = start_time + msg_update
861
+ while self._cache:
862
+ if next_msg <= time.monotonic():
863
+ logger.debug('%r is running after closing for %.1f seconds',
864
+ self, time.monotonic() - start_time)
865
+ next_msg = time.monotonic() + msg_update
866
+
867
+ # handle a few events, or timeout
868
+ self._poll(msg_update)
869
+
870
+ self._results = []
871
+
872
+ _winapi.CloseHandle(self._iocp)
873
+ self._iocp = None
874
+
875
+ def __del__(self):
876
+ self.close()
877
+
878
+
879
+ class _WindowsSubprocessTransport(base_subprocess.BaseSubprocessTransport):
880
+
881
+ def _start(self, args, shell, stdin, stdout, stderr, bufsize, **kwargs):
882
+ self._proc = windows_utils.Popen(
883
+ args, shell=shell, stdin=stdin, stdout=stdout, stderr=stderr,
884
+ bufsize=bufsize, **kwargs)
885
+
886
+ def callback(f):
887
+ returncode = self._proc.poll()
888
+ self._process_exited(returncode)
889
+
890
+ f = self._loop._proactor.wait_for_handle(int(self._proc._handle))
891
+ f.add_done_callback(callback)
892
+
893
+
894
+ SelectorEventLoop = _WindowsSelectorEventLoop
895
+
896
+
897
+ class WindowsSelectorEventLoopPolicy(events.BaseDefaultEventLoopPolicy):
898
+ _loop_factory = SelectorEventLoop
899
+
900
+
901
+ class WindowsProactorEventLoopPolicy(events.BaseDefaultEventLoopPolicy):
902
+ _loop_factory = ProactorEventLoop
903
+
904
+
905
+ DefaultEventLoopPolicy = WindowsProactorEventLoopPolicy
906
+ EventLoop = ProactorEventLoop