@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,562 @@
1
+ #
2
+ # Module providing various facilities to other parts of the package
3
+ #
4
+ # multiprocessing/util.py
5
+ #
6
+ # Copyright (c) 2006-2008, R Oudkerk
7
+ # Licensed to PSF under a Contributor Agreement.
8
+ #
9
+
10
+ import os
11
+ import itertools
12
+ import sys
13
+ import weakref
14
+ import atexit
15
+ import threading # we want threading to install it's
16
+ # cleanup function before multiprocessing does
17
+ from subprocess import _args_from_interpreter_flags
18
+
19
+ from . import process
20
+
21
+ __all__ = [
22
+ 'sub_debug', 'debug', 'info', 'sub_warning', 'get_logger',
23
+ 'log_to_stderr', 'get_temp_dir', 'register_after_fork',
24
+ 'is_exiting', 'Finalize', 'ForkAwareThreadLock', 'ForkAwareLocal',
25
+ 'close_all_fds_except', 'SUBDEBUG', 'SUBWARNING',
26
+ ]
27
+
28
+ #
29
+ # Logging
30
+ #
31
+
32
+ NOTSET = 0
33
+ SUBDEBUG = 5
34
+ DEBUG = 10
35
+ INFO = 20
36
+ SUBWARNING = 25
37
+ WARNING = 30
38
+
39
+ LOGGER_NAME = 'multiprocessing'
40
+ DEFAULT_LOGGING_FORMAT = '[%(levelname)s/%(processName)s] %(message)s'
41
+
42
+ _logger = None
43
+ _log_to_stderr = False
44
+
45
+ def sub_debug(msg, *args):
46
+ if _logger:
47
+ _logger.log(SUBDEBUG, msg, *args, stacklevel=2)
48
+
49
+ def debug(msg, *args):
50
+ if _logger:
51
+ _logger.log(DEBUG, msg, *args, stacklevel=2)
52
+
53
+ def info(msg, *args):
54
+ if _logger:
55
+ _logger.log(INFO, msg, *args, stacklevel=2)
56
+
57
+ def _warn(msg, *args):
58
+ if _logger:
59
+ _logger.log(WARNING, msg, *args, stacklevel=2)
60
+
61
+ def sub_warning(msg, *args):
62
+ if _logger:
63
+ _logger.log(SUBWARNING, msg, *args, stacklevel=2)
64
+
65
+ def get_logger():
66
+ '''
67
+ Returns logger used by multiprocessing
68
+ '''
69
+ global _logger
70
+ import logging
71
+
72
+ with logging._lock:
73
+ if not _logger:
74
+
75
+ _logger = logging.getLogger(LOGGER_NAME)
76
+ _logger.propagate = 0
77
+
78
+ # XXX multiprocessing should cleanup before logging
79
+ if hasattr(atexit, 'unregister'):
80
+ atexit.unregister(_exit_function)
81
+ atexit.register(_exit_function)
82
+ else:
83
+ atexit._exithandlers.remove((_exit_function, (), {}))
84
+ atexit._exithandlers.append((_exit_function, (), {}))
85
+
86
+ return _logger
87
+
88
+ def log_to_stderr(level=None):
89
+ '''
90
+ Turn on logging and add a handler which prints to stderr
91
+ '''
92
+ global _log_to_stderr
93
+ import logging
94
+
95
+ logger = get_logger()
96
+ formatter = logging.Formatter(DEFAULT_LOGGING_FORMAT)
97
+ handler = logging.StreamHandler()
98
+ handler.setFormatter(formatter)
99
+ logger.addHandler(handler)
100
+
101
+ if level:
102
+ logger.setLevel(level)
103
+ _log_to_stderr = True
104
+ return _logger
105
+
106
+
107
+ # Abstract socket support
108
+
109
+ def _platform_supports_abstract_sockets():
110
+ return sys.platform in ("linux", "android")
111
+
112
+
113
+ def is_abstract_socket_namespace(address):
114
+ if not address:
115
+ return False
116
+ if isinstance(address, bytes):
117
+ return address[0] == 0
118
+ elif isinstance(address, str):
119
+ return address[0] == "\0"
120
+ raise TypeError(f'address type of {address!r} unrecognized')
121
+
122
+
123
+ abstract_sockets_supported = _platform_supports_abstract_sockets()
124
+
125
+ #
126
+ # Function returning a temp directory which will be removed on exit
127
+ #
128
+
129
+ # Maximum length of a NULL-terminated [1] socket file path is usually
130
+ # between 92 and 108 [2], but Linux is known to use a size of 108 [3].
131
+ # BSD-based systems usually use a size of 104 or 108 and Windows does
132
+ # not create AF_UNIX sockets.
133
+ #
134
+ # [1]: https://github.com/python/cpython/issues/140734
135
+ # [2]: https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/sys_un.h.html
136
+ # [3]: https://man7.org/linux/man-pages/man7/unix.7.html
137
+
138
+ if sys.platform == 'linux':
139
+ _SUN_PATH_MAX = 108
140
+ elif sys.platform.startswith(('openbsd', 'freebsd')):
141
+ _SUN_PATH_MAX = 104
142
+ else:
143
+ # On Windows platforms, we do not create AF_UNIX sockets.
144
+ _SUN_PATH_MAX = None if os.name == 'nt' else 92
145
+
146
+ def _remove_temp_dir(rmtree, tempdir):
147
+ rmtree(tempdir)
148
+
149
+ current_process = process.current_process()
150
+ # current_process() can be None if the finalizer is called
151
+ # late during Python finalization
152
+ if current_process is not None:
153
+ current_process._config['tempdir'] = None
154
+
155
+ def _get_base_temp_dir(tempfile):
156
+ """Get a temporary directory where socket files will be created.
157
+
158
+ To prevent additional imports, pass a pre-imported 'tempfile' module.
159
+ """
160
+ if os.name == 'nt':
161
+ return None
162
+ # Most of the time, the default temporary directory is /tmp. Thus,
163
+ # listener sockets files "$TMPDIR/pymp-XXXXXXXX/sock-XXXXXXXX" do
164
+ # not have a path length exceeding SUN_PATH_MAX.
165
+ #
166
+ # If users specify their own temporary directory, we may be unable
167
+ # to create those files. Therefore, we fall back to the system-wide
168
+ # temporary directory /tmp, assumed to exist on POSIX systems.
169
+ #
170
+ # See https://github.com/python/cpython/issues/132124.
171
+ base_tempdir = tempfile.gettempdir()
172
+ # Files created in a temporary directory are suffixed by a string
173
+ # generated by tempfile._RandomNameSequence, which, by design,
174
+ # is 8 characters long.
175
+ #
176
+ # Thus, the socket file path length (without NULL terminator) will be:
177
+ #
178
+ # len(base_tempdir + '/pymp-XXXXXXXX' + '/sock-XXXXXXXX')
179
+ sun_path_len = len(base_tempdir) + 14 + 14
180
+ # Strict inequality to account for the NULL terminator.
181
+ # See https://github.com/python/cpython/issues/140734.
182
+ if sun_path_len < _SUN_PATH_MAX:
183
+ return base_tempdir
184
+ # Fallback to the default system-wide temporary directory.
185
+ # This ignores user-defined environment variables.
186
+ #
187
+ # On POSIX systems, /tmp MUST be writable by any application [1].
188
+ # We however emit a warning if this is not the case to prevent
189
+ # obscure errors later in the execution.
190
+ #
191
+ # On some legacy systems, /var/tmp and /usr/tmp can be present
192
+ # and will be used instead.
193
+ #
194
+ # [1]: https://refspecs.linuxfoundation.org/FHS_3.0/fhs/ch03s18.html
195
+ dirlist = ['/tmp', '/var/tmp', '/usr/tmp']
196
+ try:
197
+ base_system_tempdir = tempfile._get_default_tempdir(dirlist)
198
+ except FileNotFoundError:
199
+ _warn("Process-wide temporary directory %s will not be usable for "
200
+ "creating socket files and no usable system-wide temporary "
201
+ "directory was found in %s", base_tempdir, dirlist)
202
+ # At this point, the system-wide temporary directory is not usable
203
+ # but we may assume that the user-defined one is, even if we will
204
+ # not be able to write socket files out there.
205
+ return base_tempdir
206
+ _warn("Ignoring user-defined temporary directory: %s", base_tempdir)
207
+ # at most max(map(len, dirlist)) + 14 + 14 = 36 characters
208
+ assert len(base_system_tempdir) + 14 + 14 < _SUN_PATH_MAX
209
+ return base_system_tempdir
210
+
211
+ def get_temp_dir():
212
+ # get name of a temp directory which will be automatically cleaned up
213
+ tempdir = process.current_process()._config.get('tempdir')
214
+ if tempdir is None:
215
+ import shutil, tempfile
216
+ base_tempdir = _get_base_temp_dir(tempfile)
217
+ tempdir = tempfile.mkdtemp(prefix='pymp-', dir=base_tempdir)
218
+ info('created temp directory %s', tempdir)
219
+ # keep a strong reference to shutil.rmtree(), since the finalizer
220
+ # can be called late during Python shutdown
221
+ Finalize(None, _remove_temp_dir, args=(shutil.rmtree, tempdir),
222
+ exitpriority=-100)
223
+ process.current_process()._config['tempdir'] = tempdir
224
+ return tempdir
225
+
226
+ #
227
+ # Support for reinitialization of objects when bootstrapping a child process
228
+ #
229
+
230
+ _afterfork_registry = weakref.WeakValueDictionary()
231
+ _afterfork_counter = itertools.count()
232
+
233
+ def _run_after_forkers():
234
+ items = list(_afterfork_registry.items())
235
+ items.sort()
236
+ for (index, ident, func), obj in items:
237
+ try:
238
+ func(obj)
239
+ except Exception as e:
240
+ info('after forker raised exception %s', e)
241
+
242
+ def register_after_fork(obj, func):
243
+ _afterfork_registry[(next(_afterfork_counter), id(obj), func)] = obj
244
+
245
+ #
246
+ # Finalization using weakrefs
247
+ #
248
+
249
+ _finalizer_registry = {}
250
+ _finalizer_counter = itertools.count()
251
+
252
+
253
+ class Finalize(object):
254
+ '''
255
+ Class which supports object finalization using weakrefs
256
+ '''
257
+ def __init__(self, obj, callback, args=(), kwargs=None, exitpriority=None):
258
+ if (exitpriority is not None) and not isinstance(exitpriority,int):
259
+ raise TypeError(
260
+ "Exitpriority ({0!r}) must be None or int, not {1!s}".format(
261
+ exitpriority, type(exitpriority)))
262
+
263
+ if obj is not None:
264
+ self._weakref = weakref.ref(obj, self)
265
+ elif exitpriority is None:
266
+ raise ValueError("Without object, exitpriority cannot be None")
267
+
268
+ self._callback = callback
269
+ self._args = args
270
+ self._kwargs = kwargs or {}
271
+ self._key = (exitpriority, next(_finalizer_counter))
272
+ self._pid = os.getpid()
273
+
274
+ _finalizer_registry[self._key] = self
275
+
276
+ def __call__(self, wr=None,
277
+ # Need to bind these locally because the globals can have
278
+ # been cleared at shutdown
279
+ _finalizer_registry=_finalizer_registry,
280
+ sub_debug=sub_debug, getpid=os.getpid):
281
+ '''
282
+ Run the callback unless it has already been called or cancelled
283
+ '''
284
+ try:
285
+ del _finalizer_registry[self._key]
286
+ except KeyError:
287
+ sub_debug('finalizer no longer registered')
288
+ else:
289
+ if self._pid != getpid():
290
+ sub_debug('finalizer ignored because different process')
291
+ res = None
292
+ else:
293
+ sub_debug('finalizer calling %s with args %s and kwargs %s',
294
+ self._callback, self._args, self._kwargs)
295
+ res = self._callback(*self._args, **self._kwargs)
296
+ self._weakref = self._callback = self._args = \
297
+ self._kwargs = self._key = None
298
+ return res
299
+
300
+ def cancel(self):
301
+ '''
302
+ Cancel finalization of the object
303
+ '''
304
+ try:
305
+ del _finalizer_registry[self._key]
306
+ except KeyError:
307
+ pass
308
+ else:
309
+ self._weakref = self._callback = self._args = \
310
+ self._kwargs = self._key = None
311
+
312
+ def still_active(self):
313
+ '''
314
+ Return whether this finalizer is still waiting to invoke callback
315
+ '''
316
+ return self._key in _finalizer_registry
317
+
318
+ def __repr__(self):
319
+ try:
320
+ obj = self._weakref()
321
+ except (AttributeError, TypeError):
322
+ obj = None
323
+
324
+ if obj is None:
325
+ return '<%s object, dead>' % self.__class__.__name__
326
+
327
+ x = '<%s object, callback=%s' % (
328
+ self.__class__.__name__,
329
+ getattr(self._callback, '__name__', self._callback))
330
+ if self._args:
331
+ x += ', args=' + str(self._args)
332
+ if self._kwargs:
333
+ x += ', kwargs=' + str(self._kwargs)
334
+ if self._key[0] is not None:
335
+ x += ', exitpriority=' + str(self._key[0])
336
+ return x + '>'
337
+
338
+
339
+ def _run_finalizers(minpriority=None):
340
+ '''
341
+ Run all finalizers whose exit priority is not None and at least minpriority
342
+
343
+ Finalizers with highest priority are called first; finalizers with
344
+ the same priority will be called in reverse order of creation.
345
+ '''
346
+ if _finalizer_registry is None:
347
+ # This function may be called after this module's globals are
348
+ # destroyed. See the _exit_function function in this module for more
349
+ # notes.
350
+ return
351
+
352
+ if minpriority is None:
353
+ f = lambda p : p[0] is not None
354
+ else:
355
+ f = lambda p : p[0] is not None and p[0] >= minpriority
356
+
357
+ # Careful: _finalizer_registry may be mutated while this function
358
+ # is running (either by a GC run or by another thread).
359
+
360
+ # list(_finalizer_registry) should be atomic, while
361
+ # list(_finalizer_registry.items()) is not.
362
+ keys = [key for key in list(_finalizer_registry) if f(key)]
363
+ keys.sort(reverse=True)
364
+
365
+ for key in keys:
366
+ finalizer = _finalizer_registry.get(key)
367
+ # key may have been removed from the registry
368
+ if finalizer is not None:
369
+ sub_debug('calling %s', finalizer)
370
+ try:
371
+ finalizer()
372
+ except Exception:
373
+ import traceback
374
+ traceback.print_exc()
375
+
376
+ if minpriority is None:
377
+ _finalizer_registry.clear()
378
+
379
+ #
380
+ # Clean up on exit
381
+ #
382
+
383
+ def is_exiting():
384
+ '''
385
+ Returns true if the process is shutting down
386
+ '''
387
+ return _exiting or _exiting is None
388
+
389
+ _exiting = False
390
+
391
+ def _exit_function(info=info, debug=debug, _run_finalizers=_run_finalizers,
392
+ active_children=process.active_children,
393
+ current_process=process.current_process):
394
+ # We hold on to references to functions in the arglist due to the
395
+ # situation described below, where this function is called after this
396
+ # module's globals are destroyed.
397
+
398
+ global _exiting
399
+
400
+ if not _exiting:
401
+ _exiting = True
402
+
403
+ info('process shutting down')
404
+ debug('running all "atexit" finalizers with priority >= 0')
405
+ _run_finalizers(0)
406
+
407
+ if current_process() is not None:
408
+ # We check if the current process is None here because if
409
+ # it's None, any call to ``active_children()`` will raise
410
+ # an AttributeError (active_children winds up trying to
411
+ # get attributes from util._current_process). One
412
+ # situation where this can happen is if someone has
413
+ # manipulated sys.modules, causing this module to be
414
+ # garbage collected. The destructor for the module type
415
+ # then replaces all values in the module dict with None.
416
+ # For instance, after setuptools runs a test it replaces
417
+ # sys.modules with a copy created earlier. See issues
418
+ # #9775 and #15881. Also related: #4106, #9205, and
419
+ # #9207.
420
+
421
+ for p in active_children():
422
+ if p.daemon:
423
+ info('calling terminate() for daemon %s', p.name)
424
+ p._popen.terminate()
425
+
426
+ for p in active_children():
427
+ info('calling join() for process %s', p.name)
428
+ p.join()
429
+
430
+ debug('running the remaining "atexit" finalizers')
431
+ _run_finalizers()
432
+
433
+ atexit.register(_exit_function)
434
+
435
+ #
436
+ # Some fork aware types
437
+ #
438
+
439
+ class ForkAwareThreadLock(object):
440
+ def __init__(self):
441
+ self._lock = threading.Lock()
442
+ self.acquire = self._lock.acquire
443
+ self.release = self._lock.release
444
+ register_after_fork(self, ForkAwareThreadLock._at_fork_reinit)
445
+
446
+ def _at_fork_reinit(self):
447
+ self._lock._at_fork_reinit()
448
+
449
+ def __enter__(self):
450
+ return self._lock.__enter__()
451
+
452
+ def __exit__(self, *args):
453
+ return self._lock.__exit__(*args)
454
+
455
+
456
+ class ForkAwareLocal(threading.local):
457
+ def __init__(self):
458
+ register_after_fork(self, lambda obj : obj.__dict__.clear())
459
+ def __reduce__(self):
460
+ return type(self), ()
461
+
462
+ #
463
+ # Close fds except those specified
464
+ #
465
+
466
+ try:
467
+ MAXFD = os.sysconf("SC_OPEN_MAX")
468
+ except Exception:
469
+ MAXFD = 256
470
+
471
+ def close_all_fds_except(fds):
472
+ fds = list(fds) + [-1, MAXFD]
473
+ fds.sort()
474
+ assert fds[-1] == MAXFD, 'fd too large'
475
+ for i in range(len(fds) - 1):
476
+ os.closerange(fds[i]+1, fds[i+1])
477
+ #
478
+ # Close sys.stdin and replace stdin with os.devnull
479
+ #
480
+
481
+ def _close_stdin():
482
+ if sys.stdin is None:
483
+ return
484
+
485
+ try:
486
+ sys.stdin.close()
487
+ except (OSError, ValueError):
488
+ pass
489
+
490
+ try:
491
+ fd = os.open(os.devnull, os.O_RDONLY)
492
+ try:
493
+ sys.stdin = open(fd, encoding="utf-8", closefd=False)
494
+ except:
495
+ os.close(fd)
496
+ raise
497
+ except (OSError, ValueError):
498
+ pass
499
+
500
+ #
501
+ # Flush standard streams, if any
502
+ #
503
+
504
+ def _flush_std_streams():
505
+ try:
506
+ sys.stdout.flush()
507
+ except (AttributeError, ValueError):
508
+ pass
509
+ try:
510
+ sys.stderr.flush()
511
+ except (AttributeError, ValueError):
512
+ pass
513
+
514
+ #
515
+ # Start a program with only specified fds kept open
516
+ #
517
+
518
+ def spawnv_passfds(path, args, passfds):
519
+ import _posixsubprocess
520
+ import subprocess
521
+ passfds = tuple(sorted(map(int, passfds)))
522
+ errpipe_read, errpipe_write = os.pipe()
523
+ try:
524
+ return _posixsubprocess.fork_exec(
525
+ args, [path], True, passfds, None, None,
526
+ -1, -1, -1, -1, -1, -1, errpipe_read, errpipe_write,
527
+ False, False, -1, None, None, None, -1, None,
528
+ subprocess._USE_VFORK)
529
+ finally:
530
+ os.close(errpipe_read)
531
+ os.close(errpipe_write)
532
+
533
+
534
+ def close_fds(*fds):
535
+ """Close each file descriptor given as an argument"""
536
+ for fd in fds:
537
+ os.close(fd)
538
+
539
+
540
+ def _cleanup_tests():
541
+ """Cleanup multiprocessing resources when multiprocessing tests
542
+ completed."""
543
+
544
+ from test import support
545
+
546
+ # cleanup multiprocessing
547
+ process._cleanup()
548
+
549
+ # Stop the ForkServer process if it's running
550
+ from multiprocessing import forkserver
551
+ forkserver._forkserver._stop()
552
+
553
+ # Stop the ResourceTracker process if it's running
554
+ from multiprocessing import resource_tracker
555
+ resource_tracker._resource_tracker._stop()
556
+
557
+ # bpo-37421: Explicitly call _run_finalizers() to remove immediately
558
+ # temporary directories created by multiprocessing.util.get_temp_dir().
559
+ _run_finalizers()
560
+ support.gc_collect()
561
+
562
+ support.reap_children()