@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,787 @@
1
+ __all__ = (
2
+ 'StreamReader', 'StreamWriter', 'StreamReaderProtocol',
3
+ 'open_connection', 'start_server')
4
+
5
+ import collections
6
+ import socket
7
+ import sys
8
+ import warnings
9
+ import weakref
10
+
11
+ if hasattr(socket, 'AF_UNIX'):
12
+ __all__ += ('open_unix_connection', 'start_unix_server')
13
+
14
+ from . import coroutines
15
+ from . import events
16
+ from . import exceptions
17
+ from . import format_helpers
18
+ from . import protocols
19
+ from .log import logger
20
+ from .tasks import sleep
21
+
22
+
23
+ _DEFAULT_LIMIT = 2 ** 16 # 64 KiB
24
+
25
+
26
+ async def open_connection(host=None, port=None, *,
27
+ limit=_DEFAULT_LIMIT, **kwds):
28
+ """A wrapper for create_connection() returning a (reader, writer) pair.
29
+
30
+ The reader returned is a StreamReader instance; the writer is a
31
+ StreamWriter instance.
32
+
33
+ The arguments are all the usual arguments to create_connection()
34
+ except protocol_factory; most common are positional host and port,
35
+ with various optional keyword arguments following.
36
+
37
+ Additional optional keyword arguments are loop (to set the event loop
38
+ instance to use) and limit (to set the buffer limit passed to the
39
+ StreamReader).
40
+
41
+ (If you want to customize the StreamReader and/or
42
+ StreamReaderProtocol classes, just copy the code -- there's
43
+ really nothing special here except some convenience.)
44
+ """
45
+ loop = events.get_running_loop()
46
+ reader = StreamReader(limit=limit, loop=loop)
47
+ protocol = StreamReaderProtocol(reader, loop=loop)
48
+ transport, _ = await loop.create_connection(
49
+ lambda: protocol, host, port, **kwds)
50
+ writer = StreamWriter(transport, protocol, reader, loop)
51
+ return reader, writer
52
+
53
+
54
+ async def start_server(client_connected_cb, host=None, port=None, *,
55
+ limit=_DEFAULT_LIMIT, **kwds):
56
+ """Start a socket server, call back for each client connected.
57
+
58
+ The first parameter, `client_connected_cb`, takes two parameters:
59
+ client_reader, client_writer. client_reader is a StreamReader
60
+ object, while client_writer is a StreamWriter object. This
61
+ parameter can either be a plain callback function or a coroutine;
62
+ if it is a coroutine, it will be automatically converted into a
63
+ Task.
64
+
65
+ The rest of the arguments are all the usual arguments to
66
+ loop.create_server() except protocol_factory; most common are
67
+ positional host and port, with various optional keyword arguments
68
+ following. The return value is the same as loop.create_server().
69
+
70
+ Additional optional keyword argument is limit (to set the buffer
71
+ limit passed to the StreamReader).
72
+
73
+ The return value is the same as loop.create_server(), i.e. a
74
+ Server object which can be used to stop the service.
75
+ """
76
+ loop = events.get_running_loop()
77
+
78
+ def factory():
79
+ reader = StreamReader(limit=limit, loop=loop)
80
+ protocol = StreamReaderProtocol(reader, client_connected_cb,
81
+ loop=loop)
82
+ return protocol
83
+
84
+ return await loop.create_server(factory, host, port, **kwds)
85
+
86
+
87
+ if hasattr(socket, 'AF_UNIX'):
88
+ # UNIX Domain Sockets are supported on this platform
89
+
90
+ async def open_unix_connection(path=None, *,
91
+ limit=_DEFAULT_LIMIT, **kwds):
92
+ """Similar to `open_connection` but works with UNIX Domain Sockets."""
93
+ loop = events.get_running_loop()
94
+
95
+ reader = StreamReader(limit=limit, loop=loop)
96
+ protocol = StreamReaderProtocol(reader, loop=loop)
97
+ transport, _ = await loop.create_unix_connection(
98
+ lambda: protocol, path, **kwds)
99
+ writer = StreamWriter(transport, protocol, reader, loop)
100
+ return reader, writer
101
+
102
+ async def start_unix_server(client_connected_cb, path=None, *,
103
+ limit=_DEFAULT_LIMIT, **kwds):
104
+ """Similar to `start_server` but works with UNIX Domain Sockets."""
105
+ loop = events.get_running_loop()
106
+
107
+ def factory():
108
+ reader = StreamReader(limit=limit, loop=loop)
109
+ protocol = StreamReaderProtocol(reader, client_connected_cb,
110
+ loop=loop)
111
+ return protocol
112
+
113
+ return await loop.create_unix_server(factory, path, **kwds)
114
+
115
+
116
+ class FlowControlMixin(protocols.Protocol):
117
+ """Reusable flow control logic for StreamWriter.drain().
118
+
119
+ This implements the protocol methods pause_writing(),
120
+ resume_writing() and connection_lost(). If the subclass overrides
121
+ these it must call the super methods.
122
+
123
+ StreamWriter.drain() must wait for _drain_helper() coroutine.
124
+ """
125
+
126
+ def __init__(self, loop=None):
127
+ if loop is None:
128
+ self._loop = events.get_event_loop()
129
+ else:
130
+ self._loop = loop
131
+ self._paused = False
132
+ self._drain_waiters = collections.deque()
133
+ self._connection_lost = False
134
+
135
+ def pause_writing(self):
136
+ assert not self._paused
137
+ self._paused = True
138
+ if self._loop.get_debug():
139
+ logger.debug("%r pauses writing", self)
140
+
141
+ def resume_writing(self):
142
+ assert self._paused
143
+ self._paused = False
144
+ if self._loop.get_debug():
145
+ logger.debug("%r resumes writing", self)
146
+
147
+ for waiter in self._drain_waiters:
148
+ if not waiter.done():
149
+ waiter.set_result(None)
150
+
151
+ def connection_lost(self, exc):
152
+ self._connection_lost = True
153
+ # Wake up the writer(s) if currently paused.
154
+ if not self._paused:
155
+ return
156
+
157
+ for waiter in self._drain_waiters:
158
+ if not waiter.done():
159
+ if exc is None:
160
+ waiter.set_result(None)
161
+ else:
162
+ waiter.set_exception(exc)
163
+
164
+ async def _drain_helper(self):
165
+ if self._connection_lost:
166
+ raise ConnectionResetError('Connection lost')
167
+ if not self._paused:
168
+ return
169
+ waiter = self._loop.create_future()
170
+ self._drain_waiters.append(waiter)
171
+ try:
172
+ await waiter
173
+ finally:
174
+ self._drain_waiters.remove(waiter)
175
+
176
+ def _get_close_waiter(self, stream):
177
+ raise NotImplementedError
178
+
179
+
180
+ class StreamReaderProtocol(FlowControlMixin, protocols.Protocol):
181
+ """Helper class to adapt between Protocol and StreamReader.
182
+
183
+ (This is a helper class instead of making StreamReader itself a
184
+ Protocol subclass, because the StreamReader has other potential
185
+ uses, and to prevent the user of the StreamReader to accidentally
186
+ call inappropriate methods of the protocol.)
187
+ """
188
+
189
+ _source_traceback = None
190
+
191
+ def __init__(self, stream_reader, client_connected_cb=None, loop=None):
192
+ super().__init__(loop=loop)
193
+ if stream_reader is not None:
194
+ self._stream_reader_wr = weakref.ref(stream_reader)
195
+ self._source_traceback = stream_reader._source_traceback
196
+ else:
197
+ self._stream_reader_wr = None
198
+ if client_connected_cb is not None:
199
+ # This is a stream created by the `create_server()` function.
200
+ # Keep a strong reference to the reader until a connection
201
+ # is established.
202
+ self._strong_reader = stream_reader
203
+ self._reject_connection = False
204
+ self._task = None
205
+ self._transport = None
206
+ self._client_connected_cb = client_connected_cb
207
+ self._over_ssl = False
208
+ self._closed = self._loop.create_future()
209
+
210
+ @property
211
+ def _stream_reader(self):
212
+ if self._stream_reader_wr is None:
213
+ return None
214
+ return self._stream_reader_wr()
215
+
216
+ def _replace_transport(self, transport):
217
+ loop = self._loop
218
+ self._transport = transport
219
+ self._over_ssl = transport.get_extra_info('sslcontext') is not None
220
+
221
+ def connection_made(self, transport):
222
+ if self._reject_connection:
223
+ context = {
224
+ 'message': ('An open stream was garbage collected prior to '
225
+ 'establishing network connection; '
226
+ 'call "stream.close()" explicitly.')
227
+ }
228
+ if self._source_traceback:
229
+ context['source_traceback'] = self._source_traceback
230
+ self._loop.call_exception_handler(context)
231
+ transport.abort()
232
+ return
233
+ self._transport = transport
234
+ reader = self._stream_reader
235
+ if reader is not None:
236
+ reader.set_transport(transport)
237
+ self._over_ssl = transport.get_extra_info('sslcontext') is not None
238
+ if self._client_connected_cb is not None:
239
+ writer = StreamWriter(transport, self, reader, self._loop)
240
+ res = self._client_connected_cb(reader, writer)
241
+ if coroutines.iscoroutine(res):
242
+ def callback(task):
243
+ if task.cancelled():
244
+ transport.close()
245
+ return
246
+ exc = task.exception()
247
+ if exc is not None:
248
+ self._loop.call_exception_handler({
249
+ 'message': 'Unhandled exception in client_connected_cb',
250
+ 'exception': exc,
251
+ 'transport': transport,
252
+ })
253
+ transport.close()
254
+
255
+ self._task = self._loop.create_task(res)
256
+ self._task.add_done_callback(callback)
257
+
258
+ self._strong_reader = None
259
+
260
+ def connection_lost(self, exc):
261
+ reader = self._stream_reader
262
+ if reader is not None:
263
+ if exc is None:
264
+ reader.feed_eof()
265
+ else:
266
+ reader.set_exception(exc)
267
+ if not self._closed.done():
268
+ if exc is None:
269
+ self._closed.set_result(None)
270
+ else:
271
+ self._closed.set_exception(exc)
272
+ super().connection_lost(exc)
273
+ self._stream_reader_wr = None
274
+ self._stream_writer = None
275
+ self._task = None
276
+ self._transport = None
277
+
278
+ def data_received(self, data):
279
+ reader = self._stream_reader
280
+ if reader is not None:
281
+ reader.feed_data(data)
282
+
283
+ def eof_received(self):
284
+ reader = self._stream_reader
285
+ if reader is not None:
286
+ reader.feed_eof()
287
+ if self._over_ssl:
288
+ # Prevent a warning in SSLProtocol.eof_received:
289
+ # "returning true from eof_received()
290
+ # has no effect when using ssl"
291
+ return False
292
+ return True
293
+
294
+ def _get_close_waiter(self, stream):
295
+ return self._closed
296
+
297
+ def __del__(self):
298
+ # Prevent reports about unhandled exceptions.
299
+ # Better than self._closed._log_traceback = False hack
300
+ try:
301
+ closed = self._closed
302
+ except AttributeError:
303
+ pass # failed constructor
304
+ else:
305
+ if closed.done() and not closed.cancelled():
306
+ closed.exception()
307
+
308
+
309
+ class StreamWriter:
310
+ """Wraps a Transport.
311
+
312
+ This exposes write(), writelines(), [can_]write_eof(),
313
+ get_extra_info() and close(). It adds drain() which returns an
314
+ optional Future on which you can wait for flow control. It also
315
+ adds a transport property which references the Transport
316
+ directly.
317
+ """
318
+
319
+ def __init__(self, transport, protocol, reader, loop):
320
+ self._transport = transport
321
+ self._protocol = protocol
322
+ # drain() expects that the reader has an exception() method
323
+ assert reader is None or isinstance(reader, StreamReader)
324
+ self._reader = reader
325
+ self._loop = loop
326
+ self._complete_fut = self._loop.create_future()
327
+ self._complete_fut.set_result(None)
328
+
329
+ def __repr__(self):
330
+ info = [self.__class__.__name__, f'transport={self._transport!r}']
331
+ if self._reader is not None:
332
+ info.append(f'reader={self._reader!r}')
333
+ return '<{}>'.format(' '.join(info))
334
+
335
+ @property
336
+ def transport(self):
337
+ return self._transport
338
+
339
+ def write(self, data):
340
+ self._transport.write(data)
341
+
342
+ def writelines(self, data):
343
+ self._transport.writelines(data)
344
+
345
+ def write_eof(self):
346
+ return self._transport.write_eof()
347
+
348
+ def can_write_eof(self):
349
+ return self._transport.can_write_eof()
350
+
351
+ def close(self):
352
+ return self._transport.close()
353
+
354
+ def is_closing(self):
355
+ return self._transport.is_closing()
356
+
357
+ async def wait_closed(self):
358
+ await self._protocol._get_close_waiter(self)
359
+
360
+ def get_extra_info(self, name, default=None):
361
+ return self._transport.get_extra_info(name, default)
362
+
363
+ async def drain(self):
364
+ """Flush the write buffer.
365
+
366
+ The intended use is to write
367
+
368
+ w.write(data)
369
+ await w.drain()
370
+ """
371
+ if self._reader is not None:
372
+ exc = self._reader.exception()
373
+ if exc is not None:
374
+ raise exc
375
+ if self._transport.is_closing():
376
+ # Wait for protocol.connection_lost() call
377
+ # Raise connection closing error if any,
378
+ # ConnectionResetError otherwise
379
+ # Yield to the event loop so connection_lost() may be
380
+ # called. Without this, _drain_helper() would return
381
+ # immediately, and code that calls
382
+ # write(...); await drain()
383
+ # in a loop would never call connection_lost(), so it
384
+ # would not see an error when the socket is closed.
385
+ await sleep(0)
386
+ await self._protocol._drain_helper()
387
+
388
+ async def start_tls(self, sslcontext, *,
389
+ server_hostname=None,
390
+ ssl_handshake_timeout=None,
391
+ ssl_shutdown_timeout=None):
392
+ """Upgrade an existing stream-based connection to TLS."""
393
+ server_side = self._protocol._client_connected_cb is not None
394
+ protocol = self._protocol
395
+ await self.drain()
396
+ new_transport = await self._loop.start_tls( # type: ignore
397
+ self._transport, protocol, sslcontext,
398
+ server_side=server_side, server_hostname=server_hostname,
399
+ ssl_handshake_timeout=ssl_handshake_timeout,
400
+ ssl_shutdown_timeout=ssl_shutdown_timeout)
401
+ self._transport = new_transport
402
+ protocol._replace_transport(new_transport)
403
+
404
+ def __del__(self, warnings=warnings):
405
+ if not self._transport.is_closing():
406
+ if self._loop.is_closed():
407
+ warnings.warn("loop is closed", ResourceWarning)
408
+ else:
409
+ self.close()
410
+ warnings.warn(f"unclosed {self!r}", ResourceWarning)
411
+
412
+ class StreamReader:
413
+
414
+ _source_traceback = None
415
+
416
+ def __init__(self, limit=_DEFAULT_LIMIT, loop=None):
417
+ # The line length limit is a security feature;
418
+ # it also doubles as half the buffer limit.
419
+
420
+ if limit <= 0:
421
+ raise ValueError('Limit cannot be <= 0')
422
+
423
+ self._limit = limit
424
+ if loop is None:
425
+ self._loop = events.get_event_loop()
426
+ else:
427
+ self._loop = loop
428
+ self._buffer = bytearray()
429
+ self._eof = False # Whether we're done.
430
+ self._waiter = None # A future used by _wait_for_data()
431
+ self._exception = None
432
+ self._transport = None
433
+ self._paused = False
434
+ if self._loop.get_debug():
435
+ self._source_traceback = format_helpers.extract_stack(
436
+ sys._getframe(1))
437
+
438
+ def __repr__(self):
439
+ info = ['StreamReader']
440
+ if self._buffer:
441
+ info.append(f'{len(self._buffer)} bytes')
442
+ if self._eof:
443
+ info.append('eof')
444
+ if self._limit != _DEFAULT_LIMIT:
445
+ info.append(f'limit={self._limit}')
446
+ if self._waiter:
447
+ info.append(f'waiter={self._waiter!r}')
448
+ if self._exception:
449
+ info.append(f'exception={self._exception!r}')
450
+ if self._transport:
451
+ info.append(f'transport={self._transport!r}')
452
+ if self._paused:
453
+ info.append('paused')
454
+ return '<{}>'.format(' '.join(info))
455
+
456
+ def exception(self):
457
+ return self._exception
458
+
459
+ def set_exception(self, exc):
460
+ self._exception = exc
461
+
462
+ waiter = self._waiter
463
+ if waiter is not None:
464
+ self._waiter = None
465
+ if not waiter.cancelled():
466
+ waiter.set_exception(exc)
467
+
468
+ def _wakeup_waiter(self):
469
+ """Wakeup read*() functions waiting for data or EOF."""
470
+ waiter = self._waiter
471
+ if waiter is not None:
472
+ self._waiter = None
473
+ if not waiter.cancelled():
474
+ waiter.set_result(None)
475
+
476
+ def set_transport(self, transport):
477
+ assert self._transport is None, 'Transport already set'
478
+ self._transport = transport
479
+
480
+ def _maybe_resume_transport(self):
481
+ if self._paused and len(self._buffer) <= self._limit:
482
+ self._paused = False
483
+ self._transport.resume_reading()
484
+
485
+ def feed_eof(self):
486
+ self._eof = True
487
+ self._wakeup_waiter()
488
+
489
+ def at_eof(self):
490
+ """Return True if the buffer is empty and 'feed_eof' was called."""
491
+ return self._eof and not self._buffer
492
+
493
+ def feed_data(self, data):
494
+ assert not self._eof, 'feed_data after feed_eof'
495
+
496
+ if not data:
497
+ return
498
+
499
+ self._buffer.extend(data)
500
+ self._wakeup_waiter()
501
+
502
+ if (self._transport is not None and
503
+ not self._paused and
504
+ len(self._buffer) > 2 * self._limit):
505
+ try:
506
+ self._transport.pause_reading()
507
+ except NotImplementedError:
508
+ # The transport can't be paused.
509
+ # We'll just have to buffer all data.
510
+ # Forget the transport so we don't keep trying.
511
+ self._transport = None
512
+ else:
513
+ self._paused = True
514
+
515
+ async def _wait_for_data(self, func_name):
516
+ """Wait until feed_data() or feed_eof() is called.
517
+
518
+ If stream was paused, automatically resume it.
519
+ """
520
+ # StreamReader uses a future to link the protocol feed_data() method
521
+ # to a read coroutine. Running two read coroutines at the same time
522
+ # would have an unexpected behaviour. It would not possible to know
523
+ # which coroutine would get the next data.
524
+ if self._waiter is not None:
525
+ raise RuntimeError(
526
+ f'{func_name}() called while another coroutine is '
527
+ f'already waiting for incoming data')
528
+
529
+ assert not self._eof, '_wait_for_data after EOF'
530
+
531
+ # Waiting for data while paused will make deadlock, so prevent it.
532
+ # This is essential for readexactly(n) for case when n > self._limit.
533
+ if self._paused:
534
+ self._paused = False
535
+ self._transport.resume_reading()
536
+
537
+ self._waiter = self._loop.create_future()
538
+ try:
539
+ await self._waiter
540
+ finally:
541
+ self._waiter = None
542
+
543
+ async def readline(self):
544
+ r"""Read chunk of data from the stream until newline (b'\n') is found.
545
+
546
+ On success, return chunk that ends with newline. If only partial
547
+ line can be read due to EOF, return incomplete line without
548
+ terminating newline. When EOF was reached while no bytes read,
549
+ empty bytes object is returned.
550
+
551
+ If limit is reached, ValueError will be raised. In that case, if
552
+ newline was found, complete line including newline will be removed
553
+ from internal buffer. Else, internal buffer will be cleared.
554
+ Limit is compared against part of the line without newline.
555
+
556
+ If stream was paused, this function will automatically resume it if
557
+ needed.
558
+ """
559
+ sep = b'\n'
560
+ seplen = len(sep)
561
+ try:
562
+ line = await self.readuntil(sep)
563
+ except exceptions.IncompleteReadError as e:
564
+ return e.partial
565
+ except exceptions.LimitOverrunError as e:
566
+ if self._buffer.startswith(sep, e.consumed):
567
+ del self._buffer[:e.consumed + seplen]
568
+ else:
569
+ self._buffer.clear()
570
+ self._maybe_resume_transport()
571
+ raise ValueError(e.args[0])
572
+ return line
573
+
574
+ async def readuntil(self, separator=b'\n'):
575
+ """Read data from the stream until ``separator`` is found.
576
+
577
+ On success, the data and separator will be removed from the
578
+ internal buffer (consumed). Returned data will include the
579
+ separator at the end.
580
+
581
+ Configured stream limit is used to check result. Limit sets the
582
+ maximal length of data that can be returned, not counting the
583
+ separator.
584
+
585
+ If an EOF occurs and the complete separator is still not found,
586
+ an IncompleteReadError exception will be raised, and the internal
587
+ buffer will be reset. The IncompleteReadError.partial attribute
588
+ may contain the separator partially.
589
+
590
+ If the data cannot be read because of over limit, a
591
+ LimitOverrunError exception will be raised, and the data
592
+ will be left in the internal buffer, so it can be read again.
593
+
594
+ The ``separator`` may also be a tuple of separators. In this
595
+ case the return value will be the shortest possible that has any
596
+ separator as the suffix. For the purposes of LimitOverrunError,
597
+ the shortest possible separator is considered to be the one that
598
+ matched.
599
+ """
600
+ if isinstance(separator, tuple):
601
+ # Makes sure shortest matches wins
602
+ separator = sorted(separator, key=len)
603
+ else:
604
+ separator = [separator]
605
+ if not separator:
606
+ raise ValueError('Separator should contain at least one element')
607
+ min_seplen = len(separator[0])
608
+ max_seplen = len(separator[-1])
609
+ if min_seplen == 0:
610
+ raise ValueError('Separator should be at least one-byte string')
611
+
612
+ if self._exception is not None:
613
+ raise self._exception
614
+
615
+ # Consume whole buffer except last bytes, which length is
616
+ # one less than max_seplen. Let's check corner cases with
617
+ # separator[-1]='SEPARATOR':
618
+ # * we have received almost complete separator (without last
619
+ # byte). i.e buffer='some textSEPARATO'. In this case we
620
+ # can safely consume max_seplen - 1 bytes.
621
+ # * last byte of buffer is first byte of separator, i.e.
622
+ # buffer='abcdefghijklmnopqrS'. We may safely consume
623
+ # everything except that last byte, but this require to
624
+ # analyze bytes of buffer that match partial separator.
625
+ # This is slow and/or require FSM. For this case our
626
+ # implementation is not optimal, since require rescanning
627
+ # of data that is known to not belong to separator. In
628
+ # real world, separator will not be so long to notice
629
+ # performance problems. Even when reading MIME-encoded
630
+ # messages :)
631
+
632
+ # `offset` is the number of bytes from the beginning of the buffer
633
+ # where there is no occurrence of any `separator`.
634
+ offset = 0
635
+
636
+ # Loop until we find a `separator` in the buffer, exceed the buffer size,
637
+ # or an EOF has happened.
638
+ while True:
639
+ buflen = len(self._buffer)
640
+
641
+ # Check if we now have enough data in the buffer for shortest
642
+ # separator to fit.
643
+ if buflen - offset >= min_seplen:
644
+ match_start = None
645
+ match_end = None
646
+ for sep in separator:
647
+ isep = self._buffer.find(sep, offset)
648
+
649
+ if isep != -1:
650
+ # `separator` is in the buffer. `match_start` and
651
+ # `match_end` will be used later to retrieve the
652
+ # data.
653
+ end = isep + len(sep)
654
+ if match_end is None or end < match_end:
655
+ match_end = end
656
+ match_start = isep
657
+ if match_end is not None:
658
+ break
659
+
660
+ # see upper comment for explanation.
661
+ offset = max(0, buflen + 1 - max_seplen)
662
+ if offset > self._limit:
663
+ raise exceptions.LimitOverrunError(
664
+ 'Separator is not found, and chunk exceed the limit',
665
+ offset)
666
+
667
+ # Complete message (with full separator) may be present in buffer
668
+ # even when EOF flag is set. This may happen when the last chunk
669
+ # adds data which makes separator be found. That's why we check for
670
+ # EOF *after* inspecting the buffer.
671
+ if self._eof:
672
+ chunk = bytes(self._buffer)
673
+ self._buffer.clear()
674
+ raise exceptions.IncompleteReadError(chunk, None)
675
+
676
+ # _wait_for_data() will resume reading if stream was paused.
677
+ await self._wait_for_data('readuntil')
678
+
679
+ if match_start > self._limit:
680
+ raise exceptions.LimitOverrunError(
681
+ 'Separator is found, but chunk is longer than limit', match_start)
682
+
683
+ chunk = self._buffer[:match_end]
684
+ del self._buffer[:match_end]
685
+ self._maybe_resume_transport()
686
+ return bytes(chunk)
687
+
688
+ async def read(self, n=-1):
689
+ """Read up to `n` bytes from the stream.
690
+
691
+ If `n` is not provided or set to -1,
692
+ read until EOF, then return all read bytes.
693
+ If EOF was received and the internal buffer is empty,
694
+ return an empty bytes object.
695
+
696
+ If `n` is 0, return an empty bytes object immediately.
697
+
698
+ If `n` is positive, return at most `n` available bytes
699
+ as soon as at least 1 byte is available in the internal buffer.
700
+ If EOF is received before any byte is read, return an empty
701
+ bytes object.
702
+
703
+ Returned value is not limited with limit, configured at stream
704
+ creation.
705
+
706
+ If stream was paused, this function will automatically resume it if
707
+ needed.
708
+ """
709
+
710
+ if self._exception is not None:
711
+ raise self._exception
712
+
713
+ if n == 0:
714
+ return b''
715
+
716
+ if n < 0:
717
+ # This used to just loop creating a new waiter hoping to
718
+ # collect everything in self._buffer, but that would
719
+ # deadlock if the subprocess sends more than self.limit
720
+ # bytes. So just call self.read(self._limit) until EOF.
721
+ blocks = []
722
+ while True:
723
+ block = await self.read(self._limit)
724
+ if not block:
725
+ break
726
+ blocks.append(block)
727
+ return b''.join(blocks)
728
+
729
+ if not self._buffer and not self._eof:
730
+ await self._wait_for_data('read')
731
+
732
+ # This will work right even if buffer is less than n bytes
733
+ data = bytes(memoryview(self._buffer)[:n])
734
+ del self._buffer[:n]
735
+
736
+ self._maybe_resume_transport()
737
+ return data
738
+
739
+ async def readexactly(self, n):
740
+ """Read exactly `n` bytes.
741
+
742
+ Raise an IncompleteReadError if EOF is reached before `n` bytes can be
743
+ read. The IncompleteReadError.partial attribute of the exception will
744
+ contain the partial read bytes.
745
+
746
+ if n is zero, return empty bytes object.
747
+
748
+ Returned value is not limited with limit, configured at stream
749
+ creation.
750
+
751
+ If stream was paused, this function will automatically resume it if
752
+ needed.
753
+ """
754
+ if n < 0:
755
+ raise ValueError('readexactly size can not be less than zero')
756
+
757
+ if self._exception is not None:
758
+ raise self._exception
759
+
760
+ if n == 0:
761
+ return b''
762
+
763
+ while len(self._buffer) < n:
764
+ if self._eof:
765
+ incomplete = bytes(self._buffer)
766
+ self._buffer.clear()
767
+ raise exceptions.IncompleteReadError(incomplete, n)
768
+
769
+ await self._wait_for_data('readexactly')
770
+
771
+ if len(self._buffer) == n:
772
+ data = bytes(self._buffer)
773
+ self._buffer.clear()
774
+ else:
775
+ data = bytes(memoryview(self._buffer)[:n])
776
+ del self._buffer[:n]
777
+ self._maybe_resume_transport()
778
+ return data
779
+
780
+ def __aiter__(self):
781
+ return self
782
+
783
+ async def __anext__(self):
784
+ val = await self.readline()
785
+ if val == b'':
786
+ raise StopAsyncIteration
787
+ return val