@rowstile/cli-linux-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 (565) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +5 -0
  3. package/package.json +26 -0
  4. package/python/bin/python3.13 +0 -0
  5. package/python/bin/python3.13-config +122 -0
  6. package/python/lib/libpython3.13.so.1.0 +0 -0
  7. package/python/lib/libpython3.so +0 -0
  8. package/python/lib/python3.13/LICENSE.txt +277 -0
  9. package/python/lib/python3.13/__future__.py +147 -0
  10. package/python/lib/python3.13/__hello__.py +16 -0
  11. package/python/lib/python3.13/_aix_support.py +108 -0
  12. package/python/lib/python3.13/_android_support.py +192 -0
  13. package/python/lib/python3.13/_apple_support.py +66 -0
  14. package/python/lib/python3.13/_collections_abc.py +1187 -0
  15. package/python/lib/python3.13/_colorize.py +119 -0
  16. package/python/lib/python3.13/_compat_pickle.py +251 -0
  17. package/python/lib/python3.13/_compression.py +162 -0
  18. package/python/lib/python3.13/_ios_support.py +71 -0
  19. package/python/lib/python3.13/_markupbase.py +396 -0
  20. package/python/lib/python3.13/_opcode_metadata.py +343 -0
  21. package/python/lib/python3.13/_osx_support.py +579 -0
  22. package/python/lib/python3.13/_py_abc.py +147 -0
  23. package/python/lib/python3.13/_pydatetime.py +2640 -0
  24. package/python/lib/python3.13/_pydecimal.py +6356 -0
  25. package/python/lib/python3.13/_pyio.py +2714 -0
  26. package/python/lib/python3.13/_pylong.py +363 -0
  27. package/python/lib/python3.13/_pyrepl/__init__.py +19 -0
  28. package/python/lib/python3.13/_pyrepl/__main__.py +10 -0
  29. package/python/lib/python3.13/_pyrepl/_minimal_curses.py +68 -0
  30. package/python/lib/python3.13/_pyrepl/_threading_handler.py +74 -0
  31. package/python/lib/python3.13/_pyrepl/base_eventqueue.py +110 -0
  32. package/python/lib/python3.13/_pyrepl/commands.py +492 -0
  33. package/python/lib/python3.13/_pyrepl/completing_reader.py +295 -0
  34. package/python/lib/python3.13/_pyrepl/console.py +229 -0
  35. package/python/lib/python3.13/_pyrepl/curses.py +33 -0
  36. package/python/lib/python3.13/_pyrepl/fancy_termios.py +82 -0
  37. package/python/lib/python3.13/_pyrepl/historical_reader.py +419 -0
  38. package/python/lib/python3.13/_pyrepl/input.py +114 -0
  39. package/python/lib/python3.13/_pyrepl/keymap.py +213 -0
  40. package/python/lib/python3.13/_pyrepl/main.py +59 -0
  41. package/python/lib/python3.13/_pyrepl/mypy.ini +29 -0
  42. package/python/lib/python3.13/_pyrepl/pager.py +175 -0
  43. package/python/lib/python3.13/_pyrepl/reader.py +764 -0
  44. package/python/lib/python3.13/_pyrepl/readline.py +599 -0
  45. package/python/lib/python3.13/_pyrepl/simple_interact.py +180 -0
  46. package/python/lib/python3.13/_pyrepl/trace.py +21 -0
  47. package/python/lib/python3.13/_pyrepl/types.py +10 -0
  48. package/python/lib/python3.13/_pyrepl/unix_console.py +852 -0
  49. package/python/lib/python3.13/_pyrepl/unix_eventqueue.py +76 -0
  50. package/python/lib/python3.13/_pyrepl/utils.py +83 -0
  51. package/python/lib/python3.13/_pyrepl/windows_console.py +687 -0
  52. package/python/lib/python3.13/_pyrepl/windows_eventqueue.py +42 -0
  53. package/python/lib/python3.13/_sitebuiltins.py +91 -0
  54. package/python/lib/python3.13/_strptime.py +800 -0
  55. package/python/lib/python3.13/_sysconfigdata__linux_x86_64-linux-gnu.py +1079 -0
  56. package/python/lib/python3.13/_threading_local.py +120 -0
  57. package/python/lib/python3.13/_weakrefset.py +205 -0
  58. package/python/lib/python3.13/abc.py +188 -0
  59. package/python/lib/python3.13/antigravity.py +17 -0
  60. package/python/lib/python3.13/argparse.py +2690 -0
  61. package/python/lib/python3.13/ast.py +1865 -0
  62. package/python/lib/python3.13/asyncio/__init__.py +47 -0
  63. package/python/lib/python3.13/asyncio/__main__.py +211 -0
  64. package/python/lib/python3.13/asyncio/base_events.py +2086 -0
  65. package/python/lib/python3.13/asyncio/base_futures.py +67 -0
  66. package/python/lib/python3.13/asyncio/base_subprocess.py +312 -0
  67. package/python/lib/python3.13/asyncio/base_tasks.py +94 -0
  68. package/python/lib/python3.13/asyncio/constants.py +41 -0
  69. package/python/lib/python3.13/asyncio/coroutines.py +109 -0
  70. package/python/lib/python3.13/asyncio/events.py +885 -0
  71. package/python/lib/python3.13/asyncio/exceptions.py +62 -0
  72. package/python/lib/python3.13/asyncio/format_helpers.py +84 -0
  73. package/python/lib/python3.13/asyncio/futures.py +425 -0
  74. package/python/lib/python3.13/asyncio/locks.py +617 -0
  75. package/python/lib/python3.13/asyncio/log.py +7 -0
  76. package/python/lib/python3.13/asyncio/mixins.py +21 -0
  77. package/python/lib/python3.13/asyncio/proactor_events.py +891 -0
  78. package/python/lib/python3.13/asyncio/protocols.py +216 -0
  79. package/python/lib/python3.13/asyncio/queues.py +309 -0
  80. package/python/lib/python3.13/asyncio/runners.py +217 -0
  81. package/python/lib/python3.13/asyncio/selector_events.py +1328 -0
  82. package/python/lib/python3.13/asyncio/sslproto.py +929 -0
  83. package/python/lib/python3.13/asyncio/staggered.py +174 -0
  84. package/python/lib/python3.13/asyncio/streams.py +787 -0
  85. package/python/lib/python3.13/asyncio/subprocess.py +229 -0
  86. package/python/lib/python3.13/asyncio/taskgroups.py +278 -0
  87. package/python/lib/python3.13/asyncio/tasks.py +1121 -0
  88. package/python/lib/python3.13/asyncio/threads.py +26 -0
  89. package/python/lib/python3.13/asyncio/timeouts.py +185 -0
  90. package/python/lib/python3.13/asyncio/transports.py +337 -0
  91. package/python/lib/python3.13/asyncio/trsock.py +98 -0
  92. package/python/lib/python3.13/asyncio/unix_events.py +1550 -0
  93. package/python/lib/python3.13/asyncio/windows_events.py +906 -0
  94. package/python/lib/python3.13/asyncio/windows_utils.py +181 -0
  95. package/python/lib/python3.13/base64.py +628 -0
  96. package/python/lib/python3.13/bdb.py +973 -0
  97. package/python/lib/python3.13/bisect.py +118 -0
  98. package/python/lib/python3.13/bz2.py +352 -0
  99. package/python/lib/python3.13/cProfile.py +197 -0
  100. package/python/lib/python3.13/calendar.py +813 -0
  101. package/python/lib/python3.13/cmd.py +409 -0
  102. package/python/lib/python3.13/code.py +386 -0
  103. package/python/lib/python3.13/codecs.py +1132 -0
  104. package/python/lib/python3.13/codeop.py +155 -0
  105. package/python/lib/python3.13/collections/__init__.py +1603 -0
  106. package/python/lib/python3.13/colorsys.py +166 -0
  107. package/python/lib/python3.13/compileall.py +470 -0
  108. package/python/lib/python3.13/concurrent/__init__.py +1 -0
  109. package/python/lib/python3.13/concurrent/futures/__init__.py +54 -0
  110. package/python/lib/python3.13/concurrent/futures/_base.py +660 -0
  111. package/python/lib/python3.13/concurrent/futures/process.py +892 -0
  112. package/python/lib/python3.13/concurrent/futures/thread.py +240 -0
  113. package/python/lib/python3.13/configparser.py +1396 -0
  114. package/python/lib/python3.13/contextlib.py +814 -0
  115. package/python/lib/python3.13/contextvars.py +4 -0
  116. package/python/lib/python3.13/copy.py +306 -0
  117. package/python/lib/python3.13/copyreg.py +217 -0
  118. package/python/lib/python3.13/csv.py +527 -0
  119. package/python/lib/python3.13/ctypes/__init__.py +605 -0
  120. package/python/lib/python3.13/ctypes/_aix.py +327 -0
  121. package/python/lib/python3.13/ctypes/_endian.py +78 -0
  122. package/python/lib/python3.13/ctypes/macholib/README.ctypes +7 -0
  123. package/python/lib/python3.13/ctypes/macholib/__init__.py +9 -0
  124. package/python/lib/python3.13/ctypes/macholib/dyld.py +165 -0
  125. package/python/lib/python3.13/ctypes/macholib/dylib.py +42 -0
  126. package/python/lib/python3.13/ctypes/macholib/fetch_macholib +2 -0
  127. package/python/lib/python3.13/ctypes/macholib/fetch_macholib.bat +1 -0
  128. package/python/lib/python3.13/ctypes/macholib/framework.py +42 -0
  129. package/python/lib/python3.13/ctypes/util.py +387 -0
  130. package/python/lib/python3.13/ctypes/wintypes.py +202 -0
  131. package/python/lib/python3.13/curses/__init__.py +101 -0
  132. package/python/lib/python3.13/curses/ascii.py +99 -0
  133. package/python/lib/python3.13/curses/has_key.py +192 -0
  134. package/python/lib/python3.13/curses/panel.py +6 -0
  135. package/python/lib/python3.13/curses/textpad.py +236 -0
  136. package/python/lib/python3.13/dataclasses.py +1679 -0
  137. package/python/lib/python3.13/datetime.py +9 -0
  138. package/python/lib/python3.13/dbm/__init__.py +194 -0
  139. package/python/lib/python3.13/dbm/dumb.py +319 -0
  140. package/python/lib/python3.13/dbm/gnu.py +3 -0
  141. package/python/lib/python3.13/dbm/ndbm.py +3 -0
  142. package/python/lib/python3.13/dbm/sqlite3.py +144 -0
  143. package/python/lib/python3.13/decimal.py +109 -0
  144. package/python/lib/python3.13/difflib.py +2058 -0
  145. package/python/lib/python3.13/dis.py +1075 -0
  146. package/python/lib/python3.13/doctest.py +2919 -0
  147. package/python/lib/python3.13/email/__init__.py +61 -0
  148. package/python/lib/python3.13/email/_encoded_words.py +233 -0
  149. package/python/lib/python3.13/email/_header_value_parser.py +3153 -0
  150. package/python/lib/python3.13/email/_parseaddr.py +563 -0
  151. package/python/lib/python3.13/email/_policybase.py +382 -0
  152. package/python/lib/python3.13/email/architecture.rst +216 -0
  153. package/python/lib/python3.13/email/base64mime.py +115 -0
  154. package/python/lib/python3.13/email/charset.py +396 -0
  155. package/python/lib/python3.13/email/contentmanager.py +254 -0
  156. package/python/lib/python3.13/email/encoders.py +65 -0
  157. package/python/lib/python3.13/email/errors.py +117 -0
  158. package/python/lib/python3.13/email/feedparser.py +536 -0
  159. package/python/lib/python3.13/email/generator.py +530 -0
  160. package/python/lib/python3.13/email/header.py +582 -0
  161. package/python/lib/python3.13/email/headerregistry.py +618 -0
  162. package/python/lib/python3.13/email/iterators.py +68 -0
  163. package/python/lib/python3.13/email/message.py +1217 -0
  164. package/python/lib/python3.13/email/mime/__init__.py +0 -0
  165. package/python/lib/python3.13/email/mime/application.py +37 -0
  166. package/python/lib/python3.13/email/mime/audio.py +97 -0
  167. package/python/lib/python3.13/email/mime/base.py +29 -0
  168. package/python/lib/python3.13/email/mime/image.py +152 -0
  169. package/python/lib/python3.13/email/mime/message.py +33 -0
  170. package/python/lib/python3.13/email/mime/multipart.py +47 -0
  171. package/python/lib/python3.13/email/mime/nonmultipart.py +21 -0
  172. package/python/lib/python3.13/email/mime/text.py +40 -0
  173. package/python/lib/python3.13/email/parser.py +127 -0
  174. package/python/lib/python3.13/email/policy.py +232 -0
  175. package/python/lib/python3.13/email/quoprimime.py +300 -0
  176. package/python/lib/python3.13/email/utils.py +497 -0
  177. package/python/lib/python3.13/encodings/__init__.py +179 -0
  178. package/python/lib/python3.13/encodings/__pycache__/__init__.cpython-313.pyc +0 -0
  179. package/python/lib/python3.13/encodings/__pycache__/aliases.cpython-313.pyc +0 -0
  180. package/python/lib/python3.13/encodings/__pycache__/utf_8.cpython-313.pyc +0 -0
  181. package/python/lib/python3.13/encodings/aliases.py +560 -0
  182. package/python/lib/python3.13/encodings/ascii.py +50 -0
  183. package/python/lib/python3.13/encodings/base64_codec.py +55 -0
  184. package/python/lib/python3.13/encodings/big5.py +39 -0
  185. package/python/lib/python3.13/encodings/big5hkscs.py +39 -0
  186. package/python/lib/python3.13/encodings/bz2_codec.py +78 -0
  187. package/python/lib/python3.13/encodings/charmap.py +69 -0
  188. package/python/lib/python3.13/encodings/cp037.py +307 -0
  189. package/python/lib/python3.13/encodings/cp1006.py +307 -0
  190. package/python/lib/python3.13/encodings/cp1026.py +307 -0
  191. package/python/lib/python3.13/encodings/cp1125.py +698 -0
  192. package/python/lib/python3.13/encodings/cp1140.py +307 -0
  193. package/python/lib/python3.13/encodings/cp1250.py +307 -0
  194. package/python/lib/python3.13/encodings/cp1251.py +307 -0
  195. package/python/lib/python3.13/encodings/cp1252.py +307 -0
  196. package/python/lib/python3.13/encodings/cp1253.py +307 -0
  197. package/python/lib/python3.13/encodings/cp1254.py +307 -0
  198. package/python/lib/python3.13/encodings/cp1255.py +307 -0
  199. package/python/lib/python3.13/encodings/cp1256.py +307 -0
  200. package/python/lib/python3.13/encodings/cp1257.py +307 -0
  201. package/python/lib/python3.13/encodings/cp1258.py +307 -0
  202. package/python/lib/python3.13/encodings/cp273.py +307 -0
  203. package/python/lib/python3.13/encodings/cp424.py +307 -0
  204. package/python/lib/python3.13/encodings/cp437.py +698 -0
  205. package/python/lib/python3.13/encodings/cp500.py +307 -0
  206. package/python/lib/python3.13/encodings/cp720.py +309 -0
  207. package/python/lib/python3.13/encodings/cp737.py +698 -0
  208. package/python/lib/python3.13/encodings/cp775.py +697 -0
  209. package/python/lib/python3.13/encodings/cp850.py +698 -0
  210. package/python/lib/python3.13/encodings/cp852.py +698 -0
  211. package/python/lib/python3.13/encodings/cp855.py +698 -0
  212. package/python/lib/python3.13/encodings/cp856.py +307 -0
  213. package/python/lib/python3.13/encodings/cp857.py +694 -0
  214. package/python/lib/python3.13/encodings/cp858.py +698 -0
  215. package/python/lib/python3.13/encodings/cp860.py +698 -0
  216. package/python/lib/python3.13/encodings/cp861.py +698 -0
  217. package/python/lib/python3.13/encodings/cp862.py +698 -0
  218. package/python/lib/python3.13/encodings/cp863.py +698 -0
  219. package/python/lib/python3.13/encodings/cp864.py +690 -0
  220. package/python/lib/python3.13/encodings/cp865.py +698 -0
  221. package/python/lib/python3.13/encodings/cp866.py +698 -0
  222. package/python/lib/python3.13/encodings/cp869.py +689 -0
  223. package/python/lib/python3.13/encodings/cp874.py +307 -0
  224. package/python/lib/python3.13/encodings/cp875.py +307 -0
  225. package/python/lib/python3.13/encodings/cp932.py +39 -0
  226. package/python/lib/python3.13/encodings/cp949.py +39 -0
  227. package/python/lib/python3.13/encodings/cp950.py +39 -0
  228. package/python/lib/python3.13/encodings/euc_jis_2004.py +39 -0
  229. package/python/lib/python3.13/encodings/euc_jisx0213.py +39 -0
  230. package/python/lib/python3.13/encodings/euc_jp.py +39 -0
  231. package/python/lib/python3.13/encodings/euc_kr.py +39 -0
  232. package/python/lib/python3.13/encodings/gb18030.py +39 -0
  233. package/python/lib/python3.13/encodings/gb2312.py +39 -0
  234. package/python/lib/python3.13/encodings/gbk.py +39 -0
  235. package/python/lib/python3.13/encodings/hex_codec.py +55 -0
  236. package/python/lib/python3.13/encodings/hp_roman8.py +314 -0
  237. package/python/lib/python3.13/encodings/hz.py +39 -0
  238. package/python/lib/python3.13/encodings/idna.py +387 -0
  239. package/python/lib/python3.13/encodings/iso2022_jp.py +39 -0
  240. package/python/lib/python3.13/encodings/iso2022_jp_1.py +39 -0
  241. package/python/lib/python3.13/encodings/iso2022_jp_2.py +39 -0
  242. package/python/lib/python3.13/encodings/iso2022_jp_2004.py +39 -0
  243. package/python/lib/python3.13/encodings/iso2022_jp_3.py +39 -0
  244. package/python/lib/python3.13/encodings/iso2022_jp_ext.py +39 -0
  245. package/python/lib/python3.13/encodings/iso2022_kr.py +39 -0
  246. package/python/lib/python3.13/encodings/iso8859_1.py +307 -0
  247. package/python/lib/python3.13/encodings/iso8859_10.py +307 -0
  248. package/python/lib/python3.13/encodings/iso8859_11.py +307 -0
  249. package/python/lib/python3.13/encodings/iso8859_13.py +307 -0
  250. package/python/lib/python3.13/encodings/iso8859_14.py +307 -0
  251. package/python/lib/python3.13/encodings/iso8859_15.py +307 -0
  252. package/python/lib/python3.13/encodings/iso8859_16.py +307 -0
  253. package/python/lib/python3.13/encodings/iso8859_2.py +307 -0
  254. package/python/lib/python3.13/encodings/iso8859_3.py +307 -0
  255. package/python/lib/python3.13/encodings/iso8859_4.py +307 -0
  256. package/python/lib/python3.13/encodings/iso8859_5.py +307 -0
  257. package/python/lib/python3.13/encodings/iso8859_6.py +307 -0
  258. package/python/lib/python3.13/encodings/iso8859_7.py +307 -0
  259. package/python/lib/python3.13/encodings/iso8859_8.py +307 -0
  260. package/python/lib/python3.13/encodings/iso8859_9.py +307 -0
  261. package/python/lib/python3.13/encodings/johab.py +39 -0
  262. package/python/lib/python3.13/encodings/koi8_r.py +307 -0
  263. package/python/lib/python3.13/encodings/koi8_t.py +308 -0
  264. package/python/lib/python3.13/encodings/koi8_u.py +307 -0
  265. package/python/lib/python3.13/encodings/kz1048.py +307 -0
  266. package/python/lib/python3.13/encodings/latin_1.py +50 -0
  267. package/python/lib/python3.13/encodings/mac_arabic.py +698 -0
  268. package/python/lib/python3.13/encodings/mac_croatian.py +307 -0
  269. package/python/lib/python3.13/encodings/mac_cyrillic.py +307 -0
  270. package/python/lib/python3.13/encodings/mac_farsi.py +307 -0
  271. package/python/lib/python3.13/encodings/mac_greek.py +307 -0
  272. package/python/lib/python3.13/encodings/mac_iceland.py +307 -0
  273. package/python/lib/python3.13/encodings/mac_latin2.py +312 -0
  274. package/python/lib/python3.13/encodings/mac_roman.py +307 -0
  275. package/python/lib/python3.13/encodings/mac_romanian.py +307 -0
  276. package/python/lib/python3.13/encodings/mac_turkish.py +307 -0
  277. package/python/lib/python3.13/encodings/mbcs.py +47 -0
  278. package/python/lib/python3.13/encodings/oem.py +41 -0
  279. package/python/lib/python3.13/encodings/palmos.py +308 -0
  280. package/python/lib/python3.13/encodings/ptcp154.py +312 -0
  281. package/python/lib/python3.13/encodings/punycode.py +253 -0
  282. package/python/lib/python3.13/encodings/quopri_codec.py +56 -0
  283. package/python/lib/python3.13/encodings/raw_unicode_escape.py +46 -0
  284. package/python/lib/python3.13/encodings/rot_13.py +113 -0
  285. package/python/lib/python3.13/encodings/shift_jis.py +39 -0
  286. package/python/lib/python3.13/encodings/shift_jis_2004.py +39 -0
  287. package/python/lib/python3.13/encodings/shift_jisx0213.py +39 -0
  288. package/python/lib/python3.13/encodings/tis_620.py +307 -0
  289. package/python/lib/python3.13/encodings/undefined.py +49 -0
  290. package/python/lib/python3.13/encodings/unicode_escape.py +46 -0
  291. package/python/lib/python3.13/encodings/utf_16.py +155 -0
  292. package/python/lib/python3.13/encodings/utf_16_be.py +42 -0
  293. package/python/lib/python3.13/encodings/utf_16_le.py +42 -0
  294. package/python/lib/python3.13/encodings/utf_32.py +150 -0
  295. package/python/lib/python3.13/encodings/utf_32_be.py +37 -0
  296. package/python/lib/python3.13/encodings/utf_32_le.py +37 -0
  297. package/python/lib/python3.13/encodings/utf_7.py +38 -0
  298. package/python/lib/python3.13/encodings/utf_8.py +42 -0
  299. package/python/lib/python3.13/encodings/utf_8_sig.py +130 -0
  300. package/python/lib/python3.13/encodings/uu_codec.py +103 -0
  301. package/python/lib/python3.13/encodings/zlib_codec.py +77 -0
  302. package/python/lib/python3.13/enum.py +2183 -0
  303. package/python/lib/python3.13/filecmp.py +320 -0
  304. package/python/lib/python3.13/fileinput.py +442 -0
  305. package/python/lib/python3.13/fnmatch.py +192 -0
  306. package/python/lib/python3.13/fractions.py +1043 -0
  307. package/python/lib/python3.13/ftplib.py +975 -0
  308. package/python/lib/python3.13/functools.py +1036 -0
  309. package/python/lib/python3.13/genericpath.py +200 -0
  310. package/python/lib/python3.13/getopt.py +215 -0
  311. package/python/lib/python3.13/getpass.py +192 -0
  312. package/python/lib/python3.13/gettext.py +657 -0
  313. package/python/lib/python3.13/glob.py +572 -0
  314. package/python/lib/python3.13/graphlib.py +250 -0
  315. package/python/lib/python3.13/gzip.py +693 -0
  316. package/python/lib/python3.13/hashlib.py +255 -0
  317. package/python/lib/python3.13/heapq.py +603 -0
  318. package/python/lib/python3.13/hmac.py +220 -0
  319. package/python/lib/python3.13/html/__init__.py +132 -0
  320. package/python/lib/python3.13/html/entities.py +2513 -0
  321. package/python/lib/python3.13/html/parser.py +583 -0
  322. package/python/lib/python3.13/http/__init__.py +202 -0
  323. package/python/lib/python3.13/http/client.py +1598 -0
  324. package/python/lib/python3.13/http/cookiejar.py +2122 -0
  325. package/python/lib/python3.13/http/cookies.py +635 -0
  326. package/python/lib/python3.13/http/server.py +1355 -0
  327. package/python/lib/python3.13/imaplib.py +1769 -0
  328. package/python/lib/python3.13/importlib/__init__.py +136 -0
  329. package/python/lib/python3.13/importlib/_abc.py +39 -0
  330. package/python/lib/python3.13/importlib/_bootstrap.py +1559 -0
  331. package/python/lib/python3.13/importlib/_bootstrap_external.py +1826 -0
  332. package/python/lib/python3.13/importlib/abc.py +243 -0
  333. package/python/lib/python3.13/importlib/machinery.py +21 -0
  334. package/python/lib/python3.13/importlib/metadata/__init__.py +1093 -0
  335. package/python/lib/python3.13/importlib/metadata/_adapters.py +89 -0
  336. package/python/lib/python3.13/importlib/metadata/_collections.py +30 -0
  337. package/python/lib/python3.13/importlib/metadata/_functools.py +104 -0
  338. package/python/lib/python3.13/importlib/metadata/_itertools.py +73 -0
  339. package/python/lib/python3.13/importlib/metadata/_meta.py +67 -0
  340. package/python/lib/python3.13/importlib/metadata/_text.py +99 -0
  341. package/python/lib/python3.13/importlib/metadata/diagnose.py +21 -0
  342. package/python/lib/python3.13/importlib/readers.py +12 -0
  343. package/python/lib/python3.13/importlib/resources/__init__.py +43 -0
  344. package/python/lib/python3.13/importlib/resources/_adapters.py +168 -0
  345. package/python/lib/python3.13/importlib/resources/_common.py +211 -0
  346. package/python/lib/python3.13/importlib/resources/_functional.py +81 -0
  347. package/python/lib/python3.13/importlib/resources/_itertools.py +38 -0
  348. package/python/lib/python3.13/importlib/resources/abc.py +173 -0
  349. package/python/lib/python3.13/importlib/resources/readers.py +203 -0
  350. package/python/lib/python3.13/importlib/resources/simple.py +106 -0
  351. package/python/lib/python3.13/importlib/simple.py +14 -0
  352. package/python/lib/python3.13/importlib/util.py +274 -0
  353. package/python/lib/python3.13/inspect.py +3479 -0
  354. package/python/lib/python3.13/io.py +99 -0
  355. package/python/lib/python3.13/ipaddress.py +2440 -0
  356. package/python/lib/python3.13/json/__init__.py +365 -0
  357. package/python/lib/python3.13/json/decoder.py +364 -0
  358. package/python/lib/python3.13/json/encoder.py +446 -0
  359. package/python/lib/python3.13/json/scanner.py +73 -0
  360. package/python/lib/python3.13/json/tool.py +90 -0
  361. package/python/lib/python3.13/keyword.py +64 -0
  362. package/python/lib/python3.13/lib-dynload/.empty +0 -0
  363. package/python/lib/python3.13/lib-dynload/_dbm.cpython-313-x86_64-linux-gnu.so +0 -0
  364. package/python/lib/python3.13/linecache.py +236 -0
  365. package/python/lib/python3.13/locale.py +1987 -0
  366. package/python/lib/python3.13/logging/__init__.py +2330 -0
  367. package/python/lib/python3.13/logging/config.py +1080 -0
  368. package/python/lib/python3.13/logging/handlers.py +1629 -0
  369. package/python/lib/python3.13/lzma.py +364 -0
  370. package/python/lib/python3.13/mailbox.py +2219 -0
  371. package/python/lib/python3.13/mimetypes.py +679 -0
  372. package/python/lib/python3.13/modulefinder.py +671 -0
  373. package/python/lib/python3.13/multiprocessing/__init__.py +37 -0
  374. package/python/lib/python3.13/multiprocessing/connection.py +1216 -0
  375. package/python/lib/python3.13/multiprocessing/context.py +383 -0
  376. package/python/lib/python3.13/multiprocessing/dummy/__init__.py +126 -0
  377. package/python/lib/python3.13/multiprocessing/dummy/connection.py +75 -0
  378. package/python/lib/python3.13/multiprocessing/forkserver.py +373 -0
  379. package/python/lib/python3.13/multiprocessing/heap.py +337 -0
  380. package/python/lib/python3.13/multiprocessing/managers.py +1397 -0
  381. package/python/lib/python3.13/multiprocessing/pool.py +957 -0
  382. package/python/lib/python3.13/multiprocessing/popen_fork.py +97 -0
  383. package/python/lib/python3.13/multiprocessing/popen_forkserver.py +74 -0
  384. package/python/lib/python3.13/multiprocessing/popen_spawn_posix.py +76 -0
  385. package/python/lib/python3.13/multiprocessing/popen_spawn_win32.py +147 -0
  386. package/python/lib/python3.13/multiprocessing/process.py +436 -0
  387. package/python/lib/python3.13/multiprocessing/queues.py +399 -0
  388. package/python/lib/python3.13/multiprocessing/reduction.py +281 -0
  389. package/python/lib/python3.13/multiprocessing/resource_sharer.py +154 -0
  390. package/python/lib/python3.13/multiprocessing/resource_tracker.py +499 -0
  391. package/python/lib/python3.13/multiprocessing/shared_memory.py +544 -0
  392. package/python/lib/python3.13/multiprocessing/sharedctypes.py +240 -0
  393. package/python/lib/python3.13/multiprocessing/spawn.py +307 -0
  394. package/python/lib/python3.13/multiprocessing/synchronize.py +404 -0
  395. package/python/lib/python3.13/multiprocessing/util.py +562 -0
  396. package/python/lib/python3.13/netrc.py +199 -0
  397. package/python/lib/python3.13/ntpath.py +872 -0
  398. package/python/lib/python3.13/nturl2path.py +69 -0
  399. package/python/lib/python3.13/numbers.py +427 -0
  400. package/python/lib/python3.13/opcode.py +115 -0
  401. package/python/lib/python3.13/operator.py +467 -0
  402. package/python/lib/python3.13/optparse.py +1681 -0
  403. package/python/lib/python3.13/os.py +1184 -0
  404. package/python/lib/python3.13/pathlib/__init__.py +12 -0
  405. package/python/lib/python3.13/pathlib/_abc.py +930 -0
  406. package/python/lib/python3.13/pathlib/_local.py +861 -0
  407. package/python/lib/python3.13/pdb.py +2550 -0
  408. package/python/lib/python3.13/pickle.py +1860 -0
  409. package/python/lib/python3.13/pickletools.py +2904 -0
  410. package/python/lib/python3.13/pkgutil.py +529 -0
  411. package/python/lib/python3.13/platform.py +1454 -0
  412. package/python/lib/python3.13/plistlib.py +948 -0
  413. package/python/lib/python3.13/poplib.py +477 -0
  414. package/python/lib/python3.13/posixpath.py +578 -0
  415. package/python/lib/python3.13/pprint.py +658 -0
  416. package/python/lib/python3.13/profile.py +616 -0
  417. package/python/lib/python3.13/pstats.py +778 -0
  418. package/python/lib/python3.13/pty.py +211 -0
  419. package/python/lib/python3.13/py_compile.py +212 -0
  420. package/python/lib/python3.13/pyclbr.py +314 -0
  421. package/python/lib/python3.13/pydoc.py +2861 -0
  422. package/python/lib/python3.13/queue.py +383 -0
  423. package/python/lib/python3.13/quopri.py +237 -0
  424. package/python/lib/python3.13/random.py +1078 -0
  425. package/python/lib/python3.13/re/__init__.py +428 -0
  426. package/python/lib/python3.13/re/_casefix.py +106 -0
  427. package/python/lib/python3.13/re/_compiler.py +768 -0
  428. package/python/lib/python3.13/re/_constants.py +222 -0
  429. package/python/lib/python3.13/re/_parser.py +1081 -0
  430. package/python/lib/python3.13/reprlib.py +230 -0
  431. package/python/lib/python3.13/rlcompleter.py +222 -0
  432. package/python/lib/python3.13/runpy.py +326 -0
  433. package/python/lib/python3.13/sched.py +167 -0
  434. package/python/lib/python3.13/secrets.py +71 -0
  435. package/python/lib/python3.13/selectors.py +603 -0
  436. package/python/lib/python3.13/shelve.py +250 -0
  437. package/python/lib/python3.13/shlex.py +345 -0
  438. package/python/lib/python3.13/shutil.py +1569 -0
  439. package/python/lib/python3.13/signal.py +94 -0
  440. package/python/lib/python3.13/site.py +773 -0
  441. package/python/lib/python3.13/smtplib.py +1123 -0
  442. package/python/lib/python3.13/socket.py +988 -0
  443. package/python/lib/python3.13/socketserver.py +863 -0
  444. package/python/lib/python3.13/sqlite3/__init__.py +70 -0
  445. package/python/lib/python3.13/sqlite3/__main__.py +139 -0
  446. package/python/lib/python3.13/sqlite3/dbapi2.py +108 -0
  447. package/python/lib/python3.13/sqlite3/dump.py +118 -0
  448. package/python/lib/python3.13/sre_compile.py +7 -0
  449. package/python/lib/python3.13/sre_constants.py +7 -0
  450. package/python/lib/python3.13/sre_parse.py +7 -0
  451. package/python/lib/python3.13/ssl.py +1541 -0
  452. package/python/lib/python3.13/stat.py +212 -0
  453. package/python/lib/python3.13/statistics.py +1817 -0
  454. package/python/lib/python3.13/string.py +314 -0
  455. package/python/lib/python3.13/stringprep.py +272 -0
  456. package/python/lib/python3.13/struct.py +15 -0
  457. package/python/lib/python3.13/subprocess.py +2258 -0
  458. package/python/lib/python3.13/symtable.py +414 -0
  459. package/python/lib/python3.13/sysconfig/__init__.py +734 -0
  460. package/python/lib/python3.13/sysconfig/__main__.py +248 -0
  461. package/python/lib/python3.13/tabnanny.py +340 -0
  462. package/python/lib/python3.13/tarfile.py +3136 -0
  463. package/python/lib/python3.13/tempfile.py +958 -0
  464. package/python/lib/python3.13/textwrap.py +497 -0
  465. package/python/lib/python3.13/this.py +28 -0
  466. package/python/lib/python3.13/threading.py +1602 -0
  467. package/python/lib/python3.13/timeit.py +381 -0
  468. package/python/lib/python3.13/token.py +141 -0
  469. package/python/lib/python3.13/tokenize.py +592 -0
  470. package/python/lib/python3.13/tomllib/__init__.py +10 -0
  471. package/python/lib/python3.13/tomllib/_parser.py +703 -0
  472. package/python/lib/python3.13/tomllib/_re.py +107 -0
  473. package/python/lib/python3.13/tomllib/_types.py +10 -0
  474. package/python/lib/python3.13/tomllib/mypy.ini +15 -0
  475. package/python/lib/python3.13/trace.py +754 -0
  476. package/python/lib/python3.13/traceback.py +1639 -0
  477. package/python/lib/python3.13/tracemalloc.py +560 -0
  478. package/python/lib/python3.13/tty.py +73 -0
  479. package/python/lib/python3.13/types.py +346 -0
  480. package/python/lib/python3.13/typing.py +3846 -0
  481. package/python/lib/python3.13/unittest/__init__.py +80 -0
  482. package/python/lib/python3.13/unittest/__main__.py +18 -0
  483. package/python/lib/python3.13/unittest/_log.py +86 -0
  484. package/python/lib/python3.13/unittest/async_case.py +146 -0
  485. package/python/lib/python3.13/unittest/case.py +1478 -0
  486. package/python/lib/python3.13/unittest/loader.py +460 -0
  487. package/python/lib/python3.13/unittest/main.py +280 -0
  488. package/python/lib/python3.13/unittest/mock.py +3189 -0
  489. package/python/lib/python3.13/unittest/result.py +256 -0
  490. package/python/lib/python3.13/unittest/runner.py +292 -0
  491. package/python/lib/python3.13/unittest/signals.py +71 -0
  492. package/python/lib/python3.13/unittest/suite.py +379 -0
  493. package/python/lib/python3.13/unittest/util.py +170 -0
  494. package/python/lib/python3.13/urllib/__init__.py +0 -0
  495. package/python/lib/python3.13/urllib/error.py +74 -0
  496. package/python/lib/python3.13/urllib/parse.py +1264 -0
  497. package/python/lib/python3.13/urllib/request.py +2796 -0
  498. package/python/lib/python3.13/urllib/response.py +84 -0
  499. package/python/lib/python3.13/urllib/robotparser.py +363 -0
  500. package/python/lib/python3.13/uuid.py +784 -0
  501. package/python/lib/python3.13/warnings.py +735 -0
  502. package/python/lib/python3.13/wave.py +665 -0
  503. package/python/lib/python3.13/weakref.py +674 -0
  504. package/python/lib/python3.13/webbrowser.py +724 -0
  505. package/python/lib/python3.13/wsgiref/__init__.py +25 -0
  506. package/python/lib/python3.13/wsgiref/handlers.py +575 -0
  507. package/python/lib/python3.13/wsgiref/headers.py +192 -0
  508. package/python/lib/python3.13/wsgiref/simple_server.py +161 -0
  509. package/python/lib/python3.13/wsgiref/types.py +54 -0
  510. package/python/lib/python3.13/wsgiref/util.py +159 -0
  511. package/python/lib/python3.13/wsgiref/validate.py +438 -0
  512. package/python/lib/python3.13/xml/__init__.py +20 -0
  513. package/python/lib/python3.13/xml/dom/NodeFilter.py +27 -0
  514. package/python/lib/python3.13/xml/dom/__init__.py +140 -0
  515. package/python/lib/python3.13/xml/dom/domreg.py +99 -0
  516. package/python/lib/python3.13/xml/dom/expatbuilder.py +962 -0
  517. package/python/lib/python3.13/xml/dom/minicompat.py +109 -0
  518. package/python/lib/python3.13/xml/dom/minidom.py +2024 -0
  519. package/python/lib/python3.13/xml/dom/pulldom.py +336 -0
  520. package/python/lib/python3.13/xml/dom/xmlbuilder.py +389 -0
  521. package/python/lib/python3.13/xml/etree/ElementInclude.py +186 -0
  522. package/python/lib/python3.13/xml/etree/ElementPath.py +430 -0
  523. package/python/lib/python3.13/xml/etree/ElementTree.py +2116 -0
  524. package/python/lib/python3.13/xml/etree/__init__.py +33 -0
  525. package/python/lib/python3.13/xml/etree/cElementTree.py +3 -0
  526. package/python/lib/python3.13/xml/parsers/__init__.py +8 -0
  527. package/python/lib/python3.13/xml/parsers/expat.py +8 -0
  528. package/python/lib/python3.13/xml/sax/__init__.py +94 -0
  529. package/python/lib/python3.13/xml/sax/_exceptions.py +127 -0
  530. package/python/lib/python3.13/xml/sax/expatreader.py +454 -0
  531. package/python/lib/python3.13/xml/sax/handler.py +387 -0
  532. package/python/lib/python3.13/xml/sax/saxutils.py +369 -0
  533. package/python/lib/python3.13/xml/sax/xmlreader.py +378 -0
  534. package/python/lib/python3.13/xmlrpc/__init__.py +1 -0
  535. package/python/lib/python3.13/xmlrpc/client.py +1503 -0
  536. package/python/lib/python3.13/xmlrpc/server.py +1002 -0
  537. package/python/lib/python3.13/zipapp.py +229 -0
  538. package/python/lib/python3.13/zipfile/__init__.py +2391 -0
  539. package/python/lib/python3.13/zipfile/__main__.py +4 -0
  540. package/python/lib/python3.13/zipfile/_path/__init__.py +452 -0
  541. package/python/lib/python3.13/zipfile/_path/glob.py +113 -0
  542. package/python/lib/python3.13/zipimport.py +803 -0
  543. package/python/lib/python3.13/zoneinfo/__init__.py +34 -0
  544. package/python/lib/python3.13/zoneinfo/_common.py +172 -0
  545. package/python/lib/python3.13/zoneinfo/_tzpath.py +189 -0
  546. package/python/lib/python3.13/zoneinfo/_zoneinfo.py +779 -0
  547. package/python/licenses/LICENSE.bdb.txt +126 -0
  548. package/python/licenses/LICENSE.bzip2.txt +37 -0
  549. package/python/licenses/LICENSE.cpython.txt +771 -0
  550. package/python/licenses/LICENSE.expat.txt +21 -0
  551. package/python/licenses/LICENSE.libX11.txt +942 -0
  552. package/python/licenses/LICENSE.libXau.txt +21 -0
  553. package/python/licenses/LICENSE.libedit.txt +29 -0
  554. package/python/licenses/LICENSE.libffi.txt +21 -0
  555. package/python/licenses/LICENSE.liblzma.txt +13 -0
  556. package/python/licenses/LICENSE.libuuid.txt +27 -0
  557. package/python/licenses/LICENSE.libxcb.txt +30 -0
  558. package/python/licenses/LICENSE.mpdecimal.txt +24 -0
  559. package/python/licenses/LICENSE.ncurses.txt +29 -0
  560. package/python/licenses/LICENSE.openssl-1.1.txt +124 -0
  561. package/python/licenses/LICENSE.openssl-3.txt +177 -0
  562. package/python/licenses/LICENSE.sqlite.txt +23 -0
  563. package/python/licenses/LICENSE.tcl.txt +40 -0
  564. package/python/licenses/LICENSE.tix.txt +54 -0
  565. package/python/licenses/LICENSE.zlib.txt +21 -0
