@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,891 @@
1
+ """Event loop using a proactor and related classes.
2
+
3
+ A proactor is a "notify-on-completion" multiplexer. Currently a
4
+ proactor is only implemented on Windows with IOCP.
5
+ """
6
+
7
+ __all__ = 'BaseProactorEventLoop',
8
+
9
+ import io
10
+ import os
11
+ import socket
12
+ import warnings
13
+ import signal
14
+ import threading
15
+ import collections
16
+
17
+ from . import base_events
18
+ from . import constants
19
+ from . import futures
20
+ from . import exceptions
21
+ from . import protocols
22
+ from . import sslproto
23
+ from . import transports
24
+ from . import trsock
25
+ from .log import logger
26
+
27
+
28
+ def _set_socket_extra(transport, sock):
29
+ transport._extra['socket'] = trsock.TransportSocket(sock)
30
+
31
+ try:
32
+ transport._extra['sockname'] = sock.getsockname()
33
+ except socket.error:
34
+ if transport._loop.get_debug():
35
+ logger.warning(
36
+ "getsockname() failed on %r", sock, exc_info=True)
37
+
38
+ if 'peername' not in transport._extra:
39
+ try:
40
+ transport._extra['peername'] = sock.getpeername()
41
+ except socket.error:
42
+ # UDP sockets may not have a peer name
43
+ transport._extra['peername'] = None
44
+
45
+
46
+ class _ProactorBasePipeTransport(transports._FlowControlMixin,
47
+ transports.BaseTransport):
48
+ """Base class for pipe and socket transports."""
49
+
50
+ def __init__(self, loop, sock, protocol, waiter=None,
51
+ extra=None, server=None):
52
+ super().__init__(extra, loop)
53
+ self._set_extra(sock)
54
+ self._sock = sock
55
+ self.set_protocol(protocol)
56
+ self._server = server
57
+ self._buffer = None # None or bytearray.
58
+ self._read_fut = None
59
+ self._write_fut = None
60
+ self._pending_write = 0
61
+ self._conn_lost = 0
62
+ self._closing = False # Set when close() called.
63
+ self._called_connection_lost = False
64
+ self._eof_written = False
65
+ self._empty_waiter = None
66
+ if self._server is not None:
67
+ self._server._attach(self)
68
+ self._loop.call_soon(self._protocol.connection_made, self)
69
+ if waiter is not None:
70
+ # only wake up the waiter when connection_made() has been called
71
+ self._loop.call_soon(futures._set_result_unless_cancelled,
72
+ waiter, None)
73
+
74
+ def __repr__(self):
75
+ info = [self.__class__.__name__]
76
+ if self._sock is None:
77
+ info.append('closed')
78
+ elif self._closing:
79
+ info.append('closing')
80
+ if self._sock is not None:
81
+ info.append(f'fd={self._sock.fileno()}')
82
+ if self._read_fut is not None:
83
+ info.append(f'read={self._read_fut!r}')
84
+ if self._write_fut is not None:
85
+ info.append(f'write={self._write_fut!r}')
86
+ if self._buffer:
87
+ info.append(f'write_bufsize={len(self._buffer)}')
88
+ if self._eof_written:
89
+ info.append('EOF written')
90
+ return '<{}>'.format(' '.join(info))
91
+
92
+ def _set_extra(self, sock):
93
+ self._extra['pipe'] = sock
94
+
95
+ def set_protocol(self, protocol):
96
+ self._protocol = protocol
97
+
98
+ def get_protocol(self):
99
+ return self._protocol
100
+
101
+ def is_closing(self):
102
+ return self._closing
103
+
104
+ def close(self):
105
+ if self._closing:
106
+ return
107
+ self._closing = True
108
+ self._conn_lost += 1
109
+ if not self._buffer and self._write_fut is None:
110
+ self._loop.call_soon(self._call_connection_lost, None)
111
+ if self._read_fut is not None:
112
+ self._read_fut.cancel()
113
+ self._read_fut = None
114
+
115
+ def __del__(self, _warn=warnings.warn):
116
+ if self._sock is not None:
117
+ _warn(f"unclosed transport {self!r}", ResourceWarning, source=self)
118
+ self._sock.close()
119
+
120
+ def _fatal_error(self, exc, message='Fatal error on pipe transport'):
121
+ try:
122
+ if isinstance(exc, OSError):
123
+ if self._loop.get_debug():
124
+ logger.debug("%r: %s", self, message, exc_info=True)
125
+ else:
126
+ self._loop.call_exception_handler({
127
+ 'message': message,
128
+ 'exception': exc,
129
+ 'transport': self,
130
+ 'protocol': self._protocol,
131
+ })
132
+ finally:
133
+ self._force_close(exc)
134
+
135
+ def _force_close(self, exc):
136
+ if self._empty_waiter is not None and not self._empty_waiter.done():
137
+ if exc is None:
138
+ self._empty_waiter.set_result(None)
139
+ else:
140
+ self._empty_waiter.set_exception(exc)
141
+ if self._closing and self._called_connection_lost:
142
+ return
143
+ self._closing = True
144
+ self._conn_lost += 1
145
+ if self._write_fut:
146
+ self._write_fut.cancel()
147
+ self._write_fut = None
148
+ if self._read_fut:
149
+ self._read_fut.cancel()
150
+ self._read_fut = None
151
+ self._pending_write = 0
152
+ self._buffer = None
153
+ self._loop.call_soon(self._call_connection_lost, exc)
154
+
155
+ def _call_connection_lost(self, exc):
156
+ if self._called_connection_lost:
157
+ return
158
+ try:
159
+ self._protocol.connection_lost(exc)
160
+ finally:
161
+ # XXX If there is a pending overlapped read on the other
162
+ # end then it may fail with ERROR_NETNAME_DELETED if we
163
+ # just close our end. First calling shutdown() seems to
164
+ # cure it, but maybe using DisconnectEx() would be better.
165
+ if hasattr(self._sock, 'shutdown') and self._sock.fileno() != -1:
166
+ self._sock.shutdown(socket.SHUT_RDWR)
167
+ self._sock.close()
168
+ self._sock = None
169
+ server = self._server
170
+ if server is not None:
171
+ server._detach(self)
172
+ self._server = None
173
+ self._called_connection_lost = True
174
+
175
+ def get_write_buffer_size(self):
176
+ size = self._pending_write
177
+ if self._buffer is not None:
178
+ size += len(self._buffer)
179
+ return size
180
+
181
+
182
+ class _ProactorReadPipeTransport(_ProactorBasePipeTransport,
183
+ transports.ReadTransport):
184
+ """Transport for read pipes."""
185
+
186
+ def __init__(self, loop, sock, protocol, waiter=None,
187
+ extra=None, server=None, buffer_size=65536):
188
+ self._pending_data_length = -1
189
+ self._paused = True
190
+ super().__init__(loop, sock, protocol, waiter, extra, server)
191
+
192
+ self._data = bytearray(buffer_size)
193
+ self._loop.call_soon(self._loop_reading)
194
+ self._paused = False
195
+
196
+ def is_reading(self):
197
+ return not self._paused and not self._closing
198
+
199
+ def pause_reading(self):
200
+ if self._closing or self._paused:
201
+ return
202
+ self._paused = True
203
+
204
+ # bpo-33694: Don't cancel self._read_fut because cancelling an
205
+ # overlapped WSASend() loss silently data with the current proactor
206
+ # implementation.
207
+ #
208
+ # If CancelIoEx() fails with ERROR_NOT_FOUND, it means that WSASend()
209
+ # completed (even if HasOverlappedIoCompleted() returns 0), but
210
+ # Overlapped.cancel() currently silently ignores the ERROR_NOT_FOUND
211
+ # error. Once the overlapped is ignored, the IOCP loop will ignores the
212
+ # completion I/O event and so not read the result of the overlapped
213
+ # WSARecv().
214
+
215
+ if self._loop.get_debug():
216
+ logger.debug("%r pauses reading", self)
217
+
218
+ def resume_reading(self):
219
+ if self._closing or not self._paused:
220
+ return
221
+
222
+ self._paused = False
223
+ if self._read_fut is None:
224
+ self._loop.call_soon(self._loop_reading, None)
225
+
226
+ length = self._pending_data_length
227
+ self._pending_data_length = -1
228
+ if length > -1:
229
+ # Call the protocol method after calling _loop_reading(),
230
+ # since the protocol can decide to pause reading again.
231
+ self._loop.call_soon(self._data_received, self._data[:length], length)
232
+
233
+ if self._loop.get_debug():
234
+ logger.debug("%r resumes reading", self)
235
+
236
+ def _eof_received(self):
237
+ if self._loop.get_debug():
238
+ logger.debug("%r received EOF", self)
239
+
240
+ try:
241
+ keep_open = self._protocol.eof_received()
242
+ except (SystemExit, KeyboardInterrupt):
243
+ raise
244
+ except BaseException as exc:
245
+ self._fatal_error(
246
+ exc, 'Fatal error: protocol.eof_received() call failed.')
247
+ return
248
+
249
+ if not keep_open:
250
+ self.close()
251
+
252
+ def _data_received(self, data, length):
253
+ if self._paused:
254
+ # Don't call any protocol method while reading is paused.
255
+ # The protocol will be called on resume_reading().
256
+ assert self._pending_data_length == -1
257
+ self._pending_data_length = length
258
+ return
259
+
260
+ if length == 0:
261
+ self._eof_received()
262
+ return
263
+
264
+ if isinstance(self._protocol, protocols.BufferedProtocol):
265
+ try:
266
+ protocols._feed_data_to_buffered_proto(self._protocol, data)
267
+ except (SystemExit, KeyboardInterrupt):
268
+ raise
269
+ except BaseException as exc:
270
+ self._fatal_error(exc,
271
+ 'Fatal error: protocol.buffer_updated() '
272
+ 'call failed.')
273
+ return
274
+ else:
275
+ self._protocol.data_received(data)
276
+
277
+ def _loop_reading(self, fut=None):
278
+ length = -1
279
+ data = None
280
+ try:
281
+ if fut is not None:
282
+ assert self._read_fut is fut or (self._read_fut is None and
283
+ self._closing)
284
+ self._read_fut = None
285
+ if fut.done():
286
+ # deliver data later in "finally" clause
287
+ length = fut.result()
288
+ if length == 0:
289
+ # we got end-of-file so no need to reschedule a new read
290
+ return
291
+
292
+ # It's a new slice so make it immutable so protocols upstream don't have problems
293
+ data = bytes(memoryview(self._data)[:length])
294
+ else:
295
+ # the future will be replaced by next proactor.recv call
296
+ fut.cancel()
297
+
298
+ if self._closing:
299
+ # since close() has been called we ignore any read data
300
+ return
301
+
302
+ # bpo-33694: buffer_updated() has currently no fast path because of
303
+ # a data loss issue caused by overlapped WSASend() cancellation.
304
+
305
+ if not self._paused:
306
+ # reschedule a new read
307
+ self._read_fut = self._loop._proactor.recv_into(self._sock, self._data)
308
+ except ConnectionAbortedError as exc:
309
+ if not self._closing:
310
+ self._fatal_error(exc, 'Fatal read error on pipe transport')
311
+ elif self._loop.get_debug():
312
+ logger.debug("Read error on pipe transport while closing",
313
+ exc_info=True)
314
+ except ConnectionResetError as exc:
315
+ self._force_close(exc)
316
+ except OSError as exc:
317
+ self._fatal_error(exc, 'Fatal read error on pipe transport')
318
+ except exceptions.CancelledError:
319
+ if not self._closing:
320
+ raise
321
+ else:
322
+ if not self._paused:
323
+ self._read_fut.add_done_callback(self._loop_reading)
324
+ finally:
325
+ if length > -1:
326
+ self._data_received(data, length)
327
+
328
+
329
+ class _ProactorBaseWritePipeTransport(_ProactorBasePipeTransport,
330
+ transports.WriteTransport):
331
+ """Transport for write pipes."""
332
+
333
+ _start_tls_compatible = True
334
+
335
+ def write(self, data):
336
+ if not isinstance(data, (bytes, bytearray, memoryview)):
337
+ raise TypeError(
338
+ f"data argument must be a bytes-like object, "
339
+ f"not {type(data).__name__}")
340
+ if self._eof_written:
341
+ raise RuntimeError('write_eof() already called')
342
+ if self._empty_waiter is not None:
343
+ raise RuntimeError('unable to write; sendfile is in progress')
344
+
345
+ if not data:
346
+ return
347
+
348
+ if self._conn_lost:
349
+ if self._conn_lost >= constants.LOG_THRESHOLD_FOR_CONNLOST_WRITES:
350
+ logger.warning('socket.send() raised exception.')
351
+ self._conn_lost += 1
352
+ return
353
+
354
+ # Observable states:
355
+ # 1. IDLE: _write_fut and _buffer both None
356
+ # 2. WRITING: _write_fut set; _buffer None
357
+ # 3. BACKED UP: _write_fut set; _buffer a bytearray
358
+ # We always copy the data, so the caller can't modify it
359
+ # while we're still waiting for the I/O to happen.
360
+ if self._write_fut is None: # IDLE -> WRITING
361
+ assert self._buffer is None
362
+ # Pass a copy, except if it's already immutable.
363
+ self._loop_writing(data=bytes(data))
364
+ elif not self._buffer: # WRITING -> BACKED UP
365
+ # Make a mutable copy which we can extend.
366
+ self._buffer = bytearray(data)
367
+ self._maybe_pause_protocol()
368
+ else: # BACKED UP
369
+ # Append to buffer (also copies).
370
+ self._buffer.extend(data)
371
+ self._maybe_pause_protocol()
372
+
373
+ def _loop_writing(self, f=None, data=None):
374
+ try:
375
+ if f is not None and self._write_fut is None and self._closing:
376
+ # XXX most likely self._force_close() has been called, and
377
+ # it has set self._write_fut to None.
378
+ return
379
+ assert f is self._write_fut
380
+ self._write_fut = None
381
+ self._pending_write = 0
382
+ if f:
383
+ f.result()
384
+ if data is None:
385
+ data = self._buffer
386
+ self._buffer = None
387
+ if not data:
388
+ if self._closing:
389
+ self._loop.call_soon(self._call_connection_lost, None)
390
+ if self._eof_written:
391
+ self._sock.shutdown(socket.SHUT_WR)
392
+ # Now that we've reduced the buffer size, tell the
393
+ # protocol to resume writing if it was paused. Note that
394
+ # we do this last since the callback is called immediately
395
+ # and it may add more data to the buffer (even causing the
396
+ # protocol to be paused again).
397
+ self._maybe_resume_protocol()
398
+ else:
399
+ self._write_fut = self._loop._proactor.send(self._sock, data)
400
+ if not self._write_fut.done():
401
+ assert self._pending_write == 0
402
+ self._pending_write = len(data)
403
+ self._write_fut.add_done_callback(self._loop_writing)
404
+ self._maybe_pause_protocol()
405
+ else:
406
+ self._write_fut.add_done_callback(self._loop_writing)
407
+ if self._empty_waiter is not None and self._write_fut is None:
408
+ self._empty_waiter.set_result(None)
409
+ except ConnectionResetError as exc:
410
+ self._force_close(exc)
411
+ except OSError as exc:
412
+ self._fatal_error(exc, 'Fatal write error on pipe transport')
413
+
414
+ def can_write_eof(self):
415
+ return True
416
+
417
+ def write_eof(self):
418
+ self.close()
419
+
420
+ def abort(self):
421
+ self._force_close(None)
422
+
423
+ def _make_empty_waiter(self):
424
+ if self._empty_waiter is not None:
425
+ raise RuntimeError("Empty waiter is already set")
426
+ self._empty_waiter = self._loop.create_future()
427
+ if self._write_fut is None:
428
+ self._empty_waiter.set_result(None)
429
+ return self._empty_waiter
430
+
431
+ def _reset_empty_waiter(self):
432
+ self._empty_waiter = None
433
+
434
+
435
+ class _ProactorWritePipeTransport(_ProactorBaseWritePipeTransport):
436
+ def __init__(self, *args, **kw):
437
+ super().__init__(*args, **kw)
438
+ self._read_fut = self._loop._proactor.recv(self._sock, 16)
439
+ self._read_fut.add_done_callback(self._pipe_closed)
440
+
441
+ def _pipe_closed(self, fut):
442
+ if fut.cancelled():
443
+ # the transport has been closed
444
+ return
445
+ assert fut.result() == b''
446
+ if self._closing:
447
+ assert self._read_fut is None
448
+ return
449
+ assert fut is self._read_fut, (fut, self._read_fut)
450
+ self._read_fut = None
451
+ if self._write_fut is not None:
452
+ self._force_close(BrokenPipeError())
453
+ else:
454
+ self.close()
455
+
456
+
457
+ class _ProactorDatagramTransport(_ProactorBasePipeTransport,
458
+ transports.DatagramTransport):
459
+ max_size = 256 * 1024
460
+ _header_size = 8
461
+
462
+ def __init__(self, loop, sock, protocol, address=None,
463
+ waiter=None, extra=None):
464
+ self._address = address
465
+ self._buffer_size = 0
466
+ # We don't need to call _protocol.connection_made() since our base
467
+ # constructor does it for us.
468
+ super().__init__(loop, sock, protocol, waiter=waiter, extra=extra)
469
+
470
+ # The base constructor sets _buffer = None, so we set it here
471
+ self._buffer = collections.deque()
472
+ self._loop.call_soon(self._loop_reading)
473
+
474
+ def _set_extra(self, sock):
475
+ _set_socket_extra(self, sock)
476
+
477
+ def get_write_buffer_size(self):
478
+ return self._buffer_size
479
+
480
+ def abort(self):
481
+ self._force_close(None)
482
+
483
+ def sendto(self, data, addr=None):
484
+ if not isinstance(data, (bytes, bytearray, memoryview)):
485
+ raise TypeError('data argument must be bytes-like object (%r)',
486
+ type(data))
487
+
488
+ if self._address is not None and addr not in (None, self._address):
489
+ raise ValueError(
490
+ f'Invalid address: must be None or {self._address}')
491
+
492
+ if self._conn_lost and self._address:
493
+ if self._conn_lost >= constants.LOG_THRESHOLD_FOR_CONNLOST_WRITES:
494
+ logger.warning('socket.sendto() raised exception.')
495
+ self._conn_lost += 1
496
+ return
497
+
498
+ # Ensure that what we buffer is immutable.
499
+ self._buffer.append((bytes(data), addr))
500
+ self._buffer_size += len(data) + self._header_size
501
+
502
+ if self._write_fut is None:
503
+ # No current write operations are active, kick one off
504
+ self._loop_writing()
505
+ # else: A write operation is already kicked off
506
+
507
+ self._maybe_pause_protocol()
508
+
509
+ def _loop_writing(self, fut=None):
510
+ try:
511
+ if self._conn_lost:
512
+ return
513
+
514
+ assert fut is self._write_fut
515
+ self._write_fut = None
516
+ if fut:
517
+ # We are in a _loop_writing() done callback, get the result
518
+ fut.result()
519
+
520
+ if not self._buffer or (self._conn_lost and self._address):
521
+ # The connection has been closed
522
+ if self._closing:
523
+ self._loop.call_soon(self._call_connection_lost, None)
524
+ return
525
+
526
+ data, addr = self._buffer.popleft()
527
+ self._buffer_size -= len(data) + self._header_size
528
+ if self._address is not None:
529
+ self._write_fut = self._loop._proactor.send(self._sock,
530
+ data)
531
+ else:
532
+ self._write_fut = self._loop._proactor.sendto(self._sock,
533
+ data,
534
+ addr=addr)
535
+ except OSError as exc:
536
+ self._protocol.error_received(exc)
537
+ except Exception as exc:
538
+ self._fatal_error(exc, 'Fatal write error on datagram transport')
539
+ else:
540
+ self._write_fut.add_done_callback(self._loop_writing)
541
+ self._maybe_resume_protocol()
542
+
543
+ def _loop_reading(self, fut=None):
544
+ data = None
545
+ try:
546
+ if self._conn_lost:
547
+ return
548
+
549
+ assert self._read_fut is fut or (self._read_fut is None and
550
+ self._closing)
551
+
552
+ self._read_fut = None
553
+ if fut is not None:
554
+ res = fut.result()
555
+
556
+ if self._closing:
557
+ # since close() has been called we ignore any read data
558
+ data = None
559
+ return
560
+
561
+ if self._address is not None:
562
+ data, addr = res, self._address
563
+ else:
564
+ data, addr = res
565
+
566
+ if self._conn_lost:
567
+ return
568
+ if self._address is not None:
569
+ self._read_fut = self._loop._proactor.recv(self._sock,
570
+ self.max_size)
571
+ else:
572
+ self._read_fut = self._loop._proactor.recvfrom(self._sock,
573
+ self.max_size)
574
+ except OSError as exc:
575
+ self._protocol.error_received(exc)
576
+ except exceptions.CancelledError:
577
+ if not self._closing:
578
+ raise
579
+ else:
580
+ if self._read_fut is not None:
581
+ self._read_fut.add_done_callback(self._loop_reading)
582
+ finally:
583
+ if data:
584
+ self._protocol.datagram_received(data, addr)
585
+
586
+
587
+ class _ProactorDuplexPipeTransport(_ProactorReadPipeTransport,
588
+ _ProactorBaseWritePipeTransport,
589
+ transports.Transport):
590
+ """Transport for duplex pipes."""
591
+
592
+ def can_write_eof(self):
593
+ return False
594
+
595
+ def write_eof(self):
596
+ raise NotImplementedError
597
+
598
+
599
+ class _ProactorSocketTransport(_ProactorReadPipeTransport,
600
+ _ProactorBaseWritePipeTransport,
601
+ transports.Transport):
602
+ """Transport for connected sockets."""
603
+
604
+ _sendfile_compatible = constants._SendfileMode.TRY_NATIVE
605
+
606
+ def __init__(self, loop, sock, protocol, waiter=None,
607
+ extra=None, server=None):
608
+ super().__init__(loop, sock, protocol, waiter, extra, server)
609
+ base_events._set_nodelay(sock)
610
+
611
+ def _set_extra(self, sock):
612
+ _set_socket_extra(self, sock)
613
+
614
+ def can_write_eof(self):
615
+ return True
616
+
617
+ def write_eof(self):
618
+ if self._closing or self._eof_written:
619
+ return
620
+ self._eof_written = True
621
+ if self._write_fut is None:
622
+ self._sock.shutdown(socket.SHUT_WR)
623
+
624
+
625
+ class BaseProactorEventLoop(base_events.BaseEventLoop):
626
+
627
+ def __init__(self, proactor):
628
+ super().__init__()
629
+ logger.debug('Using proactor: %s', proactor.__class__.__name__)
630
+ self._proactor = proactor
631
+ self._selector = proactor # convenient alias
632
+ self._self_reading_future = None
633
+ self._accept_futures = {} # socket file descriptor => Future
634
+ proactor.set_loop(self)
635
+ self._make_self_pipe()
636
+ if threading.current_thread() is threading.main_thread():
637
+ # wakeup fd can only be installed to a file descriptor from the main thread
638
+ signal.set_wakeup_fd(self._csock.fileno())
639
+
640
+ def _make_socket_transport(self, sock, protocol, waiter=None,
641
+ extra=None, server=None):
642
+ return _ProactorSocketTransport(self, sock, protocol, waiter,
643
+ extra, server)
644
+
645
+ def _make_ssl_transport(
646
+ self, rawsock, protocol, sslcontext, waiter=None,
647
+ *, server_side=False, server_hostname=None,
648
+ extra=None, server=None,
649
+ ssl_handshake_timeout=None,
650
+ ssl_shutdown_timeout=None):
651
+ ssl_protocol = sslproto.SSLProtocol(
652
+ self, protocol, sslcontext, waiter,
653
+ server_side, server_hostname,
654
+ ssl_handshake_timeout=ssl_handshake_timeout,
655
+ ssl_shutdown_timeout=ssl_shutdown_timeout)
656
+ _ProactorSocketTransport(self, rawsock, ssl_protocol,
657
+ extra=extra, server=server)
658
+ return ssl_protocol._app_transport
659
+
660
+ def _make_datagram_transport(self, sock, protocol,
661
+ address=None, waiter=None, extra=None):
662
+ return _ProactorDatagramTransport(self, sock, protocol, address,
663
+ waiter, extra)
664
+
665
+ def _make_duplex_pipe_transport(self, sock, protocol, waiter=None,
666
+ extra=None):
667
+ return _ProactorDuplexPipeTransport(self,
668
+ sock, protocol, waiter, extra)
669
+
670
+ def _make_read_pipe_transport(self, sock, protocol, waiter=None,
671
+ extra=None):
672
+ return _ProactorReadPipeTransport(self, sock, protocol, waiter, extra)
673
+
674
+ def _make_write_pipe_transport(self, sock, protocol, waiter=None,
675
+ extra=None):
676
+ # We want connection_lost() to be called when other end closes
677
+ return _ProactorWritePipeTransport(self,
678
+ sock, protocol, waiter, extra)
679
+
680
+ def close(self):
681
+ if self.is_running():
682
+ raise RuntimeError("Cannot close a running event loop")
683
+ if self.is_closed():
684
+ return
685
+
686
+ if threading.current_thread() is threading.main_thread():
687
+ signal.set_wakeup_fd(-1)
688
+ # Call these methods before closing the event loop (before calling
689
+ # BaseEventLoop.close), because they can schedule callbacks with
690
+ # call_soon(), which is forbidden when the event loop is closed.
691
+ self._stop_accept_futures()
692
+ self._close_self_pipe()
693
+ self._proactor.close()
694
+ self._proactor = None
695
+ self._selector = None
696
+
697
+ # Close the event loop
698
+ super().close()
699
+
700
+ async def sock_recv(self, sock, n):
701
+ return await self._proactor.recv(sock, n)
702
+
703
+ async def sock_recv_into(self, sock, buf):
704
+ return await self._proactor.recv_into(sock, buf)
705
+
706
+ async def sock_recvfrom(self, sock, bufsize):
707
+ return await self._proactor.recvfrom(sock, bufsize)
708
+
709
+ async def sock_recvfrom_into(self, sock, buf, nbytes=0):
710
+ if not nbytes:
711
+ nbytes = len(buf)
712
+
713
+ return await self._proactor.recvfrom_into(sock, buf, nbytes)
714
+
715
+ async def sock_sendall(self, sock, data):
716
+ return await self._proactor.send(sock, data)
717
+
718
+ async def sock_sendto(self, sock, data, address):
719
+ return await self._proactor.sendto(sock, data, 0, address)
720
+
721
+ async def sock_connect(self, sock, address):
722
+ if self._debug and sock.gettimeout() != 0:
723
+ raise ValueError("the socket must be non-blocking")
724
+ return await self._proactor.connect(sock, address)
725
+
726
+ async def sock_accept(self, sock):
727
+ return await self._proactor.accept(sock)
728
+
729
+ async def _sock_sendfile_native(self, sock, file, offset, count):
730
+ try:
731
+ fileno = file.fileno()
732
+ except (AttributeError, io.UnsupportedOperation) as err:
733
+ raise exceptions.SendfileNotAvailableError("not a regular file")
734
+ try:
735
+ fsize = os.fstat(fileno).st_size
736
+ except OSError:
737
+ raise exceptions.SendfileNotAvailableError("not a regular file")
738
+ blocksize = count if count else fsize
739
+ if not blocksize:
740
+ return 0 # empty file
741
+
742
+ blocksize = min(blocksize, 0xffff_ffff)
743
+ end_pos = min(offset + count, fsize) if count else fsize
744
+ offset = min(offset, fsize)
745
+ total_sent = 0
746
+ try:
747
+ while True:
748
+ blocksize = min(end_pos - offset, blocksize)
749
+ if blocksize <= 0:
750
+ return total_sent
751
+ await self._proactor.sendfile(sock, file, offset, blocksize)
752
+ offset += blocksize
753
+ total_sent += blocksize
754
+ finally:
755
+ file.seek(offset)
756
+
757
+ async def _sendfile_native(self, transp, file, offset, count):
758
+ resume_reading = transp.is_reading()
759
+ transp.pause_reading()
760
+ await transp._make_empty_waiter()
761
+ try:
762
+ return await self.sock_sendfile(transp._sock, file, offset, count,
763
+ fallback=False)
764
+ finally:
765
+ transp._reset_empty_waiter()
766
+ if resume_reading:
767
+ transp.resume_reading()
768
+
769
+ def _close_self_pipe(self):
770
+ if self._self_reading_future is not None:
771
+ self._self_reading_future.cancel()
772
+ self._self_reading_future = None
773
+ self._ssock.close()
774
+ self._ssock = None
775
+ self._csock.close()
776
+ self._csock = None
777
+ self._internal_fds -= 1
778
+
779
+ def _make_self_pipe(self):
780
+ # A self-socket, really. :-)
781
+ self._ssock, self._csock = socket.socketpair()
782
+ self._ssock.setblocking(False)
783
+ self._csock.setblocking(False)
784
+ self._internal_fds += 1
785
+
786
+ def _loop_self_reading(self, f=None):
787
+ try:
788
+ if f is not None:
789
+ f.result() # may raise
790
+ if self._self_reading_future is not f:
791
+ # When we scheduled this Future, we assigned it to
792
+ # _self_reading_future. If it's not there now, something has
793
+ # tried to cancel the loop while this callback was still in the
794
+ # queue (see windows_events.ProactorEventLoop.run_forever). In
795
+ # that case stop here instead of continuing to schedule a new
796
+ # iteration.
797
+ return
798
+ f = self._proactor.recv(self._ssock, 4096)
799
+ except exceptions.CancelledError:
800
+ # _close_self_pipe() has been called, stop waiting for data
801
+ return
802
+ except (SystemExit, KeyboardInterrupt):
803
+ raise
804
+ except BaseException as exc:
805
+ self.call_exception_handler({
806
+ 'message': 'Error on reading from the event loop self pipe',
807
+ 'exception': exc,
808
+ 'loop': self,
809
+ })
810
+ else:
811
+ self._self_reading_future = f
812
+ f.add_done_callback(self._loop_self_reading)
813
+
814
+ def _write_to_self(self):
815
+ # This may be called from a different thread, possibly after
816
+ # _close_self_pipe() has been called or even while it is
817
+ # running. Guard for self._csock being None or closed. When
818
+ # a socket is closed, send() raises OSError (with errno set to
819
+ # EBADF, but let's not rely on the exact error code).
820
+ csock = self._csock
821
+ if csock is None:
822
+ return
823
+
824
+ try:
825
+ csock.send(b'\0')
826
+ except OSError:
827
+ if self._debug:
828
+ logger.debug("Fail to write a null byte into the "
829
+ "self-pipe socket",
830
+ exc_info=True)
831
+
832
+ def _start_serving(self, protocol_factory, sock,
833
+ sslcontext=None, server=None, backlog=100,
834
+ ssl_handshake_timeout=None,
835
+ ssl_shutdown_timeout=None):
836
+
837
+ def loop(f=None):
838
+ try:
839
+ if f is not None:
840
+ conn, addr = f.result()
841
+ if self._debug:
842
+ logger.debug("%r got a new connection from %r: %r",
843
+ server, addr, conn)
844
+ protocol = protocol_factory()
845
+ if sslcontext is not None:
846
+ self._make_ssl_transport(
847
+ conn, protocol, sslcontext, server_side=True,
848
+ extra={'peername': addr}, server=server,
849
+ ssl_handshake_timeout=ssl_handshake_timeout,
850
+ ssl_shutdown_timeout=ssl_shutdown_timeout)
851
+ else:
852
+ self._make_socket_transport(
853
+ conn, protocol,
854
+ extra={'peername': addr}, server=server)
855
+ if self.is_closed():
856
+ return
857
+ f = self._proactor.accept(sock)
858
+ except OSError as exc:
859
+ if sock.fileno() != -1:
860
+ self.call_exception_handler({
861
+ 'message': 'Accept failed on a socket',
862
+ 'exception': exc,
863
+ 'socket': trsock.TransportSocket(sock),
864
+ })
865
+ sock.close()
866
+ elif self._debug:
867
+ logger.debug("Accept failed on socket %r",
868
+ sock, exc_info=True)
869
+ except exceptions.CancelledError:
870
+ sock.close()
871
+ else:
872
+ self._accept_futures[sock.fileno()] = f
873
+ f.add_done_callback(loop)
874
+
875
+ self.call_soon(loop)
876
+
877
+ def _process_events(self, event_list):
878
+ # Events are processed in the IocpProactor._poll() method
879
+ pass
880
+
881
+ def _stop_accept_futures(self):
882
+ for future in self._accept_futures.values():
883
+ future.cancel()
884
+ self._accept_futures.clear()
885
+
886
+ def _stop_serving(self, sock):
887
+ future = self._accept_futures.pop(sock.fileno(), None)
888
+ if future:
889
+ future.cancel()
890
+ self._proactor._stop_serving(sock)
891
+ sock.close()