@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,665 @@
1
+ """Stuff to parse WAVE files.
2
+
3
+ Usage.
4
+
5
+ Reading WAVE files:
6
+ f = wave.open(file, 'r')
7
+ where file is either the name of a file or an open file pointer.
8
+ The open file pointer must have methods read(), seek(), and close().
9
+ When the setpos() and rewind() methods are not used, the seek()
10
+ method is not necessary.
11
+
12
+ This returns an instance of a class with the following public methods:
13
+ getnchannels() -- returns number of audio channels (1 for
14
+ mono, 2 for stereo)
15
+ getsampwidth() -- returns sample width in bytes
16
+ getframerate() -- returns sampling frequency
17
+ getnframes() -- returns number of audio frames
18
+ getcomptype() -- returns compression type ('NONE' for linear samples)
19
+ getcompname() -- returns human-readable version of
20
+ compression type ('not compressed' linear samples)
21
+ getparams() -- returns a namedtuple consisting of all of the
22
+ above in the above order
23
+ getmarkers() -- returns None (for compatibility with the
24
+ old aifc module)
25
+ getmark(id) -- raises an error since the mark does not
26
+ exist (for compatibility with the old aifc module)
27
+ readframes(n) -- returns at most n frames of audio
28
+ rewind() -- rewind to the beginning of the audio stream
29
+ setpos(pos) -- seek to the specified position
30
+ tell() -- return the current position
31
+ close() -- close the instance (make it unusable)
32
+ The position returned by tell() and the position given to setpos()
33
+ are compatible and have nothing to do with the actual position in the
34
+ file.
35
+ The close() method is called automatically when the class instance
36
+ is destroyed.
37
+
38
+ Writing WAVE files:
39
+ f = wave.open(file, 'w')
40
+ where file is either the name of a file or an open file pointer.
41
+ The open file pointer must have methods write(), tell(), seek(), and
42
+ close().
43
+
44
+ This returns an instance of a class with the following public methods:
45
+ setnchannels(n) -- set the number of channels
46
+ setsampwidth(n) -- set the sample width
47
+ setframerate(n) -- set the frame rate
48
+ setnframes(n) -- set the number of frames
49
+ setcomptype(type, name)
50
+ -- set the compression type and the
51
+ human-readable compression type
52
+ setparams(tuple)
53
+ -- set all parameters at once
54
+ tell() -- return current position in output file
55
+ writeframesraw(data)
56
+ -- write audio frames without patching up the
57
+ file header
58
+ writeframes(data)
59
+ -- write audio frames and patch up the file header
60
+ close() -- patch up the file header and close the
61
+ output file
62
+ You should set the parameters before the first writeframesraw or
63
+ writeframes. The total number of frames does not need to be set,
64
+ but when it is set to the correct value, the header does not have to
65
+ be patched up.
66
+ It is best to first set all parameters, perhaps possibly the
67
+ compression type, and then write audio frames using writeframesraw.
68
+ When all frames have been written, either call writeframes(b'') or
69
+ close() to patch up the sizes in the header.
70
+ The close() method is called automatically when the class instance
71
+ is destroyed.
72
+ """
73
+
74
+ from collections import namedtuple
75
+ import builtins
76
+ import struct
77
+ import sys
78
+
79
+
80
+ __all__ = ["open", "Error", "Wave_read", "Wave_write"]
81
+
82
+ class Error(Exception):
83
+ pass
84
+
85
+ WAVE_FORMAT_PCM = 0x0001
86
+ WAVE_FORMAT_EXTENSIBLE = 0xFFFE
87
+ # Derived from uuid.UUID("00000001-0000-0010-8000-00aa00389b71").bytes_le
88
+ KSDATAFORMAT_SUBTYPE_PCM = b'\x01\x00\x00\x00\x00\x00\x10\x00\x80\x00\x00\xaa\x008\x9bq'
89
+
90
+ _array_fmts = None, 'b', 'h', None, 'i'
91
+
92
+ _wave_params = namedtuple('_wave_params',
93
+ 'nchannels sampwidth framerate nframes comptype compname')
94
+
95
+
96
+ def _byteswap(data, width):
97
+ swapped_data = bytearray(len(data))
98
+
99
+ for i in range(0, len(data), width):
100
+ for j in range(width):
101
+ swapped_data[i + width - 1 - j] = data[i + j]
102
+
103
+ return bytes(swapped_data)
104
+
105
+
106
+ class _Chunk:
107
+ def __init__(self, file, align=True, bigendian=True, inclheader=False):
108
+ self.closed = False
109
+ self.align = align # whether to align to word (2-byte) boundaries
110
+ if bigendian:
111
+ strflag = '>'
112
+ else:
113
+ strflag = '<'
114
+ self.file = file
115
+ self.chunkname = file.read(4)
116
+ if len(self.chunkname) < 4:
117
+ raise EOFError
118
+ try:
119
+ self.chunksize = struct.unpack_from(strflag+'L', file.read(4))[0]
120
+ except struct.error:
121
+ raise EOFError from None
122
+ if inclheader:
123
+ self.chunksize = self.chunksize - 8 # subtract header
124
+ self.size_read = 0
125
+ try:
126
+ self.offset = self.file.tell()
127
+ except (AttributeError, OSError):
128
+ self.seekable = False
129
+ else:
130
+ self.seekable = True
131
+
132
+ def getname(self):
133
+ """Return the name (ID) of the current chunk."""
134
+ return self.chunkname
135
+
136
+ def close(self):
137
+ if not self.closed:
138
+ try:
139
+ self.skip()
140
+ finally:
141
+ self.closed = True
142
+
143
+ def seek(self, pos, whence=0):
144
+ """Seek to specified position into the chunk.
145
+ Default position is 0 (start of chunk).
146
+ If the file is not seekable, this will result in an error.
147
+ """
148
+
149
+ if self.closed:
150
+ raise ValueError("I/O operation on closed file")
151
+ if not self.seekable:
152
+ raise OSError("cannot seek")
153
+ if whence == 1:
154
+ pos = pos + self.size_read
155
+ elif whence == 2:
156
+ pos = pos + self.chunksize
157
+ if pos < 0 or pos > self.chunksize:
158
+ raise RuntimeError
159
+ self.file.seek(self.offset + pos, 0)
160
+ self.size_read = pos
161
+
162
+ def tell(self):
163
+ if self.closed:
164
+ raise ValueError("I/O operation on closed file")
165
+ return self.size_read
166
+
167
+ def read(self, size=-1):
168
+ """Read at most size bytes from the chunk.
169
+ If size is omitted or negative, read until the end
170
+ of the chunk.
171
+ """
172
+
173
+ if self.closed:
174
+ raise ValueError("I/O operation on closed file")
175
+ if self.size_read >= self.chunksize:
176
+ return b''
177
+ if size < 0:
178
+ size = self.chunksize - self.size_read
179
+ if size > self.chunksize - self.size_read:
180
+ size = self.chunksize - self.size_read
181
+ data = self.file.read(size)
182
+ self.size_read = self.size_read + len(data)
183
+ if self.size_read == self.chunksize and \
184
+ self.align and \
185
+ (self.chunksize & 1):
186
+ dummy = self.file.read(1)
187
+ self.size_read = self.size_read + len(dummy)
188
+ return data
189
+
190
+ def skip(self):
191
+ """Skip the rest of the chunk.
192
+ If you are not interested in the contents of the chunk,
193
+ this method should be called so that the file points to
194
+ the start of the next chunk.
195
+ """
196
+
197
+ if self.closed:
198
+ raise ValueError("I/O operation on closed file")
199
+ if self.seekable:
200
+ try:
201
+ n = self.chunksize - self.size_read
202
+ # maybe fix alignment
203
+ if self.align and (self.chunksize & 1):
204
+ n = n + 1
205
+ self.file.seek(n, 1)
206
+ self.size_read = self.size_read + n
207
+ return
208
+ except OSError:
209
+ pass
210
+ while self.size_read < self.chunksize:
211
+ n = min(8192, self.chunksize - self.size_read)
212
+ dummy = self.read(n)
213
+ if not dummy:
214
+ raise EOFError
215
+
216
+
217
+ class Wave_read:
218
+ """Variables used in this class:
219
+
220
+ These variables are available to the user though appropriate
221
+ methods of this class:
222
+ _file -- the open file with methods read(), close(), and seek()
223
+ set through the __init__() method
224
+ _nchannels -- the number of audio channels
225
+ available through the getnchannels() method
226
+ _nframes -- the number of audio frames
227
+ available through the getnframes() method
228
+ _sampwidth -- the number of bytes per audio sample
229
+ available through the getsampwidth() method
230
+ _framerate -- the sampling frequency
231
+ available through the getframerate() method
232
+ _comptype -- the AIFF-C compression type ('NONE' if AIFF)
233
+ available through the getcomptype() method
234
+ _compname -- the human-readable AIFF-C compression type
235
+ available through the getcomptype() method
236
+ _soundpos -- the position in the audio stream
237
+ available through the tell() method, set through the
238
+ setpos() method
239
+
240
+ These variables are used internally only:
241
+ _fmt_chunk_read -- 1 iff the FMT chunk has been read
242
+ _data_seek_needed -- 1 iff positioned correctly in audio
243
+ file for readframes()
244
+ _data_chunk -- instantiation of a chunk class for the DATA chunk
245
+ _framesize -- size of one frame in the file
246
+ """
247
+
248
+ def initfp(self, file):
249
+ self._convert = None
250
+ self._soundpos = 0
251
+ self._file = _Chunk(file, bigendian = 0)
252
+ if self._file.getname() != b'RIFF':
253
+ raise Error('file does not start with RIFF id')
254
+ if self._file.read(4) != b'WAVE':
255
+ raise Error('not a WAVE file')
256
+ self._fmt_chunk_read = 0
257
+ self._data_chunk = None
258
+ while 1:
259
+ self._data_seek_needed = 1
260
+ try:
261
+ chunk = _Chunk(self._file, bigendian = 0)
262
+ except EOFError:
263
+ break
264
+ chunkname = chunk.getname()
265
+ if chunkname == b'fmt ':
266
+ self._read_fmt_chunk(chunk)
267
+ self._fmt_chunk_read = 1
268
+ elif chunkname == b'data':
269
+ if not self._fmt_chunk_read:
270
+ raise Error('data chunk before fmt chunk')
271
+ self._data_chunk = chunk
272
+ self._nframes = chunk.chunksize // self._framesize
273
+ self._data_seek_needed = 0
274
+ break
275
+ chunk.skip()
276
+ if not self._fmt_chunk_read or not self._data_chunk:
277
+ raise Error('fmt chunk and/or data chunk missing')
278
+
279
+ def __init__(self, f):
280
+ self._i_opened_the_file = None
281
+ if isinstance(f, str):
282
+ f = builtins.open(f, 'rb')
283
+ self._i_opened_the_file = f
284
+ # else, assume it is an open file object already
285
+ try:
286
+ self.initfp(f)
287
+ except:
288
+ if self._i_opened_the_file:
289
+ f.close()
290
+ raise
291
+
292
+ def __del__(self):
293
+ self.close()
294
+
295
+ def __enter__(self):
296
+ return self
297
+
298
+ def __exit__(self, *args):
299
+ self.close()
300
+
301
+ #
302
+ # User visible methods.
303
+ #
304
+ def getfp(self):
305
+ return self._file
306
+
307
+ def rewind(self):
308
+ self._data_seek_needed = 1
309
+ self._soundpos = 0
310
+
311
+ def close(self):
312
+ self._file = None
313
+ file = self._i_opened_the_file
314
+ if file:
315
+ self._i_opened_the_file = None
316
+ file.close()
317
+
318
+ def tell(self):
319
+ return self._soundpos
320
+
321
+ def getnchannels(self):
322
+ return self._nchannels
323
+
324
+ def getnframes(self):
325
+ return self._nframes
326
+
327
+ def getsampwidth(self):
328
+ return self._sampwidth
329
+
330
+ def getframerate(self):
331
+ return self._framerate
332
+
333
+ def getcomptype(self):
334
+ return self._comptype
335
+
336
+ def getcompname(self):
337
+ return self._compname
338
+
339
+ def getparams(self):
340
+ return _wave_params(self.getnchannels(), self.getsampwidth(),
341
+ self.getframerate(), self.getnframes(),
342
+ self.getcomptype(), self.getcompname())
343
+
344
+ def getmarkers(self):
345
+ import warnings
346
+ warnings._deprecated("Wave_read.getmarkers", remove=(3, 15))
347
+ return None
348
+
349
+ def getmark(self, id):
350
+ import warnings
351
+ warnings._deprecated("Wave_read.getmark", remove=(3, 15))
352
+ raise Error('no marks')
353
+
354
+ def setpos(self, pos):
355
+ if pos < 0 or pos > self._nframes:
356
+ raise Error('position not in range')
357
+ self._soundpos = pos
358
+ self._data_seek_needed = 1
359
+
360
+ def readframes(self, nframes):
361
+ if self._data_seek_needed:
362
+ self._data_chunk.seek(0, 0)
363
+ pos = self._soundpos * self._framesize
364
+ if pos:
365
+ self._data_chunk.seek(pos, 0)
366
+ self._data_seek_needed = 0
367
+ if nframes == 0:
368
+ return b''
369
+ data = self._data_chunk.read(nframes * self._framesize)
370
+ if self._sampwidth != 1 and sys.byteorder == 'big':
371
+ data = _byteswap(data, self._sampwidth)
372
+ if self._convert and data:
373
+ data = self._convert(data)
374
+ self._soundpos = self._soundpos + len(data) // (self._nchannels * self._sampwidth)
375
+ return data
376
+
377
+ #
378
+ # Internal methods.
379
+ #
380
+
381
+ def _read_fmt_chunk(self, chunk):
382
+ try:
383
+ wFormatTag, self._nchannels, self._framerate, dwAvgBytesPerSec, wBlockAlign = struct.unpack_from('<HHLLH', chunk.read(14))
384
+ except struct.error:
385
+ raise EOFError from None
386
+ if wFormatTag != WAVE_FORMAT_PCM and wFormatTag != WAVE_FORMAT_EXTENSIBLE:
387
+ raise Error('unknown format: %r' % (wFormatTag,))
388
+ try:
389
+ sampwidth = struct.unpack_from('<H', chunk.read(2))[0]
390
+ except struct.error:
391
+ raise EOFError from None
392
+ if wFormatTag == WAVE_FORMAT_EXTENSIBLE:
393
+ try:
394
+ cbSize, wValidBitsPerSample, dwChannelMask = struct.unpack_from('<HHL', chunk.read(8))
395
+ # Read the entire UUID from the chunk
396
+ SubFormat = chunk.read(16)
397
+ if len(SubFormat) < 16:
398
+ raise EOFError
399
+ except struct.error:
400
+ raise EOFError from None
401
+ if SubFormat != KSDATAFORMAT_SUBTYPE_PCM:
402
+ try:
403
+ import uuid
404
+ subformat_msg = f'unknown extended format: {uuid.UUID(bytes_le=SubFormat)}'
405
+ except Exception:
406
+ subformat_msg = 'unknown extended format'
407
+ raise Error(subformat_msg)
408
+ self._sampwidth = (sampwidth + 7) // 8
409
+ if not self._sampwidth:
410
+ raise Error('bad sample width')
411
+ if not self._nchannels:
412
+ raise Error('bad # of channels')
413
+ self._framesize = self._nchannels * self._sampwidth
414
+ self._comptype = 'NONE'
415
+ self._compname = 'not compressed'
416
+
417
+
418
+ class Wave_write:
419
+ """Variables used in this class:
420
+
421
+ These variables are user settable through appropriate methods
422
+ of this class:
423
+ _file -- the open file with methods write(), close(), tell(), seek()
424
+ set through the __init__() method
425
+ _comptype -- the AIFF-C compression type ('NONE' in AIFF)
426
+ set through the setcomptype() or setparams() method
427
+ _compname -- the human-readable AIFF-C compression type
428
+ set through the setcomptype() or setparams() method
429
+ _nchannels -- the number of audio channels
430
+ set through the setnchannels() or setparams() method
431
+ _sampwidth -- the number of bytes per audio sample
432
+ set through the setsampwidth() or setparams() method
433
+ _framerate -- the sampling frequency
434
+ set through the setframerate() or setparams() method
435
+ _nframes -- the number of audio frames written to the header
436
+ set through the setnframes() or setparams() method
437
+
438
+ These variables are used internally only:
439
+ _datalength -- the size of the audio samples written to the header
440
+ _nframeswritten -- the number of frames actually written
441
+ _datawritten -- the size of the audio samples actually written
442
+ """
443
+
444
+ _file = None
445
+
446
+ def __init__(self, f):
447
+ self._i_opened_the_file = None
448
+ if isinstance(f, str):
449
+ f = builtins.open(f, 'wb')
450
+ self._i_opened_the_file = f
451
+ try:
452
+ self.initfp(f)
453
+ except:
454
+ if self._i_opened_the_file:
455
+ f.close()
456
+ raise
457
+
458
+ def initfp(self, file):
459
+ self._file = file
460
+ self._convert = None
461
+ self._nchannels = 0
462
+ self._sampwidth = 0
463
+ self._framerate = 0
464
+ self._nframes = 0
465
+ self._nframeswritten = 0
466
+ self._datawritten = 0
467
+ self._datalength = 0
468
+ self._headerwritten = False
469
+
470
+ def __del__(self):
471
+ self.close()
472
+
473
+ def __enter__(self):
474
+ return self
475
+
476
+ def __exit__(self, *args):
477
+ self.close()
478
+
479
+ #
480
+ # User visible methods.
481
+ #
482
+ def setnchannels(self, nchannels):
483
+ if self._datawritten:
484
+ raise Error('cannot change parameters after starting to write')
485
+ if nchannels < 1:
486
+ raise Error('bad # of channels')
487
+ self._nchannels = nchannels
488
+
489
+ def getnchannels(self):
490
+ if not self._nchannels:
491
+ raise Error('number of channels not set')
492
+ return self._nchannels
493
+
494
+ def setsampwidth(self, sampwidth):
495
+ if self._datawritten:
496
+ raise Error('cannot change parameters after starting to write')
497
+ if sampwidth < 1 or sampwidth > 4:
498
+ raise Error('bad sample width')
499
+ self._sampwidth = sampwidth
500
+
501
+ def getsampwidth(self):
502
+ if not self._sampwidth:
503
+ raise Error('sample width not set')
504
+ return self._sampwidth
505
+
506
+ def setframerate(self, framerate):
507
+ if self._datawritten:
508
+ raise Error('cannot change parameters after starting to write')
509
+ if framerate <= 0:
510
+ raise Error('bad frame rate')
511
+ self._framerate = int(round(framerate))
512
+
513
+ def getframerate(self):
514
+ if not self._framerate:
515
+ raise Error('frame rate not set')
516
+ return self._framerate
517
+
518
+ def setnframes(self, nframes):
519
+ if self._datawritten:
520
+ raise Error('cannot change parameters after starting to write')
521
+ self._nframes = nframes
522
+
523
+ def getnframes(self):
524
+ return self._nframeswritten
525
+
526
+ def setcomptype(self, comptype, compname):
527
+ if self._datawritten:
528
+ raise Error('cannot change parameters after starting to write')
529
+ if comptype not in ('NONE',):
530
+ raise Error('unsupported compression type')
531
+ self._comptype = comptype
532
+ self._compname = compname
533
+
534
+ def getcomptype(self):
535
+ return self._comptype
536
+
537
+ def getcompname(self):
538
+ return self._compname
539
+
540
+ def setparams(self, params):
541
+ nchannels, sampwidth, framerate, nframes, comptype, compname = params
542
+ if self._datawritten:
543
+ raise Error('cannot change parameters after starting to write')
544
+ self.setnchannels(nchannels)
545
+ self.setsampwidth(sampwidth)
546
+ self.setframerate(framerate)
547
+ self.setnframes(nframes)
548
+ self.setcomptype(comptype, compname)
549
+
550
+ def getparams(self):
551
+ if not self._nchannels or not self._sampwidth or not self._framerate:
552
+ raise Error('not all parameters set')
553
+ return _wave_params(self._nchannels, self._sampwidth, self._framerate,
554
+ self._nframes, self._comptype, self._compname)
555
+
556
+ def setmark(self, id, pos, name):
557
+ import warnings
558
+ warnings._deprecated("Wave_write.setmark", remove=(3, 15))
559
+ raise Error('setmark() not supported')
560
+
561
+ def getmark(self, id):
562
+ import warnings
563
+ warnings._deprecated("Wave_write.getmark", remove=(3, 15))
564
+ raise Error('no marks')
565
+
566
+ def getmarkers(self):
567
+ import warnings
568
+ warnings._deprecated("Wave_write.getmarkers", remove=(3, 15))
569
+ return None
570
+
571
+ def tell(self):
572
+ return self._nframeswritten
573
+
574
+ def writeframesraw(self, data):
575
+ if not isinstance(data, (bytes, bytearray)):
576
+ data = memoryview(data).cast('B')
577
+ self._ensure_header_written(len(data))
578
+ nframes = len(data) // (self._sampwidth * self._nchannels)
579
+ if self._convert:
580
+ data = self._convert(data)
581
+ if self._sampwidth != 1 and sys.byteorder == 'big':
582
+ data = _byteswap(data, self._sampwidth)
583
+ self._file.write(data)
584
+ self._datawritten += len(data)
585
+ self._nframeswritten = self._nframeswritten + nframes
586
+
587
+ def writeframes(self, data):
588
+ self.writeframesraw(data)
589
+ if self._datalength != self._datawritten:
590
+ self._patchheader()
591
+
592
+ def close(self):
593
+ try:
594
+ if self._file:
595
+ self._ensure_header_written(0)
596
+ if self._datalength != self._datawritten:
597
+ self._patchheader()
598
+ self._file.flush()
599
+ finally:
600
+ self._file = None
601
+ file = self._i_opened_the_file
602
+ if file:
603
+ self._i_opened_the_file = None
604
+ file.close()
605
+
606
+ #
607
+ # Internal methods.
608
+ #
609
+
610
+ def _ensure_header_written(self, datasize):
611
+ if not self._headerwritten:
612
+ if not self._nchannels:
613
+ raise Error('# channels not specified')
614
+ if not self._sampwidth:
615
+ raise Error('sample width not specified')
616
+ if not self._framerate:
617
+ raise Error('sampling rate not specified')
618
+ self._write_header(datasize)
619
+
620
+ def _write_header(self, initlength):
621
+ assert not self._headerwritten
622
+ self._file.write(b'RIFF')
623
+ if not self._nframes:
624
+ self._nframes = initlength // (self._nchannels * self._sampwidth)
625
+ self._datalength = self._nframes * self._nchannels * self._sampwidth
626
+ try:
627
+ self._form_length_pos = self._file.tell()
628
+ except (AttributeError, OSError):
629
+ self._form_length_pos = None
630
+ self._file.write(struct.pack('<L4s4sLHHLLHH4s',
631
+ 36 + self._datalength, b'WAVE', b'fmt ', 16,
632
+ WAVE_FORMAT_PCM, self._nchannels, self._framerate,
633
+ self._nchannels * self._framerate * self._sampwidth,
634
+ self._nchannels * self._sampwidth,
635
+ self._sampwidth * 8, b'data'))
636
+ if self._form_length_pos is not None:
637
+ self._data_length_pos = self._file.tell()
638
+ self._file.write(struct.pack('<L', self._datalength))
639
+ self._headerwritten = True
640
+
641
+ def _patchheader(self):
642
+ assert self._headerwritten
643
+ if self._datawritten == self._datalength:
644
+ return
645
+ curpos = self._file.tell()
646
+ self._file.seek(self._form_length_pos, 0)
647
+ self._file.write(struct.pack('<L', 36 + self._datawritten))
648
+ self._file.seek(self._data_length_pos, 0)
649
+ self._file.write(struct.pack('<L', self._datawritten))
650
+ self._file.seek(curpos, 0)
651
+ self._datalength = self._datawritten
652
+
653
+
654
+ def open(f, mode=None):
655
+ if mode is None:
656
+ if hasattr(f, 'mode'):
657
+ mode = f.mode
658
+ else:
659
+ mode = 'rb'
660
+ if mode in ('r', 'rb'):
661
+ return Wave_read(f)
662
+ elif mode in ('w', 'wb'):
663
+ return Wave_write(f)
664
+ else:
665
+ raise Error("mode must be 'r', 'rb', 'w', or 'wb'")