@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,572 @@
1
+ """Filename globbing utility."""
2
+
3
+ import contextlib
4
+ import os
5
+ import re
6
+ import fnmatch
7
+ import functools
8
+ import itertools
9
+ import operator
10
+ import stat
11
+ import sys
12
+
13
+
14
+ __all__ = ["glob", "iglob", "escape", "translate"]
15
+
16
+ def glob(pathname, *, root_dir=None, dir_fd=None, recursive=False,
17
+ include_hidden=False):
18
+ """Return a list of paths matching a `pathname` pattern.
19
+
20
+ The pattern may contain simple shell-style wildcards a la
21
+ fnmatch. Unlike fnmatch, filenames starting with a
22
+ dot are special cases that are not matched by '*' and '?'
23
+ patterns by default.
24
+
25
+ The order of the returned list is undefined. Sort it if you need a
26
+ particular order.
27
+
28
+ If `root_dir` is not None, it should be a path-like object specifying
29
+ the root directory for searching. It has the same effect as changing
30
+ the current directory before calling it (without actually changing it).
31
+ If pathname is relative, the result will contain paths relative to
32
+ `root_dir`.
33
+
34
+ If `dir_fd` is not None, it should be a file descriptor referring to a
35
+ directory, and paths will then be relative to that directory.
36
+
37
+ If `include_hidden` is true, wildcards can match path segments beginning
38
+ with a dot ('.').
39
+
40
+ If `recursive` is true, the pattern '**' will match any files and
41
+ zero or more directories and subdirectories.
42
+ """
43
+ return list(iglob(pathname, root_dir=root_dir, dir_fd=dir_fd, recursive=recursive,
44
+ include_hidden=include_hidden))
45
+
46
+ def iglob(pathname, *, root_dir=None, dir_fd=None, recursive=False,
47
+ include_hidden=False):
48
+ """Return an iterator which yields the paths matching a `pathname` pattern.
49
+
50
+ The pattern may contain simple shell-style wildcards a la
51
+ fnmatch. However, unlike fnmatch, filenames starting with a
52
+ dot are special cases that are not matched by '*' and '?'
53
+ patterns.
54
+
55
+ The order of the returned paths is undefined. Sort them if you need a
56
+ particular order.
57
+
58
+ If `root_dir` is not None, it should be a path-like object specifying
59
+ the root directory for searching. It has the same effect as changing
60
+ the current directory before calling it (without actually changing it).
61
+ If pathname is relative, the result will contain paths relative to
62
+ `root_dir`.
63
+
64
+ If `dir_fd` is not None, it should be a file descriptor referring to a
65
+ directory, and paths will then be relative to that directory.
66
+
67
+ If `include_hidden` is true, wildcards can match path segments beginning
68
+ with a dot ('.').
69
+
70
+ If `recursive` is true, the pattern '**' will match any files and
71
+ zero or more directories and subdirectories.
72
+ """
73
+ sys.audit("glob.glob", pathname, recursive)
74
+ sys.audit("glob.glob/2", pathname, recursive, root_dir, dir_fd)
75
+ if root_dir is not None:
76
+ root_dir = os.fspath(root_dir)
77
+ else:
78
+ root_dir = pathname[:0]
79
+ it = _iglob(pathname, root_dir, dir_fd, recursive, False,
80
+ include_hidden=include_hidden)
81
+ if not pathname or recursive and _isrecursive(pathname[:2]):
82
+ try:
83
+ s = next(it) # skip empty string
84
+ if s:
85
+ it = itertools.chain((s,), it)
86
+ except StopIteration:
87
+ pass
88
+ return it
89
+
90
+ def _iglob(pathname, root_dir, dir_fd, recursive, dironly,
91
+ include_hidden=False):
92
+ dirname, basename = os.path.split(pathname)
93
+ if not has_magic(pathname):
94
+ assert not dironly
95
+ if basename:
96
+ if _lexists(_join(root_dir, pathname), dir_fd):
97
+ yield pathname
98
+ else:
99
+ # Patterns ending with a slash should match only directories
100
+ if _isdir(_join(root_dir, dirname), dir_fd):
101
+ yield pathname
102
+ return
103
+ if not dirname:
104
+ if recursive and _isrecursive(basename):
105
+ yield from _glob2(root_dir, basename, dir_fd, dironly,
106
+ include_hidden=include_hidden)
107
+ else:
108
+ yield from _glob1(root_dir, basename, dir_fd, dironly,
109
+ include_hidden=include_hidden)
110
+ return
111
+ # `os.path.split()` returns the argument itself as a dirname if it is a
112
+ # drive or UNC path. Prevent an infinite recursion if a drive or UNC path
113
+ # contains magic characters (i.e. r'\\?\C:').
114
+ if dirname != pathname and has_magic(dirname):
115
+ dirs = _iglob(dirname, root_dir, dir_fd, recursive, True,
116
+ include_hidden=include_hidden)
117
+ else:
118
+ dirs = [dirname]
119
+ if has_magic(basename):
120
+ if recursive and _isrecursive(basename):
121
+ glob_in_dir = _glob2
122
+ else:
123
+ glob_in_dir = _glob1
124
+ else:
125
+ glob_in_dir = _glob0
126
+ for dirname in dirs:
127
+ for name in glob_in_dir(_join(root_dir, dirname), basename, dir_fd, dironly,
128
+ include_hidden=include_hidden):
129
+ yield os.path.join(dirname, name)
130
+
131
+ # These 2 helper functions non-recursively glob inside a literal directory.
132
+ # They return a list of basenames. _glob1 accepts a pattern while _glob0
133
+ # takes a literal basename (so it only has to check for its existence).
134
+
135
+ def _glob1(dirname, pattern, dir_fd, dironly, include_hidden=False):
136
+ names = _listdir(dirname, dir_fd, dironly)
137
+ if not (include_hidden or _ishidden(pattern)):
138
+ names = (x for x in names if not _ishidden(x))
139
+ return fnmatch.filter(names, pattern)
140
+
141
+ def _glob0(dirname, basename, dir_fd, dironly, include_hidden=False):
142
+ if basename:
143
+ if _lexists(_join(dirname, basename), dir_fd):
144
+ return [basename]
145
+ else:
146
+ # `os.path.split()` returns an empty basename for paths ending with a
147
+ # directory separator. 'q*x/' should match only directories.
148
+ if _isdir(dirname, dir_fd):
149
+ return [basename]
150
+ return []
151
+
152
+ _deprecated_function_message = (
153
+ "{name} is deprecated and will be removed in Python {remove}. Use "
154
+ "glob.glob and pass a directory to its root_dir argument instead."
155
+ )
156
+
157
+ def glob0(dirname, pattern):
158
+ import warnings
159
+ warnings._deprecated("glob.glob0", _deprecated_function_message, remove=(3, 15))
160
+ return _glob0(dirname, pattern, None, False)
161
+
162
+ def glob1(dirname, pattern):
163
+ import warnings
164
+ warnings._deprecated("glob.glob1", _deprecated_function_message, remove=(3, 15))
165
+ return _glob1(dirname, pattern, None, False)
166
+
167
+ # This helper function recursively yields relative pathnames inside a literal
168
+ # directory.
169
+
170
+ def _glob2(dirname, pattern, dir_fd, dironly, include_hidden=False):
171
+ assert _isrecursive(pattern)
172
+ if not dirname or _isdir(dirname, dir_fd):
173
+ yield pattern[:0]
174
+ yield from _rlistdir(dirname, dir_fd, dironly,
175
+ include_hidden=include_hidden)
176
+
177
+ # If dironly is false, yields all file names inside a directory.
178
+ # If dironly is true, yields only directory names.
179
+ def _iterdir(dirname, dir_fd, dironly):
180
+ try:
181
+ fd = None
182
+ fsencode = None
183
+ if dir_fd is not None:
184
+ if dirname:
185
+ fd = arg = os.open(dirname, _dir_open_flags, dir_fd=dir_fd)
186
+ else:
187
+ arg = dir_fd
188
+ if isinstance(dirname, bytes):
189
+ fsencode = os.fsencode
190
+ elif dirname:
191
+ arg = dirname
192
+ elif isinstance(dirname, bytes):
193
+ arg = bytes(os.curdir, 'ASCII')
194
+ else:
195
+ arg = os.curdir
196
+ try:
197
+ with os.scandir(arg) as it:
198
+ for entry in it:
199
+ try:
200
+ if not dironly or entry.is_dir():
201
+ if fsencode is not None:
202
+ yield fsencode(entry.name)
203
+ else:
204
+ yield entry.name
205
+ except OSError:
206
+ pass
207
+ finally:
208
+ if fd is not None:
209
+ os.close(fd)
210
+ except OSError:
211
+ return
212
+
213
+ def _listdir(dirname, dir_fd, dironly):
214
+ with contextlib.closing(_iterdir(dirname, dir_fd, dironly)) as it:
215
+ return list(it)
216
+
217
+ # Recursively yields relative pathnames inside a literal directory.
218
+ def _rlistdir(dirname, dir_fd, dironly, include_hidden=False):
219
+ names = _listdir(dirname, dir_fd, dironly)
220
+ for x in names:
221
+ if include_hidden or not _ishidden(x):
222
+ yield x
223
+ path = _join(dirname, x) if dirname else x
224
+ for y in _rlistdir(path, dir_fd, dironly,
225
+ include_hidden=include_hidden):
226
+ yield _join(x, y)
227
+
228
+
229
+ def _lexists(pathname, dir_fd):
230
+ # Same as os.path.lexists(), but with dir_fd
231
+ if dir_fd is None:
232
+ return os.path.lexists(pathname)
233
+ try:
234
+ os.lstat(pathname, dir_fd=dir_fd)
235
+ except (OSError, ValueError):
236
+ return False
237
+ else:
238
+ return True
239
+
240
+ def _isdir(pathname, dir_fd):
241
+ # Same as os.path.isdir(), but with dir_fd
242
+ if dir_fd is None:
243
+ return os.path.isdir(pathname)
244
+ try:
245
+ st = os.stat(pathname, dir_fd=dir_fd)
246
+ except (OSError, ValueError):
247
+ return False
248
+ else:
249
+ return stat.S_ISDIR(st.st_mode)
250
+
251
+ def _join(dirname, basename):
252
+ # It is common if dirname or basename is empty
253
+ if not dirname or not basename:
254
+ return dirname or basename
255
+ return os.path.join(dirname, basename)
256
+
257
+ magic_check = re.compile('([*?[])')
258
+ magic_check_bytes = re.compile(b'([*?[])')
259
+
260
+ def has_magic(s):
261
+ if isinstance(s, bytes):
262
+ match = magic_check_bytes.search(s)
263
+ else:
264
+ match = magic_check.search(s)
265
+ return match is not None
266
+
267
+ def _ishidden(path):
268
+ return path[0] in ('.', b'.'[0])
269
+
270
+ def _isrecursive(pattern):
271
+ if isinstance(pattern, bytes):
272
+ return pattern == b'**'
273
+ else:
274
+ return pattern == '**'
275
+
276
+ def escape(pathname):
277
+ """Escape all special characters.
278
+ """
279
+ # Escaping is done by wrapping any of "*?[" between square brackets.
280
+ # Metacharacters do not work in the drive part and shouldn't be escaped.
281
+ drive, pathname = os.path.splitdrive(pathname)
282
+ if isinstance(pathname, bytes):
283
+ pathname = magic_check_bytes.sub(br'[\1]', pathname)
284
+ else:
285
+ pathname = magic_check.sub(r'[\1]', pathname)
286
+ return drive + pathname
287
+
288
+
289
+ _special_parts = ('', '.', '..')
290
+ _dir_open_flags = os.O_RDONLY | getattr(os, 'O_DIRECTORY', 0)
291
+ _no_recurse_symlinks = object()
292
+
293
+
294
+ def translate(pat, *, recursive=False, include_hidden=False, seps=None):
295
+ """Translate a pathname with shell wildcards to a regular expression.
296
+
297
+ If `recursive` is true, the pattern segment '**' will match any number
298
+ of path segments.
299
+
300
+ If `include_hidden` is true, wildcards can match path segments beginning
301
+ with a dot ('.').
302
+
303
+ If a sequence of separator characters is given to `seps`, they will be
304
+ used to split the pattern into segments and match path separators. If
305
+ not given, os.path.sep and os.path.altsep (where available) are used.
306
+ """
307
+ if not seps:
308
+ if os.path.altsep:
309
+ seps = (os.path.sep, os.path.altsep)
310
+ else:
311
+ seps = os.path.sep
312
+ escaped_seps = ''.join(map(re.escape, seps))
313
+ any_sep = f'[{escaped_seps}]' if len(seps) > 1 else escaped_seps
314
+ not_sep = f'[^{escaped_seps}]'
315
+ if include_hidden:
316
+ one_last_segment = f'{not_sep}+'
317
+ one_segment = f'{one_last_segment}{any_sep}'
318
+ any_segments = f'(?:.+{any_sep})?'
319
+ any_last_segments = '.*'
320
+ else:
321
+ one_last_segment = f'[^{escaped_seps}.]{not_sep}*'
322
+ one_segment = f'{one_last_segment}{any_sep}'
323
+ any_segments = f'(?:{one_segment})*'
324
+ any_last_segments = f'{any_segments}(?:{one_last_segment})?'
325
+
326
+ results = []
327
+ parts = re.split(any_sep, pat)
328
+ last_part_idx = len(parts) - 1
329
+ for idx, part in enumerate(parts):
330
+ if part == '*':
331
+ results.append(one_segment if idx < last_part_idx else one_last_segment)
332
+ elif recursive and part == '**':
333
+ if idx < last_part_idx:
334
+ if parts[idx + 1] != '**':
335
+ results.append(any_segments)
336
+ else:
337
+ results.append(any_last_segments)
338
+ else:
339
+ if part:
340
+ if not include_hidden and part[0] in '*?':
341
+ results.append(r'(?!\.)')
342
+ results.extend(fnmatch._translate(part, f'{not_sep}*', not_sep))
343
+ if idx < last_part_idx:
344
+ results.append(any_sep)
345
+ res = ''.join(results)
346
+ return fr'(?s:{res})\Z'
347
+
348
+
349
+ @functools.lru_cache(maxsize=512)
350
+ def _compile_pattern(pat, sep, case_sensitive, recursive=True):
351
+ """Compile given glob pattern to a re.Pattern object (observing case
352
+ sensitivity)."""
353
+ flags = re.NOFLAG if case_sensitive else re.IGNORECASE
354
+ regex = translate(pat, recursive=recursive, include_hidden=True, seps=sep)
355
+ return re.compile(regex, flags=flags).match
356
+
357
+
358
+ class _Globber:
359
+ """Class providing shell-style pattern matching and globbing.
360
+ """
361
+
362
+ def __init__(self, sep, case_sensitive, case_pedantic=False, recursive=False):
363
+ self.sep = sep
364
+ self.case_sensitive = case_sensitive
365
+ self.case_pedantic = case_pedantic
366
+ self.recursive = recursive
367
+
368
+ # Low-level methods
369
+
370
+ lstat = operator.methodcaller('lstat')
371
+ add_slash = operator.methodcaller('joinpath', '')
372
+
373
+ @staticmethod
374
+ def scandir(path):
375
+ """Emulates os.scandir(), which returns an object that can be used as
376
+ a context manager. This method is called by walk() and glob().
377
+ """
378
+ return contextlib.nullcontext(path.iterdir())
379
+
380
+ @staticmethod
381
+ def concat_path(path, text):
382
+ """Appends text to the given path.
383
+ """
384
+ return path.with_segments(path._raw_path + text)
385
+
386
+ @staticmethod
387
+ def parse_entry(entry):
388
+ """Returns the path of an entry yielded from scandir().
389
+ """
390
+ return entry
391
+
392
+ # High-level methods
393
+
394
+ def compile(self, pat):
395
+ return _compile_pattern(pat, self.sep, self.case_sensitive, self.recursive)
396
+
397
+ def selector(self, parts):
398
+ """Returns a function that selects from a given path, walking and
399
+ filtering according to the glob-style pattern parts in *parts*.
400
+ """
401
+ if not parts:
402
+ return self.select_exists
403
+ part = parts.pop()
404
+ if self.recursive and part == '**':
405
+ selector = self.recursive_selector
406
+ elif part in _special_parts:
407
+ selector = self.special_selector
408
+ elif not self.case_pedantic and magic_check.search(part) is None:
409
+ selector = self.literal_selector
410
+ else:
411
+ selector = self.wildcard_selector
412
+ return selector(part, parts)
413
+
414
+ def special_selector(self, part, parts):
415
+ """Returns a function that selects special children of the given path.
416
+ """
417
+ select_next = self.selector(parts)
418
+
419
+ def select_special(path, exists=False):
420
+ path = self.concat_path(self.add_slash(path), part)
421
+ return select_next(path, exists)
422
+ return select_special
423
+
424
+ def literal_selector(self, part, parts):
425
+ """Returns a function that selects a literal descendant of a path.
426
+ """
427
+
428
+ # Optimization: consume and join any subsequent literal parts here,
429
+ # rather than leaving them for the next selector. This reduces the
430
+ # number of string concatenation operations and calls to add_slash().
431
+ while parts and magic_check.search(parts[-1]) is None:
432
+ part += self.sep + parts.pop()
433
+
434
+ select_next = self.selector(parts)
435
+
436
+ def select_literal(path, exists=False):
437
+ path = self.concat_path(self.add_slash(path), part)
438
+ return select_next(path, exists=False)
439
+ return select_literal
440
+
441
+ def wildcard_selector(self, part, parts):
442
+ """Returns a function that selects direct children of a given path,
443
+ filtering by pattern.
444
+ """
445
+
446
+ match = None if part == '*' else self.compile(part)
447
+ dir_only = bool(parts)
448
+ if dir_only:
449
+ select_next = self.selector(parts)
450
+
451
+ def select_wildcard(path, exists=False):
452
+ try:
453
+ # We must close the scandir() object before proceeding to
454
+ # avoid exhausting file descriptors when globbing deep trees.
455
+ with self.scandir(path) as scandir_it:
456
+ entries = list(scandir_it)
457
+ except OSError:
458
+ pass
459
+ else:
460
+ for entry in entries:
461
+ if match is None or match(entry.name):
462
+ if dir_only:
463
+ try:
464
+ if not entry.is_dir():
465
+ continue
466
+ except OSError:
467
+ continue
468
+ entry_path = self.parse_entry(entry)
469
+ if dir_only:
470
+ yield from select_next(entry_path, exists=True)
471
+ else:
472
+ yield entry_path
473
+ return select_wildcard
474
+
475
+ def recursive_selector(self, part, parts):
476
+ """Returns a function that selects a given path and all its children,
477
+ recursively, filtering by pattern.
478
+ """
479
+ # Optimization: consume following '**' parts, which have no effect.
480
+ while parts and parts[-1] == '**':
481
+ parts.pop()
482
+
483
+ # Optimization: consume and join any following non-special parts here,
484
+ # rather than leaving them for the next selector. They're used to
485
+ # build a regular expression, which we use to filter the results of
486
+ # the recursive walk. As a result, non-special pattern segments
487
+ # following a '**' wildcard don't require additional filesystem access
488
+ # to expand.
489
+ follow_symlinks = self.recursive is not _no_recurse_symlinks
490
+ if follow_symlinks:
491
+ while parts and parts[-1] not in _special_parts:
492
+ part += self.sep + parts.pop()
493
+
494
+ match = None if part == '**' else self.compile(part)
495
+ dir_only = bool(parts)
496
+ select_next = self.selector(parts)
497
+
498
+ def select_recursive(path, exists=False):
499
+ path = self.add_slash(path)
500
+ match_pos = len(str(path))
501
+ if match is None or match(str(path), match_pos):
502
+ yield from select_next(path, exists)
503
+ stack = [path]
504
+ while stack:
505
+ yield from select_recursive_step(stack, match_pos)
506
+
507
+ def select_recursive_step(stack, match_pos):
508
+ path = stack.pop()
509
+ try:
510
+ # We must close the scandir() object before proceeding to
511
+ # avoid exhausting file descriptors when globbing deep trees.
512
+ with self.scandir(path) as scandir_it:
513
+ entries = list(scandir_it)
514
+ except OSError:
515
+ pass
516
+ else:
517
+ for entry in entries:
518
+ is_dir = False
519
+ try:
520
+ if entry.is_dir(follow_symlinks=follow_symlinks):
521
+ is_dir = True
522
+ except OSError:
523
+ pass
524
+
525
+ if is_dir or not dir_only:
526
+ entry_path = self.parse_entry(entry)
527
+ if match is None or match(str(entry_path), match_pos):
528
+ if dir_only:
529
+ yield from select_next(entry_path, exists=True)
530
+ else:
531
+ # Optimization: directly yield the path if this is
532
+ # last pattern part.
533
+ yield entry_path
534
+ if is_dir:
535
+ stack.append(entry_path)
536
+
537
+ return select_recursive
538
+
539
+ def select_exists(self, path, exists=False):
540
+ """Yields the given path, if it exists.
541
+ """
542
+ if exists:
543
+ # Optimization: this path is already known to exist, e.g. because
544
+ # it was returned from os.scandir(), so we skip calling lstat().
545
+ yield path
546
+ else:
547
+ try:
548
+ self.lstat(path)
549
+ yield path
550
+ except OSError:
551
+ pass
552
+
553
+
554
+ class _StringGlobber(_Globber):
555
+ lstat = staticmethod(os.lstat)
556
+ scandir = staticmethod(os.scandir)
557
+ parse_entry = operator.attrgetter('path')
558
+ concat_path = operator.add
559
+
560
+ if os.name == 'nt':
561
+ @staticmethod
562
+ def add_slash(pathname):
563
+ tail = os.path.splitroot(pathname)[2]
564
+ if not tail or tail[-1] in '\\/':
565
+ return pathname
566
+ return f'{pathname}\\'
567
+ else:
568
+ @staticmethod
569
+ def add_slash(pathname):
570
+ if not pathname or pathname[-1] == '/':
571
+ return pathname
572
+ return f'{pathname}/'