@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,250 @@
1
+ """Manage shelves of pickled objects.
2
+
3
+ A "shelf" is a persistent, dictionary-like object. The difference
4
+ with dbm databases is that the values (not the keys!) in a shelf can
5
+ be essentially arbitrary Python objects -- anything that the "pickle"
6
+ module can handle. This includes most class instances, recursive data
7
+ types, and objects containing lots of shared sub-objects. The keys
8
+ are ordinary strings.
9
+
10
+ To summarize the interface (key is a string, data is an arbitrary
11
+ object):
12
+
13
+ import shelve
14
+ d = shelve.open(filename) # open, with (g)dbm filename -- no suffix
15
+
16
+ d[key] = data # store data at key (overwrites old data if
17
+ # using an existing key)
18
+ data = d[key] # retrieve a COPY of the data at key (raise
19
+ # KeyError if no such key) -- NOTE that this
20
+ # access returns a *copy* of the entry!
21
+ del d[key] # delete data stored at key (raises KeyError
22
+ # if no such key)
23
+ flag = key in d # true if the key exists
24
+ list = d.keys() # a list of all existing keys (slow!)
25
+
26
+ d.close() # close it
27
+
28
+ Dependent on the implementation, closing a persistent dictionary may
29
+ or may not be necessary to flush changes to disk.
30
+
31
+ Normally, d[key] returns a COPY of the entry. This needs care when
32
+ mutable entries are mutated: for example, if d[key] is a list,
33
+ d[key].append(anitem)
34
+ does NOT modify the entry d[key] itself, as stored in the persistent
35
+ mapping -- it only modifies the copy, which is then immediately
36
+ discarded, so that the append has NO effect whatsoever. To append an
37
+ item to d[key] in a way that will affect the persistent mapping, use:
38
+ data = d[key]
39
+ data.append(anitem)
40
+ d[key] = data
41
+
42
+ To avoid the problem with mutable entries, you may pass the keyword
43
+ argument writeback=True in the call to shelve.open. When you use:
44
+ d = shelve.open(filename, writeback=True)
45
+ then d keeps a cache of all entries you access, and writes them all back
46
+ to the persistent mapping when you call d.close(). This ensures that
47
+ such usage as d[key].append(anitem) works as intended.
48
+
49
+ However, using keyword argument writeback=True may consume vast amount
50
+ of memory for the cache, and it may make d.close() very slow, if you
51
+ access many of d's entries after opening it in this way: d has no way to
52
+ check which of the entries you access are mutable and/or which ones you
53
+ actually mutate, so it must cache, and write back at close, all of the
54
+ entries that you access. You can call d.sync() to write back all the
55
+ entries in the cache, and empty the cache (d.sync() also synchronizes
56
+ the persistent dictionary on disk, if feasible).
57
+ """
58
+
59
+ from pickle import DEFAULT_PROTOCOL, Pickler, Unpickler
60
+ from io import BytesIO
61
+
62
+ import collections.abc
63
+
64
+ __all__ = ["Shelf", "BsdDbShelf", "DbfilenameShelf", "open"]
65
+
66
+ class _ClosedDict(collections.abc.MutableMapping):
67
+ 'Marker for a closed dict. Access attempts raise a ValueError.'
68
+
69
+ def closed(self, *args):
70
+ raise ValueError('invalid operation on closed shelf')
71
+ __iter__ = __len__ = __getitem__ = __setitem__ = __delitem__ = keys = closed
72
+
73
+ def __repr__(self):
74
+ return '<Closed Dictionary>'
75
+
76
+
77
+ class Shelf(collections.abc.MutableMapping):
78
+ """Base class for shelf implementations.
79
+
80
+ This is initialized with a dictionary-like object.
81
+ See the module's __doc__ string for an overview of the interface.
82
+ """
83
+
84
+ def __init__(self, dict, protocol=None, writeback=False,
85
+ keyencoding="utf-8"):
86
+ self.dict = dict
87
+ if protocol is None:
88
+ protocol = DEFAULT_PROTOCOL
89
+ self._protocol = protocol
90
+ self.writeback = writeback
91
+ self.cache = {}
92
+ self.keyencoding = keyencoding
93
+
94
+ def __iter__(self):
95
+ for k in self.dict.keys():
96
+ yield k.decode(self.keyencoding)
97
+
98
+ def __len__(self):
99
+ return len(self.dict)
100
+
101
+ def __contains__(self, key):
102
+ return key.encode(self.keyencoding) in self.dict
103
+
104
+ def get(self, key, default=None):
105
+ if key.encode(self.keyencoding) in self.dict:
106
+ return self[key]
107
+ return default
108
+
109
+ def __getitem__(self, key):
110
+ try:
111
+ value = self.cache[key]
112
+ except KeyError:
113
+ f = BytesIO(self.dict[key.encode(self.keyencoding)])
114
+ value = Unpickler(f).load()
115
+ if self.writeback:
116
+ self.cache[key] = value
117
+ return value
118
+
119
+ def __setitem__(self, key, value):
120
+ if self.writeback:
121
+ self.cache[key] = value
122
+ f = BytesIO()
123
+ p = Pickler(f, self._protocol)
124
+ p.dump(value)
125
+ self.dict[key.encode(self.keyencoding)] = f.getvalue()
126
+
127
+ def __delitem__(self, key):
128
+ del self.dict[key.encode(self.keyencoding)]
129
+ try:
130
+ del self.cache[key]
131
+ except KeyError:
132
+ pass
133
+
134
+ def __enter__(self):
135
+ return self
136
+
137
+ def __exit__(self, type, value, traceback):
138
+ self.close()
139
+
140
+ def close(self):
141
+ if self.dict is None:
142
+ return
143
+ try:
144
+ self.sync()
145
+ try:
146
+ self.dict.close()
147
+ except AttributeError:
148
+ pass
149
+ finally:
150
+ # Catch errors that may happen when close is called from __del__
151
+ # because CPython is in interpreter shutdown.
152
+ try:
153
+ self.dict = _ClosedDict()
154
+ except:
155
+ self.dict = None
156
+
157
+ def __del__(self):
158
+ if not hasattr(self, 'writeback'):
159
+ # __init__ didn't succeed, so don't bother closing
160
+ # see http://bugs.python.org/issue1339007 for details
161
+ return
162
+ self.close()
163
+
164
+ def sync(self):
165
+ if self.writeback and self.cache:
166
+ self.writeback = False
167
+ for key, entry in self.cache.items():
168
+ self[key] = entry
169
+ self.writeback = True
170
+ self.cache = {}
171
+ if hasattr(self.dict, 'sync'):
172
+ self.dict.sync()
173
+
174
+
175
+ class BsdDbShelf(Shelf):
176
+ """Shelf implementation using the "BSD" db interface.
177
+
178
+ This adds methods first(), next(), previous(), last() and
179
+ set_location() that have no counterpart in [g]dbm databases.
180
+
181
+ The actual database must be opened using one of the "bsddb"
182
+ modules "open" routines (i.e. bsddb.hashopen, bsddb.btopen or
183
+ bsddb.rnopen) and passed to the constructor.
184
+
185
+ See the module's __doc__ string for an overview of the interface.
186
+ """
187
+
188
+ def __init__(self, dict, protocol=None, writeback=False,
189
+ keyencoding="utf-8"):
190
+ Shelf.__init__(self, dict, protocol, writeback, keyencoding)
191
+
192
+ def set_location(self, key):
193
+ (key, value) = self.dict.set_location(key)
194
+ f = BytesIO(value)
195
+ return (key.decode(self.keyencoding), Unpickler(f).load())
196
+
197
+ def next(self):
198
+ (key, value) = next(self.dict)
199
+ f = BytesIO(value)
200
+ return (key.decode(self.keyencoding), Unpickler(f).load())
201
+
202
+ def previous(self):
203
+ (key, value) = self.dict.previous()
204
+ f = BytesIO(value)
205
+ return (key.decode(self.keyencoding), Unpickler(f).load())
206
+
207
+ def first(self):
208
+ (key, value) = self.dict.first()
209
+ f = BytesIO(value)
210
+ return (key.decode(self.keyencoding), Unpickler(f).load())
211
+
212
+ def last(self):
213
+ (key, value) = self.dict.last()
214
+ f = BytesIO(value)
215
+ return (key.decode(self.keyencoding), Unpickler(f).load())
216
+
217
+
218
+ class DbfilenameShelf(Shelf):
219
+ """Shelf implementation using the "dbm" generic dbm interface.
220
+
221
+ This is initialized with the filename for the dbm database.
222
+ See the module's __doc__ string for an overview of the interface.
223
+ """
224
+
225
+ def __init__(self, filename, flag='c', protocol=None, writeback=False):
226
+ import dbm
227
+ Shelf.__init__(self, dbm.open(filename, flag), protocol, writeback)
228
+
229
+ def clear(self):
230
+ """Remove all items from the shelf."""
231
+ # Call through to the clear method on dbm-backed shelves.
232
+ # see https://github.com/python/cpython/issues/107089
233
+ self.cache.clear()
234
+ self.dict.clear()
235
+
236
+
237
+ def open(filename, flag='c', protocol=None, writeback=False):
238
+ """Open a persistent dictionary for reading and writing.
239
+
240
+ The filename parameter is the base filename for the underlying
241
+ database. As a side-effect, an extension may be added to the
242
+ filename and more than one file may be created. The optional flag
243
+ parameter has the same interpretation as the flag parameter of
244
+ dbm.open(). The optional protocol parameter specifies the
245
+ version of the pickle protocol.
246
+
247
+ See the module's __doc__ string for an overview of the interface.
248
+ """
249
+
250
+ return DbfilenameShelf(filename, flag, protocol, writeback)
@@ -0,0 +1,345 @@
1
+ """A lexical analyzer class for simple shell-like syntaxes."""
2
+
3
+ # Module and documentation by Eric S. Raymond, 21 Dec 1998
4
+ # Input stacking and error message cleanup added by ESR, March 2000
5
+ # push_source() and pop_source() made explicit by ESR, January 2001.
6
+ # Posix compliance, split(), string arguments, and
7
+ # iterator interface by Gustavo Niemeyer, April 2003.
8
+ # changes to tokenize more like Posix shells by Vinay Sajip, July 2016.
9
+
10
+ import os
11
+ import re
12
+ import sys
13
+ from collections import deque
14
+
15
+ from io import StringIO
16
+
17
+ __all__ = ["shlex", "split", "quote", "join"]
18
+
19
+ class shlex:
20
+ "A lexical analyzer class for simple shell-like syntaxes."
21
+ def __init__(self, instream=None, infile=None, posix=False,
22
+ punctuation_chars=False):
23
+ if isinstance(instream, str):
24
+ instream = StringIO(instream)
25
+ if instream is not None:
26
+ self.instream = instream
27
+ self.infile = infile
28
+ else:
29
+ self.instream = sys.stdin
30
+ self.infile = None
31
+ self.posix = posix
32
+ if posix:
33
+ self.eof = None
34
+ else:
35
+ self.eof = ''
36
+ self.commenters = '#'
37
+ self.wordchars = ('abcdfeghijklmnopqrstuvwxyz'
38
+ 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_')
39
+ if self.posix:
40
+ self.wordchars += ('ßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ'
41
+ 'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ')
42
+ self.whitespace = ' \t\r\n'
43
+ self.whitespace_split = False
44
+ self.quotes = '\'"'
45
+ self.escape = '\\'
46
+ self.escapedquotes = '"'
47
+ self.state = ' '
48
+ self.pushback = deque()
49
+ self.lineno = 1
50
+ self.debug = 0
51
+ self.token = ''
52
+ self.filestack = deque()
53
+ self.source = None
54
+ if not punctuation_chars:
55
+ punctuation_chars = ''
56
+ elif punctuation_chars is True:
57
+ punctuation_chars = '();<>|&'
58
+ self._punctuation_chars = punctuation_chars
59
+ if punctuation_chars:
60
+ # _pushback_chars is a push back queue used by lookahead logic
61
+ self._pushback_chars = deque()
62
+ # these chars added because allowed in file names, args, wildcards
63
+ self.wordchars += '~-./*?='
64
+ #remove any punctuation chars from wordchars
65
+ t = self.wordchars.maketrans(dict.fromkeys(punctuation_chars))
66
+ self.wordchars = self.wordchars.translate(t)
67
+
68
+ @property
69
+ def punctuation_chars(self):
70
+ return self._punctuation_chars
71
+
72
+ def push_token(self, tok):
73
+ "Push a token onto the stack popped by the get_token method"
74
+ if self.debug >= 1:
75
+ print("shlex: pushing token " + repr(tok))
76
+ self.pushback.appendleft(tok)
77
+
78
+ def push_source(self, newstream, newfile=None):
79
+ "Push an input source onto the lexer's input source stack."
80
+ if isinstance(newstream, str):
81
+ newstream = StringIO(newstream)
82
+ self.filestack.appendleft((self.infile, self.instream, self.lineno))
83
+ self.infile = newfile
84
+ self.instream = newstream
85
+ self.lineno = 1
86
+ if self.debug:
87
+ if newfile is not None:
88
+ print('shlex: pushing to file %s' % (self.infile,))
89
+ else:
90
+ print('shlex: pushing to stream %s' % (self.instream,))
91
+
92
+ def pop_source(self):
93
+ "Pop the input source stack."
94
+ self.instream.close()
95
+ (self.infile, self.instream, self.lineno) = self.filestack.popleft()
96
+ if self.debug:
97
+ print('shlex: popping to %s, line %d' \
98
+ % (self.instream, self.lineno))
99
+ self.state = ' '
100
+
101
+ def get_token(self):
102
+ "Get a token from the input stream (or from stack if it's nonempty)"
103
+ if self.pushback:
104
+ tok = self.pushback.popleft()
105
+ if self.debug >= 1:
106
+ print("shlex: popping token " + repr(tok))
107
+ return tok
108
+ # No pushback. Get a token.
109
+ raw = self.read_token()
110
+ # Handle inclusions
111
+ if self.source is not None:
112
+ while raw == self.source:
113
+ spec = self.sourcehook(self.read_token())
114
+ if spec:
115
+ (newfile, newstream) = spec
116
+ self.push_source(newstream, newfile)
117
+ raw = self.get_token()
118
+ # Maybe we got EOF instead?
119
+ while raw == self.eof:
120
+ if not self.filestack:
121
+ return self.eof
122
+ else:
123
+ self.pop_source()
124
+ raw = self.get_token()
125
+ # Neither inclusion nor EOF
126
+ if self.debug >= 1:
127
+ if raw != self.eof:
128
+ print("shlex: token=" + repr(raw))
129
+ else:
130
+ print("shlex: token=EOF")
131
+ return raw
132
+
133
+ def read_token(self):
134
+ quoted = False
135
+ escapedstate = ' '
136
+ while True:
137
+ if self.punctuation_chars and self._pushback_chars:
138
+ nextchar = self._pushback_chars.pop()
139
+ else:
140
+ nextchar = self.instream.read(1)
141
+ if nextchar == '\n':
142
+ self.lineno += 1
143
+ if self.debug >= 3:
144
+ print("shlex: in state %r I see character: %r" % (self.state,
145
+ nextchar))
146
+ if self.state is None:
147
+ self.token = '' # past end of file
148
+ break
149
+ elif self.state == ' ':
150
+ if not nextchar:
151
+ self.state = None # end of file
152
+ break
153
+ elif nextchar in self.whitespace:
154
+ if self.debug >= 2:
155
+ print("shlex: I see whitespace in whitespace state")
156
+ if self.token or (self.posix and quoted):
157
+ break # emit current token
158
+ else:
159
+ continue
160
+ elif nextchar in self.commenters:
161
+ self.instream.readline()
162
+ self.lineno += 1
163
+ elif self.posix and nextchar in self.escape:
164
+ escapedstate = 'a'
165
+ self.state = nextchar
166
+ elif nextchar in self.wordchars:
167
+ self.token = nextchar
168
+ self.state = 'a'
169
+ elif nextchar in self.punctuation_chars:
170
+ self.token = nextchar
171
+ self.state = 'c'
172
+ elif nextchar in self.quotes:
173
+ if not self.posix:
174
+ self.token = nextchar
175
+ self.state = nextchar
176
+ elif self.whitespace_split:
177
+ self.token = nextchar
178
+ self.state = 'a'
179
+ else:
180
+ self.token = nextchar
181
+ if self.token or (self.posix and quoted):
182
+ break # emit current token
183
+ else:
184
+ continue
185
+ elif self.state in self.quotes:
186
+ quoted = True
187
+ if not nextchar: # end of file
188
+ if self.debug >= 2:
189
+ print("shlex: I see EOF in quotes state")
190
+ # XXX what error should be raised here?
191
+ raise ValueError("No closing quotation")
192
+ if nextchar == self.state:
193
+ if not self.posix:
194
+ self.token += nextchar
195
+ self.state = ' '
196
+ break
197
+ else:
198
+ self.state = 'a'
199
+ elif (self.posix and nextchar in self.escape and self.state
200
+ in self.escapedquotes):
201
+ escapedstate = self.state
202
+ self.state = nextchar
203
+ else:
204
+ self.token += nextchar
205
+ elif self.state in self.escape:
206
+ if not nextchar: # end of file
207
+ if self.debug >= 2:
208
+ print("shlex: I see EOF in escape state")
209
+ # XXX what error should be raised here?
210
+ raise ValueError("No escaped character")
211
+ # In posix shells, only the quote itself or the escape
212
+ # character may be escaped within quotes.
213
+ if (escapedstate in self.quotes and
214
+ nextchar != self.state and nextchar != escapedstate):
215
+ self.token += self.state
216
+ self.token += nextchar
217
+ self.state = escapedstate
218
+ elif self.state in ('a', 'c'):
219
+ if not nextchar:
220
+ self.state = None # end of file
221
+ break
222
+ elif nextchar in self.whitespace:
223
+ if self.debug >= 2:
224
+ print("shlex: I see whitespace in word state")
225
+ self.state = ' '
226
+ if self.token or (self.posix and quoted):
227
+ break # emit current token
228
+ else:
229
+ continue
230
+ elif nextchar in self.commenters:
231
+ self.instream.readline()
232
+ self.lineno += 1
233
+ if self.posix:
234
+ self.state = ' '
235
+ if self.token or (self.posix and quoted):
236
+ break # emit current token
237
+ else:
238
+ continue
239
+ elif self.state == 'c':
240
+ if nextchar in self.punctuation_chars:
241
+ self.token += nextchar
242
+ else:
243
+ if nextchar not in self.whitespace:
244
+ self._pushback_chars.append(nextchar)
245
+ self.state = ' '
246
+ break
247
+ elif self.posix and nextchar in self.quotes:
248
+ self.state = nextchar
249
+ elif self.posix and nextchar in self.escape:
250
+ escapedstate = 'a'
251
+ self.state = nextchar
252
+ elif (nextchar in self.wordchars or nextchar in self.quotes
253
+ or (self.whitespace_split and
254
+ nextchar not in self.punctuation_chars)):
255
+ self.token += nextchar
256
+ else:
257
+ if self.punctuation_chars:
258
+ self._pushback_chars.append(nextchar)
259
+ else:
260
+ self.pushback.appendleft(nextchar)
261
+ if self.debug >= 2:
262
+ print("shlex: I see punctuation in word state")
263
+ self.state = ' '
264
+ if self.token or (self.posix and quoted):
265
+ break # emit current token
266
+ else:
267
+ continue
268
+ result = self.token
269
+ self.token = ''
270
+ if self.posix and not quoted and result == '':
271
+ result = None
272
+ if self.debug > 1:
273
+ if result:
274
+ print("shlex: raw token=" + repr(result))
275
+ else:
276
+ print("shlex: raw token=EOF")
277
+ return result
278
+
279
+ def sourcehook(self, newfile):
280
+ "Hook called on a filename to be sourced."
281
+ if newfile[0] == '"':
282
+ newfile = newfile[1:-1]
283
+ # This implements cpp-like semantics for relative-path inclusion.
284
+ if isinstance(self.infile, str) and not os.path.isabs(newfile):
285
+ newfile = os.path.join(os.path.dirname(self.infile), newfile)
286
+ return (newfile, open(newfile, "r"))
287
+
288
+ def error_leader(self, infile=None, lineno=None):
289
+ "Emit a C-compiler-like, Emacs-friendly error-message leader."
290
+ if infile is None:
291
+ infile = self.infile
292
+ if lineno is None:
293
+ lineno = self.lineno
294
+ return "\"%s\", line %d: " % (infile, lineno)
295
+
296
+ def __iter__(self):
297
+ return self
298
+
299
+ def __next__(self):
300
+ token = self.get_token()
301
+ if token == self.eof:
302
+ raise StopIteration
303
+ return token
304
+
305
+ def split(s, comments=False, posix=True):
306
+ """Split the string *s* using shell-like syntax."""
307
+ if s is None:
308
+ raise ValueError("s argument must not be None")
309
+ lex = shlex(s, posix=posix)
310
+ lex.whitespace_split = True
311
+ if not comments:
312
+ lex.commenters = ''
313
+ return list(lex)
314
+
315
+
316
+ def join(split_command):
317
+ """Return a shell-escaped string from *split_command*."""
318
+ return ' '.join(quote(arg) for arg in split_command)
319
+
320
+
321
+ _find_unsafe = re.compile(r'[^\w@%+=:,./-]', re.ASCII).search
322
+
323
+ def quote(s):
324
+ """Return a shell-escaped version of the string *s*."""
325
+ if not s:
326
+ return "''"
327
+ if _find_unsafe(s) is None:
328
+ return s
329
+
330
+ # use single quotes, and put single quotes into double quotes
331
+ # the string $'b is then quoted as '$'"'"'b'
332
+ return "'" + s.replace("'", "'\"'\"'") + "'"
333
+
334
+
335
+ def _print_tokens(lexer):
336
+ while tt := lexer.get_token():
337
+ print("Token: " + repr(tt))
338
+
339
+ if __name__ == '__main__':
340
+ if len(sys.argv) == 1:
341
+ _print_tokens(shlex())
342
+ else:
343
+ fn = sys.argv[1]
344
+ with open(fn) as f:
345
+ _print_tokens(shlex(f, fn))