@@ -0,0 +1,383 @@
1
+ '''A multi-producer, multi-consumer queue.'''
2
+
3
+ import threading
4
+ import types
5
+ from collections import deque
6
+ from heapq import heappush, heappop
7
+ from time import monotonic as time
8
+ try:
9
+ from _queue import SimpleQueue
10
+ except ImportError:
11
+ SimpleQueue = None
12
+
13
+ __all__ = [
14
+ 'Empty',
15
+ 'Full',
16
+ 'ShutDown',
17
+ 'Queue',
18
+ 'PriorityQueue',
19
+ 'LifoQueue',
20
+ 'SimpleQueue',
21
+ ]
22
+
23
+
24
+ try:
25
+ from _queue import Empty
26
+ except ImportError:
27
+ class Empty(Exception):
28
+ 'Exception raised by Queue.get(block=0)/get_nowait().'
29
+ pass
30
+
31
+ class Full(Exception):
32
+ 'Exception raised by Queue.put(block=0)/put_nowait().'
33
+ pass
34
+
35
+
36
+ class ShutDown(Exception):
37
+ '''Raised when put/get with shut-down queue.'''
38
+
39
+
40
+ class Queue:
41
+ '''Create a queue object with a given maximum size.
42
+
43
+ If maxsize is <= 0, the queue size is infinite.
44
+ '''
45
+
46
+ def __init__(self, maxsize=0):
47
+ self.maxsize = maxsize
48
+ self._init(maxsize)
49
+
50
+ # mutex must be held whenever the queue is mutating. All methods
51
+ # that acquire mutex must release it before returning. mutex
52
+ # is shared between the three conditions, so acquiring and
53
+ # releasing the conditions also acquires and releases mutex.
54
+ self.mutex = threading.Lock()
55
+
56
+ # Notify not_empty whenever an item is added to the queue; a
57
+ # thread waiting to get is notified then.
58
+ self.not_empty = threading.Condition(self.mutex)
59
+
60
+ # Notify not_full whenever an item is removed from the queue;
61
+ # a thread waiting to put is notified then.
62
+ self.not_full = threading.Condition(self.mutex)
63
+
64
+ # Notify all_tasks_done whenever the number of unfinished tasks
65
+ # drops to zero; thread waiting to join() is notified to resume
66
+ self.all_tasks_done = threading.Condition(self.mutex)
67
+ self.unfinished_tasks = 0
68
+
69
+ # Queue shutdown state
70
+ self.is_shutdown = False
71
+
72
+ def task_done(self):
73
+ '''Indicate that a formerly enqueued task is complete.
74
+
75
+ Used by Queue consumer threads. For each get() used to fetch a task,
76
+ a subsequent call to task_done() tells the queue that the processing
77
+ on the task is complete.
78
+
79
+ If a join() is currently blocking, it will resume when all items
80
+ have been processed (meaning that a task_done() call was received
81
+ for every item that had been put() into the queue).
82
+
83
+ Raises a ValueError if called more times than there were items
84
+ placed in the queue.
85
+ '''
86
+ with self.all_tasks_done:
87
+ unfinished = self.unfinished_tasks - 1
88
+ if unfinished <= 0:
89
+ if unfinished < 0:
90
+ raise ValueError('task_done() called too many times')
91
+ self.all_tasks_done.notify_all()
92
+ self.unfinished_tasks = unfinished
93
+
94
+ def join(self):
95
+ '''Blocks until all items in the Queue have been gotten and processed.
96
+
97
+ The count of unfinished tasks goes up whenever an item is added to the
98
+ queue. The count goes down whenever a consumer thread calls task_done()
99
+ to indicate the item was retrieved and all work on it is complete.
100
+
101
+ When the count of unfinished tasks drops to zero, join() unblocks.
102
+ '''
103
+ with self.all_tasks_done:
104
+ while self.unfinished_tasks:
105
+ self.all_tasks_done.wait()
106
+
107
+ def qsize(self):
108
+ '''Return the approximate size of the queue (not reliable!).'''
109
+ with self.mutex:
110
+ return self._qsize()
111
+
112
+ def empty(self):
113
+ '''Return True if the queue is empty, False otherwise (not reliable!).
114
+
115
+ This method is likely to be removed at some point. Use qsize() == 0
116
+ as a direct substitute, but be aware that either approach risks a race
117
+ condition where a queue can grow before the result of empty() or
118
+ qsize() can be used.
119
+
120
+ To create code that needs to wait for all queued tasks to be
121
+ completed, the preferred technique is to use the join() method.
122
+ '''
123
+ with self.mutex:
124
+ return not self._qsize()
125
+
126
+ def full(self):
127
+ '''Return True if the queue is full, False otherwise (not reliable!).
128
+
129
+ This method is likely to be removed at some point. Use qsize() >= n
130
+ as a direct substitute, but be aware that either approach risks a race
131
+ condition where a queue can shrink before the result of full() or
132
+ qsize() can be used.
133
+ '''
134
+ with self.mutex:
135
+ return 0 < self.maxsize <= self._qsize()
136
+
137
+ def put(self, item, block=True, timeout=None):
138
+ '''Put an item into the queue.
139
+
140
+ If optional args 'block' is true and 'timeout' is None (the default),
141
+ block if necessary until a free slot is available. If 'timeout' is
142
+ a non-negative number, it blocks at most 'timeout' seconds and raises
143
+ the Full exception if no free slot was available within that time.
144
+ Otherwise ('block' is false), put an item on the queue if a free slot
145
+ is immediately available, else raise the Full exception ('timeout'
146
+ is ignored in that case).
147
+
148
+ Raises ShutDown if the queue has been shut down.
149
+ '''
150
+ with self.not_full:
151
+ if self.is_shutdown:
152
+ raise ShutDown
153
+ if self.maxsize > 0:
154
+ if not block:
155
+ if self._qsize() >= self.maxsize:
156
+ raise Full
157
+ elif timeout is None:
158
+ while self._qsize() >= self.maxsize:
159
+ self.not_full.wait()
160
+ if self.is_shutdown:
161
+ raise ShutDown
162
+ elif timeout < 0:
163
+ raise ValueError("'timeout' must be a non-negative number")
164
+ else:
165
+ endtime = time() + timeout
166
+ while self._qsize() >= self.maxsize:
167
+ remaining = endtime - time()
168
+ if remaining <= 0.0:
169
+ raise Full
170
+ self.not_full.wait(remaining)
171
+ if self.is_shutdown:
172
+ raise ShutDown
173
+ self._put(item)
174
+ self.unfinished_tasks += 1
175
+ self.not_empty.notify()
176
+
177
+ def get(self, block=True, timeout=None):
178
+ '''Remove and return an item from the queue.
179
+
180
+ If optional args 'block' is true and 'timeout' is None (the default),
181
+ block if necessary until an item is available. If 'timeout' is
182
+ a non-negative number, it blocks at most 'timeout' seconds and raises
183
+ the Empty exception if no item was available within that time.
184
+ Otherwise ('block' is false), return an item if one is immediately
185
+ available, else raise the Empty exception ('timeout' is ignored
186
+ in that case).
187
+
188
+ Raises ShutDown if the queue has been shut down and is empty,
189
+ or if the queue has been shut down immediately.
190
+ '''
191
+ with self.not_empty:
192
+ if self.is_shutdown and not self._qsize():
193
+ raise ShutDown
194
+ if not block:
195
+ if not self._qsize():
196
+ raise Empty
197
+ elif timeout is None:
198
+ while not self._qsize():
199
+ self.not_empty.wait()
200
+ if self.is_shutdown and not self._qsize():
201
+ raise ShutDown
202
+ elif timeout < 0:
203
+ raise ValueError("'timeout' must be a non-negative number")
204
+ else:
205
+ endtime = time() + timeout
206
+ while not self._qsize():
207
+ remaining = endtime - time()
208
+ if remaining <= 0.0:
209
+ raise Empty
210
+ self.not_empty.wait(remaining)
211
+ if self.is_shutdown and not self._qsize():
212
+ raise ShutDown
213
+ item = self._get()
214
+ self.not_full.notify()
215
+ return item
216
+
217
+ def put_nowait(self, item):
218
+ '''Put an item into the queue without blocking.
219
+
220
+ Only enqueue the item if a free slot is immediately available.
221
+ Otherwise raise the Full exception.
222
+ '''
223
+ return self.put(item, block=False)
224
+
225
+ def get_nowait(self):
226
+ '''Remove and return an item from the queue without blocking.
227
+
228
+ Only get an item if one is immediately available. Otherwise
229
+ raise the Empty exception.
230
+ '''
231
+ return self.get(block=False)
232
+
233
+ def shutdown(self, immediate=False):
234
+ '''Shut-down the queue, making queue gets and puts raise ShutDown.
235
+
236
+ By default, gets will only raise once the queue is empty. Set
237
+ 'immediate' to True to make gets raise immediately instead.
238
+
239
+ All blocked callers of put() and get() will be unblocked.
240
+
241
+ If 'immediate', the queue is drained and unfinished tasks
242
+ is reduced by the number of drained tasks. If unfinished tasks
243
+ is reduced to zero, callers of Queue.join are unblocked.
244
+ '''
245
+ with self.mutex:
246
+ self.is_shutdown = True
247
+ if immediate:
248
+ while self._qsize():
249
+ self._get()
250
+ if self.unfinished_tasks > 0:
251
+ self.unfinished_tasks -= 1
252
+ # release all blocked threads in `join()`
253
+ self.all_tasks_done.notify_all()
254
+ # All getters need to re-check queue-empty to raise ShutDown
255
+ self.not_empty.notify_all()
256
+ self.not_full.notify_all()
257
+
258
+ # Override these methods to implement other queue organizations
259
+ # (e.g. stack or priority queue).
260
+ # These will only be called with appropriate locks held
261
+
262
+ # Initialize the queue representation
263
+ def _init(self, maxsize):
264
+ self.queue = deque()
265
+
266
+ def _qsize(self):
267
+ return len(self.queue)
268
+
269
+ # Put a new item in the queue
270
+ def _put(self, item):
271
+ self.queue.append(item)
272
+
273
+ # Get an item from the queue
274
+ def _get(self):
275
+ return self.queue.popleft()
276
+
277
+ __class_getitem__ = classmethod(types.GenericAlias)
278
+
279
+
280
+ class PriorityQueue(Queue):
281
+ '''Variant of Queue that retrieves open entries in priority order (lowest first).
282
+
283
+ Entries are typically tuples of the form: (priority number, data).
284
+ '''
285
+
286
+ def _init(self, maxsize):
287
+ self.queue = []
288
+
289
+ def _qsize(self):
290
+ return len(self.queue)
291
+
292
+ def _put(self, item):
293
+ heappush(self.queue, item)
294
+
295
+ def _get(self):
296
+ return heappop(self.queue)
297
+
298
+
299
+ class LifoQueue(Queue):
300
+ '''Variant of Queue that retrieves most recently added entries first.'''
301
+
302
+ def _init(self, maxsize):
303
+ self.queue = []
304
+
305
+ def _qsize(self):
306
+ return len(self.queue)
307
+
308
+ def _put(self, item):
309
+ self.queue.append(item)
310
+
311
+ def _get(self):
312
+ return self.queue.pop()
313
+
314
+
315
+ class _PySimpleQueue:
316
+ '''Simple, unbounded FIFO queue.
317
+
318
+ This pure Python implementation is not reentrant.
319
+ '''
320
+ # Note: while this pure Python version provides fairness
321
+ # (by using a threading.Semaphore which is itself fair, being based
322
+ # on threading.Condition), fairness is not part of the API contract.
323
+ # This allows the C version to use a different implementation.
324
+
325
+ def __init__(self):
326
+ self._queue = deque()
327
+ self._count = threading.Semaphore(0)
328
+
329
+ def put(self, item, block=True, timeout=None):
330
+ '''Put the item on the queue.
331
+
332
+ The optional 'block' and 'timeout' arguments are ignored, as this method
333
+ never blocks. They are provided for compatibility with the Queue class.
334
+ '''
335
+ self._queue.append(item)
336
+ self._count.release()
337
+
338
+ def get(self, block=True, timeout=None):
339
+ '''Remove and return an item from the queue.
340
+
341
+ If optional args 'block' is true and 'timeout' is None (the default),
342
+ block if necessary until an item is available. If 'timeout' is
343
+ a non-negative number, it blocks at most 'timeout' seconds and raises
344
+ the Empty exception if no item was available within that time.
345
+ Otherwise ('block' is false), return an item if one is immediately
346
+ available, else raise the Empty exception ('timeout' is ignored
347
+ in that case).
348
+ '''
349
+ if timeout is not None and timeout < 0:
350
+ raise ValueError("'timeout' must be a non-negative number")
351
+ if not self._count.acquire(block, timeout):
352
+ raise Empty
353
+ return self._queue.popleft()
354
+
355
+ def put_nowait(self, item):
356
+ '''Put an item into the queue without blocking.
357
+
358
+ This is exactly equivalent to `put(item, block=False)` and is only provided
359
+ for compatibility with the Queue class.
360
+ '''
361
+ return self.put(item, block=False)
362
+
363
+ def get_nowait(self):
364
+ '''Remove and return an item from the queue without blocking.
365
+
366
+ Only get an item if one is immediately available. Otherwise
367
+ raise the Empty exception.
368
+ '''
369
+ return self.get(block=False)
370
+
371
+ def empty(self):
372
+ '''Return True if the queue is empty, False otherwise (not reliable!).'''
373
+ return len(self._queue) == 0
374
+
375
+ def qsize(self):
376
+ '''Return the approximate size of the queue (not reliable!).'''
377
+ return len(self._queue)
378
+
379
+ __class_getitem__ = classmethod(types.GenericAlias)
380
+
381
+
382
+ if SimpleQueue is None:
383
+ SimpleQueue = _PySimpleQueue
@@ -0,0 +1,237 @@
1
+ #! /usr/bin/env python3
2
+
3
+ """Conversions to/from quoted-printable transport encoding as per RFC 1521."""
4
+
5
+ # (Dec 1991 version).
6
+
7
+ __all__ = ["encode", "decode", "encodestring", "decodestring"]
8
+
9
+ ESCAPE = b'='
10
+ MAXLINESIZE = 76
11
+ HEX = b'0123456789ABCDEF'
12
+ EMPTYSTRING = b''
13
+
14
+ try:
15
+ from binascii import a2b_qp, b2a_qp
16
+ except ImportError:
17
+ a2b_qp = None
18
+ b2a_qp = None
19
+
20
+
21
+ def needsquoting(c, quotetabs, header):
22
+ """Decide whether a particular byte ordinal needs to be quoted.
23
+
24
+ The 'quotetabs' flag indicates whether embedded tabs and spaces should be
25
+ quoted. Note that line-ending tabs and spaces are always encoded, as per
26
+ RFC 1521.
27
+ """
28
+ assert isinstance(c, bytes)
29
+ if c in b' \t':
30
+ return quotetabs
31
+ # if header, we have to escape _ because _ is used to escape space
32
+ if c == b'_':
33
+ return header
34
+ return c == ESCAPE or not (b' ' <= c <= b'~')
35
+
36
+ def quote(c):
37
+ """Quote a single character."""
38
+ assert isinstance(c, bytes) and len(c)==1
39
+ c = ord(c)
40
+ return ESCAPE + bytes((HEX[c//16], HEX[c%16]))
41
+
42
+
43
+
44
+ def encode(input, output, quotetabs, header=False):
45
+ """Read 'input', apply quoted-printable encoding, and write to 'output'.
46
+
47
+ 'input' and 'output' are binary file objects. The 'quotetabs' flag
48
+ indicates whether embedded tabs and spaces should be quoted. Note that
49
+ line-ending tabs and spaces are always encoded, as per RFC 1521.
50
+ The 'header' flag indicates whether we are encoding spaces as _ as per RFC
51
+ 1522."""
52
+
53
+ if b2a_qp is not None:
54
+ data = input.read()
55
+ odata = b2a_qp(data, quotetabs=quotetabs, header=header)
56
+ output.write(odata)
57
+ return
58
+
59
+ def write(s, output=output, lineEnd=b'\n'):
60
+ # RFC 1521 requires that the line ending in a space or tab must have
61
+ # that trailing character encoded.
62
+ if s and s[-1:] in b' \t':
63
+ output.write(s[:-1] + quote(s[-1:]) + lineEnd)
64
+ elif s == b'.':
65
+ output.write(quote(s) + lineEnd)
66
+ else:
67
+ output.write(s + lineEnd)
68
+
69
+ prevline = None
70
+ while line := input.readline():
71
+ outline = []
72
+ # Strip off any readline induced trailing newline
73
+ stripped = b''
74
+ if line[-1:] == b'\n':
75
+ line = line[:-1]
76
+ stripped = b'\n'
77
+ # Calculate the un-length-limited encoded line
78
+ for c in line:
79
+ c = bytes((c,))
80
+ if needsquoting(c, quotetabs, header):
81
+ c = quote(c)
82
+ if header and c == b' ':
83
+ outline.append(b'_')
84
+ else:
85
+ outline.append(c)
86
+ # First, write out the previous line
87
+ if prevline is not None:
88
+ write(prevline)
89
+ # Now see if we need any soft line breaks because of RFC-imposed
90
+ # length limitations. Then do the thisline->prevline dance.
91
+ thisline = EMPTYSTRING.join(outline)
92
+ while len(thisline) > MAXLINESIZE:
93
+ # Don't forget to include the soft line break `=' sign in the
94
+ # length calculation!
95
+ write(thisline[:MAXLINESIZE-1], lineEnd=b'=\n')
96
+ thisline = thisline[MAXLINESIZE-1:]
97
+ # Write out the current line
98
+ prevline = thisline
99
+ # Write out the last line, without a trailing newline
100
+ if prevline is not None:
101
+ write(prevline, lineEnd=stripped)
102
+
103
+ def encodestring(s, quotetabs=False, header=False):
104
+ if b2a_qp is not None:
105
+ return b2a_qp(s, quotetabs=quotetabs, header=header)
106
+ from io import BytesIO
107
+ infp = BytesIO(s)
108
+ outfp = BytesIO()
109
+ encode(infp, outfp, quotetabs, header)
110
+ return outfp.getvalue()
111
+
112
+
113
+
114
+ def decode(input, output, header=False):
115
+ """Read 'input', apply quoted-printable decoding, and write to 'output'.
116
+ 'input' and 'output' are binary file objects.
117
+ If 'header' is true, decode underscore as space (per RFC 1522)."""
118
+
119
+ if a2b_qp is not None:
120
+ data = input.read()
121
+ odata = a2b_qp(data, header=header)
122
+ output.write(odata)
123
+ return
124
+
125
+ new = b''
126
+ while line := input.readline():
127
+ i, n = 0, len(line)
128
+ if n > 0 and line[n-1:n] == b'\n':
129
+ partial = 0; n = n-1
130
+ # Strip trailing whitespace
131
+ while n > 0 and line[n-1:n] in b" \t\r":
132
+ n = n-1
133
+ else:
134
+ partial = 1
135
+ while i < n:
136
+ c = line[i:i+1]
137
+ if c == b'_' and header:
138
+ new = new + b' '; i = i+1
139
+ elif c != ESCAPE:
140
+ new = new + c; i = i+1
141
+ elif i+1 == n and not partial:
142
+ partial = 1; break
143
+ elif i+1 < n and line[i+1:i+2] == ESCAPE:
144
+ new = new + ESCAPE; i = i+2
145
+ elif i+2 < n and ishex(line[i+1:i+2]) and ishex(line[i+2:i+3]):
146
+ new = new + bytes((unhex(line[i+1:i+3]),)); i = i+3
147
+ else: # Bad escape sequence -- leave it in
148
+ new = new + c; i = i+1
149
+ if not partial:
150
+ output.write(new + b'\n')
151
+ new = b''
152
+ if new:
153
+ output.write(new)
154
+
155
+ def decodestring(s, header=False):
156
+ if a2b_qp is not None:
157
+ return a2b_qp(s, header=header)
158
+ from io import BytesIO
159
+ infp = BytesIO(s)
160
+ outfp = BytesIO()
161
+ decode(infp, outfp, header=header)
162
+ return outfp.getvalue()
163
+
164
+
165
+
166
+ # Other helper functions
167
+ def ishex(c):
168
+ """Return true if the byte ordinal 'c' is a hexadecimal digit in ASCII."""
169
+ assert isinstance(c, bytes)
170
+ return b'0' <= c <= b'9' or b'a' <= c <= b'f' or b'A' <= c <= b'F'
171
+
172
+ def unhex(s):
173
+ """Get the integer value of a hexadecimal number."""
174
+ bits = 0
175
+ for c in s:
176
+ c = bytes((c,))
177
+ if b'0' <= c <= b'9':
178
+ i = ord('0')
179
+ elif b'a' <= c <= b'f':
180
+ i = ord('a')-10
181
+ elif b'A' <= c <= b'F':
182
+ i = ord(b'A')-10
183
+ else:
184
+ assert False, "non-hex digit "+repr(c)
185
+ bits = bits*16 + (ord(c) - i)
186
+ return bits
187
+
188
+
189
+
190
+ def main():
191
+ import sys
192
+ import getopt
193
+ try:
194
+ opts, args = getopt.getopt(sys.argv[1:], 'td')
195
+ except getopt.error as msg:
196
+ sys.stdout = sys.stderr
197
+ print(msg)
198
+ print("usage: quopri [-t | -d] [file] ...")
199
+ print("-t: quote tabs")
200
+ print("-d: decode; default encode")
201
+ sys.exit(2)
202
+ deco = False
203
+ tabs = False
204
+ for o, a in opts:
205
+ if o == '-t': tabs = True
206
+ if o == '-d': deco = True
207
+ if tabs and deco:
208
+ sys.stdout = sys.stderr
209
+ print("-t and -d are mutually exclusive")
210
+ sys.exit(2)
211
+ if not args: args = ['-']
212
+ sts = 0
213
+ for file in args:
214
+ if file == '-':
215
+ fp = sys.stdin.buffer
216
+ else:
217
+ try:
218
+ fp = open(file, "rb")
219
+ except OSError as msg:
220
+ sys.stderr.write("%s: can't open (%s)\n" % (file, msg))
221
+ sts = 1
222
+ continue
223
+ try:
224
+ if deco:
225
+ decode(fp, sys.stdout.buffer)
226
+ else:
227
+ encode(fp, sys.stdout.buffer, tabs)
228
+ finally:
229
+ if file != '-':
230
+ fp.close()
231
+ if sts:
232
+ sys.exit(sts)
233
+
234
+
235
+
236
+ if __name__ == '__main__':
237
+ main()