@steerable/runtime-darwin-arm64 0.0.0-stage → 0.9.0

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 (2192) hide show
  1. package/bin/steerable-egress-proxy +0 -0
  2. package/package.json +25 -4
  3. package/python-runtime/manifest.json +8 -0
  4. package/python-runtime/python/bin/2to3 +7 -0
  5. package/python-runtime/python/bin/2to3-3.12 +7 -0
  6. package/python-runtime/python/bin/cffi-gen-src +6 -0
  7. package/python-runtime/python/bin/dotenv +6 -0
  8. package/python-runtime/python/bin/httpx +6 -0
  9. package/python-runtime/python/bin/idle3 +7 -0
  10. package/python-runtime/python/bin/idle3.12 +7 -0
  11. package/python-runtime/python/bin/idna +6 -0
  12. package/python-runtime/python/bin/jsonschema +6 -0
  13. package/python-runtime/python/bin/mcp +6 -0
  14. package/python-runtime/python/bin/pydoc3 +7 -0
  15. package/python-runtime/python/bin/pydoc3.12 +7 -0
  16. package/python-runtime/python/bin/python +0 -0
  17. package/python-runtime/python/bin/python3 +0 -0
  18. package/python-runtime/python/bin/python3-config +76 -0
  19. package/python-runtime/python/bin/python3.12 +0 -0
  20. package/python-runtime/python/bin/python3.12-config +76 -0
  21. package/python-runtime/python/bin/steerable-sidecar +6 -0
  22. package/python-runtime/python/bin/steerable-sidecar-acp +6 -0
  23. package/python-runtime/python/bin/steerable-sidecar-headless +6 -0
  24. package/python-runtime/python/bin/uvicorn +6 -0
  25. package/python-runtime/python/include/python3.12/Python.h +109 -0
  26. package/python-runtime/python/include/python3.12/abstract.h +899 -0
  27. package/python-runtime/python/include/python3.12/bltinmodule.h +14 -0
  28. package/python-runtime/python/include/python3.12/boolobject.h +42 -0
  29. package/python-runtime/python/include/python3.12/bytearrayobject.h +44 -0
  30. package/python-runtime/python/include/python3.12/bytesobject.h +69 -0
  31. package/python-runtime/python/include/python3.12/ceval.h +168 -0
  32. package/python-runtime/python/include/python3.12/codecs.h +248 -0
  33. package/python-runtime/python/include/python3.12/compile.h +22 -0
  34. package/python-runtime/python/include/python3.12/complexobject.h +30 -0
  35. package/python-runtime/python/include/python3.12/cpython/abstract.h +206 -0
  36. package/python-runtime/python/include/python3.12/cpython/bytearrayobject.h +34 -0
  37. package/python-runtime/python/include/python3.12/cpython/bytesobject.h +133 -0
  38. package/python-runtime/python/include/python3.12/cpython/cellobject.h +44 -0
  39. package/python-runtime/python/include/python3.12/cpython/ceval.h +35 -0
  40. package/python-runtime/python/include/python3.12/cpython/classobject.h +71 -0
  41. package/python-runtime/python/include/python3.12/cpython/code.h +389 -0
  42. package/python-runtime/python/include/python3.12/cpython/compile.h +69 -0
  43. package/python-runtime/python/include/python3.12/cpython/complexobject.h +44 -0
  44. package/python-runtime/python/include/python3.12/cpython/context.h +78 -0
  45. package/python-runtime/python/include/python3.12/cpython/descrobject.h +64 -0
  46. package/python-runtime/python/include/python3.12/cpython/dictobject.h +118 -0
  47. package/python-runtime/python/include/python3.12/cpython/fileobject.h +19 -0
  48. package/python-runtime/python/include/python3.12/cpython/fileutils.h +8 -0
  49. package/python-runtime/python/include/python3.12/cpython/floatobject.h +27 -0
  50. package/python-runtime/python/include/python3.12/cpython/frameobject.h +29 -0
  51. package/python-runtime/python/include/python3.12/cpython/funcobject.h +190 -0
  52. package/python-runtime/python/include/python3.12/cpython/genobject.h +89 -0
  53. package/python-runtime/python/include/python3.12/cpython/import.h +46 -0
  54. package/python-runtime/python/include/python3.12/cpython/initconfig.h +256 -0
  55. package/python-runtime/python/include/python3.12/cpython/interpreteridobject.h +11 -0
  56. package/python-runtime/python/include/python3.12/cpython/listobject.h +47 -0
  57. package/python-runtime/python/include/python3.12/cpython/longintrepr.h +133 -0
  58. package/python-runtime/python/include/python3.12/cpython/longobject.h +100 -0
  59. package/python-runtime/python/include/python3.12/cpython/memoryobject.h +52 -0
  60. package/python-runtime/python/include/python3.12/cpython/methodobject.h +66 -0
  61. package/python-runtime/python/include/python3.12/cpython/modsupport.h +109 -0
  62. package/python-runtime/python/include/python3.12/cpython/object.h +575 -0
  63. package/python-runtime/python/include/python3.12/cpython/objimpl.h +95 -0
  64. package/python-runtime/python/include/python3.12/cpython/odictobject.h +43 -0
  65. package/python-runtime/python/include/python3.12/cpython/picklebufobject.h +31 -0
  66. package/python-runtime/python/include/python3.12/cpython/pthread_stubs.h +88 -0
  67. package/python-runtime/python/include/python3.12/cpython/pyctype.h +39 -0
  68. package/python-runtime/python/include/python3.12/cpython/pydebug.h +38 -0
  69. package/python-runtime/python/include/python3.12/cpython/pyerrors.h +178 -0
  70. package/python-runtime/python/include/python3.12/cpython/pyfpe.h +15 -0
  71. package/python-runtime/python/include/python3.12/cpython/pyframe.h +35 -0
  72. package/python-runtime/python/include/python3.12/cpython/pylifecycle.h +111 -0
  73. package/python-runtime/python/include/python3.12/cpython/pymem.h +98 -0
  74. package/python-runtime/python/include/python3.12/cpython/pystate.h +456 -0
  75. package/python-runtime/python/include/python3.12/cpython/pythonrun.h +121 -0
  76. package/python-runtime/python/include/python3.12/cpython/pythread.h +42 -0
  77. package/python-runtime/python/include/python3.12/cpython/pytime.h +331 -0
  78. package/python-runtime/python/include/python3.12/cpython/setobject.h +72 -0
  79. package/python-runtime/python/include/python3.12/cpython/sysmodule.h +16 -0
  80. package/python-runtime/python/include/python3.12/cpython/traceback.h +16 -0
  81. package/python-runtime/python/include/python3.12/cpython/tupleobject.h +39 -0
  82. package/python-runtime/python/include/python3.12/cpython/unicodeobject.h +976 -0
  83. package/python-runtime/python/include/python3.12/cpython/warnings.h +20 -0
  84. package/python-runtime/python/include/python3.12/cpython/weakrefobject.h +56 -0
  85. package/python-runtime/python/include/python3.12/datetime.h +267 -0
  86. package/python-runtime/python/include/python3.12/descrobject.h +100 -0
  87. package/python-runtime/python/include/python3.12/dictobject.h +97 -0
  88. package/python-runtime/python/include/python3.12/dynamic_annotations.h +499 -0
  89. package/python-runtime/python/include/python3.12/enumobject.h +17 -0
  90. package/python-runtime/python/include/python3.12/errcode.h +38 -0
  91. package/python-runtime/python/include/python3.12/exports.h +36 -0
  92. package/python-runtime/python/include/python3.12/fileobject.h +49 -0
  93. package/python-runtime/python/include/python3.12/fileutils.h +26 -0
  94. package/python-runtime/python/include/python3.12/floatobject.h +54 -0
  95. package/python-runtime/python/include/python3.12/frameobject.h +20 -0
  96. package/python-runtime/python/include/python3.12/genericaliasobject.h +14 -0
  97. package/python-runtime/python/include/python3.12/import.h +98 -0
  98. package/python-runtime/python/include/python3.12/internal/pycore_abstract.h +25 -0
  99. package/python-runtime/python/include/python3.12/internal/pycore_asdl.h +112 -0
  100. package/python-runtime/python/include/python3.12/internal/pycore_ast.h +922 -0
  101. package/python-runtime/python/include/python3.12/internal/pycore_ast_state.h +265 -0
  102. package/python-runtime/python/include/python3.12/internal/pycore_atexit.h +57 -0
  103. package/python-runtime/python/include/python3.12/internal/pycore_atomic.h +557 -0
  104. package/python-runtime/python/include/python3.12/internal/pycore_atomic_funcs.h +94 -0
  105. package/python-runtime/python/include/python3.12/internal/pycore_bitutils.h +186 -0
  106. package/python-runtime/python/include/python3.12/internal/pycore_blocks_output_buffer.h +317 -0
  107. package/python-runtime/python/include/python3.12/internal/pycore_bytes_methods.h +73 -0
  108. package/python-runtime/python/include/python3.12/internal/pycore_bytesobject.h +47 -0
  109. package/python-runtime/python/include/python3.12/internal/pycore_call.h +133 -0
  110. package/python-runtime/python/include/python3.12/internal/pycore_ceval.h +164 -0
  111. package/python-runtime/python/include/python3.12/internal/pycore_ceval_state.h +103 -0
  112. package/python-runtime/python/include/python3.12/internal/pycore_code.h +496 -0
  113. package/python-runtime/python/include/python3.12/internal/pycore_compile.h +118 -0
  114. package/python-runtime/python/include/python3.12/internal/pycore_condvar.h +99 -0
  115. package/python-runtime/python/include/python3.12/internal/pycore_context.h +71 -0
  116. package/python-runtime/python/include/python3.12/internal/pycore_descrobject.h +26 -0
  117. package/python-runtime/python/include/python3.12/internal/pycore_dict.h +199 -0
  118. package/python-runtime/python/include/python3.12/internal/pycore_dict_state.h +50 -0
  119. package/python-runtime/python/include/python3.12/internal/pycore_dtoa.h +69 -0
  120. package/python-runtime/python/include/python3.12/internal/pycore_emscripten_signal.h +25 -0
  121. package/python-runtime/python/include/python3.12/internal/pycore_exceptions.h +37 -0
  122. package/python-runtime/python/include/python3.12/internal/pycore_faulthandler.h +99 -0
  123. package/python-runtime/python/include/python3.12/internal/pycore_fileutils.h +292 -0
  124. package/python-runtime/python/include/python3.12/internal/pycore_fileutils_windows.h +98 -0
  125. package/python-runtime/python/include/python3.12/internal/pycore_floatobject.h +71 -0
  126. package/python-runtime/python/include/python3.12/internal/pycore_flowgraph.h +120 -0
  127. package/python-runtime/python/include/python3.12/internal/pycore_format.h +27 -0
  128. package/python-runtime/python/include/python3.12/internal/pycore_frame.h +283 -0
  129. package/python-runtime/python/include/python3.12/internal/pycore_function.h +26 -0
  130. package/python-runtime/python/include/python3.12/internal/pycore_gc.h +211 -0
  131. package/python-runtime/python/include/python3.12/internal/pycore_genobject.h +49 -0
  132. package/python-runtime/python/include/python3.12/internal/pycore_getopt.h +22 -0
  133. package/python-runtime/python/include/python3.12/internal/pycore_gil.h +50 -0
  134. package/python-runtime/python/include/python3.12/internal/pycore_global_objects.h +105 -0
  135. package/python-runtime/python/include/python3.12/internal/pycore_global_objects_fini_generated.h +1517 -0
  136. package/python-runtime/python/include/python3.12/internal/pycore_global_strings.h +777 -0
  137. package/python-runtime/python/include/python3.12/internal/pycore_hamt.h +134 -0
  138. package/python-runtime/python/include/python3.12/internal/pycore_hashtable.h +149 -0
  139. package/python-runtime/python/include/python3.12/internal/pycore_import.h +183 -0
  140. package/python-runtime/python/include/python3.12/internal/pycore_initconfig.h +179 -0
  141. package/python-runtime/python/include/python3.12/internal/pycore_instruments.h +106 -0
  142. package/python-runtime/python/include/python3.12/internal/pycore_interp.h +275 -0
  143. package/python-runtime/python/include/python3.12/internal/pycore_intrinsics.h +32 -0
  144. package/python-runtime/python/include/python3.12/internal/pycore_list.h +83 -0
  145. package/python-runtime/python/include/python3.12/internal/pycore_long.h +258 -0
  146. package/python-runtime/python/include/python3.12/internal/pycore_memoryobject.h +18 -0
  147. package/python-runtime/python/include/python3.12/internal/pycore_moduleobject.h +45 -0
  148. package/python-runtime/python/include/python3.12/internal/pycore_namespace.h +20 -0
  149. package/python-runtime/python/include/python3.12/internal/pycore_object.h +455 -0
  150. package/python-runtime/python/include/python3.12/internal/pycore_object_state.h +42 -0
  151. package/python-runtime/python/include/python3.12/internal/pycore_obmalloc.h +700 -0
  152. package/python-runtime/python/include/python3.12/internal/pycore_obmalloc_init.h +73 -0
  153. package/python-runtime/python/include/python3.12/internal/pycore_opcode.h +587 -0
  154. package/python-runtime/python/include/python3.12/internal/pycore_opcode_utils.h +92 -0
  155. package/python-runtime/python/include/python3.12/internal/pycore_parser.h +66 -0
  156. package/python-runtime/python/include/python3.12/internal/pycore_pathconfig.h +24 -0
  157. package/python-runtime/python/include/python3.12/internal/pycore_pyarena.h +64 -0
  158. package/python-runtime/python/include/python3.12/internal/pycore_pyerrors.h +129 -0
  159. package/python-runtime/python/include/python3.12/internal/pycore_pyhash.h +40 -0
  160. package/python-runtime/python/include/python3.12/internal/pycore_pylifecycle.h +99 -0
  161. package/python-runtime/python/include/python3.12/internal/pycore_pymath.h +205 -0
  162. package/python-runtime/python/include/python3.12/internal/pycore_pymem.h +98 -0
  163. package/python-runtime/python/include/python3.12/internal/pycore_pymem_init.h +85 -0
  164. package/python-runtime/python/include/python3.12/internal/pycore_pystate.h +180 -0
  165. package/python-runtime/python/include/python3.12/internal/pycore_pythread.h +81 -0
  166. package/python-runtime/python/include/python3.12/internal/pycore_range.h +21 -0
  167. package/python-runtime/python/include/python3.12/internal/pycore_runtime.h +235 -0
  168. package/python-runtime/python/include/python3.12/internal/pycore_runtime_init.h +188 -0
  169. package/python-runtime/python/include/python3.12/internal/pycore_runtime_init_generated.h +1511 -0
  170. package/python-runtime/python/include/python3.12/internal/pycore_signal.h +98 -0
  171. package/python-runtime/python/include/python3.12/internal/pycore_sliceobject.h +22 -0
  172. package/python-runtime/python/include/python3.12/internal/pycore_strhex.h +36 -0
  173. package/python-runtime/python/include/python3.12/internal/pycore_structseq.h +39 -0
  174. package/python-runtime/python/include/python3.12/internal/pycore_symtable.h +160 -0
  175. package/python-runtime/python/include/python3.12/internal/pycore_sysmodule.h +34 -0
  176. package/python-runtime/python/include/python3.12/internal/pycore_time.h +25 -0
  177. package/python-runtime/python/include/python3.12/internal/pycore_token.h +108 -0
  178. package/python-runtime/python/include/python3.12/internal/pycore_traceback.h +101 -0
  179. package/python-runtime/python/include/python3.12/internal/pycore_tracemalloc.h +123 -0
  180. package/python-runtime/python/include/python3.12/internal/pycore_tuple.h +79 -0
  181. package/python-runtime/python/include/python3.12/internal/pycore_typeobject.h +151 -0
  182. package/python-runtime/python/include/python3.12/internal/pycore_typevarobject.h +24 -0
  183. package/python-runtime/python/include/python3.12/internal/pycore_ucnhash.h +34 -0
  184. package/python-runtime/python/include/python3.12/internal/pycore_unicodeobject.h +86 -0
  185. package/python-runtime/python/include/python3.12/internal/pycore_unicodeobject_generated.h +2832 -0
  186. package/python-runtime/python/include/python3.12/internal/pycore_unionobject.h +23 -0
  187. package/python-runtime/python/include/python3.12/internal/pycore_warnings.h +29 -0
  188. package/python-runtime/python/include/python3.12/interpreteridobject.h +17 -0
  189. package/python-runtime/python/include/python3.12/intrcheck.h +30 -0
  190. package/python-runtime/python/include/python3.12/iterobject.h +27 -0
  191. package/python-runtime/python/include/python3.12/listobject.h +52 -0
  192. package/python-runtime/python/include/python3.12/longobject.h +108 -0
  193. package/python-runtime/python/include/python3.12/marshal.h +31 -0
  194. package/python-runtime/python/include/python3.12/memoryobject.h +34 -0
  195. package/python-runtime/python/include/python3.12/methodobject.h +132 -0
  196. package/python-runtime/python/include/python3.12/modsupport.h +168 -0
  197. package/python-runtime/python/include/python3.12/moduleobject.h +119 -0
  198. package/python-runtime/python/include/python3.12/object.h +993 -0
  199. package/python-runtime/python/include/python3.12/objimpl.h +234 -0
  200. package/python-runtime/python/include/python3.12/opcode.h +271 -0
  201. package/python-runtime/python/include/python3.12/osdefs.h +51 -0
  202. package/python-runtime/python/include/python3.12/osmodule.h +17 -0
  203. package/python-runtime/python/include/python3.12/patchlevel.h +35 -0
  204. package/python-runtime/python/include/python3.12/py_curses.h +99 -0
  205. package/python-runtime/python/include/python3.12/pybuffer.h +145 -0
  206. package/python-runtime/python/include/python3.12/pycapsule.h +59 -0
  207. package/python-runtime/python/include/python3.12/pyconfig.h +1943 -0
  208. package/python-runtime/python/include/python3.12/pydtrace.h +59 -0
  209. package/python-runtime/python/include/python3.12/pyerrors.h +337 -0
  210. package/python-runtime/python/include/python3.12/pyexpat.h +62 -0
  211. package/python-runtime/python/include/python3.12/pyframe.h +26 -0
  212. package/python-runtime/python/include/python3.12/pyhash.h +144 -0
  213. package/python-runtime/python/include/python3.12/pylifecycle.h +78 -0
  214. package/python-runtime/python/include/python3.12/pymacconfig.h +99 -0
  215. package/python-runtime/python/include/python3.12/pymacro.h +172 -0
  216. package/python-runtime/python/include/python3.12/pymath.h +62 -0
  217. package/python-runtime/python/include/python3.12/pymem.h +104 -0
  218. package/python-runtime/python/include/python3.12/pyport.h +782 -0
  219. package/python-runtime/python/include/python3.12/pystate.h +132 -0
  220. package/python-runtime/python/include/python3.12/pystats.h +110 -0
  221. package/python-runtime/python/include/python3.12/pystrcmp.h +23 -0
  222. package/python-runtime/python/include/python3.12/pystrtod.h +46 -0
  223. package/python-runtime/python/include/python3.12/pythonrun.h +49 -0
  224. package/python-runtime/python/include/python3.12/pythread.h +135 -0
  225. package/python-runtime/python/include/python3.12/pytypedefs.h +30 -0
  226. package/python-runtime/python/include/python3.12/rangeobject.h +27 -0
  227. package/python-runtime/python/include/python3.12/setobject.h +49 -0
  228. package/python-runtime/python/include/python3.12/sliceobject.h +65 -0
  229. package/python-runtime/python/include/python3.12/structmember.h +56 -0
  230. package/python-runtime/python/include/python3.12/structseq.h +49 -0
  231. package/python-runtime/python/include/python3.12/sysmodule.h +54 -0
  232. package/python-runtime/python/include/python3.12/traceback.h +26 -0
  233. package/python-runtime/python/include/python3.12/tracemalloc.h +77 -0
  234. package/python-runtime/python/include/python3.12/tupleobject.h +46 -0
  235. package/python-runtime/python/include/python3.12/typeslots.h +88 -0
  236. package/python-runtime/python/include/python3.12/unicodeobject.h +1020 -0
  237. package/python-runtime/python/include/python3.12/warnings.h +45 -0
  238. package/python-runtime/python/include/python3.12/weakrefobject.h +42 -0
  239. package/python-runtime/python/lib/itcl4.3.5/itcl.tcl +151 -0
  240. package/python-runtime/python/lib/itcl4.3.5/itclConfig.sh +67 -0
  241. package/python-runtime/python/lib/itcl4.3.5/itclHullCmds.tcl +562 -0
  242. package/python-runtime/python/lib/itcl4.3.5/itclWidget.tcl +447 -0
  243. package/python-runtime/python/lib/itcl4.3.5/libitcl4.3.5.dylib +0 -0
  244. package/python-runtime/python/lib/itcl4.3.5/libitclstub.a +0 -0
  245. package/python-runtime/python/lib/itcl4.3.5/libitclstub4.3.5.a +0 -0
  246. package/python-runtime/python/lib/itcl4.3.5/libtcl9itcl4.3.5.dylib +0 -0
  247. package/python-runtime/python/lib/itcl4.3.5/pkgIndex.tcl +14 -0
  248. package/python-runtime/python/lib/libpython3.12.dylib +0 -0
  249. package/python-runtime/python/lib/libtcl9.0.dylib +0 -0
  250. package/python-runtime/python/lib/libtcl9tk9.0.dylib +0 -0
  251. package/python-runtime/python/lib/pkgconfig/python-3.12-embed.pc +13 -0
  252. package/python-runtime/python/lib/pkgconfig/python-3.12.pc +13 -0
  253. package/python-runtime/python/lib/pkgconfig/python3-embed.pc +13 -0
  254. package/python-runtime/python/lib/pkgconfig/python3.pc +13 -0
  255. package/python-runtime/python/lib/python3.12/LICENSE.txt +279 -0
  256. package/python-runtime/python/lib/python3.12/__future__.py +147 -0
  257. package/python-runtime/python/lib/python3.12/__hello__.py +16 -0
  258. package/python-runtime/python/lib/python3.12/__phello__/__init__.py +7 -0
  259. package/python-runtime/python/lib/python3.12/__phello__/spam.py +7 -0
  260. package/python-runtime/python/lib/python3.12/_aix_support.py +108 -0
  261. package/python-runtime/python/lib/python3.12/_collections_abc.py +1173 -0
  262. package/python-runtime/python/lib/python3.12/_compat_pickle.py +252 -0
  263. package/python-runtime/python/lib/python3.12/_compression.py +162 -0
  264. package/python-runtime/python/lib/python3.12/_markupbase.py +396 -0
  265. package/python-runtime/python/lib/python3.12/_osx_support.py +579 -0
  266. package/python-runtime/python/lib/python3.12/_py_abc.py +147 -0
  267. package/python-runtime/python/lib/python3.12/_pydatetime.py +2643 -0
  268. package/python-runtime/python/lib/python3.12/_pydecimal.py +6339 -0
  269. package/python-runtime/python/lib/python3.12/_pyio.py +2698 -0
  270. package/python-runtime/python/lib/python3.12/_pylong.py +329 -0
  271. package/python-runtime/python/lib/python3.12/_sitebuiltins.py +103 -0
  272. package/python-runtime/python/lib/python3.12/_strptime.py +664 -0
  273. package/python-runtime/python/lib/python3.12/_sysconfigdata__darwin_darwin.py +984 -0
  274. package/python-runtime/python/lib/python3.12/_threading_local.py +242 -0
  275. package/python-runtime/python/lib/python3.12/_weakrefset.py +205 -0
  276. package/python-runtime/python/lib/python3.12/abc.py +188 -0
  277. package/python-runtime/python/lib/python3.12/aifc.py +984 -0
  278. package/python-runtime/python/lib/python3.12/antigravity.py +17 -0
  279. package/python-runtime/python/lib/python3.12/argparse.py +2650 -0
  280. package/python-runtime/python/lib/python3.12/ast.py +1840 -0
  281. package/python-runtime/python/lib/python3.12/asyncio/__init__.py +47 -0
  282. package/python-runtime/python/lib/python3.12/asyncio/__main__.py +128 -0
  283. package/python-runtime/python/lib/python3.12/asyncio/base_events.py +2024 -0
  284. package/python-runtime/python/lib/python3.12/asyncio/base_futures.py +67 -0
  285. package/python-runtime/python/lib/python3.12/asyncio/base_subprocess.py +285 -0
  286. package/python-runtime/python/lib/python3.12/asyncio/base_tasks.py +94 -0
  287. package/python-runtime/python/lib/python3.12/asyncio/constants.py +41 -0
  288. package/python-runtime/python/lib/python3.12/asyncio/coroutines.py +109 -0
  289. package/python-runtime/python/lib/python3.12/asyncio/events.py +868 -0
  290. package/python-runtime/python/lib/python3.12/asyncio/exceptions.py +62 -0
  291. package/python-runtime/python/lib/python3.12/asyncio/format_helpers.py +76 -0
  292. package/python-runtime/python/lib/python3.12/asyncio/futures.py +430 -0
  293. package/python-runtime/python/lib/python3.12/asyncio/locks.py +586 -0
  294. package/python-runtime/python/lib/python3.12/asyncio/log.py +7 -0
  295. package/python-runtime/python/lib/python3.12/asyncio/mixins.py +21 -0
  296. package/python-runtime/python/lib/python3.12/asyncio/proactor_events.py +897 -0
  297. package/python-runtime/python/lib/python3.12/asyncio/protocols.py +216 -0
  298. package/python-runtime/python/lib/python3.12/asyncio/queues.py +244 -0
  299. package/python-runtime/python/lib/python3.12/asyncio/runners.py +216 -0
  300. package/python-runtime/python/lib/python3.12/asyncio/selector_events.py +1324 -0
  301. package/python-runtime/python/lib/python3.12/asyncio/sslproto.py +929 -0
  302. package/python-runtime/python/lib/python3.12/asyncio/staggered.py +174 -0
  303. package/python-runtime/python/lib/python3.12/asyncio/streams.py +770 -0
  304. package/python-runtime/python/lib/python3.12/asyncio/subprocess.py +229 -0
  305. package/python-runtime/python/lib/python3.12/asyncio/taskgroups.py +268 -0
  306. package/python-runtime/python/lib/python3.12/asyncio/tasks.py +1065 -0
  307. package/python-runtime/python/lib/python3.12/asyncio/threads.py +25 -0
  308. package/python-runtime/python/lib/python3.12/asyncio/timeouts.py +168 -0
  309. package/python-runtime/python/lib/python3.12/asyncio/transports.py +335 -0
  310. package/python-runtime/python/lib/python3.12/asyncio/trsock.py +98 -0
  311. package/python-runtime/python/lib/python3.12/asyncio/unix_events.py +1500 -0
  312. package/python-runtime/python/lib/python3.12/asyncio/windows_events.py +901 -0
  313. package/python-runtime/python/lib/python3.12/asyncio/windows_utils.py +173 -0
  314. package/python-runtime/python/lib/python3.12/base64.py +586 -0
  315. package/python-runtime/python/lib/python3.12/bdb.py +920 -0
  316. package/python-runtime/python/lib/python3.12/bisect.py +118 -0
  317. package/python-runtime/python/lib/python3.12/bz2.py +344 -0
  318. package/python-runtime/python/lib/python3.12/cProfile.py +195 -0
  319. package/python-runtime/python/lib/python3.12/calendar.py +808 -0
  320. package/python-runtime/python/lib/python3.12/cgi.py +1014 -0
  321. package/python-runtime/python/lib/python3.12/cgitb.py +332 -0
  322. package/python-runtime/python/lib/python3.12/chunk.py +173 -0
  323. package/python-runtime/python/lib/python3.12/cmd.py +401 -0
  324. package/python-runtime/python/lib/python3.12/code.py +324 -0
  325. package/python-runtime/python/lib/python3.12/codecs.py +1129 -0
  326. package/python-runtime/python/lib/python3.12/codeop.py +161 -0
  327. package/python-runtime/python/lib/python3.12/collections/__init__.py +1592 -0
  328. package/python-runtime/python/lib/python3.12/collections/abc.py +3 -0
  329. package/python-runtime/python/lib/python3.12/colorsys.py +166 -0
  330. package/python-runtime/python/lib/python3.12/compileall.py +469 -0
  331. package/python-runtime/python/lib/python3.12/concurrent/__init__.py +1 -0
  332. package/python-runtime/python/lib/python3.12/concurrent/futures/__init__.py +54 -0
  333. package/python-runtime/python/lib/python3.12/concurrent/futures/_base.py +654 -0
  334. package/python-runtime/python/lib/python3.12/concurrent/futures/process.py +876 -0
  335. package/python-runtime/python/lib/python3.12/concurrent/futures/thread.py +240 -0
  336. package/python-runtime/python/lib/python3.12/configparser.py +1333 -0
  337. package/python-runtime/python/lib/python3.12/contextlib.py +800 -0
  338. package/python-runtime/python/lib/python3.12/contextvars.py +4 -0
  339. package/python-runtime/python/lib/python3.12/copy.py +292 -0
  340. package/python-runtime/python/lib/python3.12/copyreg.py +217 -0
  341. package/python-runtime/python/lib/python3.12/crypt.py +124 -0
  342. package/python-runtime/python/lib/python3.12/csv.py +451 -0
  343. package/python-runtime/python/lib/python3.12/ctypes/__init__.py +582 -0
  344. package/python-runtime/python/lib/python3.12/ctypes/_aix.py +327 -0
  345. package/python-runtime/python/lib/python3.12/ctypes/_endian.py +78 -0
  346. package/python-runtime/python/lib/python3.12/ctypes/macholib/README.ctypes +7 -0
  347. package/python-runtime/python/lib/python3.12/ctypes/macholib/__init__.py +9 -0
  348. package/python-runtime/python/lib/python3.12/ctypes/macholib/dyld.py +165 -0
  349. package/python-runtime/python/lib/python3.12/ctypes/macholib/dylib.py +42 -0
  350. package/python-runtime/python/lib/python3.12/ctypes/macholib/fetch_macholib +2 -0
  351. package/python-runtime/python/lib/python3.12/ctypes/macholib/fetch_macholib.bat +1 -0
  352. package/python-runtime/python/lib/python3.12/ctypes/macholib/framework.py +42 -0
  353. package/python-runtime/python/lib/python3.12/ctypes/util.py +379 -0
  354. package/python-runtime/python/lib/python3.12/ctypes/wintypes.py +202 -0
  355. package/python-runtime/python/lib/python3.12/curses/__init__.py +101 -0
  356. package/python-runtime/python/lib/python3.12/curses/ascii.py +99 -0
  357. package/python-runtime/python/lib/python3.12/curses/has_key.py +192 -0
  358. package/python-runtime/python/lib/python3.12/curses/panel.py +6 -0
  359. package/python-runtime/python/lib/python3.12/curses/textpad.py +204 -0
  360. package/python-runtime/python/lib/python3.12/dataclasses.py +1588 -0
  361. package/python-runtime/python/lib/python3.12/datetime.py +9 -0
  362. package/python-runtime/python/lib/python3.12/dbm/__init__.py +190 -0
  363. package/python-runtime/python/lib/python3.12/dbm/dumb.py +317 -0
  364. package/python-runtime/python/lib/python3.12/dbm/gnu.py +3 -0
  365. package/python-runtime/python/lib/python3.12/dbm/ndbm.py +3 -0
  366. package/python-runtime/python/lib/python3.12/decimal.py +108 -0
  367. package/python-runtime/python/lib/python3.12/difflib.py +2056 -0
  368. package/python-runtime/python/lib/python3.12/dis.py +805 -0
  369. package/python-runtime/python/lib/python3.12/doctest.py +2845 -0
  370. package/python-runtime/python/lib/python3.12/email/__init__.py +61 -0
  371. package/python-runtime/python/lib/python3.12/email/_encoded_words.py +233 -0
  372. package/python-runtime/python/lib/python3.12/email/_header_value_parser.py +3108 -0
  373. package/python-runtime/python/lib/python3.12/email/_parseaddr.py +557 -0
  374. package/python-runtime/python/lib/python3.12/email/_policybase.py +382 -0
  375. package/python-runtime/python/lib/python3.12/email/architecture.rst +216 -0
  376. package/python-runtime/python/lib/python3.12/email/base64mime.py +115 -0
  377. package/python-runtime/python/lib/python3.12/email/charset.py +398 -0
  378. package/python-runtime/python/lib/python3.12/email/contentmanager.py +251 -0
  379. package/python-runtime/python/lib/python3.12/email/encoders.py +65 -0
  380. package/python-runtime/python/lib/python3.12/email/errors.py +117 -0
  381. package/python-runtime/python/lib/python3.12/email/feedparser.py +534 -0
  382. package/python-runtime/python/lib/python3.12/email/generator.py +530 -0
  383. package/python-runtime/python/lib/python3.12/email/header.py +573 -0
  384. package/python-runtime/python/lib/python3.12/email/headerregistry.py +604 -0
  385. package/python-runtime/python/lib/python3.12/email/iterators.py +68 -0
  386. package/python-runtime/python/lib/python3.12/email/message.py +1215 -0
  387. package/python-runtime/python/lib/python3.12/email/mime/__init__.py +0 -0
  388. package/python-runtime/python/lib/python3.12/email/mime/application.py +37 -0
  389. package/python-runtime/python/lib/python3.12/email/mime/audio.py +100 -0
  390. package/python-runtime/python/lib/python3.12/email/mime/base.py +29 -0
  391. package/python-runtime/python/lib/python3.12/email/mime/image.py +152 -0
  392. package/python-runtime/python/lib/python3.12/email/mime/message.py +33 -0
  393. package/python-runtime/python/lib/python3.12/email/mime/multipart.py +47 -0
  394. package/python-runtime/python/lib/python3.12/email/mime/nonmultipart.py +21 -0
  395. package/python-runtime/python/lib/python3.12/email/mime/text.py +40 -0
  396. package/python-runtime/python/lib/python3.12/email/parser.py +127 -0
  397. package/python-runtime/python/lib/python3.12/email/policy.py +232 -0
  398. package/python-runtime/python/lib/python3.12/email/quoprimime.py +300 -0
  399. package/python-runtime/python/lib/python3.12/email/utils.py +486 -0
  400. package/python-runtime/python/lib/python3.12/encodings/__init__.py +174 -0
  401. package/python-runtime/python/lib/python3.12/encodings/aliases.py +551 -0
  402. package/python-runtime/python/lib/python3.12/encodings/ascii.py +50 -0
  403. package/python-runtime/python/lib/python3.12/encodings/base64_codec.py +55 -0
  404. package/python-runtime/python/lib/python3.12/encodings/big5.py +39 -0
  405. package/python-runtime/python/lib/python3.12/encodings/big5hkscs.py +39 -0
  406. package/python-runtime/python/lib/python3.12/encodings/bz2_codec.py +78 -0
  407. package/python-runtime/python/lib/python3.12/encodings/charmap.py +69 -0
  408. package/python-runtime/python/lib/python3.12/encodings/cp037.py +307 -0
  409. package/python-runtime/python/lib/python3.12/encodings/cp1006.py +307 -0
  410. package/python-runtime/python/lib/python3.12/encodings/cp1026.py +307 -0
  411. package/python-runtime/python/lib/python3.12/encodings/cp1125.py +698 -0
  412. package/python-runtime/python/lib/python3.12/encodings/cp1140.py +307 -0
  413. package/python-runtime/python/lib/python3.12/encodings/cp1250.py +307 -0
  414. package/python-runtime/python/lib/python3.12/encodings/cp1251.py +307 -0
  415. package/python-runtime/python/lib/python3.12/encodings/cp1252.py +307 -0
  416. package/python-runtime/python/lib/python3.12/encodings/cp1253.py +307 -0
  417. package/python-runtime/python/lib/python3.12/encodings/cp1254.py +307 -0
  418. package/python-runtime/python/lib/python3.12/encodings/cp1255.py +307 -0
  419. package/python-runtime/python/lib/python3.12/encodings/cp1256.py +307 -0
  420. package/python-runtime/python/lib/python3.12/encodings/cp1257.py +307 -0
  421. package/python-runtime/python/lib/python3.12/encodings/cp1258.py +307 -0
  422. package/python-runtime/python/lib/python3.12/encodings/cp273.py +307 -0
  423. package/python-runtime/python/lib/python3.12/encodings/cp424.py +307 -0
  424. package/python-runtime/python/lib/python3.12/encodings/cp437.py +698 -0
  425. package/python-runtime/python/lib/python3.12/encodings/cp500.py +307 -0
  426. package/python-runtime/python/lib/python3.12/encodings/cp720.py +309 -0
  427. package/python-runtime/python/lib/python3.12/encodings/cp737.py +698 -0
  428. package/python-runtime/python/lib/python3.12/encodings/cp775.py +697 -0
  429. package/python-runtime/python/lib/python3.12/encodings/cp850.py +698 -0
  430. package/python-runtime/python/lib/python3.12/encodings/cp852.py +698 -0
  431. package/python-runtime/python/lib/python3.12/encodings/cp855.py +698 -0
  432. package/python-runtime/python/lib/python3.12/encodings/cp856.py +307 -0
  433. package/python-runtime/python/lib/python3.12/encodings/cp857.py +694 -0
  434. package/python-runtime/python/lib/python3.12/encodings/cp858.py +698 -0
  435. package/python-runtime/python/lib/python3.12/encodings/cp860.py +698 -0
  436. package/python-runtime/python/lib/python3.12/encodings/cp861.py +698 -0
  437. package/python-runtime/python/lib/python3.12/encodings/cp862.py +698 -0
  438. package/python-runtime/python/lib/python3.12/encodings/cp863.py +698 -0
  439. package/python-runtime/python/lib/python3.12/encodings/cp864.py +690 -0
  440. package/python-runtime/python/lib/python3.12/encodings/cp865.py +698 -0
  441. package/python-runtime/python/lib/python3.12/encodings/cp866.py +698 -0
  442. package/python-runtime/python/lib/python3.12/encodings/cp869.py +689 -0
  443. package/python-runtime/python/lib/python3.12/encodings/cp874.py +307 -0
  444. package/python-runtime/python/lib/python3.12/encodings/cp875.py +307 -0
  445. package/python-runtime/python/lib/python3.12/encodings/cp932.py +39 -0
  446. package/python-runtime/python/lib/python3.12/encodings/cp949.py +39 -0
  447. package/python-runtime/python/lib/python3.12/encodings/cp950.py +39 -0
  448. package/python-runtime/python/lib/python3.12/encodings/euc_jis_2004.py +39 -0
  449. package/python-runtime/python/lib/python3.12/encodings/euc_jisx0213.py +39 -0
  450. package/python-runtime/python/lib/python3.12/encodings/euc_jp.py +39 -0
  451. package/python-runtime/python/lib/python3.12/encodings/euc_kr.py +39 -0
  452. package/python-runtime/python/lib/python3.12/encodings/gb18030.py +39 -0
  453. package/python-runtime/python/lib/python3.12/encodings/gb2312.py +39 -0
  454. package/python-runtime/python/lib/python3.12/encodings/gbk.py +39 -0
  455. package/python-runtime/python/lib/python3.12/encodings/hex_codec.py +55 -0
  456. package/python-runtime/python/lib/python3.12/encodings/hp_roman8.py +314 -0
  457. package/python-runtime/python/lib/python3.12/encodings/hz.py +39 -0
  458. package/python-runtime/python/lib/python3.12/encodings/idna.py +317 -0
  459. package/python-runtime/python/lib/python3.12/encodings/iso2022_jp.py +39 -0
  460. package/python-runtime/python/lib/python3.12/encodings/iso2022_jp_1.py +39 -0
  461. package/python-runtime/python/lib/python3.12/encodings/iso2022_jp_2.py +39 -0
  462. package/python-runtime/python/lib/python3.12/encodings/iso2022_jp_2004.py +39 -0
  463. package/python-runtime/python/lib/python3.12/encodings/iso2022_jp_3.py +39 -0
  464. package/python-runtime/python/lib/python3.12/encodings/iso2022_jp_ext.py +39 -0
  465. package/python-runtime/python/lib/python3.12/encodings/iso2022_kr.py +39 -0
  466. package/python-runtime/python/lib/python3.12/encodings/iso8859_1.py +307 -0
  467. package/python-runtime/python/lib/python3.12/encodings/iso8859_10.py +307 -0
  468. package/python-runtime/python/lib/python3.12/encodings/iso8859_11.py +307 -0
  469. package/python-runtime/python/lib/python3.12/encodings/iso8859_13.py +307 -0
  470. package/python-runtime/python/lib/python3.12/encodings/iso8859_14.py +307 -0
  471. package/python-runtime/python/lib/python3.12/encodings/iso8859_15.py +307 -0
  472. package/python-runtime/python/lib/python3.12/encodings/iso8859_16.py +307 -0
  473. package/python-runtime/python/lib/python3.12/encodings/iso8859_2.py +307 -0
  474. package/python-runtime/python/lib/python3.12/encodings/iso8859_3.py +307 -0
  475. package/python-runtime/python/lib/python3.12/encodings/iso8859_4.py +307 -0
  476. package/python-runtime/python/lib/python3.12/encodings/iso8859_5.py +307 -0
  477. package/python-runtime/python/lib/python3.12/encodings/iso8859_6.py +307 -0
  478. package/python-runtime/python/lib/python3.12/encodings/iso8859_7.py +307 -0
  479. package/python-runtime/python/lib/python3.12/encodings/iso8859_8.py +307 -0
  480. package/python-runtime/python/lib/python3.12/encodings/iso8859_9.py +307 -0
  481. package/python-runtime/python/lib/python3.12/encodings/johab.py +39 -0
  482. package/python-runtime/python/lib/python3.12/encodings/koi8_r.py +307 -0
  483. package/python-runtime/python/lib/python3.12/encodings/koi8_t.py +308 -0
  484. package/python-runtime/python/lib/python3.12/encodings/koi8_u.py +307 -0
  485. package/python-runtime/python/lib/python3.12/encodings/kz1048.py +307 -0
  486. package/python-runtime/python/lib/python3.12/encodings/latin_1.py +50 -0
  487. package/python-runtime/python/lib/python3.12/encodings/mac_arabic.py +698 -0
  488. package/python-runtime/python/lib/python3.12/encodings/mac_croatian.py +307 -0
  489. package/python-runtime/python/lib/python3.12/encodings/mac_cyrillic.py +307 -0
  490. package/python-runtime/python/lib/python3.12/encodings/mac_farsi.py +307 -0
  491. package/python-runtime/python/lib/python3.12/encodings/mac_greek.py +307 -0
  492. package/python-runtime/python/lib/python3.12/encodings/mac_iceland.py +307 -0
  493. package/python-runtime/python/lib/python3.12/encodings/mac_latin2.py +312 -0
  494. package/python-runtime/python/lib/python3.12/encodings/mac_roman.py +307 -0
  495. package/python-runtime/python/lib/python3.12/encodings/mac_romanian.py +307 -0
  496. package/python-runtime/python/lib/python3.12/encodings/mac_turkish.py +307 -0
  497. package/python-runtime/python/lib/python3.12/encodings/mbcs.py +47 -0
  498. package/python-runtime/python/lib/python3.12/encodings/oem.py +41 -0
  499. package/python-runtime/python/lib/python3.12/encodings/palmos.py +308 -0
  500. package/python-runtime/python/lib/python3.12/encodings/ptcp154.py +312 -0
  501. package/python-runtime/python/lib/python3.12/encodings/punycode.py +237 -0
  502. package/python-runtime/python/lib/python3.12/encodings/quopri_codec.py +56 -0
  503. package/python-runtime/python/lib/python3.12/encodings/raw_unicode_escape.py +46 -0
  504. package/python-runtime/python/lib/python3.12/encodings/rot_13.py +113 -0
  505. package/python-runtime/python/lib/python3.12/encodings/shift_jis.py +39 -0
  506. package/python-runtime/python/lib/python3.12/encodings/shift_jis_2004.py +39 -0
  507. package/python-runtime/python/lib/python3.12/encodings/shift_jisx0213.py +39 -0
  508. package/python-runtime/python/lib/python3.12/encodings/tis_620.py +307 -0
  509. package/python-runtime/python/lib/python3.12/encodings/undefined.py +49 -0
  510. package/python-runtime/python/lib/python3.12/encodings/unicode_escape.py +46 -0
  511. package/python-runtime/python/lib/python3.12/encodings/utf_16.py +155 -0
  512. package/python-runtime/python/lib/python3.12/encodings/utf_16_be.py +42 -0
  513. package/python-runtime/python/lib/python3.12/encodings/utf_16_le.py +42 -0
  514. package/python-runtime/python/lib/python3.12/encodings/utf_32.py +150 -0
  515. package/python-runtime/python/lib/python3.12/encodings/utf_32_be.py +37 -0
  516. package/python-runtime/python/lib/python3.12/encodings/utf_32_le.py +37 -0
  517. package/python-runtime/python/lib/python3.12/encodings/utf_7.py +38 -0
  518. package/python-runtime/python/lib/python3.12/encodings/utf_8.py +42 -0
  519. package/python-runtime/python/lib/python3.12/encodings/utf_8_sig.py +130 -0
  520. package/python-runtime/python/lib/python3.12/encodings/uu_codec.py +103 -0
  521. package/python-runtime/python/lib/python3.12/encodings/zlib_codec.py +77 -0
  522. package/python-runtime/python/lib/python3.12/enum.py +2108 -0
  523. package/python-runtime/python/lib/python3.12/filecmp.py +315 -0
  524. package/python-runtime/python/lib/python3.12/fileinput.py +442 -0
  525. package/python-runtime/python/lib/python3.12/fnmatch.py +185 -0
  526. package/python-runtime/python/lib/python3.12/fractions.py +990 -0
  527. package/python-runtime/python/lib/python3.12/ftplib.py +966 -0
  528. package/python-runtime/python/lib/python3.12/functools.py +1009 -0
  529. package/python-runtime/python/lib/python3.12/genericpath.py +176 -0
  530. package/python-runtime/python/lib/python3.12/getopt.py +215 -0
  531. package/python-runtime/python/lib/python3.12/getpass.py +185 -0
  532. package/python-runtime/python/lib/python3.12/gettext.py +646 -0
  533. package/python-runtime/python/lib/python3.12/glob.py +252 -0
  534. package/python-runtime/python/lib/python3.12/graphlib.py +250 -0
  535. package/python-runtime/python/lib/python3.12/gzip.py +711 -0
  536. package/python-runtime/python/lib/python3.12/hashlib.py +253 -0
  537. package/python-runtime/python/lib/python3.12/heapq.py +603 -0
  538. package/python-runtime/python/lib/python3.12/hmac.py +219 -0
  539. package/python-runtime/python/lib/python3.12/html/__init__.py +132 -0
  540. package/python-runtime/python/lib/python3.12/html/entities.py +2513 -0
  541. package/python-runtime/python/lib/python3.12/html/parser.py +535 -0
  542. package/python-runtime/python/lib/python3.12/http/__init__.py +200 -0
  543. package/python-runtime/python/lib/python3.12/http/client.py +1570 -0
  544. package/python-runtime/python/lib/python3.12/http/cookiejar.py +2121 -0
  545. package/python-runtime/python/lib/python3.12/http/cookies.py +615 -0
  546. package/python-runtime/python/lib/python3.12/http/server.py +1335 -0
  547. package/python-runtime/python/lib/python3.12/imaplib.py +1641 -0
  548. package/python-runtime/python/lib/python3.12/imghdr.py +180 -0
  549. package/python-runtime/python/lib/python3.12/importlib/__init__.py +138 -0
  550. package/python-runtime/python/lib/python3.12/importlib/_abc.py +39 -0
  551. package/python-runtime/python/lib/python3.12/importlib/_bootstrap.py +1551 -0
  552. package/python-runtime/python/lib/python3.12/importlib/_bootstrap_external.py +1749 -0
  553. package/python-runtime/python/lib/python3.12/importlib/abc.py +239 -0
  554. package/python-runtime/python/lib/python3.12/importlib/machinery.py +20 -0
  555. package/python-runtime/python/lib/python3.12/importlib/metadata/__init__.py +966 -0
  556. package/python-runtime/python/lib/python3.12/importlib/metadata/_adapters.py +89 -0
  557. package/python-runtime/python/lib/python3.12/importlib/metadata/_collections.py +30 -0
  558. package/python-runtime/python/lib/python3.12/importlib/metadata/_functools.py +104 -0
  559. package/python-runtime/python/lib/python3.12/importlib/metadata/_itertools.py +73 -0
  560. package/python-runtime/python/lib/python3.12/importlib/metadata/_meta.py +63 -0
  561. package/python-runtime/python/lib/python3.12/importlib/metadata/_text.py +99 -0
  562. package/python-runtime/python/lib/python3.12/importlib/readers.py +12 -0
  563. package/python-runtime/python/lib/python3.12/importlib/resources/__init__.py +38 -0
  564. package/python-runtime/python/lib/python3.12/importlib/resources/_adapters.py +168 -0
  565. package/python-runtime/python/lib/python3.12/importlib/resources/_common.py +208 -0
  566. package/python-runtime/python/lib/python3.12/importlib/resources/_itertools.py +38 -0
  567. package/python-runtime/python/lib/python3.12/importlib/resources/_legacy.py +98 -0
  568. package/python-runtime/python/lib/python3.12/importlib/resources/abc.py +173 -0
  569. package/python-runtime/python/lib/python3.12/importlib/resources/readers.py +146 -0
  570. package/python-runtime/python/lib/python3.12/importlib/resources/simple.py +106 -0
  571. package/python-runtime/python/lib/python3.12/importlib/simple.py +14 -0
  572. package/python-runtime/python/lib/python3.12/importlib/util.py +270 -0
  573. package/python-runtime/python/lib/python3.12/inspect.py +3433 -0
  574. package/python-runtime/python/lib/python3.12/io.py +99 -0
  575. package/python-runtime/python/lib/python3.12/ipaddress.py +2430 -0
  576. package/python-runtime/python/lib/python3.12/json/__init__.py +359 -0
  577. package/python-runtime/python/lib/python3.12/json/decoder.py +357 -0
  578. package/python-runtime/python/lib/python3.12/json/encoder.py +443 -0
  579. package/python-runtime/python/lib/python3.12/json/scanner.py +73 -0
  580. package/python-runtime/python/lib/python3.12/json/tool.py +85 -0
  581. package/python-runtime/python/lib/python3.12/keyword.py +64 -0
  582. package/python-runtime/python/lib/python3.12/lib-dynload/_crypt.cpython-312-darwin.so +0 -0
  583. package/python-runtime/python/lib/python3.12/lib-dynload/_dbm.cpython-312-darwin.so +0 -0
  584. package/python-runtime/python/lib/python3.12/lib-dynload/_tkinter.cpython-312-darwin.so +0 -0
  585. package/python-runtime/python/lib/python3.12/linecache.py +185 -0
  586. package/python-runtime/python/lib/python3.12/locale.py +1779 -0
  587. package/python-runtime/python/lib/python3.12/logging/__init__.py +2345 -0
  588. package/python-runtime/python/lib/python3.12/logging/config.py +1078 -0
  589. package/python-runtime/python/lib/python3.12/logging/handlers.py +1624 -0
  590. package/python-runtime/python/lib/python3.12/lzma.py +356 -0
  591. package/python-runtime/python/lib/python3.12/mailbox.py +2153 -0
  592. package/python-runtime/python/lib/python3.12/mailcap.py +302 -0
  593. package/python-runtime/python/lib/python3.12/mimetypes.py +656 -0
  594. package/python-runtime/python/lib/python3.12/modulefinder.py +666 -0
  595. package/python-runtime/python/lib/python3.12/multiprocessing/__init__.py +37 -0
  596. package/python-runtime/python/lib/python3.12/multiprocessing/connection.py +1178 -0
  597. package/python-runtime/python/lib/python3.12/multiprocessing/context.py +377 -0
  598. package/python-runtime/python/lib/python3.12/multiprocessing/dummy/__init__.py +126 -0
  599. package/python-runtime/python/lib/python3.12/multiprocessing/dummy/connection.py +75 -0
  600. package/python-runtime/python/lib/python3.12/multiprocessing/forkserver.py +350 -0
  601. package/python-runtime/python/lib/python3.12/multiprocessing/heap.py +337 -0
  602. package/python-runtime/python/lib/python3.12/multiprocessing/managers.py +1387 -0
  603. package/python-runtime/python/lib/python3.12/multiprocessing/pool.py +957 -0
  604. package/python-runtime/python/lib/python3.12/multiprocessing/popen_fork.py +83 -0
  605. package/python-runtime/python/lib/python3.12/multiprocessing/popen_forkserver.py +74 -0
  606. package/python-runtime/python/lib/python3.12/multiprocessing/popen_spawn_posix.py +72 -0
  607. package/python-runtime/python/lib/python3.12/multiprocessing/popen_spawn_win32.py +145 -0
  608. package/python-runtime/python/lib/python3.12/multiprocessing/process.py +439 -0
  609. package/python-runtime/python/lib/python3.12/multiprocessing/queues.py +401 -0
  610. package/python-runtime/python/lib/python3.12/multiprocessing/reduction.py +281 -0
  611. package/python-runtime/python/lib/python3.12/multiprocessing/resource_sharer.py +154 -0
  612. package/python-runtime/python/lib/python3.12/multiprocessing/resource_tracker.py +294 -0
  613. package/python-runtime/python/lib/python3.12/multiprocessing/shared_memory.py +534 -0
  614. package/python-runtime/python/lib/python3.12/multiprocessing/sharedctypes.py +240 -0
  615. package/python-runtime/python/lib/python3.12/multiprocessing/spawn.py +307 -0
  616. package/python-runtime/python/lib/python3.12/multiprocessing/synchronize.py +404 -0
  617. package/python-runtime/python/lib/python3.12/multiprocessing/util.py +494 -0
  618. package/python-runtime/python/lib/python3.12/netrc.py +192 -0
  619. package/python-runtime/python/lib/python3.12/nntplib.py +1093 -0
  620. package/python-runtime/python/lib/python3.12/ntpath.py +869 -0
  621. package/python-runtime/python/lib/python3.12/nturl2path.py +69 -0
  622. package/python-runtime/python/lib/python3.12/numbers.py +418 -0
  623. package/python-runtime/python/lib/python3.12/opcode.py +493 -0
  624. package/python-runtime/python/lib/python3.12/operator.py +467 -0
  625. package/python-runtime/python/lib/python3.12/optparse.py +1681 -0
  626. package/python-runtime/python/lib/python3.12/os.py +1159 -0
  627. package/python-runtime/python/lib/python3.12/pathlib.py +1435 -0
  628. package/python-runtime/python/lib/python3.12/pdb.py +1987 -0
  629. package/python-runtime/python/lib/python3.12/pickle.py +1866 -0
  630. package/python-runtime/python/lib/python3.12/pickletools.py +2904 -0
  631. package/python-runtime/python/lib/python3.12/pipes.py +250 -0
  632. package/python-runtime/python/lib/python3.12/pkgutil.py +529 -0
  633. package/python-runtime/python/lib/python3.12/platform.py +1359 -0
  634. package/python-runtime/python/lib/python3.12/plistlib.py +920 -0
  635. package/python-runtime/python/lib/python3.12/poplib.py +478 -0
  636. package/python-runtime/python/lib/python3.12/posixpath.py +577 -0
  637. package/python-runtime/python/lib/python3.12/pprint.py +658 -0
  638. package/python-runtime/python/lib/python3.12/profile.py +615 -0
  639. package/python-runtime/python/lib/python3.12/pstats.py +778 -0
  640. package/python-runtime/python/lib/python3.12/pty.py +211 -0
  641. package/python-runtime/python/lib/python3.12/py_compile.py +212 -0
  642. package/python-runtime/python/lib/python3.12/pyclbr.py +314 -0
  643. package/python-runtime/python/lib/python3.12/pydoc.py +2950 -0
  644. package/python-runtime/python/lib/python3.12/queue.py +326 -0
  645. package/python-runtime/python/lib/python3.12/quopri.py +237 -0
  646. package/python-runtime/python/lib/python3.12/random.py +996 -0
  647. package/python-runtime/python/lib/python3.12/re/__init__.py +385 -0
  648. package/python-runtime/python/lib/python3.12/re/_casefix.py +106 -0
  649. package/python-runtime/python/lib/python3.12/re/_compiler.py +770 -0
  650. package/python-runtime/python/lib/python3.12/re/_constants.py +220 -0
  651. package/python-runtime/python/lib/python3.12/re/_parser.py +1080 -0
  652. package/python-runtime/python/lib/python3.12/reprlib.py +214 -0
  653. package/python-runtime/python/lib/python3.12/rlcompleter.py +219 -0
  654. package/python-runtime/python/lib/python3.12/runpy.py +319 -0
  655. package/python-runtime/python/lib/python3.12/sched.py +167 -0
  656. package/python-runtime/python/lib/python3.12/secrets.py +71 -0
  657. package/python-runtime/python/lib/python3.12/selectors.py +623 -0
  658. package/python-runtime/python/lib/python3.12/shelve.py +243 -0
  659. package/python-runtime/python/lib/python3.12/shlex.py +345 -0
  660. package/python-runtime/python/lib/python3.12/shutil.py +1566 -0
  661. package/python-runtime/python/lib/python3.12/signal.py +94 -0
  662. package/python-runtime/python/lib/python3.12/site-packages/PIL/AvifImagePlugin.py +299 -0
  663. package/python-runtime/python/lib/python3.12/site-packages/PIL/BdfFontFile.py +122 -0
  664. package/python-runtime/python/lib/python3.12/site-packages/PIL/BlpImagePlugin.py +503 -0
  665. package/python-runtime/python/lib/python3.12/site-packages/PIL/BmpImagePlugin.py +526 -0
  666. package/python-runtime/python/lib/python3.12/site-packages/PIL/BufrStubImagePlugin.py +70 -0
  667. package/python-runtime/python/lib/python3.12/site-packages/PIL/ContainerIO.py +177 -0
  668. package/python-runtime/python/lib/python3.12/site-packages/PIL/CurImagePlugin.py +105 -0
  669. package/python-runtime/python/lib/python3.12/site-packages/PIL/DcxImagePlugin.py +88 -0
  670. package/python-runtime/python/lib/python3.12/site-packages/PIL/DdsImagePlugin.py +637 -0
  671. package/python-runtime/python/lib/python3.12/site-packages/PIL/EpsImagePlugin.py +494 -0
  672. package/python-runtime/python/lib/python3.12/site-packages/PIL/ExifTags.py +383 -0
  673. package/python-runtime/python/lib/python3.12/site-packages/PIL/FitsImagePlugin.py +171 -0
  674. package/python-runtime/python/lib/python3.12/site-packages/PIL/FliImagePlugin.py +188 -0
  675. package/python-runtime/python/lib/python3.12/site-packages/PIL/FontFile.py +163 -0
  676. package/python-runtime/python/lib/python3.12/site-packages/PIL/FpxImagePlugin.py +264 -0
  677. package/python-runtime/python/lib/python3.12/site-packages/PIL/FtexImagePlugin.py +119 -0
  678. package/python-runtime/python/lib/python3.12/site-packages/PIL/GbrImagePlugin.py +101 -0
  679. package/python-runtime/python/lib/python3.12/site-packages/PIL/GdImageFile.py +109 -0
  680. package/python-runtime/python/lib/python3.12/site-packages/PIL/GifImagePlugin.py +1152 -0
  681. package/python-runtime/python/lib/python3.12/site-packages/PIL/GimpGradientFile.py +156 -0
  682. package/python-runtime/python/lib/python3.12/site-packages/PIL/GimpPaletteFile.py +77 -0
  683. package/python-runtime/python/lib/python3.12/site-packages/PIL/GribStubImagePlugin.py +70 -0
  684. package/python-runtime/python/lib/python3.12/site-packages/PIL/Hdf5StubImagePlugin.py +70 -0
  685. package/python-runtime/python/lib/python3.12/site-packages/PIL/IcnsImagePlugin.py +406 -0
  686. package/python-runtime/python/lib/python3.12/site-packages/PIL/IcoImagePlugin.py +418 -0
  687. package/python-runtime/python/lib/python3.12/site-packages/PIL/ImImagePlugin.py +401 -0
  688. package/python-runtime/python/lib/python3.12/site-packages/PIL/Image.py +4390 -0
  689. package/python-runtime/python/lib/python3.12/site-packages/PIL/ImageChops.py +278 -0
  690. package/python-runtime/python/lib/python3.12/site-packages/PIL/ImageCms.py +1069 -0
  691. package/python-runtime/python/lib/python3.12/site-packages/PIL/ImageColor.py +321 -0
  692. package/python-runtime/python/lib/python3.12/site-packages/PIL/ImageDraw.py +1003 -0
  693. package/python-runtime/python/lib/python3.12/site-packages/PIL/ImageDraw2.py +250 -0
  694. package/python-runtime/python/lib/python3.12/site-packages/PIL/ImageEnhance.py +112 -0
  695. package/python-runtime/python/lib/python3.12/site-packages/PIL/ImageFile.py +944 -0
  696. package/python-runtime/python/lib/python3.12/site-packages/PIL/ImageFilter.py +596 -0
  697. package/python-runtime/python/lib/python3.12/site-packages/PIL/ImageFont.py +1335 -0
  698. package/python-runtime/python/lib/python3.12/site-packages/PIL/ImageGrab.py +229 -0
  699. package/python-runtime/python/lib/python3.12/site-packages/PIL/ImageMath.py +314 -0
  700. package/python-runtime/python/lib/python3.12/site-packages/PIL/ImageMode.py +85 -0
  701. package/python-runtime/python/lib/python3.12/site-packages/PIL/ImageMorph.py +317 -0
  702. package/python-runtime/python/lib/python3.12/site-packages/PIL/ImageOps.py +803 -0
  703. package/python-runtime/python/lib/python3.12/site-packages/PIL/ImagePalette.py +314 -0
  704. package/python-runtime/python/lib/python3.12/site-packages/PIL/ImagePath.py +20 -0
  705. package/python-runtime/python/lib/python3.12/site-packages/PIL/ImageQt.py +229 -0
  706. package/python-runtime/python/lib/python3.12/site-packages/PIL/ImageSequence.py +89 -0
  707. package/python-runtime/python/lib/python3.12/site-packages/PIL/ImageShow.py +372 -0
  708. package/python-runtime/python/lib/python3.12/site-packages/PIL/ImageStat.py +169 -0
  709. package/python-runtime/python/lib/python3.12/site-packages/PIL/ImageText.py +512 -0
  710. package/python-runtime/python/lib/python3.12/site-packages/PIL/ImageTk.py +269 -0
  711. package/python-runtime/python/lib/python3.12/site-packages/PIL/ImageTransform.py +138 -0
  712. package/python-runtime/python/lib/python3.12/site-packages/PIL/ImageWin.py +247 -0
  713. package/python-runtime/python/lib/python3.12/site-packages/PIL/ImtImagePlugin.py +103 -0
  714. package/python-runtime/python/lib/python3.12/site-packages/PIL/IptcImagePlugin.py +228 -0
  715. package/python-runtime/python/lib/python3.12/site-packages/PIL/Jpeg2KImagePlugin.py +472 -0
  716. package/python-runtime/python/lib/python3.12/site-packages/PIL/JpegImagePlugin.py +913 -0
  717. package/python-runtime/python/lib/python3.12/site-packages/PIL/JpegPresets.py +240 -0
  718. package/python-runtime/python/lib/python3.12/site-packages/PIL/McIdasImagePlugin.py +80 -0
  719. package/python-runtime/python/lib/python3.12/site-packages/PIL/MicImagePlugin.py +105 -0
  720. package/python-runtime/python/lib/python3.12/site-packages/PIL/MpegImagePlugin.py +89 -0
  721. package/python-runtime/python/lib/python3.12/site-packages/PIL/MpoImagePlugin.py +211 -0
  722. package/python-runtime/python/lib/python3.12/site-packages/PIL/MspImagePlugin.py +206 -0
  723. package/python-runtime/python/lib/python3.12/site-packages/PIL/PSDraw.py +249 -0
  724. package/python-runtime/python/lib/python3.12/site-packages/PIL/PaletteFile.py +58 -0
  725. package/python-runtime/python/lib/python3.12/site-packages/PIL/PalmImagePlugin.py +220 -0
  726. package/python-runtime/python/lib/python3.12/site-packages/PIL/PcdImagePlugin.py +68 -0
  727. package/python-runtime/python/lib/python3.12/site-packages/PIL/PcfFontFile.py +258 -0
  728. package/python-runtime/python/lib/python3.12/site-packages/PIL/PcxImagePlugin.py +237 -0
  729. package/python-runtime/python/lib/python3.12/site-packages/PIL/PdfImagePlugin.py +313 -0
  730. package/python-runtime/python/lib/python3.12/site-packages/PIL/PdfParser.py +1129 -0
  731. package/python-runtime/python/lib/python3.12/site-packages/PIL/PixarImagePlugin.py +74 -0
  732. package/python-runtime/python/lib/python3.12/site-packages/PIL/PngImagePlugin.py +1616 -0
  733. package/python-runtime/python/lib/python3.12/site-packages/PIL/PpmImagePlugin.py +380 -0
  734. package/python-runtime/python/lib/python3.12/site-packages/PIL/PsdImagePlugin.py +340 -0
  735. package/python-runtime/python/lib/python3.12/site-packages/PIL/QoiImagePlugin.py +248 -0
  736. package/python-runtime/python/lib/python3.12/site-packages/PIL/SgiImagePlugin.py +236 -0
  737. package/python-runtime/python/lib/python3.12/site-packages/PIL/SpiderImagePlugin.py +329 -0
  738. package/python-runtime/python/lib/python3.12/site-packages/PIL/SunImagePlugin.py +147 -0
  739. package/python-runtime/python/lib/python3.12/site-packages/PIL/TarIO.py +68 -0
  740. package/python-runtime/python/lib/python3.12/site-packages/PIL/TgaImagePlugin.py +295 -0
  741. package/python-runtime/python/lib/python3.12/site-packages/PIL/TiffImagePlugin.py +2410 -0
  742. package/python-runtime/python/lib/python3.12/site-packages/PIL/TiffTags.py +571 -0
  743. package/python-runtime/python/lib/python3.12/site-packages/PIL/WalImageFile.py +134 -0
  744. package/python-runtime/python/lib/python3.12/site-packages/PIL/WebPImagePlugin.py +352 -0
  745. package/python-runtime/python/lib/python3.12/site-packages/PIL/WmfImagePlugin.py +189 -0
  746. package/python-runtime/python/lib/python3.12/site-packages/PIL/XVThumbImagePlugin.py +83 -0
  747. package/python-runtime/python/lib/python3.12/site-packages/PIL/XbmImagePlugin.py +128 -0
  748. package/python-runtime/python/lib/python3.12/site-packages/PIL/XpmImagePlugin.py +175 -0
  749. package/python-runtime/python/lib/python3.12/site-packages/PIL/__init__.py +87 -0
  750. package/python-runtime/python/lib/python3.12/site-packages/PIL/__main__.py +7 -0
  751. package/python-runtime/python/lib/python3.12/site-packages/PIL/_avif.cpython-312-darwin.so +0 -0
  752. package/python-runtime/python/lib/python3.12/site-packages/PIL/_avif.pyi +3 -0
  753. package/python-runtime/python/lib/python3.12/site-packages/PIL/_binary.py +115 -0
  754. package/python-runtime/python/lib/python3.12/site-packages/PIL/_deprecate.py +74 -0
  755. package/python-runtime/python/lib/python3.12/site-packages/PIL/_imaging.cpython-312-darwin.so +0 -0
  756. package/python-runtime/python/lib/python3.12/site-packages/PIL/_imaging.pyi +31 -0
  757. package/python-runtime/python/lib/python3.12/site-packages/PIL/_imagingcms.cpython-312-darwin.so +0 -0
  758. package/python-runtime/python/lib/python3.12/site-packages/PIL/_imagingcms.pyi +143 -0
  759. package/python-runtime/python/lib/python3.12/site-packages/PIL/_imagingft.cpython-312-darwin.so +0 -0
  760. package/python-runtime/python/lib/python3.12/site-packages/PIL/_imagingft.pyi +70 -0
  761. package/python-runtime/python/lib/python3.12/site-packages/PIL/_imagingmath.cpython-312-darwin.so +0 -0
  762. package/python-runtime/python/lib/python3.12/site-packages/PIL/_imagingmath.pyi +3 -0
  763. package/python-runtime/python/lib/python3.12/site-packages/PIL/_imagingmorph.cpython-312-darwin.so +0 -0
  764. package/python-runtime/python/lib/python3.12/site-packages/PIL/_imagingmorph.pyi +3 -0
  765. package/python-runtime/python/lib/python3.12/site-packages/PIL/_imagingtk.cpython-312-darwin.so +0 -0
  766. package/python-runtime/python/lib/python3.12/site-packages/PIL/_imagingtk.pyi +3 -0
  767. package/python-runtime/python/lib/python3.12/site-packages/PIL/_tkinter_finder.py +20 -0
  768. package/python-runtime/python/lib/python3.12/site-packages/PIL/_typing.py +46 -0
  769. package/python-runtime/python/lib/python3.12/site-packages/PIL/_util.py +29 -0
  770. package/python-runtime/python/lib/python3.12/site-packages/PIL/_version.py +4 -0
  771. package/python-runtime/python/lib/python3.12/site-packages/PIL/_webp.cpython-312-darwin.so +0 -0
  772. package/python-runtime/python/lib/python3.12/site-packages/PIL/_webp.pyi +3 -0
  773. package/python-runtime/python/lib/python3.12/site-packages/PIL/features.py +347 -0
  774. package/python-runtime/python/lib/python3.12/site-packages/PIL/py.typed +0 -0
  775. package/python-runtime/python/lib/python3.12/site-packages/PIL/report.py +5 -0
  776. package/python-runtime/python/lib/python3.12/site-packages/README.txt +2 -0
  777. package/python-runtime/python/lib/python3.12/site-packages/_cffi_backend.cpython-312-darwin.so +0 -0
  778. package/python-runtime/python/lib/python3.12/site-packages/acp/__init__.py +247 -0
  779. package/python-runtime/python/lib/python3.12/site-packages/acp/_cookies.py +53 -0
  780. package/python-runtime/python/lib/python3.12/site-packages/acp/_deserialize.py +62 -0
  781. package/python-runtime/python/lib/python3.12/site-packages/acp/_jsonrpc.py +28 -0
  782. package/python-runtime/python/lib/python3.12/site-packages/acp/_protocol_adapters.py +72 -0
  783. package/python-runtime/python/lib/python3.12/site-packages/acp/_schema_base.py +79 -0
  784. package/python-runtime/python/lib/python3.12/site-packages/acp/_sse.py +98 -0
  785. package/python-runtime/python/lib/python3.12/site-packages/acp/_transport.py +145 -0
  786. package/python-runtime/python/lib/python3.12/site-packages/acp/agent/__init__.py +3 -0
  787. package/python-runtime/python/lib/python3.12/site-packages/acp/agent/connection.py +367 -0
  788. package/python-runtime/python/lib/python3.12/site-packages/acp/agent/router.py +10 -0
  789. package/python-runtime/python/lib/python3.12/site-packages/acp/client/__init__.py +3 -0
  790. package/python-runtime/python/lib/python3.12/site-packages/acp/client/connection.py +626 -0
  791. package/python-runtime/python/lib/python3.12/site-packages/acp/client/router.py +10 -0
  792. package/python-runtime/python/lib/python3.12/site-packages/acp/connection.py +344 -0
  793. package/python-runtime/python/lib/python3.12/site-packages/acp/contrib/__init__.py +27 -0
  794. package/python-runtime/python/lib/python3.12/site-packages/acp/contrib/permissions.py +105 -0
  795. package/python-runtime/python/lib/python3.12/site-packages/acp/contrib/session_state.py +274 -0
  796. package/python-runtime/python/lib/python3.12/site-packages/acp/contrib/tool_calls.py +290 -0
  797. package/python-runtime/python/lib/python3.12/site-packages/acp/core.py +111 -0
  798. package/python-runtime/python/lib/python3.12/site-packages/acp/exceptions.py +50 -0
  799. package/python-runtime/python/lib/python3.12/site-packages/acp/experimental/__init__.py +13 -0
  800. package/python-runtime/python/lib/python3.12/site-packages/acp/experimental/negotiation.py +214 -0
  801. package/python-runtime/python/lib/python3.12/site-packages/acp/experimental/v2/__init__.py +18 -0
  802. package/python-runtime/python/lib/python3.12/site-packages/acp/experimental/v2/_connection.py +24 -0
  803. package/python-runtime/python/lib/python3.12/site-packages/acp/experimental/v2/_initialization.py +67 -0
  804. package/python-runtime/python/lib/python3.12/site-packages/acp/experimental/v2/_methods.py +58 -0
  805. package/python-runtime/python/lib/python3.12/site-packages/acp/experimental/v2/_params.py +65 -0
  806. package/python-runtime/python/lib/python3.12/site-packages/acp/experimental/v2/_router.py +74 -0
  807. package/python-runtime/python/lib/python3.12/site-packages/acp/experimental/v2/_schema_base.py +60 -0
  808. package/python-runtime/python/lib/python3.12/site-packages/acp/experimental/v2/agent.py +287 -0
  809. package/python-runtime/python/lib/python3.12/site-packages/acp/experimental/v2/client.py +463 -0
  810. package/python-runtime/python/lib/python3.12/site-packages/acp/experimental/v2/interfaces.py +314 -0
  811. package/python-runtime/python/lib/python3.12/site-packages/acp/experimental/v2/meta.py +41 -0
  812. package/python-runtime/python/lib/python3.12/site-packages/acp/experimental/v2/schema.py +6018 -0
  813. package/python-runtime/python/lib/python3.12/site-packages/acp/http/__init__.py +30 -0
  814. package/python-runtime/python/lib/python3.12/site-packages/acp/http/asgi.py +97 -0
  815. package/python-runtime/python/lib/python3.12/site-packages/acp/http/client.py +266 -0
  816. package/python-runtime/python/lib/python3.12/site-packages/acp/http/protocol.py +115 -0
  817. package/python-runtime/python/lib/python3.12/site-packages/acp/http/server.py +374 -0
  818. package/python-runtime/python/lib/python3.12/site-packages/acp/interfaces.py +468 -0
  819. package/python-runtime/python/lib/python3.12/site-packages/acp/meta.py +50 -0
  820. package/python-runtime/python/lib/python3.12/site-packages/acp/py.typed +1 -0
  821. package/python-runtime/python/lib/python3.12/site-packages/acp/router.py +239 -0
  822. package/python-runtime/python/lib/python3.12/site-packages/acp/schema.py +5846 -0
  823. package/python-runtime/python/lib/python3.12/site-packages/acp/stdio.py +208 -0
  824. package/python-runtime/python/lib/python3.12/site-packages/acp/task/__init__.py +4 -0
  825. package/python-runtime/python/lib/python3.12/site-packages/acp/task/sender.py +63 -0
  826. package/python-runtime/python/lib/python3.12/site-packages/acp/task/supervisor.py +80 -0
  827. package/python-runtime/python/lib/python3.12/site-packages/acp/telemetry.py +41 -0
  828. package/python-runtime/python/lib/python3.12/site-packages/acp/transports.py +112 -0
  829. package/python-runtime/python/lib/python3.12/site-packages/acp/utils.py +265 -0
  830. package/python-runtime/python/lib/python3.12/site-packages/acp/ws/__init__.py +23 -0
  831. package/python-runtime/python/lib/python3.12/site-packages/acp/ws/client.py +124 -0
  832. package/python-runtime/python/lib/python3.12/site-packages/acp/ws/server.py +75 -0
  833. package/python-runtime/python/lib/python3.12/site-packages/ag_ui/__init__.py +0 -0
  834. package/python-runtime/python/lib/python3.12/site-packages/ag_ui/_generated/__init__.py +9 -0
  835. package/python-runtime/python/lib/python3.12/site-packages/ag_ui/_generated/models.py +2825 -0
  836. package/python-runtime/python/lib/python3.12/site-packages/ag_ui/_generated/version.py +12 -0
  837. package/python-runtime/python/lib/python3.12/site-packages/ag_ui/core/__init__.py +242 -0
  838. package/python-runtime/python/lib/python3.12/site-packages/ag_ui/core/capabilities.py +64 -0
  839. package/python-runtime/python/lib/python3.12/site-packages/ag_ui/core/deprecated.py +46 -0
  840. package/python-runtime/python/lib/python3.12/site-packages/ag_ui/core/events.py +131 -0
  841. package/python-runtime/python/lib/python3.12/site-packages/ag_ui/core/token_usage.py +210 -0
  842. package/python-runtime/python/lib/python3.12/site-packages/ag_ui/core/types.py +162 -0
  843. package/python-runtime/python/lib/python3.12/site-packages/ag_ui/core/version.py +38 -0
  844. package/python-runtime/python/lib/python3.12/site-packages/ag_ui/encoder/__init__.py +7 -0
  845. package/python-runtime/python/lib/python3.12/site-packages/ag_ui/encoder/encoder.py +36 -0
  846. package/python-runtime/python/lib/python3.12/site-packages/ag_ui/py.typed +0 -0
  847. package/python-runtime/python/lib/python3.12/site-packages/ag_ui_protocol-1.0.0.dist-info/INSTALLER +1 -0
  848. package/python-runtime/python/lib/python3.12/site-packages/ag_ui_protocol-1.0.0.dist-info/METADATA +114 -0
  849. package/python-runtime/python/lib/python3.12/site-packages/ag_ui_protocol-1.0.0.dist-info/RECORD +32 -0
  850. package/python-runtime/python/lib/python3.12/site-packages/ag_ui_protocol-1.0.0.dist-info/WHEEL +4 -0
  851. package/python-runtime/python/lib/python3.12/site-packages/agent_client_protocol-1.0.0.dist-info/INSTALLER +1 -0
  852. package/python-runtime/python/lib/python3.12/site-packages/agent_client_protocol-1.0.0.dist-info/METADATA +106 -0
  853. package/python-runtime/python/lib/python3.12/site-packages/agent_client_protocol-1.0.0.dist-info/RECORD +115 -0
  854. package/python-runtime/python/lib/python3.12/site-packages/agent_client_protocol-1.0.0.dist-info/WHEEL +4 -0
  855. package/python-runtime/python/lib/python3.12/site-packages/agent_client_protocol-1.0.0.dist-info/entry_points.txt +4 -0
  856. package/python-runtime/python/lib/python3.12/site-packages/annotated_types/__init__.py +416 -0
  857. package/python-runtime/python/lib/python3.12/site-packages/annotated_types/py.typed +0 -0
  858. package/python-runtime/python/lib/python3.12/site-packages/annotated_types/test_cases.py +146 -0
  859. package/python-runtime/python/lib/python3.12/site-packages/annotated_types-0.8.0.dist-info/INSTALLER +1 -0
  860. package/python-runtime/python/lib/python3.12/site-packages/annotated_types-0.8.0.dist-info/METADATA +295 -0
  861. package/python-runtime/python/lib/python3.12/site-packages/annotated_types-0.8.0.dist-info/RECORD +10 -0
  862. package/python-runtime/python/lib/python3.12/site-packages/annotated_types-0.8.0.dist-info/WHEEL +4 -0
  863. package/python-runtime/python/lib/python3.12/site-packages/anyio/__init__.py +154 -0
  864. package/python-runtime/python/lib/python3.12/site-packages/anyio/_backends/__init__.py +0 -0
  865. package/python-runtime/python/lib/python3.12/site-packages/anyio/_backends/_asyncio.py +3300 -0
  866. package/python-runtime/python/lib/python3.12/site-packages/anyio/_backends/_trio.py +1489 -0
  867. package/python-runtime/python/lib/python3.12/site-packages/anyio/_core/__init__.py +0 -0
  868. package/python-runtime/python/lib/python3.12/site-packages/anyio/_core/_asyncio_selector_thread.py +167 -0
  869. package/python-runtime/python/lib/python3.12/site-packages/anyio/_core/_concurrency_utils.py +156 -0
  870. package/python-runtime/python/lib/python3.12/site-packages/anyio/_core/_contextmanagers.py +200 -0
  871. package/python-runtime/python/lib/python3.12/site-packages/anyio/_core/_eventloop.py +244 -0
  872. package/python-runtime/python/lib/python3.12/site-packages/anyio/_core/_exceptions.py +205 -0
  873. package/python-runtime/python/lib/python3.12/site-packages/anyio/_core/_fileio.py +1047 -0
  874. package/python-runtime/python/lib/python3.12/site-packages/anyio/_core/_futures.py +191 -0
  875. package/python-runtime/python/lib/python3.12/site-packages/anyio/_core/_resources.py +18 -0
  876. package/python-runtime/python/lib/python3.12/site-packages/anyio/_core/_signals.py +29 -0
  877. package/python-runtime/python/lib/python3.12/site-packages/anyio/_core/_sockets.py +1032 -0
  878. package/python-runtime/python/lib/python3.12/site-packages/anyio/_core/_streams.py +52 -0
  879. package/python-runtime/python/lib/python3.12/site-packages/anyio/_core/_subprocesses.py +196 -0
  880. package/python-runtime/python/lib/python3.12/site-packages/anyio/_core/_synchronization.py +780 -0
  881. package/python-runtime/python/lib/python3.12/site-packages/anyio/_core/_tasks.py +464 -0
  882. package/python-runtime/python/lib/python3.12/site-packages/anyio/_core/_tempfile.py +623 -0
  883. package/python-runtime/python/lib/python3.12/site-packages/anyio/_core/_testing.py +82 -0
  884. package/python-runtime/python/lib/python3.12/site-packages/anyio/_core/_typedattr.py +90 -0
  885. package/python-runtime/python/lib/python3.12/site-packages/anyio/_lazyimport.py +176 -0
  886. package/python-runtime/python/lib/python3.12/site-packages/anyio/abc/__init__.py +63 -0
  887. package/python-runtime/python/lib/python3.12/site-packages/anyio/abc/_eventloop.py +443 -0
  888. package/python-runtime/python/lib/python3.12/site-packages/anyio/abc/_resources.py +39 -0
  889. package/python-runtime/python/lib/python3.12/site-packages/anyio/abc/_sockets.py +401 -0
  890. package/python-runtime/python/lib/python3.12/site-packages/anyio/abc/_streams.py +237 -0
  891. package/python-runtime/python/lib/python3.12/site-packages/anyio/abc/_subprocesses.py +82 -0
  892. package/python-runtime/python/lib/python3.12/site-packages/anyio/abc/_tasks.py +223 -0
  893. package/python-runtime/python/lib/python3.12/site-packages/anyio/abc/_testing.py +79 -0
  894. package/python-runtime/python/lib/python3.12/site-packages/anyio/from_thread.py +689 -0
  895. package/python-runtime/python/lib/python3.12/site-packages/anyio/functools.py +400 -0
  896. package/python-runtime/python/lib/python3.12/site-packages/anyio/itertools.py +632 -0
  897. package/python-runtime/python/lib/python3.12/site-packages/anyio/lowlevel.py +228 -0
  898. package/python-runtime/python/lib/python3.12/site-packages/anyio/py.typed +0 -0
  899. package/python-runtime/python/lib/python3.12/site-packages/anyio/pytest_plugin.py +408 -0
  900. package/python-runtime/python/lib/python3.12/site-packages/anyio/streams/__init__.py +0 -0
  901. package/python-runtime/python/lib/python3.12/site-packages/anyio/streams/buffered.py +212 -0
  902. package/python-runtime/python/lib/python3.12/site-packages/anyio/streams/file.py +162 -0
  903. package/python-runtime/python/lib/python3.12/site-packages/anyio/streams/memory.py +365 -0
  904. package/python-runtime/python/lib/python3.12/site-packages/anyio/streams/stapled.py +160 -0
  905. package/python-runtime/python/lib/python3.12/site-packages/anyio/streams/text.py +189 -0
  906. package/python-runtime/python/lib/python3.12/site-packages/anyio/streams/tls.py +450 -0
  907. package/python-runtime/python/lib/python3.12/site-packages/anyio/to_interpreter.py +246 -0
  908. package/python-runtime/python/lib/python3.12/site-packages/anyio/to_process.py +269 -0
  909. package/python-runtime/python/lib/python3.12/site-packages/anyio/to_thread.py +80 -0
  910. package/python-runtime/python/lib/python3.12/site-packages/anyio-4.16.0.dist-info/INSTALLER +1 -0
  911. package/python-runtime/python/lib/python3.12/site-packages/anyio-4.16.0.dist-info/METADATA +108 -0
  912. package/python-runtime/python/lib/python3.12/site-packages/anyio-4.16.0.dist-info/RECORD +100 -0
  913. package/python-runtime/python/lib/python3.12/site-packages/anyio-4.16.0.dist-info/WHEEL +5 -0
  914. package/python-runtime/python/lib/python3.12/site-packages/anyio-4.16.0.dist-info/entry_points.txt +2 -0
  915. package/python-runtime/python/lib/python3.12/site-packages/attr/__init__.py +104 -0
  916. package/python-runtime/python/lib/python3.12/site-packages/attr/__init__.pyi +389 -0
  917. package/python-runtime/python/lib/python3.12/site-packages/attr/_cmp.py +160 -0
  918. package/python-runtime/python/lib/python3.12/site-packages/attr/_cmp.pyi +13 -0
  919. package/python-runtime/python/lib/python3.12/site-packages/attr/_compat.py +99 -0
  920. package/python-runtime/python/lib/python3.12/site-packages/attr/_config.py +31 -0
  921. package/python-runtime/python/lib/python3.12/site-packages/attr/_funcs.py +497 -0
  922. package/python-runtime/python/lib/python3.12/site-packages/attr/_make.py +3406 -0
  923. package/python-runtime/python/lib/python3.12/site-packages/attr/_next_gen.py +674 -0
  924. package/python-runtime/python/lib/python3.12/site-packages/attr/_typing_compat.pyi +15 -0
  925. package/python-runtime/python/lib/python3.12/site-packages/attr/_version_info.py +89 -0
  926. package/python-runtime/python/lib/python3.12/site-packages/attr/_version_info.pyi +9 -0
  927. package/python-runtime/python/lib/python3.12/site-packages/attr/converters.py +162 -0
  928. package/python-runtime/python/lib/python3.12/site-packages/attr/converters.pyi +19 -0
  929. package/python-runtime/python/lib/python3.12/site-packages/attr/exceptions.py +95 -0
  930. package/python-runtime/python/lib/python3.12/site-packages/attr/exceptions.pyi +17 -0
  931. package/python-runtime/python/lib/python3.12/site-packages/attr/filters.py +72 -0
  932. package/python-runtime/python/lib/python3.12/site-packages/attr/filters.pyi +6 -0
  933. package/python-runtime/python/lib/python3.12/site-packages/attr/py.typed +0 -0
  934. package/python-runtime/python/lib/python3.12/site-packages/attr/setters.py +79 -0
  935. package/python-runtime/python/lib/python3.12/site-packages/attr/setters.pyi +20 -0
  936. package/python-runtime/python/lib/python3.12/site-packages/attr/validators.py +750 -0
  937. package/python-runtime/python/lib/python3.12/site-packages/attr/validators.pyi +140 -0
  938. package/python-runtime/python/lib/python3.12/site-packages/attrs/__init__.py +72 -0
  939. package/python-runtime/python/lib/python3.12/site-packages/attrs/__init__.pyi +314 -0
  940. package/python-runtime/python/lib/python3.12/site-packages/attrs/converters.py +3 -0
  941. package/python-runtime/python/lib/python3.12/site-packages/attrs/exceptions.py +3 -0
  942. package/python-runtime/python/lib/python3.12/site-packages/attrs/filters.py +3 -0
  943. package/python-runtime/python/lib/python3.12/site-packages/attrs/py.typed +0 -0
  944. package/python-runtime/python/lib/python3.12/site-packages/attrs/setters.py +3 -0
  945. package/python-runtime/python/lib/python3.12/site-packages/attrs/validators.py +3 -0
  946. package/python-runtime/python/lib/python3.12/site-packages/attrs-26.1.0.dist-info/INSTALLER +1 -0
  947. package/python-runtime/python/lib/python3.12/site-packages/attrs-26.1.0.dist-info/METADATA +199 -0
  948. package/python-runtime/python/lib/python3.12/site-packages/attrs-26.1.0.dist-info/RECORD +55 -0
  949. package/python-runtime/python/lib/python3.12/site-packages/attrs-26.1.0.dist-info/WHEEL +4 -0
  950. package/python-runtime/python/lib/python3.12/site-packages/certifi/__init__.py +4 -0
  951. package/python-runtime/python/lib/python3.12/site-packages/certifi/__main__.py +12 -0
  952. package/python-runtime/python/lib/python3.12/site-packages/certifi/cacert.pem +3885 -0
  953. package/python-runtime/python/lib/python3.12/site-packages/certifi/core.py +83 -0
  954. package/python-runtime/python/lib/python3.12/site-packages/certifi/py.typed +0 -0
  955. package/python-runtime/python/lib/python3.12/site-packages/certifi-2026.10.23.dist-info/INSTALLER +1 -0
  956. package/python-runtime/python/lib/python3.12/site-packages/certifi-2026.10.23.dist-info/METADATA +79 -0
  957. package/python-runtime/python/lib/python3.12/site-packages/certifi-2026.10.23.dist-info/RECORD +18 -0
  958. package/python-runtime/python/lib/python3.12/site-packages/certifi-2026.10.23.dist-info/WHEEL +5 -0
  959. package/python-runtime/python/lib/python3.12/site-packages/cffi/__init__.py +14 -0
  960. package/python-runtime/python/lib/python3.12/site-packages/cffi/_cffi_errors.h +135 -0
  961. package/python-runtime/python/lib/python3.12/site-packages/cffi/_cffi_gen_src.py +216 -0
  962. package/python-runtime/python/lib/python3.12/site-packages/cffi/_cffi_include.h +397 -0
  963. package/python-runtime/python/lib/python3.12/site-packages/cffi/_embedding.h +512 -0
  964. package/python-runtime/python/lib/python3.12/site-packages/cffi/_imp_emulation.py +83 -0
  965. package/python-runtime/python/lib/python3.12/site-packages/cffi/_shimmed_dist_utils.py +45 -0
  966. package/python-runtime/python/lib/python3.12/site-packages/cffi/api.py +960 -0
  967. package/python-runtime/python/lib/python3.12/site-packages/cffi/backend_ctypes.py +1120 -0
  968. package/python-runtime/python/lib/python3.12/site-packages/cffi/cffi_opcode.py +187 -0
  969. package/python-runtime/python/lib/python3.12/site-packages/cffi/commontypes.py +82 -0
  970. package/python-runtime/python/lib/python3.12/site-packages/cffi/cparser.py +1014 -0
  971. package/python-runtime/python/lib/python3.12/site-packages/cffi/error.py +31 -0
  972. package/python-runtime/python/lib/python3.12/site-packages/cffi/ffiplatform.py +113 -0
  973. package/python-runtime/python/lib/python3.12/site-packages/cffi/gen_src.py +5 -0
  974. package/python-runtime/python/lib/python3.12/site-packages/cffi/lock.py +30 -0
  975. package/python-runtime/python/lib/python3.12/site-packages/cffi/model.py +617 -0
  976. package/python-runtime/python/lib/python3.12/site-packages/cffi/parse_c_type.h +181 -0
  977. package/python-runtime/python/lib/python3.12/site-packages/cffi/pkgconfig.py +121 -0
  978. package/python-runtime/python/lib/python3.12/site-packages/cffi/recompiler.py +1586 -0
  979. package/python-runtime/python/lib/python3.12/site-packages/cffi/setuptools_ext.py +231 -0
  980. package/python-runtime/python/lib/python3.12/site-packages/cffi/vengine_cpy.py +1058 -0
  981. package/python-runtime/python/lib/python3.12/site-packages/cffi/vengine_gen.py +679 -0
  982. package/python-runtime/python/lib/python3.12/site-packages/cffi/verifier.py +306 -0
  983. package/python-runtime/python/lib/python3.12/site-packages/cffi-2.1.1.dist-info/INSTALLER +1 -0
  984. package/python-runtime/python/lib/python3.12/site-packages/cffi-2.1.1.dist-info/METADATA +67 -0
  985. package/python-runtime/python/lib/python3.12/site-packages/cffi-2.1.1.dist-info/RECORD +53 -0
  986. package/python-runtime/python/lib/python3.12/site-packages/cffi-2.1.1.dist-info/WHEEL +6 -0
  987. package/python-runtime/python/lib/python3.12/site-packages/cffi-2.1.1.dist-info/entry_points.txt +5 -0
  988. package/python-runtime/python/lib/python3.12/site-packages/click/__init__.py +144 -0
  989. package/python-runtime/python/lib/python3.12/site-packages/click/_compat.py +590 -0
  990. package/python-runtime/python/lib/python3.12/site-packages/click/_termui_impl.py +970 -0
  991. package/python-runtime/python/lib/python3.12/site-packages/click/_textwrap.py +188 -0
  992. package/python-runtime/python/lib/python3.12/site-packages/click/_utils.py +45 -0
  993. package/python-runtime/python/lib/python3.12/site-packages/click/_winconsole.py +292 -0
  994. package/python-runtime/python/lib/python3.12/site-packages/click/core.py +3825 -0
  995. package/python-runtime/python/lib/python3.12/site-packages/click/decorators.py +625 -0
  996. package/python-runtime/python/lib/python3.12/site-packages/click/exceptions.py +378 -0
  997. package/python-runtime/python/lib/python3.12/site-packages/click/formatting.py +320 -0
  998. package/python-runtime/python/lib/python3.12/site-packages/click/globals.py +67 -0
  999. package/python-runtime/python/lib/python3.12/site-packages/click/parser.py +533 -0
  1000. package/python-runtime/python/lib/python3.12/site-packages/click/py.typed +0 -0
  1001. package/python-runtime/python/lib/python3.12/site-packages/click/shell_completion.py +796 -0
  1002. package/python-runtime/python/lib/python3.12/site-packages/click/termui.py +1024 -0
  1003. package/python-runtime/python/lib/python3.12/site-packages/click/testing.py +796 -0
  1004. package/python-runtime/python/lib/python3.12/site-packages/click/types.py +1437 -0
  1005. package/python-runtime/python/lib/python3.12/site-packages/click/utils.py +676 -0
  1006. package/python-runtime/python/lib/python3.12/site-packages/click-8.5.1.dist-info/INSTALLER +1 -0
  1007. package/python-runtime/python/lib/python3.12/site-packages/click-8.5.1.dist-info/METADATA +83 -0
  1008. package/python-runtime/python/lib/python3.12/site-packages/click-8.5.1.dist-info/RECORD +40 -0
  1009. package/python-runtime/python/lib/python3.12/site-packages/click-8.5.1.dist-info/WHEEL +4 -0
  1010. package/python-runtime/python/lib/python3.12/site-packages/cryptography/__about__.py +17 -0
  1011. package/python-runtime/python/lib/python3.12/site-packages/cryptography/__init__.py +13 -0
  1012. package/python-runtime/python/lib/python3.12/site-packages/cryptography/cobblestone.py +21 -0
  1013. package/python-runtime/python/lib/python3.12/site-packages/cryptography/exceptions.py +52 -0
  1014. package/python-runtime/python/lib/python3.12/site-packages/cryptography/fernet.py +240 -0
  1015. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/__init__.py +13 -0
  1016. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/_oid.py +373 -0
  1017. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/asn1/__init__.py +47 -0
  1018. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/asn1/asn1.py +533 -0
  1019. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/backends/__init__.py +13 -0
  1020. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/backends/openssl/__init__.py +9 -0
  1021. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/backends/openssl/backend.py +309 -0
  1022. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/__init__.py +5 -0
  1023. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/__init__.pyi +67 -0
  1024. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/_openssl.pyi +8 -0
  1025. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/asn1.pyi +7 -0
  1026. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/cobblestone.pyi +33 -0
  1027. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/declarative_asn1.pyi +133 -0
  1028. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/exceptions.pyi +17 -0
  1029. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/ocsp.pyi +117 -0
  1030. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/__init__.pyi +82 -0
  1031. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/aead.pyi +189 -0
  1032. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/ciphers.pyi +38 -0
  1033. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/cmac.pyi +18 -0
  1034. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/dh.pyi +51 -0
  1035. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/dsa.pyi +41 -0
  1036. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/ec.pyi +52 -0
  1037. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/ed25519.pyi +13 -0
  1038. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/ed448.pyi +13 -0
  1039. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/hashes.pyi +30 -0
  1040. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/hmac.pyi +22 -0
  1041. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/hpke.pyi +109 -0
  1042. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/kdf.pyi +205 -0
  1043. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/keys.pyi +34 -0
  1044. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/keywrap.pyi +28 -0
  1045. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/mldsa.pyi +35 -0
  1046. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/mlkem.pyi +18 -0
  1047. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/poly1305.pyi +15 -0
  1048. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/rsa.pyi +55 -0
  1049. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/x25519.pyi +13 -0
  1050. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/x448.pyi +13 -0
  1051. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/pkcs12.pyi +52 -0
  1052. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/pkcs7.pyi +50 -0
  1053. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/test_support.pyi +23 -0
  1054. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/x509.pyi +313 -0
  1055. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust.abi3.so +0 -0
  1056. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/openssl/__init__.py +5 -0
  1057. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/openssl/_conditional.py +199 -0
  1058. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/openssl/binding.py +107 -0
  1059. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/decrepit/__init__.py +5 -0
  1060. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/decrepit/ciphers/__init__.py +5 -0
  1061. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/decrepit/ciphers/algorithms.py +145 -0
  1062. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/decrepit/ciphers/modes.py +53 -0
  1063. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/__init__.py +5 -0
  1064. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/_asymmetric.py +19 -0
  1065. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/_cipheralgorithm.py +60 -0
  1066. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/_modes.py +105 -0
  1067. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/_serialization.py +136 -0
  1068. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__init__.py +5 -0
  1069. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/dh.py +253 -0
  1070. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/dsa.py +179 -0
  1071. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/ec.py +369 -0
  1072. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/ed25519.py +116 -0
  1073. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/ed448.py +143 -0
  1074. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/mldsa.py +505 -0
  1075. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/mlkem.py +278 -0
  1076. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/padding.py +141 -0
  1077. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/rsa.py +295 -0
  1078. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/types.py +94 -0
  1079. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/utils.py +28 -0
  1080. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/x25519.py +134 -0
  1081. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/x448.py +137 -0
  1082. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/__init__.py +27 -0
  1083. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/aead.py +23 -0
  1084. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/algorithms.py +138 -0
  1085. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/base.py +146 -0
  1086. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/modes.py +192 -0
  1087. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/cmac.py +10 -0
  1088. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/constant_time.py +14 -0
  1089. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/hashes.py +357 -0
  1090. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/hmac.py +13 -0
  1091. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/hpke.py +27 -0
  1092. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/__init__.py +32 -0
  1093. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/argon2.py +17 -0
  1094. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/concatkdf.py +16 -0
  1095. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/hkdf.py +16 -0
  1096. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/kbkdf.py +26 -0
  1097. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/pbkdf2.py +13 -0
  1098. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/scrypt.py +19 -0
  1099. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/x963kdf.py +13 -0
  1100. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/keywrap.py +25 -0
  1101. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/padding.py +69 -0
  1102. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/poly1305.py +11 -0
  1103. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/__init__.py +85 -0
  1104. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/base.py +16 -0
  1105. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/pkcs12.py +176 -0
  1106. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/pkcs7.py +412 -0
  1107. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/ssh.py +1615 -0
  1108. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/twofactor/__init__.py +9 -0
  1109. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/twofactor/hotp.py +101 -0
  1110. package/python-runtime/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/twofactor/totp.py +56 -0
  1111. package/python-runtime/python/lib/python3.12/site-packages/cryptography/py.typed +0 -0
  1112. package/python-runtime/python/lib/python3.12/site-packages/cryptography/utils.py +136 -0
  1113. package/python-runtime/python/lib/python3.12/site-packages/cryptography/x509/__init__.py +270 -0
  1114. package/python-runtime/python/lib/python3.12/site-packages/cryptography/x509/base.py +834 -0
  1115. package/python-runtime/python/lib/python3.12/site-packages/cryptography/x509/certificate_transparency.py +35 -0
  1116. package/python-runtime/python/lib/python3.12/site-packages/cryptography/x509/extensions.py +2533 -0
  1117. package/python-runtime/python/lib/python3.12/site-packages/cryptography/x509/general_name.py +281 -0
  1118. package/python-runtime/python/lib/python3.12/site-packages/cryptography/x509/name.py +489 -0
  1119. package/python-runtime/python/lib/python3.12/site-packages/cryptography/x509/ocsp.py +379 -0
  1120. package/python-runtime/python/lib/python3.12/site-packages/cryptography/x509/oid.py +37 -0
  1121. package/python-runtime/python/lib/python3.12/site-packages/cryptography/x509/verification.py +34 -0
  1122. package/python-runtime/python/lib/python3.12/site-packages/cryptography-50.0.2.dist-info/INSTALLER +1 -0
  1123. package/python-runtime/python/lib/python3.12/site-packages/cryptography-50.0.2.dist-info/METADATA +111 -0
  1124. package/python-runtime/python/lib/python3.12/site-packages/cryptography-50.0.2.dist-info/RECORD +199 -0
  1125. package/python-runtime/python/lib/python3.12/site-packages/cryptography-50.0.2.dist-info/WHEEL +4 -0
  1126. package/python-runtime/python/lib/python3.12/site-packages/dotenv/__init__.py +51 -0
  1127. package/python-runtime/python/lib/python3.12/site-packages/dotenv/__main__.py +6 -0
  1128. package/python-runtime/python/lib/python3.12/site-packages/dotenv/cli.py +246 -0
  1129. package/python-runtime/python/lib/python3.12/site-packages/dotenv/ipython.py +50 -0
  1130. package/python-runtime/python/lib/python3.12/site-packages/dotenv/main.py +487 -0
  1131. package/python-runtime/python/lib/python3.12/site-packages/dotenv/parser.py +191 -0
  1132. package/python-runtime/python/lib/python3.12/site-packages/dotenv/py.typed +1 -0
  1133. package/python-runtime/python/lib/python3.12/site-packages/dotenv/variables.py +86 -0
  1134. package/python-runtime/python/lib/python3.12/site-packages/dotenv/version.py +1 -0
  1135. package/python-runtime/python/lib/python3.12/site-packages/h11/__init__.py +62 -0
  1136. package/python-runtime/python/lib/python3.12/site-packages/h11/_abnf.py +132 -0
  1137. package/python-runtime/python/lib/python3.12/site-packages/h11/_connection.py +659 -0
  1138. package/python-runtime/python/lib/python3.12/site-packages/h11/_events.py +369 -0
  1139. package/python-runtime/python/lib/python3.12/site-packages/h11/_headers.py +282 -0
  1140. package/python-runtime/python/lib/python3.12/site-packages/h11/_readers.py +250 -0
  1141. package/python-runtime/python/lib/python3.12/site-packages/h11/_receivebuffer.py +153 -0
  1142. package/python-runtime/python/lib/python3.12/site-packages/h11/_state.py +365 -0
  1143. package/python-runtime/python/lib/python3.12/site-packages/h11/_util.py +135 -0
  1144. package/python-runtime/python/lib/python3.12/site-packages/h11/_version.py +16 -0
  1145. package/python-runtime/python/lib/python3.12/site-packages/h11/_writers.py +145 -0
  1146. package/python-runtime/python/lib/python3.12/site-packages/h11/py.typed +1 -0
  1147. package/python-runtime/python/lib/python3.12/site-packages/h11-0.16.0.dist-info/INSTALLER +1 -0
  1148. package/python-runtime/python/lib/python3.12/site-packages/h11-0.16.0.dist-info/METADATA +202 -0
  1149. package/python-runtime/python/lib/python3.12/site-packages/h11-0.16.0.dist-info/RECORD +29 -0
  1150. package/python-runtime/python/lib/python3.12/site-packages/h11-0.16.0.dist-info/WHEEL +5 -0
  1151. package/python-runtime/python/lib/python3.12/site-packages/httpcore/__init__.py +141 -0
  1152. package/python-runtime/python/lib/python3.12/site-packages/httpcore/_api.py +94 -0
  1153. package/python-runtime/python/lib/python3.12/site-packages/httpcore/_async/__init__.py +39 -0
  1154. package/python-runtime/python/lib/python3.12/site-packages/httpcore/_async/connection.py +222 -0
  1155. package/python-runtime/python/lib/python3.12/site-packages/httpcore/_async/connection_pool.py +420 -0
  1156. package/python-runtime/python/lib/python3.12/site-packages/httpcore/_async/http11.py +379 -0
  1157. package/python-runtime/python/lib/python3.12/site-packages/httpcore/_async/http2.py +592 -0
  1158. package/python-runtime/python/lib/python3.12/site-packages/httpcore/_async/http_proxy.py +367 -0
  1159. package/python-runtime/python/lib/python3.12/site-packages/httpcore/_async/interfaces.py +137 -0
  1160. package/python-runtime/python/lib/python3.12/site-packages/httpcore/_async/socks_proxy.py +341 -0
  1161. package/python-runtime/python/lib/python3.12/site-packages/httpcore/_backends/__init__.py +0 -0
  1162. package/python-runtime/python/lib/python3.12/site-packages/httpcore/_backends/anyio.py +146 -0
  1163. package/python-runtime/python/lib/python3.12/site-packages/httpcore/_backends/auto.py +52 -0
  1164. package/python-runtime/python/lib/python3.12/site-packages/httpcore/_backends/base.py +101 -0
  1165. package/python-runtime/python/lib/python3.12/site-packages/httpcore/_backends/mock.py +143 -0
  1166. package/python-runtime/python/lib/python3.12/site-packages/httpcore/_backends/sync.py +241 -0
  1167. package/python-runtime/python/lib/python3.12/site-packages/httpcore/_backends/trio.py +159 -0
  1168. package/python-runtime/python/lib/python3.12/site-packages/httpcore/_exceptions.py +81 -0
  1169. package/python-runtime/python/lib/python3.12/site-packages/httpcore/_models.py +516 -0
  1170. package/python-runtime/python/lib/python3.12/site-packages/httpcore/_ssl.py +9 -0
  1171. package/python-runtime/python/lib/python3.12/site-packages/httpcore/_sync/__init__.py +39 -0
  1172. package/python-runtime/python/lib/python3.12/site-packages/httpcore/_sync/connection.py +222 -0
  1173. package/python-runtime/python/lib/python3.12/site-packages/httpcore/_sync/connection_pool.py +420 -0
  1174. package/python-runtime/python/lib/python3.12/site-packages/httpcore/_sync/http11.py +379 -0
  1175. package/python-runtime/python/lib/python3.12/site-packages/httpcore/_sync/http2.py +592 -0
  1176. package/python-runtime/python/lib/python3.12/site-packages/httpcore/_sync/http_proxy.py +367 -0
  1177. package/python-runtime/python/lib/python3.12/site-packages/httpcore/_sync/interfaces.py +137 -0
  1178. package/python-runtime/python/lib/python3.12/site-packages/httpcore/_sync/socks_proxy.py +341 -0
  1179. package/python-runtime/python/lib/python3.12/site-packages/httpcore/_synchronization.py +318 -0
  1180. package/python-runtime/python/lib/python3.12/site-packages/httpcore/_trace.py +107 -0
  1181. package/python-runtime/python/lib/python3.12/site-packages/httpcore/_utils.py +37 -0
  1182. package/python-runtime/python/lib/python3.12/site-packages/httpcore/py.typed +0 -0
  1183. package/python-runtime/python/lib/python3.12/site-packages/httpcore-1.0.9.dist-info/INSTALLER +1 -0
  1184. package/python-runtime/python/lib/python3.12/site-packages/httpcore-1.0.9.dist-info/METADATA +625 -0
  1185. package/python-runtime/python/lib/python3.12/site-packages/httpcore-1.0.9.dist-info/RECORD +68 -0
  1186. package/python-runtime/python/lib/python3.12/site-packages/httpcore-1.0.9.dist-info/WHEEL +4 -0
  1187. package/python-runtime/python/lib/python3.12/site-packages/httpx/__init__.py +105 -0
  1188. package/python-runtime/python/lib/python3.12/site-packages/httpx/__version__.py +3 -0
  1189. package/python-runtime/python/lib/python3.12/site-packages/httpx/_api.py +438 -0
  1190. package/python-runtime/python/lib/python3.12/site-packages/httpx/_auth.py +348 -0
  1191. package/python-runtime/python/lib/python3.12/site-packages/httpx/_client.py +2019 -0
  1192. package/python-runtime/python/lib/python3.12/site-packages/httpx/_config.py +248 -0
  1193. package/python-runtime/python/lib/python3.12/site-packages/httpx/_content.py +240 -0
  1194. package/python-runtime/python/lib/python3.12/site-packages/httpx/_decoders.py +393 -0
  1195. package/python-runtime/python/lib/python3.12/site-packages/httpx/_exceptions.py +379 -0
  1196. package/python-runtime/python/lib/python3.12/site-packages/httpx/_main.py +506 -0
  1197. package/python-runtime/python/lib/python3.12/site-packages/httpx/_models.py +1277 -0
  1198. package/python-runtime/python/lib/python3.12/site-packages/httpx/_multipart.py +300 -0
  1199. package/python-runtime/python/lib/python3.12/site-packages/httpx/_status_codes.py +162 -0
  1200. package/python-runtime/python/lib/python3.12/site-packages/httpx/_transports/__init__.py +15 -0
  1201. package/python-runtime/python/lib/python3.12/site-packages/httpx/_transports/asgi.py +187 -0
  1202. package/python-runtime/python/lib/python3.12/site-packages/httpx/_transports/base.py +86 -0
  1203. package/python-runtime/python/lib/python3.12/site-packages/httpx/_transports/default.py +406 -0
  1204. package/python-runtime/python/lib/python3.12/site-packages/httpx/_transports/mock.py +43 -0
  1205. package/python-runtime/python/lib/python3.12/site-packages/httpx/_transports/wsgi.py +149 -0
  1206. package/python-runtime/python/lib/python3.12/site-packages/httpx/_types.py +114 -0
  1207. package/python-runtime/python/lib/python3.12/site-packages/httpx/_urlparse.py +527 -0
  1208. package/python-runtime/python/lib/python3.12/site-packages/httpx/_urls.py +641 -0
  1209. package/python-runtime/python/lib/python3.12/site-packages/httpx/_utils.py +242 -0
  1210. package/python-runtime/python/lib/python3.12/site-packages/httpx/py.typed +0 -0
  1211. package/python-runtime/python/lib/python3.12/site-packages/httpx-0.28.1.dist-info/INSTALLER +1 -0
  1212. package/python-runtime/python/lib/python3.12/site-packages/httpx-0.28.1.dist-info/METADATA +203 -0
  1213. package/python-runtime/python/lib/python3.12/site-packages/httpx-0.28.1.dist-info/RECORD +54 -0
  1214. package/python-runtime/python/lib/python3.12/site-packages/httpx-0.28.1.dist-info/WHEEL +4 -0
  1215. package/python-runtime/python/lib/python3.12/site-packages/httpx-0.28.1.dist-info/entry_points.txt +2 -0
  1216. package/python-runtime/python/lib/python3.12/site-packages/httpx_sse/__init__.py +14 -0
  1217. package/python-runtime/python/lib/python3.12/site-packages/httpx_sse/_api.py +93 -0
  1218. package/python-runtime/python/lib/python3.12/site-packages/httpx_sse/_decoders.py +139 -0
  1219. package/python-runtime/python/lib/python3.12/site-packages/httpx_sse/_exceptions.py +5 -0
  1220. package/python-runtime/python/lib/python3.12/site-packages/httpx_sse/_models.py +54 -0
  1221. package/python-runtime/python/lib/python3.12/site-packages/httpx_sse/py.typed +0 -0
  1222. package/python-runtime/python/lib/python3.12/site-packages/httpx_sse-0.4.3.dist-info/INSTALLER +1 -0
  1223. package/python-runtime/python/lib/python3.12/site-packages/httpx_sse-0.4.3.dist-info/METADATA +351 -0
  1224. package/python-runtime/python/lib/python3.12/site-packages/httpx_sse-0.4.3.dist-info/RECORD +17 -0
  1225. package/python-runtime/python/lib/python3.12/site-packages/httpx_sse-0.4.3.dist-info/WHEEL +5 -0
  1226. package/python-runtime/python/lib/python3.12/site-packages/idna/__init__.py +47 -0
  1227. package/python-runtime/python/lib/python3.12/site-packages/idna/__main__.py +6 -0
  1228. package/python-runtime/python/lib/python3.12/site-packages/idna/cli.py +132 -0
  1229. package/python-runtime/python/lib/python3.12/site-packages/idna/codec.py +225 -0
  1230. package/python-runtime/python/lib/python3.12/site-packages/idna/compat.py +43 -0
  1231. package/python-runtime/python/lib/python3.12/site-packages/idna/core.py +863 -0
  1232. package/python-runtime/python/lib/python3.12/site-packages/idna/idnadata.py +1933 -0
  1233. package/python-runtime/python/lib/python3.12/site-packages/idna/intranges.py +55 -0
  1234. package/python-runtime/python/lib/python3.12/site-packages/idna/package_data.py +1 -0
  1235. package/python-runtime/python/lib/python3.12/site-packages/idna/py.typed +0 -0
  1236. package/python-runtime/python/lib/python3.12/site-packages/idna/uts46data.py +17117 -0
  1237. package/python-runtime/python/lib/python3.12/site-packages/idna-3.20.dist-info/INSTALLER +1 -0
  1238. package/python-runtime/python/lib/python3.12/site-packages/idna-3.20.dist-info/METADATA +176 -0
  1239. package/python-runtime/python/lib/python3.12/site-packages/idna-3.20.dist-info/RECORD +28 -0
  1240. package/python-runtime/python/lib/python3.12/site-packages/idna-3.20.dist-info/WHEEL +4 -0
  1241. package/python-runtime/python/lib/python3.12/site-packages/idna-3.20.dist-info/entry_points.txt +3 -0
  1242. package/python-runtime/python/lib/python3.12/site-packages/jsonschema/__init__.py +120 -0
  1243. package/python-runtime/python/lib/python3.12/site-packages/jsonschema/__main__.py +6 -0
  1244. package/python-runtime/python/lib/python3.12/site-packages/jsonschema/_format.py +546 -0
  1245. package/python-runtime/python/lib/python3.12/site-packages/jsonschema/_keywords.py +449 -0
  1246. package/python-runtime/python/lib/python3.12/site-packages/jsonschema/_legacy_keywords.py +449 -0
  1247. package/python-runtime/python/lib/python3.12/site-packages/jsonschema/_types.py +204 -0
  1248. package/python-runtime/python/lib/python3.12/site-packages/jsonschema/_typing.py +29 -0
  1249. package/python-runtime/python/lib/python3.12/site-packages/jsonschema/_utils.py +355 -0
  1250. package/python-runtime/python/lib/python3.12/site-packages/jsonschema/benchmarks/__init__.py +5 -0
  1251. package/python-runtime/python/lib/python3.12/site-packages/jsonschema/benchmarks/const_vs_enum.py +30 -0
  1252. package/python-runtime/python/lib/python3.12/site-packages/jsonschema/benchmarks/contains.py +28 -0
  1253. package/python-runtime/python/lib/python3.12/site-packages/jsonschema/benchmarks/import_benchmark.py +31 -0
  1254. package/python-runtime/python/lib/python3.12/site-packages/jsonschema/benchmarks/issue232/issue.json +2653 -0
  1255. package/python-runtime/python/lib/python3.12/site-packages/jsonschema/benchmarks/issue232.py +25 -0
  1256. package/python-runtime/python/lib/python3.12/site-packages/jsonschema/benchmarks/json_schema_test_suite.py +12 -0
  1257. package/python-runtime/python/lib/python3.12/site-packages/jsonschema/benchmarks/nested_schemas.py +56 -0
  1258. package/python-runtime/python/lib/python3.12/site-packages/jsonschema/benchmarks/subcomponents.py +42 -0
  1259. package/python-runtime/python/lib/python3.12/site-packages/jsonschema/benchmarks/unused_registry.py +35 -0
  1260. package/python-runtime/python/lib/python3.12/site-packages/jsonschema/benchmarks/useless_applicator_schemas.py +106 -0
  1261. package/python-runtime/python/lib/python3.12/site-packages/jsonschema/benchmarks/useless_keywords.py +32 -0
  1262. package/python-runtime/python/lib/python3.12/site-packages/jsonschema/benchmarks/validator_creation.py +14 -0
  1263. package/python-runtime/python/lib/python3.12/site-packages/jsonschema/cli.py +292 -0
  1264. package/python-runtime/python/lib/python3.12/site-packages/jsonschema/exceptions.py +490 -0
  1265. package/python-runtime/python/lib/python3.12/site-packages/jsonschema/protocols.py +230 -0
  1266. package/python-runtime/python/lib/python3.12/site-packages/jsonschema/validators.py +1410 -0
  1267. package/python-runtime/python/lib/python3.12/site-packages/jsonschema-4.26.0.dist-info/INSTALLER +1 -0
  1268. package/python-runtime/python/lib/python3.12/site-packages/jsonschema-4.26.0.dist-info/METADATA +170 -0
  1269. package/python-runtime/python/lib/python3.12/site-packages/jsonschema-4.26.0.dist-info/RECORD +82 -0
  1270. package/python-runtime/python/lib/python3.12/site-packages/jsonschema-4.26.0.dist-info/WHEEL +4 -0
  1271. package/python-runtime/python/lib/python3.12/site-packages/jsonschema-4.26.0.dist-info/entry_points.txt +2 -0
  1272. package/python-runtime/python/lib/python3.12/site-packages/jsonschema_specifications/__init__.py +12 -0
  1273. package/python-runtime/python/lib/python3.12/site-packages/jsonschema_specifications/_core.py +38 -0
  1274. package/python-runtime/python/lib/python3.12/site-packages/jsonschema_specifications/schemas/draft201909/metaschema.json +42 -0
  1275. package/python-runtime/python/lib/python3.12/site-packages/jsonschema_specifications/schemas/draft201909/vocabularies/applicator +56 -0
  1276. package/python-runtime/python/lib/python3.12/site-packages/jsonschema_specifications/schemas/draft201909/vocabularies/content +17 -0
  1277. package/python-runtime/python/lib/python3.12/site-packages/jsonschema_specifications/schemas/draft201909/vocabularies/core +57 -0
  1278. package/python-runtime/python/lib/python3.12/site-packages/jsonschema_specifications/schemas/draft201909/vocabularies/format +14 -0
  1279. package/python-runtime/python/lib/python3.12/site-packages/jsonschema_specifications/schemas/draft201909/vocabularies/meta-data +37 -0
  1280. package/python-runtime/python/lib/python3.12/site-packages/jsonschema_specifications/schemas/draft201909/vocabularies/validation +98 -0
  1281. package/python-runtime/python/lib/python3.12/site-packages/jsonschema_specifications/schemas/draft202012/metaschema.json +58 -0
  1282. package/python-runtime/python/lib/python3.12/site-packages/jsonschema_specifications/schemas/draft202012/vocabularies/applicator +48 -0
  1283. package/python-runtime/python/lib/python3.12/site-packages/jsonschema_specifications/schemas/draft202012/vocabularies/content +17 -0
  1284. package/python-runtime/python/lib/python3.12/site-packages/jsonschema_specifications/schemas/draft202012/vocabularies/core +51 -0
  1285. package/python-runtime/python/lib/python3.12/site-packages/jsonschema_specifications/schemas/draft202012/vocabularies/format-annotation +14 -0
  1286. package/python-runtime/python/lib/python3.12/site-packages/jsonschema_specifications/schemas/draft202012/vocabularies/format-assertion +14 -0
  1287. package/python-runtime/python/lib/python3.12/site-packages/jsonschema_specifications/schemas/draft202012/vocabularies/meta-data +37 -0
  1288. package/python-runtime/python/lib/python3.12/site-packages/jsonschema_specifications/schemas/draft202012/vocabularies/unevaluated +15 -0
  1289. package/python-runtime/python/lib/python3.12/site-packages/jsonschema_specifications/schemas/draft202012/vocabularies/validation +98 -0
  1290. package/python-runtime/python/lib/python3.12/site-packages/jsonschema_specifications/schemas/draft3/metaschema.json +172 -0
  1291. package/python-runtime/python/lib/python3.12/site-packages/jsonschema_specifications/schemas/draft4/metaschema.json +149 -0
  1292. package/python-runtime/python/lib/python3.12/site-packages/jsonschema_specifications/schemas/draft6/metaschema.json +153 -0
  1293. package/python-runtime/python/lib/python3.12/site-packages/jsonschema_specifications/schemas/draft7/metaschema.json +166 -0
  1294. package/python-runtime/python/lib/python3.12/site-packages/jsonschema_specifications-2025.9.1.dist-info/INSTALLER +1 -0
  1295. package/python-runtime/python/lib/python3.12/site-packages/jsonschema_specifications-2025.9.1.dist-info/METADATA +54 -0
  1296. package/python-runtime/python/lib/python3.12/site-packages/jsonschema_specifications-2025.9.1.dist-info/RECORD +33 -0
  1297. package/python-runtime/python/lib/python3.12/site-packages/jsonschema_specifications-2025.9.1.dist-info/WHEEL +4 -0
  1298. package/python-runtime/python/lib/python3.12/site-packages/jwt/__init__.py +78 -0
  1299. package/python-runtime/python/lib/python3.12/site-packages/jwt/algorithms.py +1121 -0
  1300. package/python-runtime/python/lib/python3.12/site-packages/jwt/api_jwk.py +196 -0
  1301. package/python-runtime/python/lib/python3.12/site-packages/jwt/api_jws.py +485 -0
  1302. package/python-runtime/python/lib/python3.12/site-packages/jwt/api_jwt.py +595 -0
  1303. package/python-runtime/python/lib/python3.12/site-packages/jwt/exceptions.py +113 -0
  1304. package/python-runtime/python/lib/python3.12/site-packages/jwt/help.py +66 -0
  1305. package/python-runtime/python/lib/python3.12/site-packages/jwt/jwk_set_cache.py +47 -0
  1306. package/python-runtime/python/lib/python3.12/site-packages/jwt/jwks_client.py +333 -0
  1307. package/python-runtime/python/lib/python3.12/site-packages/jwt/py.typed +0 -0
  1308. package/python-runtime/python/lib/python3.12/site-packages/jwt/types.py +69 -0
  1309. package/python-runtime/python/lib/python3.12/site-packages/jwt/utils.py +146 -0
  1310. package/python-runtime/python/lib/python3.12/site-packages/jwt/warnings.py +11 -0
  1311. package/python-runtime/python/lib/python3.12/site-packages/mcp/__init__.py +135 -0
  1312. package/python-runtime/python/lib/python3.12/site-packages/mcp/cli/__init__.py +6 -0
  1313. package/python-runtime/python/lib/python3.12/site-packages/mcp/cli/claude.py +148 -0
  1314. package/python-runtime/python/lib/python3.12/site-packages/mcp/cli/cli.py +488 -0
  1315. package/python-runtime/python/lib/python3.12/site-packages/mcp/client/__init__.py +0 -0
  1316. package/python-runtime/python/lib/python3.12/site-packages/mcp/client/__main__.py +85 -0
  1317. package/python-runtime/python/lib/python3.12/site-packages/mcp/client/auth/__init__.py +21 -0
  1318. package/python-runtime/python/lib/python3.12/site-packages/mcp/client/auth/exceptions.py +10 -0
  1319. package/python-runtime/python/lib/python3.12/site-packages/mcp/client/auth/extensions/__init__.py +0 -0
  1320. package/python-runtime/python/lib/python3.12/site-packages/mcp/client/auth/extensions/client_credentials.py +567 -0
  1321. package/python-runtime/python/lib/python3.12/site-packages/mcp/client/auth/oauth2.py +682 -0
  1322. package/python-runtime/python/lib/python3.12/site-packages/mcp/client/auth/utils.py +395 -0
  1323. package/python-runtime/python/lib/python3.12/site-packages/mcp/client/experimental/__init__.py +9 -0
  1324. package/python-runtime/python/lib/python3.12/site-packages/mcp/client/experimental/task_handlers.py +290 -0
  1325. package/python-runtime/python/lib/python3.12/site-packages/mcp/client/experimental/tasks.py +224 -0
  1326. package/python-runtime/python/lib/python3.12/site-packages/mcp/client/session.py +640 -0
  1327. package/python-runtime/python/lib/python3.12/site-packages/mcp/client/session_group.py +447 -0
  1328. package/python-runtime/python/lib/python3.12/site-packages/mcp/client/sse.py +177 -0
  1329. package/python-runtime/python/lib/python3.12/site-packages/mcp/client/stdio/__init__.py +278 -0
  1330. package/python-runtime/python/lib/python3.12/site-packages/mcp/client/streamable_http.py +747 -0
  1331. package/python-runtime/python/lib/python3.12/site-packages/mcp/client/websocket.py +94 -0
  1332. package/python-runtime/python/lib/python3.12/site-packages/mcp/os/__init__.py +1 -0
  1333. package/python-runtime/python/lib/python3.12/site-packages/mcp/os/posix/__init__.py +1 -0
  1334. package/python-runtime/python/lib/python3.12/site-packages/mcp/os/posix/utilities.py +60 -0
  1335. package/python-runtime/python/lib/python3.12/site-packages/mcp/os/win32/__init__.py +1 -0
  1336. package/python-runtime/python/lib/python3.12/site-packages/mcp/os/win32/utilities.py +338 -0
  1337. package/python-runtime/python/lib/python3.12/site-packages/mcp/py.typed +0 -0
  1338. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/__init__.py +5 -0
  1339. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/__main__.py +50 -0
  1340. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/auth/__init__.py +3 -0
  1341. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/auth/errors.py +5 -0
  1342. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/auth/handlers/__init__.py +3 -0
  1343. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/auth/handlers/authorize.py +224 -0
  1344. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/auth/handlers/metadata.py +29 -0
  1345. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/auth/handlers/register.py +136 -0
  1346. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/auth/handlers/revoke.py +91 -0
  1347. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/auth/handlers/token.py +241 -0
  1348. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/auth/json_response.py +10 -0
  1349. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/auth/middleware/__init__.py +3 -0
  1350. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/auth/middleware/auth_context.py +48 -0
  1351. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/auth/middleware/bearer_auth.py +173 -0
  1352. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/auth/middleware/client_auth.py +115 -0
  1353. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/auth/provider.py +314 -0
  1354. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/auth/routes.py +254 -0
  1355. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/auth/settings.py +56 -0
  1356. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/elicitation.py +190 -0
  1357. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/experimental/__init__.py +12 -0
  1358. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/experimental/request_context.py +285 -0
  1359. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/experimental/session_features.py +226 -0
  1360. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/experimental/task_context.py +614 -0
  1361. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/experimental/task_result_handler.py +243 -0
  1362. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/experimental/task_scope.py +75 -0
  1363. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/experimental/task_support.py +128 -0
  1364. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/fastmcp/__init__.py +11 -0
  1365. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/fastmcp/exceptions.py +21 -0
  1366. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/fastmcp/prompts/__init__.py +4 -0
  1367. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/fastmcp/prompts/base.py +183 -0
  1368. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/fastmcp/prompts/manager.py +60 -0
  1369. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/fastmcp/resources/__init__.py +23 -0
  1370. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/fastmcp/resources/base.py +50 -0
  1371. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/fastmcp/resources/resource_manager.py +115 -0
  1372. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/fastmcp/resources/templates.py +122 -0
  1373. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/fastmcp/resources/types.py +203 -0
  1374. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/fastmcp/server.py +1390 -0
  1375. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/fastmcp/tools/__init__.py +4 -0
  1376. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/fastmcp/tools/base.py +126 -0
  1377. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/fastmcp/tools/tool_manager.py +93 -0
  1378. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/fastmcp/utilities/__init__.py +1 -0
  1379. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/fastmcp/utilities/context_injection.py +68 -0
  1380. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/fastmcp/utilities/func_metadata.py +560 -0
  1381. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/fastmcp/utilities/logging.py +43 -0
  1382. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/fastmcp/utilities/types.py +101 -0
  1383. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/lowlevel/__init__.py +3 -0
  1384. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/lowlevel/experimental.py +342 -0
  1385. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/lowlevel/func_inspection.py +54 -0
  1386. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/lowlevel/helper_types.py +11 -0
  1387. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/lowlevel/server.py +830 -0
  1388. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/models.py +20 -0
  1389. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/session.py +701 -0
  1390. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/sse.py +299 -0
  1391. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/stdio.py +88 -0
  1392. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/streamable_http.py +1131 -0
  1393. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/streamable_http_manager.py +425 -0
  1394. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/transport_security.py +194 -0
  1395. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/validation.py +104 -0
  1396. package/python-runtime/python/lib/python3.12/site-packages/mcp/server/websocket.py +89 -0
  1397. package/python-runtime/python/lib/python3.12/site-packages/mcp/shared/__init__.py +0 -0
  1398. package/python-runtime/python/lib/python3.12/site-packages/mcp/shared/_httpx_utils.py +219 -0
  1399. package/python-runtime/python/lib/python3.12/site-packages/mcp/shared/auth.py +180 -0
  1400. package/python-runtime/python/lib/python3.12/site-packages/mcp/shared/auth_utils.py +80 -0
  1401. package/python-runtime/python/lib/python3.12/site-packages/mcp/shared/context.py +32 -0
  1402. package/python-runtime/python/lib/python3.12/site-packages/mcp/shared/exceptions.py +71 -0
  1403. package/python-runtime/python/lib/python3.12/site-packages/mcp/shared/experimental/__init__.py +7 -0
  1404. package/python-runtime/python/lib/python3.12/site-packages/mcp/shared/experimental/tasks/__init__.py +12 -0
  1405. package/python-runtime/python/lib/python3.12/site-packages/mcp/shared/experimental/tasks/capabilities.py +115 -0
  1406. package/python-runtime/python/lib/python3.12/site-packages/mcp/shared/experimental/tasks/context.py +101 -0
  1407. package/python-runtime/python/lib/python3.12/site-packages/mcp/shared/experimental/tasks/helpers.py +181 -0
  1408. package/python-runtime/python/lib/python3.12/site-packages/mcp/shared/experimental/tasks/in_memory_task_store.py +219 -0
  1409. package/python-runtime/python/lib/python3.12/site-packages/mcp/shared/experimental/tasks/message_queue.py +241 -0
  1410. package/python-runtime/python/lib/python3.12/site-packages/mcp/shared/experimental/tasks/polling.py +45 -0
  1411. package/python-runtime/python/lib/python3.12/site-packages/mcp/shared/experimental/tasks/resolver.py +60 -0
  1412. package/python-runtime/python/lib/python3.12/site-packages/mcp/shared/experimental/tasks/store.py +156 -0
  1413. package/python-runtime/python/lib/python3.12/site-packages/mcp/shared/memory.py +98 -0
  1414. package/python-runtime/python/lib/python3.12/site-packages/mcp/shared/message.py +50 -0
  1415. package/python-runtime/python/lib/python3.12/site-packages/mcp/shared/metadata_utils.py +45 -0
  1416. package/python-runtime/python/lib/python3.12/site-packages/mcp/shared/progress.py +58 -0
  1417. package/python-runtime/python/lib/python3.12/site-packages/mcp/shared/response_router.py +63 -0
  1418. package/python-runtime/python/lib/python3.12/site-packages/mcp/shared/session.py +552 -0
  1419. package/python-runtime/python/lib/python3.12/site-packages/mcp/shared/tool_name_validation.py +129 -0
  1420. package/python-runtime/python/lib/python3.12/site-packages/mcp/shared/version.py +3 -0
  1421. package/python-runtime/python/lib/python3.12/site-packages/mcp/types.py +1999 -0
  1422. package/python-runtime/python/lib/python3.12/site-packages/mcp-1.30.0.dist-info/INSTALLER +1 -0
  1423. package/python-runtime/python/lib/python3.12/site-packages/mcp-1.30.0.dist-info/METADATA +239 -0
  1424. package/python-runtime/python/lib/python3.12/site-packages/mcp-1.30.0.dist-info/RECORD +228 -0
  1425. package/python-runtime/python/lib/python3.12/site-packages/mcp-1.30.0.dist-info/WHEEL +4 -0
  1426. package/python-runtime/python/lib/python3.12/site-packages/mcp-1.30.0.dist-info/entry_points.txt +2 -0
  1427. package/python-runtime/python/lib/python3.12/site-packages/multipart/__init__.py +38 -0
  1428. package/python-runtime/python/lib/python3.12/site-packages/multipart/decoders.py +1 -0
  1429. package/python-runtime/python/lib/python3.12/site-packages/multipart/exceptions.py +1 -0
  1430. package/python-runtime/python/lib/python3.12/site-packages/multipart/multipart.py +1 -0
  1431. package/python-runtime/python/lib/python3.12/site-packages/pillow-13.0.0.dist-info/INSTALLER +1 -0
  1432. package/python-runtime/python/lib/python3.12/site-packages/pillow-13.0.0.dist-info/METADATA +182 -0
  1433. package/python-runtime/python/lib/python3.12/site-packages/pillow-13.0.0.dist-info/RECORD +236 -0
  1434. package/python-runtime/python/lib/python3.12/site-packages/pillow-13.0.0.dist-info/WHEEL +6 -0
  1435. package/python-runtime/python/lib/python3.12/site-packages/pycparser/__init__.py +98 -0
  1436. package/python-runtime/python/lib/python3.12/site-packages/pycparser/_ast_gen.py +385 -0
  1437. package/python-runtime/python/lib/python3.12/site-packages/pycparser/_c_ast.cfg +268 -0
  1438. package/python-runtime/python/lib/python3.12/site-packages/pycparser/ast_transforms.py +201 -0
  1439. package/python-runtime/python/lib/python3.12/site-packages/pycparser/c_ast.py +1670 -0
  1440. package/python-runtime/python/lib/python3.12/site-packages/pycparser/c_generator.py +866 -0
  1441. package/python-runtime/python/lib/python3.12/site-packages/pycparser/c_lexer.py +861 -0
  1442. package/python-runtime/python/lib/python3.12/site-packages/pycparser/c_parser.py +2759 -0
  1443. package/python-runtime/python/lib/python3.12/site-packages/pycparser-3.12.dist-info/INSTALLER +1 -0
  1444. package/python-runtime/python/lib/python3.12/site-packages/pycparser-3.12.dist-info/METADATA +286 -0
  1445. package/python-runtime/python/lib/python3.12/site-packages/pycparser-3.12.dist-info/RECORD +21 -0
  1446. package/python-runtime/python/lib/python3.12/site-packages/pycparser-3.12.dist-info/WHEEL +5 -0
  1447. package/python-runtime/python/lib/python3.12/site-packages/pydantic/__init__.py +461 -0
  1448. package/python-runtime/python/lib/python3.12/site-packages/pydantic/_internal/__init__.py +0 -0
  1449. package/python-runtime/python/lib/python3.12/site-packages/pydantic/_internal/_config.py +408 -0
  1450. package/python-runtime/python/lib/python3.12/site-packages/pydantic/_internal/_contextlib.py +84 -0
  1451. package/python-runtime/python/lib/python3.12/site-packages/pydantic/_internal/_core_metadata.py +97 -0
  1452. package/python-runtime/python/lib/python3.12/site-packages/pydantic/_internal/_core_utils.py +156 -0
  1453. package/python-runtime/python/lib/python3.12/site-packages/pydantic/_internal/_dataclasses.py +327 -0
  1454. package/python-runtime/python/lib/python3.12/site-packages/pydantic/_internal/_decorators.py +906 -0
  1455. package/python-runtime/python/lib/python3.12/site-packages/pydantic/_internal/_decorators_v1.py +174 -0
  1456. package/python-runtime/python/lib/python3.12/site-packages/pydantic/_internal/_discriminated_union.py +510 -0
  1457. package/python-runtime/python/lib/python3.12/site-packages/pydantic/_internal/_docs_extraction.py +128 -0
  1458. package/python-runtime/python/lib/python3.12/site-packages/pydantic/_internal/_fields.py +910 -0
  1459. package/python-runtime/python/lib/python3.12/site-packages/pydantic/_internal/_forward_ref.py +23 -0
  1460. package/python-runtime/python/lib/python3.12/site-packages/pydantic/_internal/_generate_schema.py +3053 -0
  1461. package/python-runtime/python/lib/python3.12/site-packages/pydantic/_internal/_generics.py +556 -0
  1462. package/python-runtime/python/lib/python3.12/site-packages/pydantic/_internal/_git.py +27 -0
  1463. package/python-runtime/python/lib/python3.12/site-packages/pydantic/_internal/_import_utils.py +20 -0
  1464. package/python-runtime/python/lib/python3.12/site-packages/pydantic/_internal/_known_annotated_metadata.py +412 -0
  1465. package/python-runtime/python/lib/python3.12/site-packages/pydantic/_internal/_mock_val_ser.py +241 -0
  1466. package/python-runtime/python/lib/python3.12/site-packages/pydantic/_internal/_model_construction.py +833 -0
  1467. package/python-runtime/python/lib/python3.12/site-packages/pydantic/_internal/_namespace_utils.py +300 -0
  1468. package/python-runtime/python/lib/python3.12/site-packages/pydantic/_internal/_repr.py +122 -0
  1469. package/python-runtime/python/lib/python3.12/site-packages/pydantic/_internal/_schema_gather.py +49 -0
  1470. package/python-runtime/python/lib/python3.12/site-packages/pydantic/_internal/_schema_generation_shared.py +126 -0
  1471. package/python-runtime/python/lib/python3.12/site-packages/pydantic/_internal/_serializers.py +59 -0
  1472. package/python-runtime/python/lib/python3.12/site-packages/pydantic/_internal/_signature.py +193 -0
  1473. package/python-runtime/python/lib/python3.12/site-packages/pydantic/_internal/_type_refs.py +128 -0
  1474. package/python-runtime/python/lib/python3.12/site-packages/pydantic/_internal/_typing_extra.py +506 -0
  1475. package/python-runtime/python/lib/python3.12/site-packages/pydantic/_internal/_utils.py +433 -0
  1476. package/python-runtime/python/lib/python3.12/site-packages/pydantic/_internal/_validate_call.py +141 -0
  1477. package/python-runtime/python/lib/python3.12/site-packages/pydantic/_internal/_validators.py +541 -0
  1478. package/python-runtime/python/lib/python3.12/site-packages/pydantic/_migration.py +317 -0
  1479. package/python-runtime/python/lib/python3.12/site-packages/pydantic/alias_generators.py +62 -0
  1480. package/python-runtime/python/lib/python3.12/site-packages/pydantic/aliases.py +136 -0
  1481. package/python-runtime/python/lib/python3.12/site-packages/pydantic/annotated_handlers.py +123 -0
  1482. package/python-runtime/python/lib/python3.12/site-packages/pydantic/class_validators.py +5 -0
  1483. package/python-runtime/python/lib/python3.12/site-packages/pydantic/color.py +605 -0
  1484. package/python-runtime/python/lib/python3.12/site-packages/pydantic/config.py +1295 -0
  1485. package/python-runtime/python/lib/python3.12/site-packages/pydantic/dataclasses.py +385 -0
  1486. package/python-runtime/python/lib/python3.12/site-packages/pydantic/datetime_parse.py +5 -0
  1487. package/python-runtime/python/lib/python3.12/site-packages/pydantic/decorator.py +5 -0
  1488. package/python-runtime/python/lib/python3.12/site-packages/pydantic/deprecated/__init__.py +0 -0
  1489. package/python-runtime/python/lib/python3.12/site-packages/pydantic/deprecated/class_validators.py +257 -0
  1490. package/python-runtime/python/lib/python3.12/site-packages/pydantic/deprecated/config.py +72 -0
  1491. package/python-runtime/python/lib/python3.12/site-packages/pydantic/deprecated/copy_internals.py +224 -0
  1492. package/python-runtime/python/lib/python3.12/site-packages/pydantic/deprecated/decorator.py +286 -0
  1493. package/python-runtime/python/lib/python3.12/site-packages/pydantic/deprecated/json.py +142 -0
  1494. package/python-runtime/python/lib/python3.12/site-packages/pydantic/deprecated/parse.py +81 -0
  1495. package/python-runtime/python/lib/python3.12/site-packages/pydantic/deprecated/tools.py +104 -0
  1496. package/python-runtime/python/lib/python3.12/site-packages/pydantic/env_settings.py +5 -0
  1497. package/python-runtime/python/lib/python3.12/site-packages/pydantic/error_wrappers.py +5 -0
  1498. package/python-runtime/python/lib/python3.12/site-packages/pydantic/errors.py +185 -0
  1499. package/python-runtime/python/lib/python3.12/site-packages/pydantic/experimental/__init__.py +1 -0
  1500. package/python-runtime/python/lib/python3.12/site-packages/pydantic/experimental/arguments_schema.py +44 -0
  1501. package/python-runtime/python/lib/python3.12/site-packages/pydantic/experimental/missing_sentinel.py +29 -0
  1502. package/python-runtime/python/lib/python3.12/site-packages/pydantic/experimental/pipeline.py +684 -0
  1503. package/python-runtime/python/lib/python3.12/site-packages/pydantic/fields.py +2065 -0
  1504. package/python-runtime/python/lib/python3.12/site-packages/pydantic/functional_serializers.py +461 -0
  1505. package/python-runtime/python/lib/python3.12/site-packages/pydantic/functional_validators.py +920 -0
  1506. package/python-runtime/python/lib/python3.12/site-packages/pydantic/generics.py +5 -0
  1507. package/python-runtime/python/lib/python3.12/site-packages/pydantic/json.py +5 -0
  1508. package/python-runtime/python/lib/python3.12/site-packages/pydantic/json_schema.py +3281 -0
  1509. package/python-runtime/python/lib/python3.12/site-packages/pydantic/main.py +1947 -0
  1510. package/python-runtime/python/lib/python3.12/site-packages/pydantic/mypy.py +1469 -0
  1511. package/python-runtime/python/lib/python3.12/site-packages/pydantic/networks.py +1417 -0
  1512. package/python-runtime/python/lib/python3.12/site-packages/pydantic/parse.py +5 -0
  1513. package/python-runtime/python/lib/python3.12/site-packages/pydantic/plugin/__init__.py +190 -0
  1514. package/python-runtime/python/lib/python3.12/site-packages/pydantic/plugin/_loader.py +56 -0
  1515. package/python-runtime/python/lib/python3.12/site-packages/pydantic/plugin/_schema_validator.py +152 -0
  1516. package/python-runtime/python/lib/python3.12/site-packages/pydantic/py.typed +0 -0
  1517. package/python-runtime/python/lib/python3.12/site-packages/pydantic/root_model.py +189 -0
  1518. package/python-runtime/python/lib/python3.12/site-packages/pydantic/schema.py +5 -0
  1519. package/python-runtime/python/lib/python3.12/site-packages/pydantic/tools.py +5 -0
  1520. package/python-runtime/python/lib/python3.12/site-packages/pydantic/type_adapter.py +780 -0
  1521. package/python-runtime/python/lib/python3.12/site-packages/pydantic/types.py +3405 -0
  1522. package/python-runtime/python/lib/python3.12/site-packages/pydantic/typing.py +5 -0
  1523. package/python-runtime/python/lib/python3.12/site-packages/pydantic/utils.py +5 -0
  1524. package/python-runtime/python/lib/python3.12/site-packages/pydantic/v1/__init__.py +131 -0
  1525. package/python-runtime/python/lib/python3.12/site-packages/pydantic/v1/_hypothesis_plugin.py +391 -0
  1526. package/python-runtime/python/lib/python3.12/site-packages/pydantic/v1/annotated_types.py +72 -0
  1527. package/python-runtime/python/lib/python3.12/site-packages/pydantic/v1/class_validators.py +361 -0
  1528. package/python-runtime/python/lib/python3.12/site-packages/pydantic/v1/color.py +494 -0
  1529. package/python-runtime/python/lib/python3.12/site-packages/pydantic/v1/config.py +191 -0
  1530. package/python-runtime/python/lib/python3.12/site-packages/pydantic/v1/dataclasses.py +503 -0
  1531. package/python-runtime/python/lib/python3.12/site-packages/pydantic/v1/datetime_parse.py +248 -0
  1532. package/python-runtime/python/lib/python3.12/site-packages/pydantic/v1/decorator.py +264 -0
  1533. package/python-runtime/python/lib/python3.12/site-packages/pydantic/v1/env_settings.py +350 -0
  1534. package/python-runtime/python/lib/python3.12/site-packages/pydantic/v1/error_wrappers.py +161 -0
  1535. package/python-runtime/python/lib/python3.12/site-packages/pydantic/v1/errors.py +646 -0
  1536. package/python-runtime/python/lib/python3.12/site-packages/pydantic/v1/fields.py +1253 -0
  1537. package/python-runtime/python/lib/python3.12/site-packages/pydantic/v1/generics.py +400 -0
  1538. package/python-runtime/python/lib/python3.12/site-packages/pydantic/v1/json.py +112 -0
  1539. package/python-runtime/python/lib/python3.12/site-packages/pydantic/v1/main.py +1130 -0
  1540. package/python-runtime/python/lib/python3.12/site-packages/pydantic/v1/mypy.py +950 -0
  1541. package/python-runtime/python/lib/python3.12/site-packages/pydantic/v1/networks.py +747 -0
  1542. package/python-runtime/python/lib/python3.12/site-packages/pydantic/v1/parse.py +66 -0
  1543. package/python-runtime/python/lib/python3.12/site-packages/pydantic/v1/py.typed +0 -0
  1544. package/python-runtime/python/lib/python3.12/site-packages/pydantic/v1/schema.py +1163 -0
  1545. package/python-runtime/python/lib/python3.12/site-packages/pydantic/v1/tools.py +92 -0
  1546. package/python-runtime/python/lib/python3.12/site-packages/pydantic/v1/types.py +1213 -0
  1547. package/python-runtime/python/lib/python3.12/site-packages/pydantic/v1/typing.py +627 -0
  1548. package/python-runtime/python/lib/python3.12/site-packages/pydantic/v1/utils.py +807 -0
  1549. package/python-runtime/python/lib/python3.12/site-packages/pydantic/v1/validators.py +768 -0
  1550. package/python-runtime/python/lib/python3.12/site-packages/pydantic/v1/version.py +38 -0
  1551. package/python-runtime/python/lib/python3.12/site-packages/pydantic/validate_call_decorator.py +121 -0
  1552. package/python-runtime/python/lib/python3.12/site-packages/pydantic/validators.py +5 -0
  1553. package/python-runtime/python/lib/python3.12/site-packages/pydantic/version.py +113 -0
  1554. package/python-runtime/python/lib/python3.12/site-packages/pydantic/warnings.py +130 -0
  1555. package/python-runtime/python/lib/python3.12/site-packages/pydantic-2.14.3.dist-info/INSTALLER +1 -0
  1556. package/python-runtime/python/lib/python3.12/site-packages/pydantic-2.14.3.dist-info/METADATA +1646 -0
  1557. package/python-runtime/python/lib/python3.12/site-packages/pydantic-2.14.3.dist-info/RECORD +219 -0
  1558. package/python-runtime/python/lib/python3.12/site-packages/pydantic-2.14.3.dist-info/WHEEL +4 -0
  1559. package/python-runtime/python/lib/python3.12/site-packages/pydantic_core/__init__.py +194 -0
  1560. package/python-runtime/python/lib/python3.12/site-packages/pydantic_core/_pydantic_core/__init__.pyi +1114 -0
  1561. package/python-runtime/python/lib/python3.12/site-packages/pydantic_core/_pydantic_core/_schema_gather.pyi +34 -0
  1562. package/python-runtime/python/lib/python3.12/site-packages/pydantic_core/_pydantic_core.cpython-312-darwin.so +0 -0
  1563. package/python-runtime/python/lib/python3.12/site-packages/pydantic_core/core_schema.py +5093 -0
  1564. package/python-runtime/python/lib/python3.12/site-packages/pydantic_core/py.typed +0 -0
  1565. package/python-runtime/python/lib/python3.12/site-packages/pydantic_core-2.50.4.dist-info/INSTALLER +1 -0
  1566. package/python-runtime/python/lib/python3.12/site-packages/pydantic_core-2.50.4.dist-info/METADATA +172 -0
  1567. package/python-runtime/python/lib/python3.12/site-packages/pydantic_core-2.50.4.dist-info/RECORD +14 -0
  1568. package/python-runtime/python/lib/python3.12/site-packages/pydantic_core-2.50.4.dist-info/WHEEL +4 -0
  1569. package/python-runtime/python/lib/python3.12/site-packages/pydantic_settings/__init__.py +74 -0
  1570. package/python-runtime/python/lib/python3.12/site-packages/pydantic_settings/exceptions.py +10 -0
  1571. package/python-runtime/python/lib/python3.12/site-packages/pydantic_settings/main.py +1133 -0
  1572. package/python-runtime/python/lib/python3.12/site-packages/pydantic_settings/py.typed +0 -0
  1573. package/python-runtime/python/lib/python3.12/site-packages/pydantic_settings/sources/__init__.py +91 -0
  1574. package/python-runtime/python/lib/python3.12/site-packages/pydantic_settings/sources/base.py +767 -0
  1575. package/python-runtime/python/lib/python3.12/site-packages/pydantic_settings/sources/providers/__init__.py +48 -0
  1576. package/python-runtime/python/lib/python3.12/site-packages/pydantic_settings/sources/providers/aws.py +158 -0
  1577. package/python-runtime/python/lib/python3.12/site-packages/pydantic_settings/sources/providers/azure.py +246 -0
  1578. package/python-runtime/python/lib/python3.12/site-packages/pydantic_settings/sources/providers/cli.py +1942 -0
  1579. package/python-runtime/python/lib/python3.12/site-packages/pydantic_settings/sources/providers/dotenv.py +226 -0
  1580. package/python-runtime/python/lib/python3.12/site-packages/pydantic_settings/sources/providers/env.py +423 -0
  1581. package/python-runtime/python/lib/python3.12/site-packages/pydantic_settings/sources/providers/gcp.py +365 -0
  1582. package/python-runtime/python/lib/python3.12/site-packages/pydantic_settings/sources/providers/json.py +61 -0
  1583. package/python-runtime/python/lib/python3.12/site-packages/pydantic_settings/sources/providers/nested_secrets.py +220 -0
  1584. package/python-runtime/python/lib/python3.12/site-packages/pydantic_settings/sources/providers/pyproject.py +64 -0
  1585. package/python-runtime/python/lib/python3.12/site-packages/pydantic_settings/sources/providers/secrets.py +146 -0
  1586. package/python-runtime/python/lib/python3.12/site-packages/pydantic_settings/sources/providers/toml.py +72 -0
  1587. package/python-runtime/python/lib/python3.12/site-packages/pydantic_settings/sources/providers/yaml.py +147 -0
  1588. package/python-runtime/python/lib/python3.12/site-packages/pydantic_settings/sources/types.py +109 -0
  1589. package/python-runtime/python/lib/python3.12/site-packages/pydantic_settings/sources/utils.py +515 -0
  1590. package/python-runtime/python/lib/python3.12/site-packages/pydantic_settings/utils.py +46 -0
  1591. package/python-runtime/python/lib/python3.12/site-packages/pydantic_settings/version.py +1 -0
  1592. package/python-runtime/python/lib/python3.12/site-packages/pydantic_settings-2.16.2.dist-info/INSTALLER +1 -0
  1593. package/python-runtime/python/lib/python3.12/site-packages/pydantic_settings-2.16.2.dist-info/METADATA +72 -0
  1594. package/python-runtime/python/lib/python3.12/site-packages/pydantic_settings-2.16.2.dist-info/RECORD +50 -0
  1595. package/python-runtime/python/lib/python3.12/site-packages/pydantic_settings-2.16.2.dist-info/WHEEL +4 -0
  1596. package/python-runtime/python/lib/python3.12/site-packages/pyjwt-2.15.1.dist-info/INSTALLER +1 -0
  1597. package/python-runtime/python/lib/python3.12/site-packages/pyjwt-2.15.1.dist-info/METADATA +94 -0
  1598. package/python-runtime/python/lib/python3.12/site-packages/pyjwt-2.15.1.dist-info/RECORD +32 -0
  1599. package/python-runtime/python/lib/python3.12/site-packages/pyjwt-2.15.1.dist-info/WHEEL +5 -0
  1600. package/python-runtime/python/lib/python3.12/site-packages/python_dotenv-1.2.4.dist-info/INSTALLER +1 -0
  1601. package/python-runtime/python/lib/python3.12/site-packages/python_dotenv-1.2.4.dist-info/METADATA +835 -0
  1602. package/python-runtime/python/lib/python3.12/site-packages/python_dotenv-1.2.4.dist-info/RECORD +25 -0
  1603. package/python-runtime/python/lib/python3.12/site-packages/python_dotenv-1.2.4.dist-info/WHEEL +5 -0
  1604. package/python-runtime/python/lib/python3.12/site-packages/python_dotenv-1.2.4.dist-info/entry_points.txt +2 -0
  1605. package/python-runtime/python/lib/python3.12/site-packages/python_multipart/__init__.py +35 -0
  1606. package/python-runtime/python/lib/python3.12/site-packages/python_multipart/decoders.py +185 -0
  1607. package/python-runtime/python/lib/python3.12/site-packages/python_multipart/exceptions.py +34 -0
  1608. package/python-runtime/python/lib/python3.12/site-packages/python_multipart/multipart.py +2005 -0
  1609. package/python-runtime/python/lib/python3.12/site-packages/python_multipart/py.typed +0 -0
  1610. package/python-runtime/python/lib/python3.12/site-packages/python_multipart-0.0.33.dist-info/INSTALLER +1 -0
  1611. package/python-runtime/python/lib/python3.12/site-packages/python_multipart-0.0.33.dist-info/METADATA +179 -0
  1612. package/python-runtime/python/lib/python3.12/site-packages/python_multipart-0.0.33.dist-info/RECORD +22 -0
  1613. package/python-runtime/python/lib/python3.12/site-packages/python_multipart-0.0.33.dist-info/WHEEL +4 -0
  1614. package/python-runtime/python/lib/python3.12/site-packages/referencing/__init__.py +7 -0
  1615. package/python-runtime/python/lib/python3.12/site-packages/referencing/_attrs.py +31 -0
  1616. package/python-runtime/python/lib/python3.12/site-packages/referencing/_attrs.pyi +21 -0
  1617. package/python-runtime/python/lib/python3.12/site-packages/referencing/_core.py +739 -0
  1618. package/python-runtime/python/lib/python3.12/site-packages/referencing/exceptions.py +165 -0
  1619. package/python-runtime/python/lib/python3.12/site-packages/referencing/jsonschema.py +642 -0
  1620. package/python-runtime/python/lib/python3.12/site-packages/referencing/py.typed +0 -0
  1621. package/python-runtime/python/lib/python3.12/site-packages/referencing/retrieval.py +94 -0
  1622. package/python-runtime/python/lib/python3.12/site-packages/referencing/typing.py +61 -0
  1623. package/python-runtime/python/lib/python3.12/site-packages/referencing-0.37.0.dist-info/INSTALLER +1 -0
  1624. package/python-runtime/python/lib/python3.12/site-packages/referencing-0.37.0.dist-info/METADATA +64 -0
  1625. package/python-runtime/python/lib/python3.12/site-packages/referencing-0.37.0.dist-info/RECORD +33 -0
  1626. package/python-runtime/python/lib/python3.12/site-packages/referencing-0.37.0.dist-info/WHEEL +4 -0
  1627. package/python-runtime/python/lib/python3.12/site-packages/rpds/__init__.py +5 -0
  1628. package/python-runtime/python/lib/python3.12/site-packages/rpds/__init__.pyi +79 -0
  1629. package/python-runtime/python/lib/python3.12/site-packages/rpds/py.typed +0 -0
  1630. package/python-runtime/python/lib/python3.12/site-packages/rpds/rpds.cpython-312-darwin.so +0 -0
  1631. package/python-runtime/python/lib/python3.12/site-packages/rpds_py-2026.9.1.dist-info/INSTALLER +1 -0
  1632. package/python-runtime/python/lib/python3.12/site-packages/rpds_py-2026.9.1.dist-info/METADATA +99 -0
  1633. package/python-runtime/python/lib/python3.12/site-packages/rpds_py-2026.9.1.dist-info/RECORD +11 -0
  1634. package/python-runtime/python/lib/python3.12/site-packages/rpds_py-2026.9.1.dist-info/WHEEL +4 -0
  1635. package/python-runtime/python/lib/python3.12/site-packages/socksio/__init__.py +46 -0
  1636. package/python-runtime/python/lib/python3.12/site-packages/socksio/_types.py +3 -0
  1637. package/python-runtime/python/lib/python3.12/site-packages/socksio/compat.py +86 -0
  1638. package/python-runtime/python/lib/python3.12/site-packages/socksio/exceptions.py +6 -0
  1639. package/python-runtime/python/lib/python3.12/site-packages/socksio/py.typed +0 -0
  1640. package/python-runtime/python/lib/python3.12/site-packages/socksio/socks4.py +253 -0
  1641. package/python-runtime/python/lib/python3.12/site-packages/socksio/socks5.py +399 -0
  1642. package/python-runtime/python/lib/python3.12/site-packages/socksio/utils.py +95 -0
  1643. package/python-runtime/python/lib/python3.12/site-packages/socksio-1.0.0.dist-info/INSTALLER +1 -0
  1644. package/python-runtime/python/lib/python3.12/site-packages/socksio-1.0.0.dist-info/METADATA +182 -0
  1645. package/python-runtime/python/lib/python3.12/site-packages/socksio-1.0.0.dist-info/RECORD +20 -0
  1646. package/python-runtime/python/lib/python3.12/site-packages/socksio-1.0.0.dist-info/WHEEL +4 -0
  1647. package/python-runtime/python/lib/python3.12/site-packages/sse_starlette/__init__.py +5 -0
  1648. package/python-runtime/python/lib/python3.12/site-packages/sse_starlette/_utils.py +36 -0
  1649. package/python-runtime/python/lib/python3.12/site-packages/sse_starlette/event.py +96 -0
  1650. package/python-runtime/python/lib/python3.12/site-packages/sse_starlette/py.typed +0 -0
  1651. package/python-runtime/python/lib/python3.12/site-packages/sse_starlette/sse.py +602 -0
  1652. package/python-runtime/python/lib/python3.12/site-packages/sse_starlette-3.7.0.dist-info/INSTALLER +1 -0
  1653. package/python-runtime/python/lib/python3.12/site-packages/sse_starlette-3.7.0.dist-info/METADATA +493 -0
  1654. package/python-runtime/python/lib/python3.12/site-packages/sse_starlette-3.7.0.dist-info/RECORD +16 -0
  1655. package/python-runtime/python/lib/python3.12/site-packages/sse_starlette-3.7.0.dist-info/WHEEL +5 -0
  1656. package/python-runtime/python/lib/python3.12/site-packages/starlette/__init__.py +1 -0
  1657. package/python-runtime/python/lib/python3.12/site-packages/starlette/_exception_handler.py +67 -0
  1658. package/python-runtime/python/lib/python3.12/site-packages/starlette/_utils.py +152 -0
  1659. package/python-runtime/python/lib/python3.12/site-packages/starlette/applications.py +124 -0
  1660. package/python-runtime/python/lib/python3.12/site-packages/starlette/authentication.py +157 -0
  1661. package/python-runtime/python/lib/python3.12/site-packages/starlette/background.py +36 -0
  1662. package/python-runtime/python/lib/python3.12/site-packages/starlette/concurrency.py +59 -0
  1663. package/python-runtime/python/lib/python3.12/site-packages/starlette/config.py +142 -0
  1664. package/python-runtime/python/lib/python3.12/site-packages/starlette/convertors.py +89 -0
  1665. package/python-runtime/python/lib/python3.12/site-packages/starlette/datastructures.py +717 -0
  1666. package/python-runtime/python/lib/python3.12/site-packages/starlette/endpoints.py +128 -0
  1667. package/python-runtime/python/lib/python3.12/site-packages/starlette/exceptions.py +43 -0
  1668. package/python-runtime/python/lib/python3.12/site-packages/starlette/formparsers.py +289 -0
  1669. package/python-runtime/python/lib/python3.12/site-packages/starlette/middleware/__init__.py +37 -0
  1670. package/python-runtime/python/lib/python3.12/site-packages/starlette/middleware/authentication.py +52 -0
  1671. package/python-runtime/python/lib/python3.12/site-packages/starlette/middleware/base.py +254 -0
  1672. package/python-runtime/python/lib/python3.12/site-packages/starlette/middleware/body_limit.py +132 -0
  1673. package/python-runtime/python/lib/python3.12/site-packages/starlette/middleware/cors.py +177 -0
  1674. package/python-runtime/python/lib/python3.12/site-packages/starlette/middleware/errors.py +259 -0
  1675. package/python-runtime/python/lib/python3.12/site-packages/starlette/middleware/exceptions.py +73 -0
  1676. package/python-runtime/python/lib/python3.12/site-packages/starlette/middleware/gzip.py +230 -0
  1677. package/python-runtime/python/lib/python3.12/site-packages/starlette/middleware/httpsredirect.py +22 -0
  1678. package/python-runtime/python/lib/python3.12/site-packages/starlette/middleware/opentelemetry.py +126 -0
  1679. package/python-runtime/python/lib/python3.12/site-packages/starlette/middleware/sessions.py +139 -0
  1680. package/python-runtime/python/lib/python3.12/site-packages/starlette/middleware/trustedhost.py +66 -0
  1681. package/python-runtime/python/lib/python3.12/site-packages/starlette/middleware/wsgi.py +157 -0
  1682. package/python-runtime/python/lib/python3.12/site-packages/starlette/py.typed +0 -0
  1683. package/python-runtime/python/lib/python3.12/site-packages/starlette/requests.py +357 -0
  1684. package/python-runtime/python/lib/python3.12/site-packages/starlette/responses.py +616 -0
  1685. package/python-runtime/python/lib/python3.12/site-packages/starlette/routing.py +772 -0
  1686. package/python-runtime/python/lib/python3.12/site-packages/starlette/schemas.py +152 -0
  1687. package/python-runtime/python/lib/python3.12/site-packages/starlette/staticfiles.py +231 -0
  1688. package/python-runtime/python/lib/python3.12/site-packages/starlette/status.py +211 -0
  1689. package/python-runtime/python/lib/python3.12/site-packages/starlette/templating.py +156 -0
  1690. package/python-runtime/python/lib/python3.12/site-packages/starlette/testclient.py +624 -0
  1691. package/python-runtime/python/lib/python3.12/site-packages/starlette/types.py +26 -0
  1692. package/python-runtime/python/lib/python3.12/site-packages/starlette/websockets.py +202 -0
  1693. package/python-runtime/python/lib/python3.12/site-packages/starlette-1.10.0.dist-info/INSTALLER +1 -0
  1694. package/python-runtime/python/lib/python3.12/site-packages/starlette-1.10.0.dist-info/METADATA +181 -0
  1695. package/python-runtime/python/lib/python3.12/site-packages/starlette-1.10.0.dist-info/RECORD +78 -0
  1696. package/python-runtime/python/lib/python3.12/site-packages/starlette-1.10.0.dist-info/WHEEL +4 -0
  1697. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_harness/__init__.py +49 -0
  1698. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_harness/budget.py +70 -0
  1699. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_harness/completion.py +13 -0
  1700. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_harness/generated.py +250 -0
  1701. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_harness/policy.py +35 -0
  1702. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_harness/retry.py +21 -0
  1703. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_harness/safety.py +170 -0
  1704. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_harness/tracing.py +138 -0
  1705. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_harness-0.9.0.dist-info/INSTALLER +1 -0
  1706. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_harness-0.9.0.dist-info/METADATA +13 -0
  1707. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_harness-0.9.0.dist-info/RECORD +23 -0
  1708. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_harness-0.9.0.dist-info/WHEEL +5 -0
  1709. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_protocol/__init__.py +1 -0
  1710. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_protocol/generated.py +250 -0
  1711. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_protocol-0.9.0.dist-info/INSTALLER +1 -0
  1712. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_protocol-0.9.0.dist-info/METADATA +12 -0
  1713. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_protocol-0.9.0.dist-info/RECORD +11 -0
  1714. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_protocol-0.9.0.dist-info/WHEEL +5 -0
  1715. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/__init__.py +529 -0
  1716. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/antihallucination.py +644 -0
  1717. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/approval.py +730 -0
  1718. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/approval_policy.py +243 -0
  1719. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/ask_user.py +324 -0
  1720. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/branch.py +419 -0
  1721. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/cache_control.py +254 -0
  1722. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/calibration.py +318 -0
  1723. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/compaction.py +737 -0
  1724. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/compaction_policy.py +97 -0
  1725. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/config.py +225 -0
  1726. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/default.harness.json +32 -0
  1727. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/default.harness.yaml +38 -0
  1728. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/delegation_gate.py +100 -0
  1729. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/errors.py +58 -0
  1730. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/gateway_catalog.py +397 -0
  1731. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/handoff.py +147 -0
  1732. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/harness.py +922 -0
  1733. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/harness_spec.py +339 -0
  1734. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/history.py +962 -0
  1735. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/hooks.py +541 -0
  1736. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/llm/__init__.py +204 -0
  1737. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/llm/anthropic_native.py +392 -0
  1738. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/llm/compat.py +316 -0
  1739. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/llm/errors.py +207 -0
  1740. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/llm/google_genai.py +454 -0
  1741. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/llm/openai_compat.py +769 -0
  1742. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/llm/openai_responses.py +554 -0
  1743. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/llm/parts.py +69 -0
  1744. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/llm/presets.py +259 -0
  1745. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/llm/system_proxy.py +309 -0
  1746. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/loop.py +1040 -0
  1747. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/maintenance.py +238 -0
  1748. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/mcp.py +673 -0
  1749. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/mcp_server.py +319 -0
  1750. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/model_catalog.py +7742 -0
  1751. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/model_info.py +472 -0
  1752. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/model_resolve.py +271 -0
  1753. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/native_bridge.py +1034 -0
  1754. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/observation_aging.py +196 -0
  1755. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/orchestration.py +462 -0
  1756. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/otel.py +384 -0
  1757. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/plugins.py +487 -0
  1758. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/pool.py +438 -0
  1759. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/pricing.py +88 -0
  1760. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/pseudo.py +713 -0
  1761. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/recording.py +454 -0
  1762. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/reminders.py +339 -0
  1763. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/replay.py +222 -0
  1764. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/resume.py +343 -0
  1765. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/retry.py +163 -0
  1766. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/sandboxed.py +201 -0
  1767. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/skills.py +730 -0
  1768. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/spill.py +127 -0
  1769. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/storage/__init__.py +138 -0
  1770. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/storage/in_memory.py +215 -0
  1771. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/storage/sqlalchemy_store.py +472 -0
  1772. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/storage/sqlite_store.py +497 -0
  1773. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/storage/write_lease.py +173 -0
  1774. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/subagent.py +564 -0
  1775. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/todo.py +348 -0
  1776. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/tokens.py +162 -0
  1777. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/tool_presentation.py +132 -0
  1778. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/tool_schema.py +124 -0
  1779. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/tool_search.py +177 -0
  1780. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/tools.py +457 -0
  1781. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/tracing.py +285 -0
  1782. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/transport/__init__.py +39 -0
  1783. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/transport/fastapi_sse.py +116 -0
  1784. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/transport/stdio_jsonrpc.py +431 -0
  1785. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime/world_state.py +345 -0
  1786. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime-0.9.0.dist-info/INSTALLER +1 -0
  1787. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime-0.9.0.dist-info/METADATA +72 -0
  1788. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime-0.9.0.dist-info/RECORD +147 -0
  1789. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime-0.9.0.dist-info/WHEEL +5 -0
  1790. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime_native/__init__.py +5 -0
  1791. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime_native/steerable_agent_runtime_native.abi3.so +0 -0
  1792. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime_native-1.0.7.dist-info/INSTALLER +1 -0
  1793. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime_native-1.0.7.dist-info/METADATA +7 -0
  1794. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime_native-1.0.7.dist-info/RECORD +9 -0
  1795. package/python-runtime/python/lib/python3.12/site-packages/steerable_agent_runtime_native-1.0.7.dist-info/WHEEL +4 -0
  1796. package/python-runtime/python/lib/python3.12/site-packages/steerable_sidecar/__init__.py +28 -0
  1797. package/python-runtime/python/lib/python3.12/site-packages/steerable_sidecar/__main__.py +119 -0
  1798. package/python-runtime/python/lib/python3.12/site-packages/steerable_sidecar/_version.py +14 -0
  1799. package/python-runtime/python/lib/python3.12/site-packages/steerable_sidecar/acp_adapter.py +890 -0
  1800. package/python-runtime/python/lib/python3.12/site-packages/steerable_sidecar/acp_fs.py +64 -0
  1801. package/python-runtime/python/lib/python3.12/site-packages/steerable_sidecar/acp_terminal.py +147 -0
  1802. package/python-runtime/python/lib/python3.12/site-packages/steerable_sidecar/ag_ui.py +223 -0
  1803. package/python-runtime/python/lib/python3.12/site-packages/steerable_sidecar/delivery.py +2933 -0
  1804. package/python-runtime/python/lib/python3.12/site-packages/steerable_sidecar/display.py +308 -0
  1805. package/python-runtime/python/lib/python3.12/site-packages/steerable_sidecar/egress_ask.py +183 -0
  1806. package/python-runtime/python/lib/python3.12/site-packages/steerable_sidecar/file_edit.py +251 -0
  1807. package/python-runtime/python/lib/python3.12/site-packages/steerable_sidecar/headless.py +760 -0
  1808. package/python-runtime/python/lib/python3.12/site-packages/steerable_sidecar/host_spawn.py +137 -0
  1809. package/python-runtime/python/lib/python3.12/site-packages/steerable_sidecar/host_tools.py +255 -0
  1810. package/python-runtime/python/lib/python3.12/site-packages/steerable_sidecar/jpeg_ascii.py +314 -0
  1811. package/python-runtime/python/lib/python3.12/site-packages/steerable_sidecar/landlock.py +353 -0
  1812. package/python-runtime/python/lib/python3.12/site-packages/steerable_sidecar/landlock_run.py +35 -0
  1813. package/python-runtime/python/lib/python3.12/site-packages/steerable_sidecar/loop_limits.py +85 -0
  1814. package/python-runtime/python/lib/python3.12/site-packages/steerable_sidecar/multi_file_edit.py +109 -0
  1815. package/python-runtime/python/lib/python3.12/site-packages/steerable_sidecar/png_ascii.py +294 -0
  1816. package/python-runtime/python/lib/python3.12/site-packages/steerable_sidecar/ptc_js.py +986 -0
  1817. package/python-runtime/python/lib/python3.12/site-packages/steerable_sidecar/ptc_js_worker.cjs +579 -0
  1818. package/python-runtime/python/lib/python3.12/site-packages/steerable_sidecar/run_code.py +634 -0
  1819. package/python-runtime/python/lib/python3.12/site-packages/steerable_sidecar/run_code_driver.py +229 -0
  1820. package/python-runtime/python/lib/python3.12/site-packages/steerable_sidecar/sandbox.py +771 -0
  1821. package/python-runtime/python/lib/python3.12/site-packages/steerable_sidecar/search_tools.py +173 -0
  1822. package/python-runtime/python/lib/python3.12/site-packages/steerable_sidecar/shell_session.py +301 -0
  1823. package/python-runtime/python/lib/python3.12/site-packages/steerable_sidecar/sidecar.py +3785 -0
  1824. package/python-runtime/python/lib/python3.12/site-packages/steerable_sidecar/stream_chunks.py +115 -0
  1825. package/python-runtime/python/lib/python3.12/site-packages/steerable_sidecar/todo_tools.py +49 -0
  1826. package/python-runtime/python/lib/python3.12/site-packages/steerable_sidecar/tool_contract.json +352 -0
  1827. package/python-runtime/python/lib/python3.12/site-packages/steerable_sidecar/tool_contract.py +62 -0
  1828. package/python-runtime/python/lib/python3.12/site-packages/steerable_sidecar/web_tools.py +1375 -0
  1829. package/python-runtime/python/lib/python3.12/site-packages/steerable_sidecar/workspace_fs.py +71 -0
  1830. package/python-runtime/python/lib/python3.12/site-packages/steerable_sidecar/workspace_tools.py +1472 -0
  1831. package/python-runtime/python/lib/python3.12/site-packages/steerable_sidecar-0.9.0.dist-info/INSTALLER +1 -0
  1832. package/python-runtime/python/lib/python3.12/site-packages/steerable_sidecar-0.9.0.dist-info/METADATA +58 -0
  1833. package/python-runtime/python/lib/python3.12/site-packages/steerable_sidecar-0.9.0.dist-info/RECORD +79 -0
  1834. package/python-runtime/python/lib/python3.12/site-packages/steerable_sidecar-0.9.0.dist-info/WHEEL +5 -0
  1835. package/python-runtime/python/lib/python3.12/site-packages/steerable_sidecar-0.9.0.dist-info/entry_points.txt +4 -0
  1836. package/python-runtime/python/lib/python3.12/site-packages/typing_extensions-4.16.0.dist-info/INSTALLER +1 -0
  1837. package/python-runtime/python/lib/python3.12/site-packages/typing_extensions-4.16.0.dist-info/METADATA +73 -0
  1838. package/python-runtime/python/lib/python3.12/site-packages/typing_extensions-4.16.0.dist-info/RECORD +7 -0
  1839. package/python-runtime/python/lib/python3.12/site-packages/typing_extensions-4.16.0.dist-info/WHEEL +4 -0
  1840. package/python-runtime/python/lib/python3.12/site-packages/typing_extensions.py +4422 -0
  1841. package/python-runtime/python/lib/python3.12/site-packages/typing_inspection/__init__.py +0 -0
  1842. package/python-runtime/python/lib/python3.12/site-packages/typing_inspection/introspection.py +604 -0
  1843. package/python-runtime/python/lib/python3.12/site-packages/typing_inspection/py.typed +0 -0
  1844. package/python-runtime/python/lib/python3.12/site-packages/typing_inspection/typing_objects.py +620 -0
  1845. package/python-runtime/python/lib/python3.12/site-packages/typing_inspection/typing_objects.pyi +421 -0
  1846. package/python-runtime/python/lib/python3.12/site-packages/typing_inspection-0.4.5.dist-info/INSTALLER +1 -0
  1847. package/python-runtime/python/lib/python3.12/site-packages/typing_inspection-0.4.5.dist-info/METADATA +49 -0
  1848. package/python-runtime/python/lib/python3.12/site-packages/typing_inspection-0.4.5.dist-info/RECORD +13 -0
  1849. package/python-runtime/python/lib/python3.12/site-packages/typing_inspection-0.4.5.dist-info/WHEEL +4 -0
  1850. package/python-runtime/python/lib/python3.12/site-packages/uvicorn/__init__.py +5 -0
  1851. package/python-runtime/python/lib/python3.12/site-packages/uvicorn/__main__.py +4 -0
  1852. package/python-runtime/python/lib/python3.12/site-packages/uvicorn/_ansi.py +29 -0
  1853. package/python-runtime/python/lib/python3.12/site-packages/uvicorn/_compat.py +91 -0
  1854. package/python-runtime/python/lib/python3.12/site-packages/uvicorn/_subprocess.py +84 -0
  1855. package/python-runtime/python/lib/python3.12/site-packages/uvicorn/_types.py +280 -0
  1856. package/python-runtime/python/lib/python3.12/site-packages/uvicorn/config.py +618 -0
  1857. package/python-runtime/python/lib/python3.12/site-packages/uvicorn/importer.py +34 -0
  1858. package/python-runtime/python/lib/python3.12/site-packages/uvicorn/lifespan/__init__.py +0 -0
  1859. package/python-runtime/python/lib/python3.12/site-packages/uvicorn/lifespan/off.py +17 -0
  1860. package/python-runtime/python/lib/python3.12/site-packages/uvicorn/lifespan/on.py +137 -0
  1861. package/python-runtime/python/lib/python3.12/site-packages/uvicorn/logging.py +117 -0
  1862. package/python-runtime/python/lib/python3.12/site-packages/uvicorn/loops/__init__.py +0 -0
  1863. package/python-runtime/python/lib/python3.12/site-packages/uvicorn/loops/asyncio.py +11 -0
  1864. package/python-runtime/python/lib/python3.12/site-packages/uvicorn/loops/auto.py +17 -0
  1865. package/python-runtime/python/lib/python3.12/site-packages/uvicorn/loops/uvloop.py +10 -0
  1866. package/python-runtime/python/lib/python3.12/site-packages/uvicorn/loops/zuvloop.py +10 -0
  1867. package/python-runtime/python/lib/python3.12/site-packages/uvicorn/main.py +656 -0
  1868. package/python-runtime/python/lib/python3.12/site-packages/uvicorn/middleware/__init__.py +0 -0
  1869. package/python-runtime/python/lib/python3.12/site-packages/uvicorn/middleware/asgi2.py +15 -0
  1870. package/python-runtime/python/lib/python3.12/site-packages/uvicorn/middleware/message_logger.py +87 -0
  1871. package/python-runtime/python/lib/python3.12/site-packages/uvicorn/middleware/proxy_headers.py +187 -0
  1872. package/python-runtime/python/lib/python3.12/site-packages/uvicorn/middleware/wsgi.py +199 -0
  1873. package/python-runtime/python/lib/python3.12/site-packages/uvicorn/protocols/__init__.py +0 -0
  1874. package/python-runtime/python/lib/python3.12/site-packages/uvicorn/protocols/http/__init__.py +0 -0
  1875. package/python-runtime/python/lib/python3.12/site-packages/uvicorn/protocols/http/auto.py +15 -0
  1876. package/python-runtime/python/lib/python3.12/site-packages/uvicorn/protocols/http/auto_zttp_impl.py +89 -0
  1877. package/python-runtime/python/lib/python3.12/site-packages/uvicorn/protocols/http/flow_control.py +54 -0
  1878. package/python-runtime/python/lib/python3.12/site-packages/uvicorn/protocols/http/h11_impl.py +540 -0
  1879. package/python-runtime/python/lib/python3.12/site-packages/uvicorn/protocols/http/httptools_impl.py +581 -0
  1880. package/python-runtime/python/lib/python3.12/site-packages/uvicorn/protocols/http/zttp_h2_impl.py +559 -0
  1881. package/python-runtime/python/lib/python3.12/site-packages/uvicorn/protocols/http/zttp_impl.py +537 -0
  1882. package/python-runtime/python/lib/python3.12/site-packages/uvicorn/protocols/utils.py +62 -0
  1883. package/python-runtime/python/lib/python3.12/site-packages/uvicorn/protocols/websockets/__init__.py +0 -0
  1884. package/python-runtime/python/lib/python3.12/site-packages/uvicorn/protocols/websockets/auto.py +21 -0
  1885. package/python-runtime/python/lib/python3.12/site-packages/uvicorn/protocols/websockets/websockets_impl.py +390 -0
  1886. package/python-runtime/python/lib/python3.12/site-packages/uvicorn/protocols/websockets/websockets_sansio_impl.py +556 -0
  1887. package/python-runtime/python/lib/python3.12/site-packages/uvicorn/protocols/websockets/wsproto_impl.py +500 -0
  1888. package/python-runtime/python/lib/python3.12/site-packages/uvicorn/py.typed +1 -0
  1889. package/python-runtime/python/lib/python3.12/site-packages/uvicorn/server.py +356 -0
  1890. package/python-runtime/python/lib/python3.12/site-packages/uvicorn/supervisors/__init__.py +16 -0
  1891. package/python-runtime/python/lib/python3.12/site-packages/uvicorn/supervisors/basereload.py +124 -0
  1892. package/python-runtime/python/lib/python3.12/site-packages/uvicorn/supervisors/multiprocess.py +282 -0
  1893. package/python-runtime/python/lib/python3.12/site-packages/uvicorn/supervisors/statreload.py +52 -0
  1894. package/python-runtime/python/lib/python3.12/site-packages/uvicorn/supervisors/watchfilesreload.py +86 -0
  1895. package/python-runtime/python/lib/python3.12/site-packages/uvicorn/workers.py +111 -0
  1896. package/python-runtime/python/lib/python3.12/site-packages/uvicorn-0.54.0.dist-info/INSTALLER +1 -0
  1897. package/python-runtime/python/lib/python3.12/site-packages/uvicorn-0.54.0.dist-info/METADATA +189 -0
  1898. package/python-runtime/python/lib/python3.12/site-packages/uvicorn-0.54.0.dist-info/RECORD +98 -0
  1899. package/python-runtime/python/lib/python3.12/site-packages/uvicorn-0.54.0.dist-info/WHEEL +4 -0
  1900. package/python-runtime/python/lib/python3.12/site-packages/uvicorn-0.54.0.dist-info/entry_points.txt +2 -0
  1901. package/python-runtime/python/lib/python3.12/site.py +693 -0
  1902. package/python-runtime/python/lib/python3.12/smtplib.py +1109 -0
  1903. package/python-runtime/python/lib/python3.12/sndhdr.py +271 -0
  1904. package/python-runtime/python/lib/python3.12/socket.py +983 -0
  1905. package/python-runtime/python/lib/python3.12/socketserver.py +863 -0
  1906. package/python-runtime/python/lib/python3.12/sqlite3/__init__.py +70 -0
  1907. package/python-runtime/python/lib/python3.12/sqlite3/__main__.py +127 -0
  1908. package/python-runtime/python/lib/python3.12/sqlite3/dbapi2.py +108 -0
  1909. package/python-runtime/python/lib/python3.12/sqlite3/dump.py +89 -0
  1910. package/python-runtime/python/lib/python3.12/sre_compile.py +7 -0
  1911. package/python-runtime/python/lib/python3.12/sre_constants.py +7 -0
  1912. package/python-runtime/python/lib/python3.12/sre_parse.py +7 -0
  1913. package/python-runtime/python/lib/python3.12/ssl.py +1488 -0
  1914. package/python-runtime/python/lib/python3.12/stat.py +195 -0
  1915. package/python-runtime/python/lib/python3.12/statistics.py +1454 -0
  1916. package/python-runtime/python/lib/python3.12/string.py +309 -0
  1917. package/python-runtime/python/lib/python3.12/stringprep.py +272 -0
  1918. package/python-runtime/python/lib/python3.12/struct.py +15 -0
  1919. package/python-runtime/python/lib/python3.12/subprocess.py +2216 -0
  1920. package/python-runtime/python/lib/python3.12/sunau.py +533 -0
  1921. package/python-runtime/python/lib/python3.12/symtable.py +362 -0
  1922. package/python-runtime/python/lib/python3.12/sysconfig.py +894 -0
  1923. package/python-runtime/python/lib/python3.12/tabnanny.py +340 -0
  1924. package/python-runtime/python/lib/python3.12/tarfile.py +3031 -0
  1925. package/python-runtime/python/lib/python3.12/telnetlib.py +680 -0
  1926. package/python-runtime/python/lib/python3.12/tempfile.py +956 -0
  1927. package/python-runtime/python/lib/python3.12/textwrap.py +491 -0
  1928. package/python-runtime/python/lib/python3.12/this.py +28 -0
  1929. package/python-runtime/python/lib/python3.12/threading.py +1708 -0
  1930. package/python-runtime/python/lib/python3.12/timeit.py +381 -0
  1931. package/python-runtime/python/lib/python3.12/token.py +143 -0
  1932. package/python-runtime/python/lib/python3.12/tokenize.py +594 -0
  1933. package/python-runtime/python/lib/python3.12/tomllib/__init__.py +10 -0
  1934. package/python-runtime/python/lib/python3.12/tomllib/_parser.py +691 -0
  1935. package/python-runtime/python/lib/python3.12/tomllib/_re.py +107 -0
  1936. package/python-runtime/python/lib/python3.12/tomllib/_types.py +10 -0
  1937. package/python-runtime/python/lib/python3.12/trace.py +748 -0
  1938. package/python-runtime/python/lib/python3.12/traceback.py +1187 -0
  1939. package/python-runtime/python/lib/python3.12/tracemalloc.py +560 -0
  1940. package/python-runtime/python/lib/python3.12/tty.py +73 -0
  1941. package/python-runtime/python/lib/python3.12/turtle.py +4207 -0
  1942. package/python-runtime/python/lib/python3.12/types.py +333 -0
  1943. package/python-runtime/python/lib/python3.12/typing.py +3494 -0
  1944. package/python-runtime/python/lib/python3.12/unittest/__init__.py +85 -0
  1945. package/python-runtime/python/lib/python3.12/unittest/__main__.py +18 -0
  1946. package/python-runtime/python/lib/python3.12/unittest/_log.py +86 -0
  1947. package/python-runtime/python/lib/python3.12/unittest/async_case.py +143 -0
  1948. package/python-runtime/python/lib/python3.12/unittest/case.py +1456 -0
  1949. package/python-runtime/python/lib/python3.12/unittest/loader.py +497 -0
  1950. package/python-runtime/python/lib/python3.12/unittest/main.py +291 -0
  1951. package/python-runtime/python/lib/python3.12/unittest/mock.py +3054 -0
  1952. package/python-runtime/python/lib/python3.12/unittest/result.py +256 -0
  1953. package/python-runtime/python/lib/python3.12/unittest/runner.py +292 -0
  1954. package/python-runtime/python/lib/python3.12/unittest/signals.py +71 -0
  1955. package/python-runtime/python/lib/python3.12/unittest/suite.py +379 -0
  1956. package/python-runtime/python/lib/python3.12/unittest/util.py +170 -0
  1957. package/python-runtime/python/lib/python3.12/urllib/__init__.py +0 -0
  1958. package/python-runtime/python/lib/python3.12/urllib/error.py +74 -0
  1959. package/python-runtime/python/lib/python3.12/urllib/parse.py +1262 -0
  1960. package/python-runtime/python/lib/python3.12/urllib/request.py +2816 -0
  1961. package/python-runtime/python/lib/python3.12/urllib/response.py +84 -0
  1962. package/python-runtime/python/lib/python3.12/urllib/robotparser.py +275 -0
  1963. package/python-runtime/python/lib/python3.12/uu.py +216 -0
  1964. package/python-runtime/python/lib/python3.12/uuid.py +793 -0
  1965. package/python-runtime/python/lib/python3.12/warnings.py +598 -0
  1966. package/python-runtime/python/lib/python3.12/wave.py +653 -0
  1967. package/python-runtime/python/lib/python3.12/weakref.py +674 -0
  1968. package/python-runtime/python/lib/python3.12/webbrowser.py +689 -0
  1969. package/python-runtime/python/lib/python3.12/xdrlib.py +242 -0
  1970. package/python-runtime/python/lib/python3.12/xml/__init__.py +20 -0
  1971. package/python-runtime/python/lib/python3.12/xml/dom/NodeFilter.py +27 -0
  1972. package/python-runtime/python/lib/python3.12/xml/dom/__init__.py +140 -0
  1973. package/python-runtime/python/lib/python3.12/xml/dom/domreg.py +99 -0
  1974. package/python-runtime/python/lib/python3.12/xml/dom/expatbuilder.py +962 -0
  1975. package/python-runtime/python/lib/python3.12/xml/dom/minicompat.py +109 -0
  1976. package/python-runtime/python/lib/python3.12/xml/dom/minidom.py +2008 -0
  1977. package/python-runtime/python/lib/python3.12/xml/dom/pulldom.py +336 -0
  1978. package/python-runtime/python/lib/python3.12/xml/dom/xmlbuilder.py +389 -0
  1979. package/python-runtime/python/lib/python3.12/xml/etree/ElementInclude.py +186 -0
  1980. package/python-runtime/python/lib/python3.12/xml/etree/ElementPath.py +423 -0
  1981. package/python-runtime/python/lib/python3.12/xml/etree/ElementTree.py +2085 -0
  1982. package/python-runtime/python/lib/python3.12/xml/etree/__init__.py +33 -0
  1983. package/python-runtime/python/lib/python3.12/xml/etree/cElementTree.py +3 -0
  1984. package/python-runtime/python/lib/python3.12/xml/parsers/__init__.py +8 -0
  1985. package/python-runtime/python/lib/python3.12/xml/parsers/expat.py +8 -0
  1986. package/python-runtime/python/lib/python3.12/xml/sax/__init__.py +94 -0
  1987. package/python-runtime/python/lib/python3.12/xml/sax/_exceptions.py +127 -0
  1988. package/python-runtime/python/lib/python3.12/xml/sax/expatreader.py +454 -0
  1989. package/python-runtime/python/lib/python3.12/xml/sax/handler.py +387 -0
  1990. package/python-runtime/python/lib/python3.12/xml/sax/saxutils.py +369 -0
  1991. package/python-runtime/python/lib/python3.12/xml/sax/xmlreader.py +378 -0
  1992. package/python-runtime/python/lib/python3.12/zipapp.py +206 -0
  1993. package/python-runtime/python/lib/python3.12/zipfile/__init__.py +2340 -0
  1994. package/python-runtime/python/lib/python3.12/zipfile/__main__.py +4 -0
  1995. package/python-runtime/python/lib/python3.12/zipfile/_path/__init__.py +412 -0
  1996. package/python-runtime/python/lib/python3.12/zipfile/_path/glob.py +53 -0
  1997. package/python-runtime/python/lib/python3.12/zipimport.py +712 -0
  1998. package/python-runtime/python/lib/python3.12/zoneinfo/__init__.py +31 -0
  1999. package/python-runtime/python/lib/python3.12/zoneinfo/_common.py +164 -0
  2000. package/python-runtime/python/lib/python3.12/zoneinfo/_tzpath.py +181 -0
  2001. package/python-runtime/python/lib/python3.12/zoneinfo/_zoneinfo.py +772 -0
  2002. package/python-runtime/python/lib/tcl9/9.0/http-2.10.1.tm +5475 -0
  2003. package/python-runtime/python/lib/tcl9/9.0/msgcat-1.7.1.tm +1349 -0
  2004. package/python-runtime/python/lib/tcl9/9.0/platform/shell-1.1.4.tm +241 -0
  2005. package/python-runtime/python/lib/tcl9/9.0/platform-1.1.0.tm +443 -0
  2006. package/python-runtime/python/lib/tcl9/9.0/tcltest-2.5.10.tm +3588 -0
  2007. package/python-runtime/python/lib/tcl9.0/auto.tcl +711 -0
  2008. package/python-runtime/python/lib/tcl9.0/clock.tcl +2110 -0
  2009. package/python-runtime/python/lib/tcl9.0/cookiejar0.2/cookiejar.tcl +746 -0
  2010. package/python-runtime/python/lib/tcl9.0/cookiejar0.2/idna.tcl +292 -0
  2011. package/python-runtime/python/lib/tcl9.0/cookiejar0.2/pkgIndex.tcl +3 -0
  2012. package/python-runtime/python/lib/tcl9.0/cookiejar0.2/public_suffix_list.dat.gz +0 -0
  2013. package/python-runtime/python/lib/tcl9.0/encoding/ascii.enc +20 -0
  2014. package/python-runtime/python/lib/tcl9.0/encoding/big5.enc +1516 -0
  2015. package/python-runtime/python/lib/tcl9.0/encoding/cns11643.enc +1584 -0
  2016. package/python-runtime/python/lib/tcl9.0/encoding/cp1250.enc +20 -0
  2017. package/python-runtime/python/lib/tcl9.0/encoding/cp1251.enc +20 -0
  2018. package/python-runtime/python/lib/tcl9.0/encoding/cp1252.enc +20 -0
  2019. package/python-runtime/python/lib/tcl9.0/encoding/cp1253.enc +20 -0
  2020. package/python-runtime/python/lib/tcl9.0/encoding/cp1254.enc +20 -0
  2021. package/python-runtime/python/lib/tcl9.0/encoding/cp1255.enc +20 -0
  2022. package/python-runtime/python/lib/tcl9.0/encoding/cp1256.enc +20 -0
  2023. package/python-runtime/python/lib/tcl9.0/encoding/cp1257.enc +20 -0
  2024. package/python-runtime/python/lib/tcl9.0/encoding/cp1258.enc +20 -0
  2025. package/python-runtime/python/lib/tcl9.0/encoding/cp165.enc +20 -0
  2026. package/python-runtime/python/lib/tcl9.0/encoding/cp437.enc +20 -0
  2027. package/python-runtime/python/lib/tcl9.0/encoding/cp737.enc +20 -0
  2028. package/python-runtime/python/lib/tcl9.0/encoding/cp775.enc +20 -0
  2029. package/python-runtime/python/lib/tcl9.0/encoding/cp850.enc +20 -0
  2030. package/python-runtime/python/lib/tcl9.0/encoding/cp852.enc +20 -0
  2031. package/python-runtime/python/lib/tcl9.0/encoding/cp855.enc +20 -0
  2032. package/python-runtime/python/lib/tcl9.0/encoding/cp857.enc +20 -0
  2033. package/python-runtime/python/lib/tcl9.0/encoding/cp860.enc +20 -0
  2034. package/python-runtime/python/lib/tcl9.0/encoding/cp861.enc +20 -0
  2035. package/python-runtime/python/lib/tcl9.0/encoding/cp862.enc +20 -0
  2036. package/python-runtime/python/lib/tcl9.0/encoding/cp863.enc +20 -0
  2037. package/python-runtime/python/lib/tcl9.0/encoding/cp864.enc +20 -0
  2038. package/python-runtime/python/lib/tcl9.0/encoding/cp865.enc +20 -0
  2039. package/python-runtime/python/lib/tcl9.0/encoding/cp866.enc +20 -0
  2040. package/python-runtime/python/lib/tcl9.0/encoding/cp869.enc +20 -0
  2041. package/python-runtime/python/lib/tcl9.0/encoding/cp874.enc +20 -0
  2042. package/python-runtime/python/lib/tcl9.0/encoding/cp932.enc +801 -0
  2043. package/python-runtime/python/lib/tcl9.0/encoding/cp936.enc +2162 -0
  2044. package/python-runtime/python/lib/tcl9.0/encoding/cp949.enc +2128 -0
  2045. package/python-runtime/python/lib/tcl9.0/encoding/cp950.enc +1499 -0
  2046. package/python-runtime/python/lib/tcl9.0/encoding/dingbats.enc +20 -0
  2047. package/python-runtime/python/lib/tcl9.0/encoding/ebcdic.enc +20 -0
  2048. package/python-runtime/python/lib/tcl9.0/encoding/euc-cn.enc +1397 -0
  2049. package/python-runtime/python/lib/tcl9.0/encoding/euc-jp.enc +1353 -0
  2050. package/python-runtime/python/lib/tcl9.0/encoding/euc-kr.enc +1533 -0
  2051. package/python-runtime/python/lib/tcl9.0/encoding/gb12345.enc +1414 -0
  2052. package/python-runtime/python/lib/tcl9.0/encoding/gb1988.enc +20 -0
  2053. package/python-runtime/python/lib/tcl9.0/encoding/gb2312-raw.enc +1380 -0
  2054. package/python-runtime/python/lib/tcl9.0/encoding/gb2312.enc +1397 -0
  2055. package/python-runtime/python/lib/tcl9.0/encoding/iso2022-jp.enc +12 -0
  2056. package/python-runtime/python/lib/tcl9.0/encoding/iso2022-kr.enc +7 -0
  2057. package/python-runtime/python/lib/tcl9.0/encoding/iso2022.enc +14 -0
  2058. package/python-runtime/python/lib/tcl9.0/encoding/iso8859-1.enc +20 -0
  2059. package/python-runtime/python/lib/tcl9.0/encoding/iso8859-10.enc +20 -0
  2060. package/python-runtime/python/lib/tcl9.0/encoding/iso8859-11.enc +20 -0
  2061. package/python-runtime/python/lib/tcl9.0/encoding/iso8859-13.enc +20 -0
  2062. package/python-runtime/python/lib/tcl9.0/encoding/iso8859-14.enc +20 -0
  2063. package/python-runtime/python/lib/tcl9.0/encoding/iso8859-15.enc +20 -0
  2064. package/python-runtime/python/lib/tcl9.0/encoding/iso8859-16.enc +20 -0
  2065. package/python-runtime/python/lib/tcl9.0/encoding/iso8859-2.enc +20 -0
  2066. package/python-runtime/python/lib/tcl9.0/encoding/iso8859-3.enc +20 -0
  2067. package/python-runtime/python/lib/tcl9.0/encoding/iso8859-4.enc +20 -0
  2068. package/python-runtime/python/lib/tcl9.0/encoding/iso8859-5.enc +20 -0
  2069. package/python-runtime/python/lib/tcl9.0/encoding/iso8859-6.enc +20 -0
  2070. package/python-runtime/python/lib/tcl9.0/encoding/iso8859-7.enc +20 -0
  2071. package/python-runtime/python/lib/tcl9.0/encoding/iso8859-8.enc +20 -0
  2072. package/python-runtime/python/lib/tcl9.0/encoding/iso8859-9.enc +20 -0
  2073. package/python-runtime/python/lib/tcl9.0/encoding/jis0201.enc +20 -0
  2074. package/python-runtime/python/lib/tcl9.0/encoding/jis0208.enc +1319 -0
  2075. package/python-runtime/python/lib/tcl9.0/encoding/jis0212.enc +1159 -0
  2076. package/python-runtime/python/lib/tcl9.0/encoding/koi8-r.enc +20 -0
  2077. package/python-runtime/python/lib/tcl9.0/encoding/koi8-ru.enc +20 -0
  2078. package/python-runtime/python/lib/tcl9.0/encoding/koi8-t.enc +20 -0
  2079. package/python-runtime/python/lib/tcl9.0/encoding/koi8-u.enc +20 -0
  2080. package/python-runtime/python/lib/tcl9.0/encoding/ksc5601.enc +1516 -0
  2081. package/python-runtime/python/lib/tcl9.0/encoding/macCentEuro.enc +20 -0
  2082. package/python-runtime/python/lib/tcl9.0/encoding/macCroatian.enc +20 -0
  2083. package/python-runtime/python/lib/tcl9.0/encoding/macCyrillic.enc +20 -0
  2084. package/python-runtime/python/lib/tcl9.0/encoding/macDingbats.enc +20 -0
  2085. package/python-runtime/python/lib/tcl9.0/encoding/macGreek.enc +20 -0
  2086. package/python-runtime/python/lib/tcl9.0/encoding/macIceland.enc +20 -0
  2087. package/python-runtime/python/lib/tcl9.0/encoding/macJapan.enc +785 -0
  2088. package/python-runtime/python/lib/tcl9.0/encoding/macRoman.enc +20 -0
  2089. package/python-runtime/python/lib/tcl9.0/encoding/macRomania.enc +20 -0
  2090. package/python-runtime/python/lib/tcl9.0/encoding/macThai.enc +20 -0
  2091. package/python-runtime/python/lib/tcl9.0/encoding/macTurkish.enc +20 -0
  2092. package/python-runtime/python/lib/tcl9.0/encoding/macUkraine.enc +20 -0
  2093. package/python-runtime/python/lib/tcl9.0/encoding/shiftjis.enc +690 -0
  2094. package/python-runtime/python/lib/tcl9.0/encoding/symbol.enc +20 -0
  2095. package/python-runtime/python/lib/tcl9.0/encoding/tis-620.enc +20 -0
  2096. package/python-runtime/python/lib/tcl9.0/foreachline.tcl +25 -0
  2097. package/python-runtime/python/lib/tcl9.0/history.tcl +335 -0
  2098. package/python-runtime/python/lib/tcl9.0/icu.tcl +145 -0
  2099. package/python-runtime/python/lib/tcl9.0/init.tcl +773 -0
  2100. package/python-runtime/python/lib/tcl9.0/install.tcl +275 -0
  2101. package/python-runtime/python/lib/tcl9.0/opt0.4/optparse.tcl +1069 -0
  2102. package/python-runtime/python/lib/tcl9.0/opt0.4/pkgIndex.tcl +12 -0
  2103. package/python-runtime/python/lib/tcl9.0/package.tcl +767 -0
  2104. package/python-runtime/python/lib/tcl9.0/parray.tcl +28 -0
  2105. package/python-runtime/python/lib/tcl9.0/readfile.tcl +23 -0
  2106. package/python-runtime/python/lib/tcl9.0/safe.tcl +1461 -0
  2107. package/python-runtime/python/lib/tcl9.0/tclAppInit.c +183 -0
  2108. package/python-runtime/python/lib/tcl9.0/tclIndex +112 -0
  2109. package/python-runtime/python/lib/tcl9.0/tm.tcl +378 -0
  2110. package/python-runtime/python/lib/tcl9.0/word.tcl +155 -0
  2111. package/python-runtime/python/lib/tcl9.0/writefile.tcl +37 -0
  2112. package/python-runtime/python/lib/thread3.0.4/libtcl9thread3.0.4.dylib +0 -0
  2113. package/python-runtime/python/lib/thread3.0.4/libthread3.0.4.dylib +0 -0
  2114. package/python-runtime/python/lib/thread3.0.4/pkgIndex.tcl +52 -0
  2115. package/python-runtime/python/lib/thread3.0.4/ttrace.tcl +943 -0
  2116. package/python-runtime/python/lib/tk9.0/bgerror.tcl +282 -0
  2117. package/python-runtime/python/lib/tk9.0/button.tcl +782 -0
  2118. package/python-runtime/python/lib/tk9.0/choosedir.tcl +310 -0
  2119. package/python-runtime/python/lib/tk9.0/clrpick.tcl +696 -0
  2120. package/python-runtime/python/lib/tk9.0/comdlg.tcl +322 -0
  2121. package/python-runtime/python/lib/tk9.0/console.tcl +1148 -0
  2122. package/python-runtime/python/lib/tk9.0/dialog.tcl +175 -0
  2123. package/python-runtime/python/lib/tk9.0/entry.tcl +720 -0
  2124. package/python-runtime/python/lib/tk9.0/focus.tcl +178 -0
  2125. package/python-runtime/python/lib/tk9.0/fontchooser.tcl +512 -0
  2126. package/python-runtime/python/lib/tk9.0/iconbadges.tcl +253 -0
  2127. package/python-runtime/python/lib/tk9.0/iconlist.tcl +705 -0
  2128. package/python-runtime/python/lib/tk9.0/icons.tcl +54 -0
  2129. package/python-runtime/python/lib/tk9.0/images/README +7 -0
  2130. package/python-runtime/python/lib/tk9.0/images/logo.eps +2091 -0
  2131. package/python-runtime/python/lib/tk9.0/images/logo100.gif +0 -0
  2132. package/python-runtime/python/lib/tk9.0/images/logo64.gif +0 -0
  2133. package/python-runtime/python/lib/tk9.0/images/logoLarge.gif +0 -0
  2134. package/python-runtime/python/lib/tk9.0/images/logoMed.gif +0 -0
  2135. package/python-runtime/python/lib/tk9.0/images/pwrdLogo.eps +1897 -0
  2136. package/python-runtime/python/lib/tk9.0/images/pwrdLogo100.gif +0 -0
  2137. package/python-runtime/python/lib/tk9.0/images/pwrdLogo150.gif +0 -0
  2138. package/python-runtime/python/lib/tk9.0/images/pwrdLogo175.gif +0 -0
  2139. package/python-runtime/python/lib/tk9.0/images/pwrdLogo200.gif +0 -0
  2140. package/python-runtime/python/lib/tk9.0/images/pwrdLogo75.gif +0 -0
  2141. package/python-runtime/python/lib/tk9.0/images/tai-ku.gif +0 -0
  2142. package/python-runtime/python/lib/tk9.0/listbox.tcl +522 -0
  2143. package/python-runtime/python/lib/tk9.0/megawidget.tcl +297 -0
  2144. package/python-runtime/python/lib/tk9.0/menu.tcl +1376 -0
  2145. package/python-runtime/python/lib/tk9.0/mkpsenc.tcl +1488 -0
  2146. package/python-runtime/python/lib/tk9.0/msgbox.tcl +454 -0
  2147. package/python-runtime/python/lib/tk9.0/optMenu.tcl +43 -0
  2148. package/python-runtime/python/lib/tk9.0/palette.tcl +283 -0
  2149. package/python-runtime/python/lib/tk9.0/panedwindow.tcl +194 -0
  2150. package/python-runtime/python/lib/tk9.0/pkgIndex.tcl +3 -0
  2151. package/python-runtime/python/lib/tk9.0/print.tcl +1460 -0
  2152. package/python-runtime/python/lib/tk9.0/safetk.tcl +262 -0
  2153. package/python-runtime/python/lib/tk9.0/scale.tcl +299 -0
  2154. package/python-runtime/python/lib/tk9.0/scaling.tcl +232 -0
  2155. package/python-runtime/python/lib/tk9.0/scrlbar.tcl +500 -0
  2156. package/python-runtime/python/lib/tk9.0/spinbox.tcl +580 -0
  2157. package/python-runtime/python/lib/tk9.0/systray.tcl +483 -0
  2158. package/python-runtime/python/lib/tk9.0/tclIndex +252 -0
  2159. package/python-runtime/python/lib/tk9.0/tearoff.tcl +155 -0
  2160. package/python-runtime/python/lib/tk9.0/text.tcl +1295 -0
  2161. package/python-runtime/python/lib/tk9.0/tk.tcl +853 -0
  2162. package/python-runtime/python/lib/tk9.0/tkAppInit.c +200 -0
  2163. package/python-runtime/python/lib/tk9.0/tkfbox.tcl +1251 -0
  2164. package/python-runtime/python/lib/tk9.0/ttk/altTheme.tcl +153 -0
  2165. package/python-runtime/python/lib/tk9.0/ttk/aquaTheme.tcl +178 -0
  2166. package/python-runtime/python/lib/tk9.0/ttk/button.tcl +83 -0
  2167. package/python-runtime/python/lib/tk9.0/ttk/clamTheme.tcl +196 -0
  2168. package/python-runtime/python/lib/tk9.0/ttk/classicTheme.tcl +145 -0
  2169. package/python-runtime/python/lib/tk9.0/ttk/combobox.tcl +555 -0
  2170. package/python-runtime/python/lib/tk9.0/ttk/cursors.tcl +205 -0
  2171. package/python-runtime/python/lib/tk9.0/ttk/defaults.tcl +231 -0
  2172. package/python-runtime/python/lib/tk9.0/ttk/entry.tcl +678 -0
  2173. package/python-runtime/python/lib/tk9.0/ttk/fonts.tcl +152 -0
  2174. package/python-runtime/python/lib/tk9.0/ttk/menubutton.tcl +237 -0
  2175. package/python-runtime/python/lib/tk9.0/ttk/notebook.tcl +255 -0
  2176. package/python-runtime/python/lib/tk9.0/ttk/panedwindow.tcl +89 -0
  2177. package/python-runtime/python/lib/tk9.0/ttk/progress.tcl +55 -0
  2178. package/python-runtime/python/lib/tk9.0/ttk/scale.tcl +94 -0
  2179. package/python-runtime/python/lib/tk9.0/ttk/scrollbar.tcl +119 -0
  2180. package/python-runtime/python/lib/tk9.0/ttk/sizegrip.tcl +102 -0
  2181. package/python-runtime/python/lib/tk9.0/ttk/spinbox.tcl +204 -0
  2182. package/python-runtime/python/lib/tk9.0/ttk/treeview.tcl +464 -0
  2183. package/python-runtime/python/lib/tk9.0/ttk/ttk.tcl +223 -0
  2184. package/python-runtime/python/lib/tk9.0/ttk/utils.tcl +317 -0
  2185. package/python-runtime/python/lib/tk9.0/ttk/vistaTheme.tcl +259 -0
  2186. package/python-runtime/python/lib/tk9.0/ttk/winTheme.tcl +119 -0
  2187. package/python-runtime/python/lib/tk9.0/ttk/xpTheme.tcl +95 -0
  2188. package/python-runtime/python/lib/tk9.0/xmfbox.tcl +982 -0
  2189. package/python-runtime/python/share/man/man1/python3.1 +630 -0
  2190. package/python-runtime/python/share/man/man1/python3.12.1 +630 -0
  2191. package/runtime.json +8768 -0
  2192. package/README.md +0 -3
@@ -0,0 +1,2759 @@
1
+ # ------------------------------------------------------------------------------
2
+ # pycparser: c_parser.py
3
+ #
4
+ # Recursive-descent parser for the C language.
5
+ #
6
+ # Eli Bendersky [https://eli.thegreenplace.net/]
7
+ # License: BSD
8
+ # ------------------------------------------------------------------------------
9
+ from collections.abc import Callable
10
+ from dataclasses import dataclass
11
+ from typing import (
12
+ Any,
13
+ Literal,
14
+ NoReturn,
15
+ NotRequired,
16
+ Optional,
17
+ TypedDict,
18
+ cast,
19
+ )
20
+
21
+ from . import c_ast
22
+ from .ast_transforms import fix_atomic_specifiers, fix_switch_cases
23
+ from .c_lexer import CLexer, Dialect, Token
24
+
25
+
26
+ # ASTs contain many coordinates, so slots reduce their memory overhead.
27
+ @dataclass(slots=True)
28
+ class Coord:
29
+ """Coordinates of a syntactic element. Consists of:
30
+ - File name
31
+ - Line number
32
+ - Column number
33
+ """
34
+
35
+ file: str
36
+ line: int
37
+ column: int | None = None
38
+
39
+ def __str__(self) -> str:
40
+ text = f"{self.file}:{self.line}"
41
+ if self.column is not None:
42
+ text += f":{self.column}"
43
+ return text
44
+
45
+
46
+ class ParseError(Exception):
47
+ pass
48
+
49
+
50
+ class CParser:
51
+ """Recursive-descent C parser.
52
+
53
+ Usage:
54
+ parser = CParser()
55
+ ast = parser.parse(text, filename)
56
+
57
+ The `lexer` parameter lets you inject a lexer class (defaults to CLexer).
58
+ The positional parameters other than `lexer` are accepted for backward
59
+ compatibility with the old PLY-based parser and are otherwise unused.
60
+
61
+ The keyword-only `dialect` parameter selects keyword recognition: "legacy"
62
+ preserves existing behavior, while "c23" enables C23 spellings, predefined
63
+ constants, and other C23-only features.
64
+ """
65
+
66
+ def __init__(
67
+ self,
68
+ lex_optimize: bool = True,
69
+ lexer: type[CLexer] = CLexer,
70
+ lextab: str = "pycparser.lextab",
71
+ yacc_optimize: bool = True,
72
+ yacctab: str = "pycparser.yacctab",
73
+ yacc_debug: bool = False,
74
+ taboutputdir: str = "",
75
+ *,
76
+ dialect: Dialect = "legacy",
77
+ ) -> None:
78
+ self.clex: CLexer = lexer(
79
+ error_func=self._lex_error_func,
80
+ dialect=dialect,
81
+ )
82
+ self._dialect = dialect
83
+
84
+ # Stack of scopes for keeping track of symbols. _scope_stack[-1] is
85
+ # the current (topmost) scope. Each scope is a dictionary that
86
+ # specifies whether a name is a type. If _scope_stack[n][name] is
87
+ # True, 'name' is currently a type in the scope. If it's False,
88
+ # 'name' is defined in the scope but not as a type (for instance, if we
89
+ # saw: int name;)
90
+ # If 'name' is not a key in _scope_stack[n] then 'name' was not defined
91
+ # in this scope at all.
92
+ self._scope_stack: list[dict[str, bool]] = [{}]
93
+ # Cache the token already checked for typedef-name status to avoid repeated
94
+ # lookups when peeking or consuming. Cleared when scopes or bindings change.
95
+ self._typedef_checked_token: Token | None = None
96
+ self._tokens: _TokenStream = _TokenStream(self.clex.token)
97
+
98
+ def parse(
99
+ self, text: str, filename: str = "", debug: bool = False
100
+ ) -> c_ast.FileAST:
101
+ """Parses C code and returns an AST.
102
+
103
+ text:
104
+ A string containing the C source code
105
+
106
+ filename:
107
+ Name of the file being parsed (for meaningful error messages)
108
+
109
+ debug:
110
+ Deprecated debug flag (unused); for backwards compatibility.
111
+ """
112
+ self._scope_stack = [{}]
113
+ self._typedef_checked_token = None
114
+ self.clex.input(text, filename)
115
+ self._tokens = _TokenStream(self.clex.token)
116
+
117
+ ast = self._parse_translation_unit_or_empty()
118
+ tok = self._peek()
119
+ if tok is not None:
120
+ self._parse_error(f"before: {tok.value}", self._tok_coord(tok))
121
+ return ast
122
+
123
+ # ------------------------------------------------------------------
124
+ # Scope and declaration helpers
125
+ # ------------------------------------------------------------------
126
+ def _parse_error(self, msg: str, coord: Coord | str | None) -> NoReturn:
127
+ raise ParseError(f"{coord}: {msg}")
128
+
129
+ def _push_scope(self) -> None:
130
+ self._scope_stack.append({})
131
+ self._typedef_checked_token = None
132
+
133
+ def _pop_scope(self) -> None:
134
+ assert len(self._scope_stack) > 1, "Cannot pop the global scope"
135
+ self._scope_stack.pop()
136
+ self._typedef_checked_token = None
137
+
138
+ def _add_typedef_name(self, name: str, coord: Coord | None) -> None:
139
+ """Add a new typedef name (ie a TYPEID) to the current scope"""
140
+ if not self._scope_stack[-1].get(name, True):
141
+ self._parse_error(
142
+ f"Typedef {name!r} previously declared as non-typedef in this scope",
143
+ coord,
144
+ )
145
+ self._scope_stack[-1][name] = True
146
+ self._typedef_checked_token = None
147
+
148
+ def _add_identifier(self, name: str, coord: Coord | None) -> None:
149
+ """Add a new object, function, or enum member name (ie an ID) to the
150
+ current scope
151
+ """
152
+ if self._scope_stack[-1].get(name, False):
153
+ self._parse_error(
154
+ f"Non-typedef {name!r} previously declared as typedef in this scope",
155
+ coord,
156
+ )
157
+ self._scope_stack[-1][name] = False
158
+ self._typedef_checked_token = None
159
+
160
+ def _is_type_in_scope(self, name: str) -> bool:
161
+ """Is *name* a typedef-name in the current scope?"""
162
+ for scope in reversed(self._scope_stack):
163
+ # If name is an identifier in this scope it shadows typedefs in
164
+ # higher scopes.
165
+ if name in scope:
166
+ return scope[name]
167
+ return False
168
+
169
+ def _lex_error_func(self, msg: str, line: int, column: int) -> None:
170
+ self._parse_error(msg, Coord(file=self.clex.filename, line=line, column=column))
171
+
172
+ # To understand what's going on here, read sections A.8.5 and
173
+ # A.8.6 of K&R2 very carefully.
174
+ #
175
+ # A C type consists of a basic type declaration, with a list
176
+ # of modifiers. For example:
177
+ #
178
+ # int *c[5];
179
+ #
180
+ # The basic declaration here is 'int c', and the pointer and
181
+ # the array are the modifiers.
182
+ #
183
+ # Basic declarations are represented by TypeDecl (from module c_ast) and the
184
+ # modifiers are FuncDecl, PtrDecl and ArrayDecl.
185
+ #
186
+ # The standard states that whenever a new modifier is parsed, it should be
187
+ # added to the end of the list of modifiers. For example:
188
+ #
189
+ # K&R2 A.8.6.2: Array Declarators
190
+ #
191
+ # In a declaration T D where D has the form
192
+ # D1 [constant-expression-opt]
193
+ # and the type of the identifier in the declaration T D1 is
194
+ # "type-modifier T", the type of the
195
+ # identifier of D is "type-modifier array of T"
196
+ #
197
+ # This is what this method does. The declarator it receives
198
+ # can be a list of declarators ending with TypeDecl. It
199
+ # tacks the modifier to the end of this list, just before
200
+ # the TypeDecl.
201
+ #
202
+ # Additionally, the modifier may be a list itself. This is
203
+ # useful for pointers, that can come as a chain from the rule
204
+ # p_pointer. In this case, the whole modifier list is spliced
205
+ # into the new location.
206
+ def _type_modify_decl(self, decl: Any, modifier: Any) -> c_ast.Node:
207
+ """Tacks a type modifier on a declarator, and returns
208
+ the modified declarator.
209
+
210
+ Note: the declarator and modifier may be modified
211
+ """
212
+ modifier_head = modifier
213
+ modifier_tail = modifier
214
+
215
+ # The modifier may be a nested list. Reach its tail.
216
+ while modifier_tail.type:
217
+ modifier_tail = modifier_tail.type
218
+
219
+ # If the decl is a basic type, just tack the modifier onto it.
220
+ if isinstance(decl, c_ast.TypeDecl):
221
+ modifier_tail.type = decl
222
+ return modifier
223
+ else:
224
+ # Otherwise, the decl is a list of modifiers. Reach
225
+ # its tail and splice the modifier onto the tail,
226
+ # pointing to the underlying basic type.
227
+ decl_tail = decl
228
+ while not isinstance(decl_tail.type, c_ast.TypeDecl):
229
+ decl_tail = decl_tail.type
230
+
231
+ modifier_tail.type = decl_tail.type
232
+ decl_tail.type = modifier_head
233
+ return decl
234
+
235
+ # Due to the order in which declarators are constructed,
236
+ # they have to be fixed in order to look like a normal AST.
237
+ #
238
+ # When a declaration arrives from syntax construction, it has
239
+ # these problems:
240
+ # * The innermost TypeDecl has no type (because the basic
241
+ # type is only known at the uppermost declaration level)
242
+ # * The declaration has no variable name, since that is saved
243
+ # in the innermost TypeDecl
244
+ # * The typename of the declaration is a list of type
245
+ # specifiers, and not a node. Here, basic identifier types
246
+ # should be separated from more complex types like enums
247
+ # and structs.
248
+ #
249
+ # This method fixes these problems.
250
+ def _fix_decl_name_type(
251
+ self,
252
+ decl: c_ast.Decl | c_ast.Typedef | c_ast.Typename,
253
+ typename: list[c_ast.Node],
254
+ ) -> c_ast.Decl | c_ast.Typedef | c_ast.Typename:
255
+ """Fixes a declaration. Modifies decl."""
256
+ # Reach the underlying basic type
257
+ typ = decl
258
+ while not isinstance(typ, c_ast.TypeDecl):
259
+ typ = typ.type
260
+
261
+ decl.name = typ.declname
262
+ typ.quals = decl.quals[:]
263
+
264
+ # The typename is a list of types. Except for _BitInt with an
265
+ # optional signedness, any type that isn't an IdentifierType must
266
+ # be the only type in the list (it's illegal to declare "int enum ..").
267
+ # If all the types are basic, they're collected in the
268
+ # IdentifierType holder.
269
+ names: list[str] = []
270
+ for tn in typename:
271
+ if isinstance(tn, c_ast.BitIntType):
272
+ signedness = None
273
+ for spec in typename:
274
+ if spec is tn:
275
+ continue
276
+ if (
277
+ signedness is not None
278
+ or not isinstance(spec, c_ast.IdentifierType)
279
+ or spec.names not in (["signed"], ["unsigned"])
280
+ ):
281
+ self._parse_error(
282
+ "Invalid multiple types specified", spec.coord
283
+ )
284
+ signedness = spec.names[0]
285
+ # Specifiers are shared by comma-separated declarations;
286
+ # keep the parsed specifier unchanged when attaching the sign.
287
+ typ.type = c_ast.BitIntType(tn.width, signedness, tn.coord)
288
+ return decl
289
+
290
+ if not isinstance(tn, c_ast.IdentifierType):
291
+ if len(typename) > 1:
292
+ self._parse_error("Invalid multiple types specified", tn.coord)
293
+ else:
294
+ typ.type = tn
295
+ # Normalize atomic specifiers for declarations and type
296
+ # names alike (casts, sizeof, unnamed parameters, etc.).
297
+ return fix_atomic_specifiers(decl)
298
+ names.extend(tn.names)
299
+
300
+ if not typename:
301
+ # Functions default to returning int
302
+ if not isinstance(decl.type, c_ast.FuncDecl):
303
+ self._parse_error("Missing type in declaration", decl.coord)
304
+ typ.type = c_ast.IdentifierType(["int"], coord=decl.coord)
305
+ else:
306
+ typ.type = c_ast.IdentifierType(names, coord=typename[0].coord)
307
+ return decl
308
+
309
+ def _add_declaration_specifier(
310
+ self,
311
+ declspec: Optional["_DeclSpec"],
312
+ newspec: str | c_ast.Node,
313
+ kind: "_DeclSpecKind",
314
+ ) -> "_DeclSpec":
315
+ """Append a specifier in source order; see _DeclSpec for the layout."""
316
+ if declspec is None:
317
+ spec: _DeclSpec = {
318
+ "qual": [],
319
+ "storage": [],
320
+ "type": [],
321
+ "function": [],
322
+ "alignment": [],
323
+ "type_attributes": [],
324
+ }
325
+ else:
326
+ spec = declspec
327
+
328
+ if kind == "type":
329
+ assert isinstance(newspec, c_ast.Node)
330
+ spec[kind].append(newspec)
331
+ elif kind == "alignment":
332
+ assert isinstance(newspec, c_ast.Alignas)
333
+ spec[kind].append(newspec)
334
+ else:
335
+ assert isinstance(newspec, str)
336
+ spec[kind].append(newspec)
337
+ return spec
338
+
339
+ def _build_type_name(
340
+ self, spec: "_DeclSpec", decl: c_ast.Node | None, coord: Coord | None
341
+ ) -> c_ast.Typename:
342
+ """Build and normalize an abstract type, including its attributes.
343
+
344
+ Callers select the coordinate according to their grammar context.
345
+ The name, if any, is taken from the declarator by _fix_decl_name_type.
346
+ """
347
+ typename = c_ast.Typename(
348
+ name=None,
349
+ quals=spec["qual"][:],
350
+ align=None,
351
+ type=decl or c_ast.TypeDecl(None, None, None, None),
352
+ coord=coord,
353
+ )
354
+ return cast(
355
+ c_ast.Typename,
356
+ self._attach_type_attributes(
357
+ self._fix_decl_name_type(typename, spec["type"]), spec
358
+ ),
359
+ )
360
+
361
+ def _build_declarations(
362
+ self,
363
+ spec: "_DeclSpec",
364
+ decls: list["_DeclInfo"],
365
+ typedef_namespace: bool = False,
366
+ ) -> list[c_ast.Node]:
367
+ """Builds a list of declarations all sharing the given specifiers.
368
+ If typedef_namespace is true, each declared name is added
369
+ to the "typedef namespace", which also includes objects,
370
+ functions, and enum constants.
371
+ """
372
+ is_typedef = "typedef" in spec["storage"]
373
+ declarations = []
374
+
375
+ # Bit-fields are allowed to be unnamed.
376
+ if decls[0].get("bitsize") is None:
377
+ # When redeclaring typedef names as identifiers in inner scopes, a
378
+ # problem can occur where the identifier gets grouped into
379
+ # spec['type'], leaving decl as None. This can only occur for the
380
+ # first declarator.
381
+ if decls[0]["decl"] is None:
382
+ if (
383
+ len(spec["type"]) < 2
384
+ or not isinstance(spec["type"][-1], c_ast.IdentifierType)
385
+ or len(spec["type"][-1].names) != 1
386
+ or not self._is_type_in_scope(spec["type"][-1].names[0])
387
+ ):
388
+ coord = "?"
389
+ for t in spec["type"]:
390
+ if hasattr(t, "coord"):
391
+ coord = t.coord
392
+ break
393
+ self._parse_error("Invalid declaration", coord)
394
+
395
+ # Make this look as if it came from "direct_declarator:ID"
396
+ decls[0]["decl"] = c_ast.TypeDecl(
397
+ declname=spec["type"][-1].names[0],
398
+ type=None,
399
+ quals=None,
400
+ align=spec["alignment"],
401
+ coord=spec["type"][-1].coord,
402
+ )
403
+ # Remove the "new" type's name from the end of spec['type']
404
+ del spec["type"][-1]
405
+ # A similar problem can occur where the declaration ends up
406
+ # looking like an abstract declarator. Give it a name if this is
407
+ # the case.
408
+ elif isinstance(decls[0]["decl"], _DECLARATOR_NODES):
409
+ decls_0_tail = cast(Any, decls[0]["decl"])
410
+ while not isinstance(decls_0_tail, c_ast.TypeDecl):
411
+ decls_0_tail = decls_0_tail.type
412
+ if decls_0_tail.declname is None:
413
+ type_name = cast(c_ast.IdentifierType, spec["type"][-1])
414
+ decls_0_tail.declname = type_name.names[0]
415
+ del spec["type"][-1]
416
+
417
+ for decl in decls:
418
+ assert decl["decl"] is not None
419
+ if is_typedef:
420
+ declaration = c_ast.Typedef(
421
+ name=None,
422
+ quals=spec["qual"],
423
+ storage=spec["storage"],
424
+ type=decl["decl"],
425
+ coord=decl["decl"].coord,
426
+ )
427
+ else:
428
+ declaration = c_ast.Decl(
429
+ name=None,
430
+ quals=spec["qual"],
431
+ align=spec["alignment"],
432
+ storage=spec["storage"],
433
+ funcspec=spec["function"],
434
+ type=decl["decl"],
435
+ init=decl.get("init"),
436
+ bitsize=decl.get("bitsize"),
437
+ coord=decl["decl"].coord,
438
+ )
439
+
440
+ if not isinstance(declaration.type, _DECLARATOR_NODES):
441
+ fixed_decl = declaration
442
+ else:
443
+ fixed_decl = self._fix_decl_name_type(declaration, spec["type"])
444
+
445
+ # Record the declared name in the current scope so the parser can
446
+ # distinguish identifiers from typedef names.
447
+ if typedef_namespace:
448
+ if is_typedef:
449
+ self._add_typedef_name(fixed_decl.name, fixed_decl.coord)
450
+ else:
451
+ self._add_identifier(fixed_decl.name, fixed_decl.coord)
452
+
453
+ declarations.append(self._attach_type_attributes(fixed_decl, spec))
454
+
455
+ return declarations
456
+
457
+ def _build_function_definition(
458
+ self,
459
+ spec: "_DeclSpec",
460
+ decl: c_ast.Node,
461
+ param_decls: list[c_ast.Node] | None,
462
+ body: c_ast.Node,
463
+ ) -> c_ast.Node:
464
+ """Builds a function definition."""
465
+ if "typedef" in spec["storage"]:
466
+ self._parse_error("Invalid typedef", decl.coord)
467
+
468
+ declaration = self._build_declarations(
469
+ spec=spec,
470
+ decls=[{"decl": decl}],
471
+ typedef_namespace=True,
472
+ )[0]
473
+
474
+ return c_ast.FuncDef(
475
+ decl=declaration, param_decls=param_decls, body=body, coord=decl.coord
476
+ )
477
+
478
+ def _select_struct_union_class(self, token: str) -> type:
479
+ """Given a token (either STRUCT or UNION), selects the
480
+ appropriate AST class.
481
+ """
482
+ if token == "struct":
483
+ return c_ast.Struct
484
+ else:
485
+ return c_ast.Union
486
+
487
+ # ------------------------------------------------------------------
488
+ # Token helpers
489
+ # ------------------------------------------------------------------
490
+ def _peek(self, k: int = 1) -> Token | None:
491
+ """Return the k-th next token without consuming it (1-based)."""
492
+ tok = self._tokens.peek(k)
493
+ if tok is not self._typedef_checked_token:
494
+ self._classify_identifier(tok)
495
+ return tok
496
+
497
+ def _classify_identifier(self, tok: Token | None) -> None:
498
+ # Buffered identifiers are interpreted in the current scope, including
499
+ # after backtracking. Peeking and consuming can reuse the classification
500
+ # until a scope or binding changes.
501
+ if tok is not None and tok.type in {"ID", "TYPEID"}:
502
+ tok.type = "TYPEID" if self._is_type_in_scope(tok.value) else "ID"
503
+ self._typedef_checked_token = tok
504
+
505
+ def _peek_type(self, k: int = 1) -> str | None:
506
+ """Return the type of the k-th next token, or None if absent (1-based)."""
507
+ tok = self._peek(k)
508
+ return tok.type if tok is not None else None
509
+
510
+ def _advance(self) -> Token:
511
+ tok = self._tokens.next()
512
+ if tok is None:
513
+ self._parse_error("At end of input", self.clex.filename)
514
+ if tok is not self._typedef_checked_token:
515
+ self._classify_identifier(tok)
516
+ return tok
517
+
518
+ def _accept(self, token_type: str) -> Token | None:
519
+ """Conditionally consume next token, only if it's of token_type.
520
+
521
+ If it is of the expected type, consume and return it.
522
+ Otherwise, leaves the token intact and returns None.
523
+ """
524
+ tok = self._peek()
525
+ if tok is not None and tok.type == token_type:
526
+ return self._advance()
527
+ return None
528
+
529
+ def _expect(self, token_type: str) -> Token:
530
+ tok = self._advance()
531
+ if tok.type != token_type:
532
+ self._parse_error(f"before: {tok.value}", self._tok_coord(tok))
533
+ return tok
534
+
535
+ def _mark(self) -> int:
536
+ return self._tokens.mark()
537
+
538
+ def _reset(self, mark: int) -> None:
539
+ self._tokens.reset(mark)
540
+
541
+ def _tok_coord(self, tok: Token) -> Coord:
542
+ return Coord(file=tok.filename, line=tok.lineno, column=tok.column)
543
+
544
+ def _starts_declaration(self, tok: Token | None = None) -> bool:
545
+ tok = tok or self._peek()
546
+ if tok is None:
547
+ return False
548
+ return tok.type in _DECL_START
549
+
550
+ def _starts_expression(self, tok: Token | None = None) -> bool:
551
+ tok = tok or self._peek()
552
+ if tok is None:
553
+ return False
554
+ return tok.type in _STARTS_EXPRESSION
555
+
556
+ def _starts_statement(self) -> bool:
557
+ if self._peek_type() == "ATTRIBUTE_BEGIN":
558
+ mark = self._mark()
559
+ self._parse_attribute_specifier_sequence()
560
+ starts = not self._starts_declaration()
561
+ self._reset(mark)
562
+ return starts
563
+ tok_type = self._peek_type()
564
+ if tok_type is None:
565
+ return False
566
+ if tok_type in _STARTS_STATEMENT:
567
+ return True
568
+ return self._starts_expression()
569
+
570
+ def _starts_declarator(self, id_only: bool = False) -> bool:
571
+ tok_type = self._peek_type()
572
+ if tok_type is None:
573
+ return False
574
+ if tok_type in {"TIMES", "LPAREN"}:
575
+ return True
576
+ if id_only:
577
+ return tok_type == "ID"
578
+ return tok_type in {"ID", "TYPEID"}
579
+
580
+ def _peek_declarator_name_info(self) -> tuple[str | None, bool]:
581
+ mark = self._mark()
582
+ tok_type, saw_paren = self._scan_declarator_name_info()
583
+ self._reset(mark)
584
+ return tok_type, saw_paren
585
+
586
+ def _parse_any_declarator(
587
+ self, allow_abstract: bool = False, typeid_paren_as_abstract: bool = False
588
+ ) -> tuple[c_ast.Node | None, bool]:
589
+ # C declarators are ambiguous without lookahead. For example:
590
+ # int foo(int (aa)); -> aa is a name (ID)
591
+ # typedef char TT;
592
+ # int bar(int (TT)); -> TT is a type (TYPEID) in parens
593
+ name_type, saw_paren = self._peek_declarator_name_info()
594
+ if name_type is None or (
595
+ typeid_paren_as_abstract and name_type == "TYPEID" and saw_paren
596
+ ):
597
+ if not allow_abstract:
598
+ tok = self._peek()
599
+ coord = self._tok_coord(tok) if tok is not None else self.clex.filename
600
+ self._parse_error("Invalid declarator", coord)
601
+ decl = self._parse_abstract_declarator_opt()
602
+ return decl, False
603
+
604
+ if name_type == "TYPEID":
605
+ if typeid_paren_as_abstract:
606
+ decl = self._parse_typeid_noparen_declarator()
607
+ else:
608
+ decl = self._parse_typeid_declarator()
609
+ else:
610
+ decl = self._parse_id_declarator()
611
+ return decl, True
612
+
613
+ def _scan_declarator_name_info(self) -> tuple[str | None, bool]:
614
+ saw_paren = False
615
+ while self._accept("TIMES"):
616
+ self._parse_attribute_specifier_sequence()
617
+ while self._peek_type() in _TYPE_QUALIFIER:
618
+ self._advance()
619
+
620
+ tok = self._peek()
621
+ if tok is None:
622
+ return None, saw_paren
623
+ if tok.type in {"ID", "TYPEID"}:
624
+ self._advance()
625
+ return tok.type, saw_paren
626
+ if tok.type == "LPAREN":
627
+ saw_paren = True
628
+ self._advance()
629
+ tok_type, nested_paren = self._scan_declarator_name_info()
630
+ if nested_paren:
631
+ saw_paren = True
632
+ depth = 1
633
+ while True:
634
+ tok = self._peek()
635
+ if tok is None:
636
+ return None, saw_paren
637
+ if tok.type == "LPAREN":
638
+ depth += 1
639
+ elif tok.type == "RPAREN":
640
+ depth -= 1
641
+ self._advance()
642
+ if depth == 0:
643
+ break
644
+ continue
645
+ self._advance()
646
+ return tok_type, saw_paren
647
+ return None, saw_paren
648
+
649
+ def _starts_direct_abstract_declarator(self) -> bool:
650
+ return self._peek_type() in {"LPAREN", "LBRACKET"}
651
+
652
+ def _is_assignment_op(self) -> bool:
653
+ tok = self._peek()
654
+ return tok is not None and tok.type in _ASSIGNMENT_OPS
655
+
656
+ def _try_parse_paren_type_name(
657
+ self,
658
+ ) -> tuple[c_ast.Typename, int, Token, list[str]] | None:
659
+ """Parse and return a parenthesized type name if present.
660
+
661
+ Returns (typ, mark, lparen_tok, storage) when the next tokens look like
662
+ '(' type_name ')', where typ is the parsed type name, mark is the
663
+ token-stream position before parsing, and lparen_tok is the LPAREN
664
+ token. C23 storage specifiers may precede the type name, but require a
665
+ following '{' for a compound literal. Returns None if no parenthesized
666
+ type name is present.
667
+ """
668
+ lparen_tok = self._peek()
669
+ # Avoid saving a backtracking position when there's no '(' to parse.
670
+ if lparen_tok is None or lparen_tok.type != "LPAREN":
671
+ return None
672
+ mark = self._mark()
673
+ self._advance()
674
+ if not self._starts_declaration():
675
+ self._reset(mark)
676
+ return None
677
+ storage = []
678
+ while self._peek_type() in _STORAGE_CLASS:
679
+ tok = self._advance()
680
+ if self._dialect != "c23":
681
+ self._parse_error(
682
+ "Storage class specifiers in compound literals require C23",
683
+ self._tok_coord(tok),
684
+ )
685
+ storage.append(tok.value)
686
+ typ = self._parse_type_name()
687
+ if self._accept("RPAREN") is None:
688
+ self._reset(mark)
689
+ return None
690
+ if storage and self._peek_type() != "LBRACE":
691
+ self._parse_error(
692
+ "Storage class specifiers require a compound literal initializer",
693
+ self._tok_coord(lparen_tok),
694
+ )
695
+ return typ, mark, lparen_tok, storage
696
+
697
+ # ------------------------------------------------------------------
698
+ # Top-level
699
+ # ------------------------------------------------------------------
700
+ def _parse_attribute_specifier_sequence(self) -> list[c_ast.AttributeSpecifier]:
701
+ groups = []
702
+ while self._peek_type() == "ATTRIBUTE_BEGIN":
703
+ opening = self._advance()
704
+ if self._dialect != "c23":
705
+ self._parse_error("Attributes require C23", self._tok_coord(opening))
706
+ attributes = []
707
+ while self._peek_type() != "ATTRIBUTE_END":
708
+ if self._accept("COMMA"):
709
+ continue
710
+ name = self._parse_identifier_or_typeid()
711
+ namespace = None
712
+ if self._accept("COLONCOLON"):
713
+ namespace = name.name
714
+ name = self._parse_identifier_or_typeid()
715
+ arguments = self._accept("ATTRIBUTE_ARGUMENTS")
716
+ attributes.append(
717
+ c_ast.Attribute(
718
+ name.name,
719
+ namespace,
720
+ arguments.value if arguments is not None else None,
721
+ name.coord,
722
+ )
723
+ )
724
+ if not self._accept("COMMA"):
725
+ break
726
+ self._expect("ATTRIBUTE_END")
727
+ groups.append(
728
+ c_ast.AttributeSpecifier(attributes, self._tok_coord(opening))
729
+ )
730
+ return groups
731
+
732
+ def _attribute_declarations(
733
+ self, nodes: list[c_ast.Node], attributes: list[c_ast.AttributeSpecifier]
734
+ ) -> list[c_ast.Node]:
735
+ """Attach declaration prefixes, shared by comma-separated declarators."""
736
+ if not nodes or isinstance(nodes[0], c_ast.Pragma):
737
+ self._parse_error(
738
+ "Expected declaration after attributes", attributes[0].coord
739
+ )
740
+ for node in nodes:
741
+ # Trailing pragmas belong to the surrounding list, not to the
742
+ # declaration carrying these attributes.
743
+ if isinstance(node, c_ast.Pragma):
744
+ continue
745
+ decl = node.decl if isinstance(node, c_ast.FuncDef) else node
746
+ if not isinstance(decl, (c_ast.Decl, c_ast.Typedef)):
747
+ self._parse_error(
748
+ "Expected declaration after attributes", attributes[0].coord
749
+ )
750
+ decl.attributes = attributes
751
+ return nodes
752
+
753
+ def _attribute_statement(
754
+ self, stmt: c_ast.Node, attributes: list[c_ast.AttributeSpecifier]
755
+ ) -> c_ast.Node:
756
+ if isinstance(stmt, (c_ast.Label, c_ast.Case, c_ast.Default)):
757
+ stmt.attributes = attributes
758
+ return stmt
759
+ return c_ast.AttributedStatement(attributes, stmt, attributes[0].coord)
760
+
761
+ def _attach_type_attributes(
762
+ self, decl: c_ast.Decl | c_ast.Typedef | c_ast.Typename, spec: "_DeclSpec"
763
+ ) -> c_ast.Decl | c_ast.Typedef | c_ast.Typename:
764
+ """Keep attributes after the base type, inside pointer/array modifiers."""
765
+ if spec["type_attributes"]:
766
+ target = decl
767
+ while isinstance(
768
+ target.type,
769
+ (c_ast.PtrDecl, c_ast.ArrayDecl, c_ast.FuncDecl, c_ast.TypeDecl),
770
+ ):
771
+ target = target.type
772
+ target.type = c_ast.AttributedType(
773
+ target.type, spec["type_attributes"], target.type.coord
774
+ )
775
+ return decl
776
+
777
+ # BNF: translation_unit_or_empty : translation_unit | empty
778
+ def _parse_translation_unit_or_empty(self) -> c_ast.FileAST:
779
+ if self._peek() is None:
780
+ return c_ast.FileAST([])
781
+ return c_ast.FileAST(self._parse_translation_unit())
782
+
783
+ # BNF: translation_unit : external_declaration+
784
+ def _parse_translation_unit(self) -> list[c_ast.Node]:
785
+ ext = []
786
+ while self._peek() is not None:
787
+ ext.extend(self._parse_external_declaration())
788
+ return ext
789
+
790
+ # BNF: external_declaration : function_definition
791
+ # | declaration
792
+ # | pp_directive
793
+ # | pppragma_directive
794
+ # | static_assert
795
+ # | ';'
796
+ def _parse_external_declaration(self) -> list[c_ast.Node]:
797
+ if self._peek_type() == "ATTRIBUTE_BEGIN":
798
+ attributes = self._parse_attribute_specifier_sequence()
799
+ if self._accept("SEMI"):
800
+ return [c_ast.AttributeDeclaration(attributes, attributes[0].coord)]
801
+ return self._attribute_declarations(
802
+ self._parse_external_declaration(), attributes
803
+ )
804
+ tok = self._peek()
805
+ if tok is None:
806
+ return []
807
+ if tok.type == "PPHASH":
808
+ self._parse_pp_directive()
809
+ return []
810
+ if tok.type in {"PPPRAGMA", "_PRAGMA"}:
811
+ return [self._parse_pppragma_directive()]
812
+ if self._accept("SEMI"):
813
+ return []
814
+ if tok.type == "_STATIC_ASSERT":
815
+ return [self._parse_static_assert()]
816
+
817
+ if not self._starts_declaration(tok):
818
+ # Special handling for old-style function definitions that have an
819
+ # implicit return type, e.g.
820
+ #
821
+ # foo() {
822
+ # return 5;
823
+ # }
824
+ #
825
+ # These get an implicit 'int' return type.
826
+ decl = self._parse_id_declarator()
827
+ if self._peek_type() != "LBRACE":
828
+ self._parse_error("Invalid function definition", decl.coord)
829
+ spec: _DeclSpec = {
830
+ "qual": [],
831
+ "alignment": [],
832
+ "storage": [],
833
+ "type": [c_ast.IdentifierType(["int"], coord=decl.coord)],
834
+ "function": [],
835
+ "type_attributes": [],
836
+ }
837
+ return [self._parse_function_definition(spec, decl)]
838
+
839
+ # From here on, parsing a standard declatation/definition.
840
+ spec, saw_type, spec_coord = self._parse_declaration_specifiers(
841
+ allow_no_type=True
842
+ )
843
+ if self._is_inferred_auto(spec):
844
+ decls = self._parse_auto_declaration(spec)
845
+ return self._parse_declaration_end(decls)
846
+
847
+ name_type, _ = self._peek_declarator_name_info()
848
+ if name_type != "ID":
849
+ decls = self._parse_decl_body_with_spec(spec, saw_type)
850
+ return self._parse_declaration_end(decls)
851
+
852
+ decl = self._parse_id_declarator()
853
+
854
+ if self._peek_type() == "LBRACE" or self._starts_declaration():
855
+ if not spec["type"]:
856
+ spec["type"] = [c_ast.IdentifierType(["int"], coord=spec_coord)]
857
+ return [self._parse_function_definition(spec, decl)]
858
+
859
+ decl_dict: _DeclInfo = {"decl": decl}
860
+ if self._accept("EQUALS"):
861
+ decl_dict["init"] = self._parse_initializer()
862
+ decls = self._parse_init_declarator_list(first=decl_dict)
863
+ decls = self._build_declarations(spec=spec, decls=decls, typedef_namespace=True)
864
+ return self._parse_declaration_end(decls)
865
+
866
+ def _parse_function_definition(
867
+ self, spec: "_DeclSpec", decl: c_ast.Node
868
+ ) -> c_ast.Node:
869
+ # Open the scope shared by parameters, old-style parameter declarations,
870
+ # and the outermost body.
871
+ self._push_scope()
872
+ if isinstance(decl, c_ast.FuncDecl) and decl.args is not None:
873
+ for param in decl.args.params:
874
+ name = getattr(param, "name", None)
875
+ if name:
876
+ self._add_identifier(name, param.coord)
877
+ param_decls = (
878
+ self._parse_declaration_list() if self._starts_declaration() else None
879
+ )
880
+ if self._peek_type() != "LBRACE":
881
+ self._parse_error("Invalid function definition", decl.coord)
882
+ body = self._parse_compound_statement(new_scope=False)
883
+ self._pop_scope()
884
+ return self._build_function_definition(spec, decl, param_decls, body)
885
+
886
+ # ------------------------------------------------------------------
887
+ # Declarations
888
+ #
889
+ # Declarations always come as lists (because they can be several in one
890
+ # line). When returning parsed declarations, a list is always returned -
891
+ # even if it contains a single element. Pragmas before the final semicolon
892
+ # follow the declarations in that list.
893
+ # ------------------------------------------------------------------
894
+ # BNF: declaration : decl_body pppragma_directive* ';' | static_assert
895
+ def _parse_declaration(self) -> list[c_ast.Node]:
896
+ if self._peek_type() == "ATTRIBUTE_BEGIN":
897
+ attributes = self._parse_attribute_specifier_sequence()
898
+ if self._accept("SEMI"):
899
+ return [c_ast.AttributeDeclaration(attributes, attributes[0].coord)]
900
+ return self._attribute_declarations(self._parse_declaration(), attributes)
901
+ if self._peek_type() == "_STATIC_ASSERT":
902
+ return [self._parse_static_assert()]
903
+ decls = self._parse_decl_body()
904
+ return self._parse_declaration_end(decls)
905
+
906
+ def _parse_declaration_end(self, decls: list[c_ast.Node]) -> list[c_ast.Node]:
907
+ """Consume a declaration's semicolon and retain preceding pragmas.
908
+
909
+ Macro expansions can place diagnostic pragmas just before the final
910
+ semicolon (issue #478). Represent them after the completed declarations
911
+ in the surrounding list, just like pragmas following the semicolon.
912
+ """
913
+ pragmas = self._parse_pppragma_directive_list()
914
+ self._expect("SEMI")
915
+ return decls + pragmas
916
+
917
+ # BNF: decl_body : declaration_specifiers decl_body_with_spec
918
+ def _parse_decl_body(self) -> list[c_ast.Node]:
919
+ spec, saw_type, _ = self._parse_declaration_specifiers(allow_no_type=True)
920
+ return self._parse_decl_body_with_spec(spec, saw_type)
921
+
922
+ # BNF: decl_body_with_spec : init_declarator_list
923
+ # | struct_or_union_or_enum_only
924
+ def _parse_decl_body_with_spec(
925
+ self, spec: "_DeclSpec", saw_type: bool
926
+ ) -> list[c_ast.Node]:
927
+ if self._is_inferred_auto(spec):
928
+ return self._parse_auto_declaration(spec)
929
+
930
+ # saw_type is True if the specifiers included an actual type (as
931
+ # opposed to only storage/function/qualifiers).
932
+ decl_infos: list[_DeclInfo] | None = None
933
+ if saw_type:
934
+ if self._starts_declarator():
935
+ decl_infos = self._parse_init_declarator_list()
936
+ else:
937
+ if self._starts_declarator(id_only=True):
938
+ decl_infos = self._parse_init_declarator_list(id_only=True)
939
+
940
+ decls: list[c_ast.Node]
941
+ if decl_infos is None:
942
+ ty = spec["type"]
943
+ s_u_or_e = (c_ast.Struct, c_ast.Union, c_ast.Enum)
944
+ if len(ty) == 1 and isinstance(ty[0], s_u_or_e):
945
+ decl = c_ast.Decl(
946
+ name=None,
947
+ quals=spec["qual"],
948
+ align=spec["alignment"],
949
+ storage=spec["storage"],
950
+ funcspec=spec["function"],
951
+ type=ty[0],
952
+ init=None,
953
+ bitsize=None,
954
+ coord=ty[0].coord,
955
+ )
956
+ decls = [self._attach_type_attributes(decl, spec)]
957
+ else:
958
+ decls = self._build_declarations(
959
+ spec=spec,
960
+ decls=[{"decl": None}],
961
+ typedef_namespace=True,
962
+ )
963
+ else:
964
+ decls = self._build_declarations(
965
+ spec=spec, decls=decl_infos, typedef_namespace=True
966
+ )
967
+
968
+ return decls
969
+
970
+ def _is_inferred_auto(self, spec: "_DeclSpec") -> bool:
971
+ return self._dialect == "c23" and "auto" in spec["storage"] and not spec["type"]
972
+
973
+ # C23 type inference uses one plain (possibly parenthesized) name and an
974
+ # expression initializer. Preserve its syntax without resolving the type.
975
+ def _parse_auto_declaration(self, spec: "_DeclSpec") -> list[c_ast.Node]:
976
+ decl = self._parse_id_declarator()
977
+ if not isinstance(decl, c_ast.TypeDecl):
978
+ self._parse_error(
979
+ "Inferred auto declaration requires a plain identifier", decl.coord
980
+ )
981
+ self._expect("EQUALS")
982
+ init = self._parse_assignment_expression()
983
+ spec["type"] = [c_ast.InferredType(coord=decl.coord)]
984
+ # Register the name only after parsing the initializer.
985
+ return self._build_declarations(
986
+ spec=spec,
987
+ decls=[{"decl": decl, "init": init}],
988
+ typedef_namespace=True,
989
+ )
990
+
991
+ # BNF: declaration_list : (declaration pppragma_directive*)+
992
+ def _parse_declaration_list(self) -> list[c_ast.Node]:
993
+ decls = []
994
+ while self._starts_declaration():
995
+ decls.extend(self._parse_declaration())
996
+ # K&R parameter declarations retain pragmas on either side of
997
+ # their semicolons, including when reparsing generated code.
998
+ decls.extend(self._parse_pppragma_directive_list())
999
+ return decls
1000
+
1001
+ # BNF: declaration_specifiers : (storage_class_specifier
1002
+ # | type_specifier
1003
+ # | type_qualifier
1004
+ # | function_specifier
1005
+ # | alignment_specifier)+
1006
+ def _parse_declaration_specifiers(
1007
+ self, allow_no_type: bool = False
1008
+ ) -> tuple["_DeclSpec", bool, Coord | None]:
1009
+ """Parse declaration-specifier sequence.
1010
+
1011
+ allow_no_type:
1012
+ If True, allow a missing type specifier without error.
1013
+
1014
+ Returns:
1015
+ (spec, saw_type, first_coord) where spec is a dict with
1016
+ qual/storage/type/function/alignment/type_attributes entries, saw_type is True
1017
+ if a type specifier was consumed, and first_coord is the coord
1018
+ of the first specifier token (used for diagnostics).
1019
+ """
1020
+ spec, saw_type, first_coord = self._parse_specifiers(
1021
+ allow_storage_and_function=True
1022
+ )
1023
+ if spec is None:
1024
+ self._parse_error("Invalid declaration", self.clex.filename)
1025
+ if not saw_type and not allow_no_type:
1026
+ self._parse_error("Missing type in declaration", first_coord)
1027
+ return spec, saw_type, first_coord
1028
+
1029
+ # BNF: specifier_qualifier_list : (type_specifier
1030
+ # | type_qualifier
1031
+ # | alignment_specifier)+
1032
+ def _parse_specifier_qualifier_list(self) -> "_DeclSpec":
1033
+ spec, saw_type, first_coord = self._parse_specifiers(
1034
+ allow_storage_and_function=False
1035
+ )
1036
+ if spec is None:
1037
+ self._parse_error("Invalid specifier list", self.clex.filename)
1038
+ if not saw_type and not spec["alignment"]:
1039
+ self._parse_error("Missing type in declaration", first_coord)
1040
+ return spec
1041
+
1042
+ def _parse_specifiers(
1043
+ self, *, allow_storage_and_function: bool
1044
+ ) -> tuple["_DeclSpec | None", bool, Coord | None]:
1045
+ """Consume specifiers shared by declarations, members, and type names.
1046
+
1047
+ Storage classes and function specifiers are only accepted in
1048
+ declarations. Callers handle their own missing-specifier diagnostics.
1049
+ """
1050
+ spec = None
1051
+ saw_type = False
1052
+ first_coord = None
1053
+
1054
+ while True:
1055
+ tok = self._peek()
1056
+ if tok is None:
1057
+ break
1058
+
1059
+ if tok.type == "ATTRIBUTE_BEGIN" and spec is not None:
1060
+ spec["type_attributes"] = self._parse_attribute_specifier_sequence()
1061
+ break
1062
+
1063
+ # Once a type has been seen, a typedef name can be the declarator
1064
+ # (e.g. the second T in "T T"), rather than another type specifier.
1065
+ if tok.type == "TYPEID" and saw_type:
1066
+ break
1067
+
1068
+ # _Atomic is a type specifier with parentheses, a qualifier without.
1069
+ is_atomic_specifier = (
1070
+ tok.type == "_ATOMIC" and self._peek_type(2) == "LPAREN"
1071
+ )
1072
+ if first_coord is None:
1073
+ first_coord = self._tok_coord(tok)
1074
+
1075
+ kind: _DeclSpecKind = "type"
1076
+ newspec: str | c_ast.Node
1077
+ if tok.type == "_ALIGNAS":
1078
+ kind = "alignment"
1079
+ newspec = self._parse_alignment_specifier()
1080
+ elif is_atomic_specifier:
1081
+ newspec = self._parse_atomic_specifier()
1082
+ elif tok.type in _TYPEOF_SPEC:
1083
+ newspec = self._parse_typeof_specifier()
1084
+ elif tok.type == "_BITINT":
1085
+ newspec = self._parse_bitint_specifier()
1086
+ elif tok.type in _TYPE_QUALIFIER:
1087
+ kind = "qual"
1088
+ newspec = self._advance().value
1089
+ elif allow_storage_and_function and tok.type in _STORAGE_CLASS:
1090
+ kind = "storage"
1091
+ newspec = self._advance().value
1092
+ elif allow_storage_and_function and tok.type in _FUNCTION_SPEC:
1093
+ kind = "function"
1094
+ newspec = self._advance().value
1095
+ elif tok.type in _TYPE_SPEC_SIMPLE or tok.type == "TYPEID":
1096
+ tok = self._advance()
1097
+ newspec = c_ast.IdentifierType([tok.value], coord=self._tok_coord(tok))
1098
+ elif tok.type in {"STRUCT", "UNION"}:
1099
+ newspec = self._parse_struct_or_union_specifier()
1100
+ elif tok.type == "ENUM":
1101
+ newspec = self._parse_enum_specifier()
1102
+ else:
1103
+ break
1104
+
1105
+ spec = self._add_declaration_specifier(spec, newspec, kind)
1106
+ if kind == "type":
1107
+ saw_type = True
1108
+
1109
+ return spec, saw_type, first_coord
1110
+
1111
+ # BNF: type_qualifier_list : type_qualifier+
1112
+ def _parse_type_qualifier_list(self) -> list[str]:
1113
+ quals = []
1114
+ while self._peek_type() in _TYPE_QUALIFIER:
1115
+ quals.append(self._advance().value)
1116
+ return quals
1117
+
1118
+ # BNF: alignment_specifier : _ALIGNAS '(' type_name | constant_expression ')'
1119
+ def _parse_alignment_specifier(self) -> c_ast.Alignas:
1120
+ tok = self._expect("_ALIGNAS")
1121
+ self._expect("LPAREN")
1122
+
1123
+ if self._starts_declaration():
1124
+ typ = self._parse_type_name()
1125
+ self._expect("RPAREN")
1126
+ return c_ast.Alignas(typ, self._tok_coord(tok))
1127
+
1128
+ expr = self._parse_constant_expression()
1129
+ self._expect("RPAREN")
1130
+ return c_ast.Alignas(expr, self._tok_coord(tok))
1131
+
1132
+ # BNF: atomic_specifier : _ATOMIC '(' type_name ')'
1133
+ def _parse_atomic_specifier(self) -> c_ast.Node:
1134
+ self._expect("_ATOMIC")
1135
+ self._expect("LPAREN")
1136
+ typ = self._parse_type_name()
1137
+ self._expect("RPAREN")
1138
+ typ.quals.append("_Atomic")
1139
+ return typ
1140
+
1141
+ # BNF: typeof_specifier : (TYPEOF | TYPEOF_UNQUAL) '(' (type_name | expression) ')'
1142
+ def _parse_typeof_specifier(self) -> c_ast.TypeOf:
1143
+ tok = self._advance()
1144
+ self._expect("LPAREN")
1145
+ if self._starts_declaration():
1146
+ expr = self._parse_type_name()
1147
+ else:
1148
+ expr = self._parse_expression()
1149
+ self._expect("RPAREN")
1150
+ return c_ast.TypeOf(tok.value, expr, self._tok_coord(tok))
1151
+
1152
+ # BNF: bitint_specifier : _BITINT '(' constant_expression ')'
1153
+ def _parse_bitint_specifier(self) -> c_ast.BitIntType:
1154
+ tok = self._expect("_BITINT")
1155
+ self._expect("LPAREN")
1156
+ width = self._parse_constant_expression()
1157
+ self._expect("RPAREN")
1158
+ return c_ast.BitIntType(width, None, self._tok_coord(tok))
1159
+
1160
+ # BNF: init_declarator_list : init_declarator (',' init_declarator)*
1161
+ def _parse_init_declarator_list(
1162
+ self, first: Optional["_DeclInfo"] = None, id_only: bool = False
1163
+ ) -> list["_DeclInfo"]:
1164
+ decls = (
1165
+ [first]
1166
+ if first is not None
1167
+ else [self._parse_init_declarator(id_only=id_only)]
1168
+ )
1169
+
1170
+ while self._accept("COMMA"):
1171
+ decls.append(self._parse_init_declarator(id_only=id_only))
1172
+ return decls
1173
+
1174
+ # BNF: init_declarator : declarator ('=' initializer)?
1175
+ def _parse_init_declarator(self, id_only: bool = False) -> "_DeclInfo":
1176
+ decl = self._parse_id_declarator() if id_only else self._parse_declarator()
1177
+ if self._accept("EQUALS"):
1178
+ return {"decl": decl, "init": self._parse_initializer()}
1179
+ return {"decl": decl}
1180
+
1181
+ # ------------------------------------------------------------------
1182
+ # Structs/unions/enums
1183
+ # ------------------------------------------------------------------
1184
+ # BNF: struct_or_union_specifier : struct_or_union ID? '{' struct_declaration_list? '}'
1185
+ # | struct_or_union ID
1186
+ def _parse_struct_or_union_specifier(self) -> c_ast.Node:
1187
+ tok = self._advance()
1188
+ attributes = self._parse_attribute_specifier_sequence()
1189
+ klass = self._select_struct_union_class(tok.value)
1190
+
1191
+ if self._peek_type() in {"ID", "TYPEID"}:
1192
+ name_tok = self._advance()
1193
+ if self._peek_type() == "LBRACE":
1194
+ self._advance()
1195
+ if self._accept("RBRACE"):
1196
+ return klass(
1197
+ attributes=attributes,
1198
+ name=name_tok.value,
1199
+ decls=[],
1200
+ coord=self._tok_coord(name_tok),
1201
+ )
1202
+ decls = self._parse_struct_declaration_list()
1203
+ self._expect("RBRACE")
1204
+ return klass(
1205
+ attributes=attributes,
1206
+ name=name_tok.value,
1207
+ decls=decls,
1208
+ coord=self._tok_coord(name_tok),
1209
+ )
1210
+
1211
+ return klass(
1212
+ attributes=attributes,
1213
+ name=name_tok.value,
1214
+ decls=None,
1215
+ coord=self._tok_coord(name_tok),
1216
+ )
1217
+
1218
+ if self._peek_type() == "LBRACE":
1219
+ brace_tok = self._advance()
1220
+ if self._accept("RBRACE"):
1221
+ return klass(
1222
+ attributes=attributes,
1223
+ name=None,
1224
+ decls=[],
1225
+ coord=self._tok_coord(brace_tok),
1226
+ )
1227
+ decls = self._parse_struct_declaration_list()
1228
+ self._expect("RBRACE")
1229
+ return klass(
1230
+ attributes=attributes,
1231
+ name=None,
1232
+ decls=decls,
1233
+ coord=self._tok_coord(brace_tok),
1234
+ )
1235
+
1236
+ self._parse_error("Invalid struct/union declaration", self._tok_coord(tok))
1237
+
1238
+ # BNF: struct_declaration_list : struct_declaration+
1239
+ def _parse_struct_declaration_list(self) -> list[c_ast.Node]:
1240
+ decls = []
1241
+ while self._peek_type() not in {None, "RBRACE"}:
1242
+ items = self._parse_struct_declaration()
1243
+ if items is None:
1244
+ continue
1245
+ decls.extend(items)
1246
+ return decls
1247
+
1248
+ # BNF: struct_declaration : specifier_qualifier_list struct_declarator_list?
1249
+ # pppragma_directive* ';'
1250
+ # | static_assert
1251
+ # | pppragma_directive
1252
+ def _parse_struct_declaration(self) -> list[c_ast.Node] | None:
1253
+ if self._peek_type() == "ATTRIBUTE_BEGIN":
1254
+ attributes = self._parse_attribute_specifier_sequence()
1255
+ return self._attribute_declarations(
1256
+ self._parse_struct_declaration() or [], attributes
1257
+ )
1258
+ if self._peek_type() == "_STATIC_ASSERT":
1259
+ return [self._parse_static_assert()]
1260
+ if self._peek_type() == "SEMI":
1261
+ self._advance()
1262
+ return None
1263
+ if self._peek_type() in {"PPPRAGMA", "_PRAGMA"}:
1264
+ return [self._parse_pppragma_directive()]
1265
+
1266
+ spec = self._parse_specifier_qualifier_list()
1267
+ assert "typedef" not in spec.get("storage", [])
1268
+
1269
+ decls = None
1270
+ if self._starts_declarator() or self._peek_type() == "COLON":
1271
+ decls = self._parse_struct_declarator_list()
1272
+ if decls is not None:
1273
+ return self._parse_declaration_end(
1274
+ self._build_declarations(spec=spec, decls=decls)
1275
+ )
1276
+
1277
+ if len(spec["type"]) == 1:
1278
+ node = spec["type"][0]
1279
+ if isinstance(node, c_ast.Node):
1280
+ decl_type = node
1281
+ else:
1282
+ decl_type = c_ast.IdentifierType(node)
1283
+ return self._parse_declaration_end(
1284
+ self._build_declarations(spec=spec, decls=[{"decl": decl_type}])
1285
+ )
1286
+
1287
+ return self._parse_declaration_end(
1288
+ self._build_declarations(spec=spec, decls=[{"decl": None}])
1289
+ )
1290
+
1291
+ # BNF: struct_declarator_list : struct_declarator (',' struct_declarator)*
1292
+ def _parse_struct_declarator_list(self) -> list["_DeclInfo"]:
1293
+ decls = [self._parse_struct_declarator()]
1294
+ while self._accept("COMMA"):
1295
+ decls.append(self._parse_struct_declarator())
1296
+ return decls
1297
+
1298
+ # BNF: struct_declarator : declarator? ':' constant_expression
1299
+ # | declarator (':' constant_expression)?
1300
+ def _parse_struct_declarator(self) -> "_DeclInfo":
1301
+ if self._accept("COLON"):
1302
+ bitsize = self._parse_constant_expression()
1303
+ return {
1304
+ "decl": c_ast.TypeDecl(None, None, None, None),
1305
+ "bitsize": bitsize,
1306
+ }
1307
+
1308
+ decl = self._parse_declarator()
1309
+ if self._accept("COLON"):
1310
+ bitsize = self._parse_constant_expression()
1311
+ return {"decl": decl, "bitsize": bitsize}
1312
+
1313
+ return {"decl": decl}
1314
+
1315
+ # BNF: enum_specifier : ENUM ID? enum_type_specifier? '{' enumerator_list '}'
1316
+ # | ENUM ID enum_type_specifier?
1317
+ def _parse_enum_specifier(self) -> c_ast.Node:
1318
+ tok = self._expect("ENUM")
1319
+ attributes = self._parse_attribute_specifier_sequence()
1320
+ name = None
1321
+ if self._peek_type() in {"ID", "TYPEID"}:
1322
+ name = self._advance().value
1323
+
1324
+ underlying_type = None
1325
+ # A colon followed by an expression belongs to an unnamed bit-field,
1326
+ # e.g. struct S { enum E : 3; }, rather than a fixed underlying type.
1327
+ if self._peek_type() == "COLON" and self._starts_declaration(self._peek(2)):
1328
+ underlying_type = self._parse_enum_type_specifier()
1329
+
1330
+ enums = None
1331
+ if name is None or self._peek_type() == "LBRACE":
1332
+ self._expect("LBRACE")
1333
+ enums = self._parse_enumerator_list()
1334
+ self._expect("RBRACE")
1335
+ return c_ast.Enum(
1336
+ name,
1337
+ enums,
1338
+ underlying_type,
1339
+ self._tok_coord(tok),
1340
+ attributes=attributes,
1341
+ )
1342
+
1343
+ # BNF: enum_type_specifier : ':' specifier_qualifier_list (C23)
1344
+ def _parse_enum_type_specifier(self) -> c_ast.Typename:
1345
+ colon = self._expect("COLON")
1346
+ if self._dialect != "c23":
1347
+ self._parse_error(
1348
+ "Fixed underlying enum types require C23", self._tok_coord(colon)
1349
+ )
1350
+ # The base is a specifier-qualifier list, not a full type name: any
1351
+ # following pointer, array, or function declarator belongs to the enum.
1352
+ spec = self._parse_specifier_qualifier_list()
1353
+ coord = spec["type"][0].coord if spec["type"] else self._tok_coord(colon)
1354
+ return self._build_type_name(spec, None, coord)
1355
+
1356
+ # BNF: enumerator_list : pppragma_directive* enumerator pppragma_directive*
1357
+ # (',' pppragma_directive* enumerator pppragma_directive*)*
1358
+ # (',' pppragma_directive*)?
1359
+ def _parse_enumerator_list(self) -> c_ast.Node:
1360
+ members = self._parse_pppragma_directive_list()
1361
+ # Pragmas do not count as enumerators: even with leading directives,
1362
+ # the list must contain at least one enumerator.
1363
+ enum = self._parse_enumerator()
1364
+ members.append(enum)
1365
+ coord = enum.coord
1366
+ while True:
1367
+ # Directives may appear on either side of a separating comma, or
1368
+ # after the last enumerator. They never replace the comma itself.
1369
+ members.extend(self._parse_pppragma_directive_list())
1370
+ if not self._accept("COMMA"):
1371
+ break
1372
+ members.extend(self._parse_pppragma_directive_list())
1373
+ if self._peek_type() == "RBRACE":
1374
+ break
1375
+ members.append(self._parse_enumerator())
1376
+ return c_ast.EnumeratorList(members, coord)
1377
+
1378
+ # BNF: enumerator : ID ('=' constant_expression)?
1379
+ def _parse_enumerator(self) -> c_ast.Node:
1380
+ name_tok = self._expect("ID")
1381
+ attributes = self._parse_attribute_specifier_sequence()
1382
+ if self._accept("EQUALS"):
1383
+ value = self._parse_constant_expression()
1384
+ else:
1385
+ value = None
1386
+ enum = c_ast.Enumerator(
1387
+ name_tok.value,
1388
+ value,
1389
+ self._tok_coord(name_tok),
1390
+ attributes=attributes,
1391
+ )
1392
+ self._add_identifier(enum.name, enum.coord)
1393
+ return enum
1394
+
1395
+ # ------------------------------------------------------------------
1396
+ # Declarators
1397
+ # ------------------------------------------------------------------
1398
+ # BNF: declarator : pointer? direct_declarator
1399
+ def _parse_declarator(self) -> c_ast.Node:
1400
+ decl, _ = self._parse_any_declarator(
1401
+ allow_abstract=False, typeid_paren_as_abstract=False
1402
+ )
1403
+ assert decl is not None
1404
+ return decl
1405
+
1406
+ # BNF: id_declarator : declarator with ID name
1407
+ def _parse_id_declarator(self) -> c_ast.Node:
1408
+ return self._parse_declarator_kind(kind="id", allow_paren=True)
1409
+
1410
+ # BNF: typeid_declarator : declarator with TYPEID name
1411
+ def _parse_typeid_declarator(self) -> c_ast.Node:
1412
+ return self._parse_declarator_kind(kind="typeid", allow_paren=True)
1413
+
1414
+ # BNF: typeid_noparen_declarator : declarator without parenthesized name
1415
+ def _parse_typeid_noparen_declarator(self) -> c_ast.Node:
1416
+ return self._parse_declarator_kind(kind="typeid", allow_paren=False)
1417
+
1418
+ # BNF: declarator_kind : pointer? direct_declarator(kind)
1419
+ def _parse_declarator_kind(self, kind: str, allow_paren: bool) -> c_ast.Node:
1420
+ ptr = None
1421
+ if self._peek_type() == "TIMES":
1422
+ ptr = self._parse_pointer()
1423
+ direct = self._parse_direct_declarator(kind, allow_paren=allow_paren)
1424
+ if ptr is not None:
1425
+ return self._type_modify_decl(direct, ptr)
1426
+ return direct
1427
+
1428
+ # BNF: direct_declarator : ID | TYPEID | '(' declarator ')'
1429
+ # | direct_declarator '[' ... ']'
1430
+ # | direct_declarator '(' ... ')'
1431
+ def _parse_direct_declarator(
1432
+ self, kind: str, allow_paren: bool = True
1433
+ ) -> c_ast.Node:
1434
+ if allow_paren and self._accept("LPAREN"):
1435
+ decl = self._parse_declarator_kind(kind, allow_paren=True)
1436
+ self._expect("RPAREN")
1437
+ else:
1438
+ if kind == "id":
1439
+ name_tok = self._expect("ID")
1440
+ else:
1441
+ name_tok = self._expect("TYPEID")
1442
+ decl = c_ast.TypeDecl(
1443
+ declname=name_tok.value,
1444
+ type=None,
1445
+ quals=None,
1446
+ align=None,
1447
+ coord=self._tok_coord(name_tok),
1448
+ )
1449
+ decl.attributes = self._parse_attribute_specifier_sequence()
1450
+
1451
+ return self._parse_decl_suffixes(decl)
1452
+
1453
+ def _parse_decl_suffixes(self, decl: c_ast.Node) -> c_ast.Node:
1454
+ """Parse a chain of array/function suffixes and attach them to decl."""
1455
+ while True:
1456
+ if self._peek_type() == "LBRACKET":
1457
+ decl = self._type_modify_decl(decl, self._parse_array_decl(decl))
1458
+ continue
1459
+ if self._peek_type() == "LPAREN":
1460
+ func = self._parse_function_decl(decl)
1461
+ decl = self._type_modify_decl(decl, func)
1462
+ continue
1463
+ break
1464
+ return decl
1465
+
1466
+ # BNF: array_decl : '[' array_specifiers? assignment_expression? ']'
1467
+ def _parse_array_decl(self, base_decl: c_ast.Node) -> c_ast.Node:
1468
+ return self._parse_array_decl_common(base_type=None, coord=base_decl.coord)
1469
+
1470
+ def _parse_array_decl_common(
1471
+ self, base_type: c_ast.Node | None, coord: Coord | None = None
1472
+ ) -> c_ast.Node:
1473
+ """Parse an array declarator suffix and return an ArrayDecl node.
1474
+
1475
+ base_type:
1476
+ Base declarator node to attach (None for direct-declarator parsing,
1477
+ TypeDecl for abstract declarators).
1478
+
1479
+ coord:
1480
+ Coordinate to use for the ArrayDecl. If None, uses the '[' token.
1481
+ """
1482
+ lbrack_tok = self._expect("LBRACKET")
1483
+ if coord is None:
1484
+ coord = self._tok_coord(lbrack_tok)
1485
+
1486
+ def make_array_decl(dim, dim_quals):
1487
+ return c_ast.ArrayDecl(
1488
+ type=base_type,
1489
+ dim=dim,
1490
+ dim_quals=dim_quals,
1491
+ coord=coord,
1492
+ attributes=self._parse_attribute_specifier_sequence(),
1493
+ )
1494
+
1495
+ if self._accept("STATIC"):
1496
+ dim_quals = ["static"] + (self._parse_type_qualifier_list() or [])
1497
+ dim = self._parse_assignment_expression()
1498
+ self._expect("RBRACKET")
1499
+ return make_array_decl(dim, dim_quals)
1500
+
1501
+ if self._peek_type() in _TYPE_QUALIFIER:
1502
+ dim_quals = self._parse_type_qualifier_list() or []
1503
+ if self._accept("STATIC"):
1504
+ dim_quals = dim_quals + ["static"]
1505
+ dim = self._parse_assignment_expression()
1506
+ self._expect("RBRACKET")
1507
+ return make_array_decl(dim, dim_quals)
1508
+ times_tok = self._accept("TIMES")
1509
+ if times_tok:
1510
+ self._expect("RBRACKET")
1511
+ dim = c_ast.ID(times_tok.value, self._tok_coord(times_tok))
1512
+ return make_array_decl(dim, dim_quals)
1513
+ dim = None
1514
+ if self._starts_expression():
1515
+ dim = self._parse_assignment_expression()
1516
+ self._expect("RBRACKET")
1517
+ return make_array_decl(dim, dim_quals)
1518
+
1519
+ times_tok = self._accept("TIMES")
1520
+ if times_tok:
1521
+ self._expect("RBRACKET")
1522
+ dim = c_ast.ID(times_tok.value, self._tok_coord(times_tok))
1523
+ return make_array_decl(dim, [])
1524
+
1525
+ dim = None
1526
+ if self._starts_expression():
1527
+ dim = self._parse_assignment_expression()
1528
+ self._expect("RBRACKET")
1529
+ return make_array_decl(dim, [])
1530
+
1531
+ # BNF: function_decl : '(' parameter_type_list_opt | identifier_list_opt ')'
1532
+ def _parse_function_decl(self, base_decl: c_ast.Node) -> c_ast.Node:
1533
+ self._expect("LPAREN")
1534
+ if self._accept("RPAREN"):
1535
+ args = None
1536
+ else:
1537
+ args = (
1538
+ self._parse_parameter_type_list()
1539
+ if self._starts_declaration() or self._peek_type() == "ELLIPSIS"
1540
+ else self._parse_identifier_list_opt()
1541
+ )
1542
+ self._expect("RPAREN")
1543
+
1544
+ func = c_ast.FuncDecl(
1545
+ args=args,
1546
+ type=None,
1547
+ coord=base_decl.coord,
1548
+ attributes=self._parse_attribute_specifier_sequence(),
1549
+ )
1550
+
1551
+ return func
1552
+
1553
+ # BNF: pointer : '*' type_qualifier_list? pointer?
1554
+ def _parse_pointer(self) -> c_ast.Node | None:
1555
+ stars = []
1556
+ times_tok = self._accept("TIMES")
1557
+ while times_tok:
1558
+ attributes = self._parse_attribute_specifier_sequence()
1559
+ quals = self._parse_type_qualifier_list() or []
1560
+ stars.append((quals, self._tok_coord(times_tok), attributes))
1561
+ times_tok = self._accept("TIMES")
1562
+
1563
+ if not stars:
1564
+ return None
1565
+
1566
+ ptr = None
1567
+ for quals, coord, attributes in stars:
1568
+ ptr = c_ast.PtrDecl(
1569
+ quals=quals, type=ptr, coord=coord, attributes=attributes
1570
+ )
1571
+ return ptr
1572
+
1573
+ # BNF: parameter_type_list : parameter_list (',' ELLIPSIS)?
1574
+ # | ELLIPSIS (C23)
1575
+ def _parse_parameter_type_list(self) -> c_ast.ParamList:
1576
+ # C23 permits a variadic function with no preceding named parameters.
1577
+ ell_tok = self._accept("ELLIPSIS")
1578
+ if ell_tok:
1579
+ coord = self._tok_coord(ell_tok)
1580
+ if self._dialect != "c23":
1581
+ self._parse_error("Ellipsis-only parameter lists require C23", coord)
1582
+ return c_ast.ParamList([c_ast.EllipsisParam(coord)], coord)
1583
+
1584
+ params = self._parse_parameter_list()
1585
+ if self._peek_type() == "COMMA" and self._peek_type(2) == "ELLIPSIS":
1586
+ self._advance()
1587
+ ell_tok = self._advance()
1588
+ params.params.append(c_ast.EllipsisParam(self._tok_coord(ell_tok)))
1589
+ return params
1590
+
1591
+ # BNF: parameter_list : parameter_declaration (',' parameter_declaration)*
1592
+ def _parse_parameter_list(self) -> c_ast.ParamList:
1593
+ first = self._parse_parameter_declaration()
1594
+ params = c_ast.ParamList([first], first.coord)
1595
+ while self._peek_type() == "COMMA" and self._peek_type(2) != "ELLIPSIS":
1596
+ self._advance()
1597
+ params.params.append(self._parse_parameter_declaration())
1598
+ return params
1599
+
1600
+ # BNF: parameter_declaration : declaration_specifiers declarator?
1601
+ # | declaration_specifiers abstract_declarator_opt
1602
+ def _parse_parameter_declaration(self) -> c_ast.Node:
1603
+ attributes = self._parse_attribute_specifier_sequence()
1604
+ decl = self._parse_parameter_declaration_body()
1605
+ assert isinstance(decl, (c_ast.Decl, c_ast.Typename))
1606
+ decl.attributes = attributes
1607
+ return decl
1608
+
1609
+ def _parse_parameter_declaration_body(self) -> c_ast.Node:
1610
+ spec, _, spec_coord = self._parse_declaration_specifiers(allow_no_type=True)
1611
+
1612
+ if self._is_inferred_auto(spec):
1613
+ self._parse_error("Cannot infer the type of a parameter", spec_coord)
1614
+
1615
+ if "typedef" in spec["storage"]:
1616
+ self._parse_error("Invalid storage class for a parameter", spec_coord)
1617
+
1618
+ if not spec["type"]:
1619
+ spec["type"] = [c_ast.IdentifierType(["int"], coord=spec_coord)]
1620
+
1621
+ if self._starts_declarator():
1622
+ decl, is_named = self._parse_any_declarator(
1623
+ allow_abstract=True, typeid_paren_as_abstract=True
1624
+ )
1625
+ if is_named:
1626
+ return self._build_declarations(
1627
+ spec=spec,
1628
+ decls=[{"decl": decl}],
1629
+ )[0]
1630
+ return self._build_parameter_declaration(spec, decl, spec_coord)
1631
+
1632
+ decl = self._parse_abstract_declarator_opt()
1633
+ return self._build_parameter_declaration(spec, decl, spec_coord)
1634
+
1635
+ def _build_parameter_declaration(
1636
+ self, spec: "_DeclSpec", decl: c_ast.Node | None, spec_coord: Coord | None
1637
+ ) -> c_ast.Node:
1638
+ if (
1639
+ len(spec["type"]) > 1
1640
+ and isinstance(spec["type"][-1], c_ast.IdentifierType)
1641
+ and len(spec["type"][-1].names) == 1
1642
+ and self._is_type_in_scope(spec["type"][-1].names[0])
1643
+ ):
1644
+ return self._build_declarations(spec=spec, decls=[{"decl": decl}])[0]
1645
+
1646
+ return self._build_type_name(spec, decl, spec_coord)
1647
+
1648
+ # BNF: identifier_list_opt : identifier_list | empty
1649
+ def _parse_identifier_list_opt(self) -> c_ast.Node | None:
1650
+ if self._peek_type() == "RPAREN":
1651
+ return None
1652
+ return self._parse_identifier_list()
1653
+
1654
+ # BNF: identifier_list : identifier (',' identifier)*
1655
+ def _parse_identifier_list(self) -> c_ast.Node:
1656
+ first = self._parse_identifier()
1657
+ params = c_ast.ParamList([first], first.coord)
1658
+ while self._accept("COMMA"):
1659
+ params.params.append(self._parse_identifier())
1660
+ return params
1661
+
1662
+ # ------------------------------------------------------------------
1663
+ # Abstract declarators
1664
+ # ------------------------------------------------------------------
1665
+ # BNF: type_name : specifier_qualifier_list abstract_declarator_opt
1666
+ def _parse_type_name(self) -> c_ast.Typename:
1667
+ spec = self._parse_specifier_qualifier_list()
1668
+ decl = self._parse_abstract_declarator_opt()
1669
+
1670
+ coord = None
1671
+ if decl is not None:
1672
+ coord = decl.coord
1673
+ elif spec["type"]:
1674
+ coord = spec["type"][0].coord
1675
+
1676
+ return self._build_type_name(spec, decl, coord)
1677
+
1678
+ # BNF: abstract_declarator_opt : pointer? direct_abstract_declarator?
1679
+ def _parse_abstract_declarator_opt(self) -> c_ast.Node | None:
1680
+ if self._peek_type() == "TIMES":
1681
+ ptr = self._parse_pointer()
1682
+ if self._starts_direct_abstract_declarator():
1683
+ decl = self._parse_direct_abstract_declarator()
1684
+ else:
1685
+ decl = c_ast.TypeDecl(None, None, None, None)
1686
+ assert ptr is not None
1687
+ return self._type_modify_decl(decl, ptr)
1688
+
1689
+ if self._starts_direct_abstract_declarator():
1690
+ return self._parse_direct_abstract_declarator()
1691
+
1692
+ return None
1693
+
1694
+ # BNF: direct_abstract_declarator : '(' parameter_type_list_opt ')'
1695
+ # | '(' abstract_declarator ')'
1696
+ # | '[' ... ']'
1697
+ def _parse_direct_abstract_declarator(self) -> c_ast.Node:
1698
+ lparen_tok = self._accept("LPAREN")
1699
+ if lparen_tok:
1700
+ if self._starts_declaration() or self._peek_type() in {
1701
+ "RPAREN",
1702
+ "ELLIPSIS",
1703
+ }:
1704
+ params = self._parse_parameter_type_list_opt()
1705
+ self._expect("RPAREN")
1706
+ decl = c_ast.FuncDecl(
1707
+ args=params,
1708
+ type=c_ast.TypeDecl(None, None, None, None),
1709
+ coord=self._tok_coord(lparen_tok),
1710
+ attributes=self._parse_attribute_specifier_sequence(),
1711
+ )
1712
+ else:
1713
+ decl = self._parse_abstract_declarator_opt()
1714
+ self._expect("RPAREN")
1715
+ assert decl is not None
1716
+ elif self._peek_type() == "LBRACKET":
1717
+ decl = self._parse_abstract_array_base()
1718
+ else:
1719
+ self._parse_error("Invalid abstract declarator", self.clex.filename)
1720
+
1721
+ return self._parse_decl_suffixes(decl)
1722
+
1723
+ # BNF: parameter_type_list_opt : parameter_type_list | empty
1724
+ def _parse_parameter_type_list_opt(self) -> c_ast.ParamList | None:
1725
+ if self._peek_type() == "RPAREN":
1726
+ return None
1727
+ return self._parse_parameter_type_list()
1728
+
1729
+ # BNF: abstract_array_base : '[' array_specifiers? assignment_expression? ']'
1730
+ def _parse_abstract_array_base(self) -> c_ast.Node:
1731
+ return self._parse_array_decl_common(
1732
+ base_type=c_ast.TypeDecl(None, None, None, None), coord=None
1733
+ )
1734
+
1735
+ # ------------------------------------------------------------------
1736
+ # Statements
1737
+ # ------------------------------------------------------------------
1738
+ # BNF: statement : labeled_statement | compound_statement
1739
+ # | selection_statement | iteration_statement
1740
+ # | jump_statement | expression_statement
1741
+ # | pppragma_directive
1742
+ def _parse_statement(self) -> c_ast.Node:
1743
+ if self._peek_type() == "ATTRIBUTE_BEGIN":
1744
+ attributes = self._parse_attribute_specifier_sequence()
1745
+ if self._accept("SEMI"):
1746
+ return c_ast.AttributeDeclaration(attributes, attributes[0].coord)
1747
+ return self._attribute_statement(self._parse_statement(), attributes)
1748
+ tok_type = self._peek_type()
1749
+ match tok_type:
1750
+ case "CASE" | "DEFAULT":
1751
+ return self._parse_labeled_statement()
1752
+ case "ID" if self._peek_type(2) == "COLON":
1753
+ return self._parse_labeled_statement()
1754
+ case "LBRACE":
1755
+ return self._parse_compound_statement()
1756
+ case "IF" | "SWITCH":
1757
+ return self._parse_selection_statement()
1758
+ case "WHILE" | "DO" | "FOR":
1759
+ return self._parse_iteration_statement()
1760
+ case "GOTO" | "BREAK" | "CONTINUE" | "RETURN":
1761
+ return self._parse_jump_statement()
1762
+ case "PPPRAGMA" | "_PRAGMA":
1763
+ return self._parse_pppragma_directive()
1764
+ case _:
1765
+ return self._parse_expression_statement()
1766
+
1767
+ # BNF: pragmacomp_or_statement : pppragma_directive* statement
1768
+ def _parse_pragmacomp_or_statement(self) -> c_ast.Node:
1769
+ if self._peek_type() in {"PPPRAGMA", "_PRAGMA"}:
1770
+ pragmas = self._parse_pppragma_directive_list()
1771
+ stmt = self._parse_statement()
1772
+ return c_ast.Compound(block_items=pragmas + [stmt], coord=pragmas[0].coord)
1773
+ return self._parse_statement()
1774
+
1775
+ # BNF: block_item : declaration | statement
1776
+ def _parse_block_item(self) -> c_ast.Node | list[c_ast.Node]:
1777
+ if self._peek_type() == "ATTRIBUTE_BEGIN":
1778
+ attributes = self._parse_attribute_specifier_sequence()
1779
+ if self._accept("SEMI"):
1780
+ return c_ast.AttributeDeclaration(attributes, attributes[0].coord)
1781
+ if self._starts_declaration():
1782
+ return self._attribute_declarations(
1783
+ self._parse_declaration(), attributes
1784
+ )
1785
+ return self._attribute_statement(self._parse_statement(), attributes)
1786
+ if self._peek_type() == "_STATIC_ASSERT":
1787
+ return self._parse_static_assert()
1788
+ if self._starts_declaration():
1789
+ return self._parse_declaration()
1790
+ return self._parse_statement()
1791
+
1792
+ # BNF: block_item_list : block_item+
1793
+ def _parse_block_item_list(self) -> list[c_ast.Node]:
1794
+ items: list[c_ast.Node] = []
1795
+ while self._peek_type() not in {"RBRACE", None}:
1796
+ item = self._parse_block_item()
1797
+ if isinstance(item, c_ast.Node):
1798
+ items.append(item)
1799
+ elif item != [None]:
1800
+ items.extend(item)
1801
+ return items
1802
+
1803
+ # BNF: compound_statement : '{' block_item_list? '}'
1804
+ def _parse_compound_statement(self, *, new_scope: bool = True) -> c_ast.Node:
1805
+ lbrace_tok = self._expect("LBRACE")
1806
+ if new_scope:
1807
+ self._push_scope()
1808
+ block_items = None
1809
+ if not self._accept("RBRACE"):
1810
+ block_items = self._parse_block_item_list()
1811
+ self._expect("RBRACE")
1812
+ if new_scope:
1813
+ self._pop_scope()
1814
+ return c_ast.Compound(
1815
+ block_items=block_items, coord=self._tok_coord(lbrace_tok)
1816
+ )
1817
+
1818
+ # BNF: labeled_statement : ID ':' statement
1819
+ # | CASE constant_expression ':' statement
1820
+ # | DEFAULT ':' statement
1821
+ def _parse_labeled_statement(self) -> c_ast.Node:
1822
+ tok_type = self._peek_type()
1823
+ match tok_type:
1824
+ case "ID":
1825
+ name_tok = self._advance()
1826
+ self._expect("COLON")
1827
+ if self._starts_statement():
1828
+ stmt = self._parse_pragmacomp_or_statement()
1829
+ else:
1830
+ stmt = c_ast.EmptyStatement(self._tok_coord(name_tok))
1831
+ return c_ast.Label(name_tok.value, stmt, self._tok_coord(name_tok))
1832
+ case "CASE":
1833
+ case_tok = self._advance()
1834
+ expr = self._parse_constant_expression()
1835
+ self._expect("COLON")
1836
+ if self._starts_statement():
1837
+ stmt = self._parse_pragmacomp_or_statement()
1838
+ else:
1839
+ stmt = c_ast.EmptyStatement(self._tok_coord(case_tok))
1840
+ return c_ast.Case(expr, [stmt], self._tok_coord(case_tok))
1841
+ case "DEFAULT":
1842
+ def_tok = self._advance()
1843
+ self._expect("COLON")
1844
+ if self._starts_statement():
1845
+ stmt = self._parse_pragmacomp_or_statement()
1846
+ else:
1847
+ stmt = c_ast.EmptyStatement(self._tok_coord(def_tok))
1848
+ return c_ast.Default([stmt], self._tok_coord(def_tok))
1849
+ case _:
1850
+ self._parse_error("Invalid labeled statement", self.clex.filename)
1851
+
1852
+ # BNF: selection_statement : IF '(' expression ')' statement (ELSE statement)?
1853
+ # | SWITCH '(' expression ')' statement
1854
+ def _parse_selection_statement(self) -> c_ast.Node:
1855
+ tok = self._advance()
1856
+ match tok.type:
1857
+ case "IF":
1858
+ self._expect("LPAREN")
1859
+ cond = self._parse_expression()
1860
+ self._expect("RPAREN")
1861
+ then_stmt = self._parse_pragmacomp_or_statement()
1862
+ if self._accept("ELSE"):
1863
+ else_stmt = self._parse_pragmacomp_or_statement()
1864
+ return c_ast.If(cond, then_stmt, else_stmt, self._tok_coord(tok))
1865
+ return c_ast.If(cond, then_stmt, None, self._tok_coord(tok))
1866
+ case "SWITCH":
1867
+ self._expect("LPAREN")
1868
+ expr = self._parse_expression()
1869
+ self._expect("RPAREN")
1870
+ stmt = self._parse_pragmacomp_or_statement()
1871
+ return fix_switch_cases(c_ast.Switch(expr, stmt, self._tok_coord(tok)))
1872
+ case _:
1873
+ self._parse_error("Invalid selection statement", self._tok_coord(tok))
1874
+
1875
+ # BNF: iteration_statement : WHILE '(' expression ')' statement
1876
+ # | DO statement WHILE '(' expression ')' ';'
1877
+ # | FOR '(' (declaration | expression_opt) ';'
1878
+ # expression_opt ';' expression_opt ')' statement
1879
+ def _parse_iteration_statement(self) -> c_ast.Node:
1880
+ tok = self._advance()
1881
+ match tok.type:
1882
+ case "WHILE":
1883
+ self._expect("LPAREN")
1884
+ cond = self._parse_expression()
1885
+ self._expect("RPAREN")
1886
+ stmt = self._parse_pragmacomp_or_statement()
1887
+ return c_ast.While(cond, stmt, self._tok_coord(tok))
1888
+ case "DO":
1889
+ stmt = self._parse_pragmacomp_or_statement()
1890
+ self._expect("WHILE")
1891
+ self._expect("LPAREN")
1892
+ cond = self._parse_expression()
1893
+ self._expect("RPAREN")
1894
+ self._expect("SEMI")
1895
+ return c_ast.DoWhile(cond, stmt, self._tok_coord(tok))
1896
+ case "FOR":
1897
+ self._expect("LPAREN")
1898
+ if self._peek_type() == "_STATIC_ASSERT" or self._starts_declaration():
1899
+ # Names declared here are scoped to the loop (C11 6.8.5p5)
1900
+ self._push_scope()
1901
+ decls = self._parse_declaration()
1902
+ init = c_ast.DeclList(decls, self._tok_coord(tok))
1903
+ cond = self._parse_expression_opt()
1904
+ self._expect("SEMI")
1905
+ next_expr = self._parse_expression_opt()
1906
+ self._expect("RPAREN")
1907
+ stmt = self._parse_pragmacomp_or_statement()
1908
+ self._pop_scope()
1909
+ return c_ast.For(init, cond, next_expr, stmt, self._tok_coord(tok))
1910
+
1911
+ init = self._parse_expression_opt()
1912
+ self._expect("SEMI")
1913
+ cond = self._parse_expression_opt()
1914
+ self._expect("SEMI")
1915
+ next_expr = self._parse_expression_opt()
1916
+ self._expect("RPAREN")
1917
+ stmt = self._parse_pragmacomp_or_statement()
1918
+ return c_ast.For(init, cond, next_expr, stmt, self._tok_coord(tok))
1919
+ case _:
1920
+ self._parse_error("Invalid iteration statement", self._tok_coord(tok))
1921
+
1922
+ # BNF: jump_statement : GOTO ID ';' | BREAK ';' | CONTINUE ';'
1923
+ # | RETURN expression? ';'
1924
+ def _parse_jump_statement(self) -> c_ast.Node:
1925
+ tok = self._advance()
1926
+ match tok.type:
1927
+ case "GOTO":
1928
+ name_tok = self._expect("ID")
1929
+ self._expect("SEMI")
1930
+ return c_ast.Goto(name_tok.value, self._tok_coord(tok))
1931
+ case "BREAK":
1932
+ self._expect("SEMI")
1933
+ return c_ast.Break(self._tok_coord(tok))
1934
+ case "CONTINUE":
1935
+ self._expect("SEMI")
1936
+ return c_ast.Continue(self._tok_coord(tok))
1937
+ case "RETURN":
1938
+ if self._accept("SEMI"):
1939
+ return c_ast.Return(None, self._tok_coord(tok))
1940
+ expr = self._parse_expression()
1941
+ self._expect("SEMI")
1942
+ return c_ast.Return(expr, self._tok_coord(tok))
1943
+ case _:
1944
+ self._parse_error("Invalid jump statement", self._tok_coord(tok))
1945
+
1946
+ # BNF: expression_statement : expression_opt ';'
1947
+ def _parse_expression_statement(self) -> c_ast.Node:
1948
+ expr = self._parse_expression_opt()
1949
+ semi_tok = self._expect("SEMI")
1950
+ if expr is None:
1951
+ return c_ast.EmptyStatement(self._tok_coord(semi_tok))
1952
+ return expr
1953
+
1954
+ # ------------------------------------------------------------------
1955
+ # Expressions
1956
+ # ------------------------------------------------------------------
1957
+ # BNF: expression_opt : expression | empty
1958
+ def _parse_expression_opt(self) -> c_ast.Node | None:
1959
+ if self._starts_expression():
1960
+ return self._parse_expression()
1961
+ return None
1962
+
1963
+ # BNF: expression : assignment_expression (',' assignment_expression)*
1964
+ def _parse_expression(self) -> c_ast.Node:
1965
+ expr = self._parse_assignment_expression()
1966
+ if not self._accept("COMMA"):
1967
+ return expr
1968
+ exprs = [expr, self._parse_assignment_expression()]
1969
+ while self._accept("COMMA"):
1970
+ exprs.append(self._parse_assignment_expression())
1971
+ return c_ast.ExprList(exprs, expr.coord)
1972
+
1973
+ # BNF: assignment_expression : conditional_expression
1974
+ # | unary_expression assignment_op assignment_expression
1975
+ def _parse_assignment_expression(self) -> c_ast.Node:
1976
+ expr = self._parse_conditional_expression()
1977
+ if self._is_assignment_op():
1978
+ op = self._advance().value
1979
+ rhs = self._parse_assignment_expression()
1980
+ return c_ast.Assignment(op, expr, rhs, expr.coord)
1981
+ return expr
1982
+
1983
+ # BNF: conditional_expression : binary_expression
1984
+ # | binary_expression '?' expression ':' conditional_expression
1985
+ def _parse_conditional_expression(self) -> c_ast.Node:
1986
+ expr = self._parse_binary_expression()
1987
+ if self._accept("CONDOP"):
1988
+ iftrue = self._parse_expression()
1989
+ self._expect("COLON")
1990
+ iffalse = self._parse_conditional_expression()
1991
+ return c_ast.TernaryOp(expr, iftrue, iffalse, expr.coord)
1992
+ return expr
1993
+
1994
+ # BNF: binary_expression : cast_expression (binary_op cast_expression)*
1995
+ def _parse_binary_expression(
1996
+ self, min_prec: int = 0, lhs: c_ast.Node | None = None
1997
+ ) -> c_ast.Node:
1998
+ if lhs is None:
1999
+ lhs = self._parse_cast_expression()
2000
+
2001
+ while True:
2002
+ tok = self._peek()
2003
+ if tok is None or tok.type not in _BINARY_PRECEDENCE:
2004
+ break
2005
+ prec = _BINARY_PRECEDENCE[tok.type]
2006
+ if prec < min_prec:
2007
+ break
2008
+
2009
+ op = tok.value
2010
+ self._advance()
2011
+ rhs = self._parse_cast_expression()
2012
+
2013
+ while True:
2014
+ next_tok = self._peek()
2015
+ if next_tok is None or next_tok.type not in _BINARY_PRECEDENCE:
2016
+ break
2017
+ next_prec = _BINARY_PRECEDENCE[next_tok.type]
2018
+ if next_prec > prec:
2019
+ rhs = self._parse_binary_expression(next_prec, rhs)
2020
+ else:
2021
+ break
2022
+
2023
+ lhs = c_ast.BinaryOp(op, lhs, rhs, lhs.coord)
2024
+
2025
+ return lhs
2026
+
2027
+ # BNF: cast_expression : '(' type_name ')' cast_expression
2028
+ # | unary_expression
2029
+ def _parse_cast_expression(self) -> c_ast.Node:
2030
+ result = self._try_parse_paren_type_name()
2031
+ if result is not None:
2032
+ typ, mark, lparen_tok, _ = result
2033
+ if self._peek_type() == "LBRACE":
2034
+ # (type){...} is a compound literal, not a cast. Examples:
2035
+ # (int){1} -> compound literal, handled in postfix
2036
+ # (int) x -> cast, handled below
2037
+ self._reset(mark)
2038
+ else:
2039
+ expr = self._parse_cast_expression()
2040
+ return c_ast.Cast(typ, expr, self._tok_coord(lparen_tok))
2041
+ return self._parse_unary_expression()
2042
+
2043
+ # BNF: unary_expression : postfix_expression
2044
+ # | '++' unary_expression
2045
+ # | '--' unary_expression
2046
+ # | unary_op cast_expression
2047
+ # | 'sizeof' unary_expression
2048
+ # | 'sizeof' '(' type_name ')'
2049
+ # | '_Alignof' '(' type_name ')'
2050
+ def _parse_unary_expression(self) -> c_ast.Node:
2051
+ tok_type = self._peek_type()
2052
+ if tok_type in {"PLUSPLUS", "MINUSMINUS"}:
2053
+ tok = self._advance()
2054
+ expr = self._parse_unary_expression()
2055
+ return c_ast.UnaryOp(tok.value, expr, expr.coord)
2056
+
2057
+ if tok_type in {"AND", "TIMES", "PLUS", "MINUS", "NOT", "LNOT"}:
2058
+ tok = self._advance()
2059
+ expr = self._parse_cast_expression()
2060
+ return c_ast.UnaryOp(tok.value, expr, expr.coord)
2061
+
2062
+ if tok_type == "SIZEOF":
2063
+ tok = self._advance()
2064
+ result = self._try_parse_paren_type_name()
2065
+ if result is not None:
2066
+ typ, mark, _, _ = result
2067
+ if self._peek_type() != "LBRACE":
2068
+ return c_ast.UnaryOp(tok.value, typ, self._tok_coord(tok))
2069
+ # sizeof (type){...} has an expression operand, including
2070
+ # any postfix operators following the compound literal.
2071
+ self._reset(mark)
2072
+ expr = self._parse_unary_expression()
2073
+ return c_ast.UnaryOp(tok.value, expr, self._tok_coord(tok))
2074
+
2075
+ if tok_type == "_ALIGNOF":
2076
+ tok = self._advance()
2077
+ self._expect("LPAREN")
2078
+ typ = self._parse_type_name()
2079
+ self._expect("RPAREN")
2080
+ return c_ast.UnaryOp(tok.value, typ, self._tok_coord(tok))
2081
+
2082
+ return self._parse_postfix_expression()
2083
+
2084
+ # BNF: postfix_expression : primary_expression postfix_suffix*
2085
+ # | compound_literal postfix_suffix*
2086
+ # compound_literal : '(' storage_class_specifiers? type_name ')'
2087
+ # braced_initializer
2088
+ def _parse_postfix_expression(self) -> c_ast.Node:
2089
+ expr = None
2090
+ result = self._try_parse_paren_type_name()
2091
+ if result is not None:
2092
+ typ, mark, lparen_tok, storage = result
2093
+ # Disambiguate between casts and compound literals:
2094
+ # (int) x -> cast
2095
+ # (int) {1} -> compound literal
2096
+ if self._peek_type() == "LBRACE":
2097
+ init = self._parse_initializer()
2098
+ expr = c_ast.CompoundLiteral(
2099
+ typ, init, storage, self._tok_coord(lparen_tok)
2100
+ )
2101
+ else:
2102
+ self._reset(mark)
2103
+
2104
+ if expr is None:
2105
+ expr = self._parse_primary_expression()
2106
+ while True:
2107
+ tok_type = self._peek_type()
2108
+ if tok_type == "LBRACKET":
2109
+ self._advance()
2110
+ sub = self._parse_expression()
2111
+ self._expect("RBRACKET")
2112
+ expr = c_ast.ArrayRef(expr, sub, expr.coord)
2113
+ continue
2114
+ if tok_type == "LPAREN":
2115
+ self._advance()
2116
+ if self._peek_type() == "RPAREN":
2117
+ self._advance()
2118
+ args = None
2119
+ else:
2120
+ args = self._parse_argument_expression_list()
2121
+ self._expect("RPAREN")
2122
+ expr = c_ast.FuncCall(expr, args, expr.coord)
2123
+ continue
2124
+ if tok_type in {"PERIOD", "ARROW"}:
2125
+ op_tok = self._advance()
2126
+ name_tok = self._advance()
2127
+ if name_tok.type not in {"ID", "TYPEID"}:
2128
+ self._parse_error(
2129
+ "Invalid struct reference", self._tok_coord(name_tok)
2130
+ )
2131
+ field = c_ast.ID(name_tok.value, self._tok_coord(name_tok))
2132
+ expr = c_ast.StructRef(expr, op_tok.value, field, expr.coord)
2133
+ continue
2134
+ if tok_type in {"PLUSPLUS", "MINUSMINUS"}:
2135
+ tok = self._advance()
2136
+ expr = c_ast.UnaryOp("p" + tok.value, expr, expr.coord)
2137
+ continue
2138
+ break
2139
+ return expr
2140
+
2141
+ # BNF: primary_expression : ID | constant | string_literal
2142
+ # | '(' expression ')' | generic_selection | offsetof
2143
+ # | '(' compound_statement ')'
2144
+ # | '__builtin_va_arg' '('
2145
+ # assignment_expression ',' type_name ')'
2146
+ def _parse_primary_expression(self) -> c_ast.Node:
2147
+ tok_type = self._peek_type()
2148
+ if tok_type == "ID":
2149
+ return self._parse_identifier()
2150
+ if (
2151
+ tok_type in _INT_CONST
2152
+ or tok_type in _FLOAT_CONST
2153
+ or tok_type in _CHAR_CONST
2154
+ or tok_type in _PREDEFINED_CONST
2155
+ ):
2156
+ return self._parse_constant()
2157
+ if tok_type in _STRING_LITERAL:
2158
+ return self._parse_unified_string_literal()
2159
+ if tok_type == "LPAREN":
2160
+ self._advance()
2161
+ if self._peek_type() == "LBRACE":
2162
+ # GNU statement expressions participate in all expression
2163
+ # operators, including postfix operators.
2164
+ expr = self._parse_compound_statement()
2165
+ else:
2166
+ expr = self._parse_expression()
2167
+ self._expect("RPAREN")
2168
+ return expr
2169
+ if tok_type == "_GENERIC":
2170
+ return self._parse_generic_selection()
2171
+ if tok_type == "__BUILTIN_VA_ARG":
2172
+ tok = self._advance()
2173
+ self._expect("LPAREN")
2174
+ expr = self._parse_assignment_expression()
2175
+ self._expect("COMMA")
2176
+ typ = self._parse_type_name()
2177
+ self._expect("RPAREN")
2178
+ coord = self._tok_coord(tok)
2179
+ return c_ast.FuncCall(
2180
+ c_ast.ID(tok.value, coord),
2181
+ c_ast.ExprList([expr, typ], coord),
2182
+ coord,
2183
+ )
2184
+ if tok_type == "OFFSETOF":
2185
+ off_tok = self._advance()
2186
+ self._expect("LPAREN")
2187
+ typ = self._parse_type_name()
2188
+ self._expect("COMMA")
2189
+ designator = self._parse_offsetof_member_designator()
2190
+ self._expect("RPAREN")
2191
+ coord = self._tok_coord(off_tok)
2192
+ return c_ast.FuncCall(
2193
+ c_ast.ID(off_tok.value, coord),
2194
+ c_ast.ExprList([typ, designator], coord),
2195
+ coord,
2196
+ )
2197
+
2198
+ self._parse_error("Invalid expression", self.clex.filename)
2199
+
2200
+ # BNF: generic_selection : _GENERIC '(' assignment_expression ','
2201
+ # generic_association (',' generic_association)* ')'
2202
+ def _parse_generic_selection(self) -> c_ast.GenericSelection:
2203
+ tok = self._expect("_GENERIC")
2204
+ self._expect("LPAREN")
2205
+ expr = self._parse_assignment_expression()
2206
+ self._expect("COMMA")
2207
+ associations = [self._parse_generic_association()]
2208
+ while self._accept("COMMA"):
2209
+ associations.append(self._parse_generic_association())
2210
+ self._expect("RPAREN")
2211
+ return c_ast.GenericSelection(expr, associations, self._tok_coord(tok))
2212
+
2213
+ # BNF: generic_association : type_name ':' assignment_expression
2214
+ # | DEFAULT ':' assignment_expression
2215
+ def _parse_generic_association(self) -> c_ast.GenericAssociation:
2216
+ tok = self._peek()
2217
+ if tok is None:
2218
+ self._parse_error("At end of input", self.clex.filename)
2219
+ typ = None if self._accept("DEFAULT") else self._parse_type_name()
2220
+ self._expect("COLON")
2221
+ expr = self._parse_assignment_expression()
2222
+ return c_ast.GenericAssociation(typ, expr, self._tok_coord(tok))
2223
+
2224
+ # BNF: offsetof_member_designator : identifier_or_typeid
2225
+ # ('.' identifier_or_typeid | '[' expression ']')*
2226
+ def _parse_offsetof_member_designator(self) -> c_ast.Node:
2227
+ node = self._parse_identifier_or_typeid()
2228
+ while True:
2229
+ if self._accept("PERIOD"):
2230
+ field = self._parse_identifier_or_typeid()
2231
+ node = c_ast.StructRef(node, ".", field, node.coord)
2232
+ continue
2233
+ if self._accept("LBRACKET"):
2234
+ expr = self._parse_expression()
2235
+ self._expect("RBRACKET")
2236
+ node = c_ast.ArrayRef(node, expr, node.coord)
2237
+ continue
2238
+ break
2239
+ return node
2240
+
2241
+ # BNF: argument_expression_list : assignment_expression (',' assignment_expression)*
2242
+ def _parse_argument_expression_list(self) -> c_ast.Node:
2243
+ expr = self._parse_assignment_expression()
2244
+ exprs = [expr]
2245
+ while self._accept("COMMA"):
2246
+ exprs.append(self._parse_assignment_expression())
2247
+ return c_ast.ExprList(exprs, expr.coord)
2248
+
2249
+ # BNF: constant_expression : conditional_expression
2250
+ def _parse_constant_expression(self) -> c_ast.Node:
2251
+ return self._parse_conditional_expression()
2252
+
2253
+ # ------------------------------------------------------------------
2254
+ # Terminals
2255
+ # ------------------------------------------------------------------
2256
+ # BNF: identifier : ID
2257
+ def _parse_identifier(self) -> c_ast.Node:
2258
+ tok = self._expect("ID")
2259
+ return c_ast.ID(tok.value, self._tok_coord(tok))
2260
+
2261
+ # BNF: identifier_or_typeid : ID | TYPEID
2262
+ def _parse_identifier_or_typeid(self) -> c_ast.ID:
2263
+ tok = self._advance()
2264
+ if tok.type not in {"ID", "TYPEID"}:
2265
+ self._parse_error("Expected identifier", self._tok_coord(tok))
2266
+ return c_ast.ID(tok.value, self._tok_coord(tok))
2267
+
2268
+ # BNF: constant : INT_CONST | FLOAT_CONST | CHAR_CONST | predefined_constant
2269
+ def _parse_constant(self) -> c_ast.Node:
2270
+ tok = self._advance()
2271
+ if tok.type in _PREDEFINED_CONST:
2272
+ return c_ast.Constant(
2273
+ _PREDEFINED_CONST[tok.type], tok.value, self._tok_coord(tok)
2274
+ )
2275
+
2276
+ if tok.type in _INT_CONST:
2277
+ # Integer suffixes are at most three characters (e.g. ull, wbu).
2278
+ suffix = tok.value[-3:].lower()
2279
+ if suffix.endswith(("wb", "wbu")):
2280
+ if self._dialect != "c23":
2281
+ self._parse_error(
2282
+ "Bit-precise integer constants require C23",
2283
+ self._tok_coord(tok),
2284
+ )
2285
+ # Classify by suffix, as with other integer constants; retain
2286
+ # the spelling without computing the value or its bit width.
2287
+ t = "unsigned _BitInt" if "u" in suffix else "_BitInt"
2288
+ return c_ast.Constant(t, tok.value, self._tok_coord(tok))
2289
+
2290
+ u_count = 0
2291
+ l_count = 0
2292
+ for ch in tok.value[-3:]:
2293
+ if ch in ("l", "L"):
2294
+ l_count += 1
2295
+ elif ch in ("u", "U"):
2296
+ u_count += 1
2297
+ if u_count > 1:
2298
+ raise ValueError("Constant cannot have more than one u/U suffix.")
2299
+ if l_count > 2:
2300
+ raise ValueError("Constant cannot have more than two l/L suffix.")
2301
+ prefix = "unsigned " * u_count + "long " * l_count
2302
+ return c_ast.Constant(prefix + "int", tok.value, self._tok_coord(tok))
2303
+
2304
+ if tok.type in _FLOAT_CONST:
2305
+ if tok.value[-2:] in {"df", "DF"}:
2306
+ t = "_Decimal32"
2307
+ elif tok.value[-2:] in {"dd", "DD"}:
2308
+ t = "_Decimal64"
2309
+ elif tok.value[-2:] in {"dl", "DL"}:
2310
+ t = "_Decimal128"
2311
+ elif tok.value[-1] in ("f", "F"):
2312
+ t = "float"
2313
+ elif tok.value[-1] in ("l", "L"):
2314
+ t = "long double"
2315
+ else:
2316
+ t = "double"
2317
+ if (
2318
+ t in {"_Decimal32", "_Decimal64", "_Decimal128"}
2319
+ and self._dialect != "c23"
2320
+ ):
2321
+ self._parse_error(
2322
+ "Decimal floating constants require C23", self._tok_coord(tok)
2323
+ )
2324
+ return c_ast.Constant(t, tok.value, self._tok_coord(tok))
2325
+
2326
+ if tok.type in _CHAR_CONST:
2327
+ return c_ast.Constant("char", tok.value, self._tok_coord(tok))
2328
+
2329
+ self._parse_error("Invalid constant", self._tok_coord(tok))
2330
+
2331
+ # BNF: unified_string_literal : (STRING_LITERAL | WSTRING_LITERAL
2332
+ # | U8STRING_LITERAL | U16STRING_LITERAL
2333
+ # | U32STRING_LITERAL)+
2334
+ def _parse_unified_string_literal(self) -> c_ast.Constant:
2335
+ # Represent the whole run of adjacent literals with one Constant.
2336
+ # C interprets escapes before concatenating the character sequences,
2337
+ # whereas Constant.value holds source spelling. Simply removing the
2338
+ # quotes between "\1" "23" would produce "\123", changing three
2339
+ # characters into one (issue #392).
2340
+ tok = self._advance()
2341
+ if tok.type not in _STRING_LITERAL:
2342
+ self._parse_error("Invalid string literal", self._tok_coord(tok))
2343
+ # Split off the optional encoding prefix and remove the closing quote.
2344
+ # Each part holds unquoted source text that can safely share one literal.
2345
+ prefix, contents = tok.value.split('"', 1)
2346
+ parts = [contents[:-1]]
2347
+ while self._peek_type() in _STRING_LITERAL:
2348
+ tok2 = self._advance()
2349
+ next_prefix, next_contents = tok2.value.split('"', 1)
2350
+ # The first nonempty prefix applies to the whole run, even if it
2351
+ # occurs after ordinary literals. Conflicting prefixes retain the
2352
+ # parser's existing permissive behavior: the first one wins.
2353
+ prefix = prefix or next_prefix
2354
+ next_contents = next_contents[:-1]
2355
+ # Extend the current part when safe; otherwise start a new one so
2356
+ # a quote boundary survives. Empty literals can merge, but do not
2357
+ # end a trailing escape: "\1" "" "23" still needs a boundary.
2358
+ if self._string_literal_needs_separator(parts[-1], next_contents):
2359
+ parts.append(next_contents)
2360
+ else:
2361
+ parts[-1] += next_contents
2362
+ # Re-quote each part, keeping only the necessary literal boundaries.
2363
+ # The prefix on the first literal applies to the adjacent sequence.
2364
+ # The generator can emit this value directly without decoding escapes.
2365
+ value = prefix + '"' + '" "'.join(parts) + '"'
2366
+ return c_ast.Constant("string", value, self._tok_coord(tok))
2367
+
2368
+ @staticmethod
2369
+ def _string_literal_needs_separator(left: str, right: str) -> bool:
2370
+ """Whether joining two literal bodies would change their C spelling."""
2371
+ if not left or not right:
2372
+ return False
2373
+
2374
+ # A generated trigraph would be replaced before C string processing;
2375
+ # for example, merging "?" "?=" would create the trigraph for '#'.
2376
+ boundary = left[-2:] + right[:2]
2377
+ if any("??" + ch in boundary for ch in "=/'()!<>-"):
2378
+ return True
2379
+
2380
+ # Only an escape reaching the end of left can absorb characters from
2381
+ # right. The last backslash is the only possible start of that escape.
2382
+ escape_start = left.rfind("\\")
2383
+ if escape_start == -1:
2384
+ return False
2385
+ # An even run of backslashes represents escaped backslashes, not the
2386
+ # start of the numeric escape that the following digits might suggest.
2387
+ run_start = escape_start
2388
+ while run_start > 0 and left[run_start - 1] == "\\":
2389
+ run_start -= 1
2390
+ if (escape_start - run_start + 1) % 2 == 0:
2391
+ return False
2392
+
2393
+ escape = left[escape_start + 1 :]
2394
+ if escape.startswith("x"):
2395
+ # Hex escapes have no digit limit: "\x1" "a" must stay separated.
2396
+ hex_digits = "0123456789abcdefABCDEF"
2397
+ return right[0] in hex_digits and all(ch in hex_digits for ch in escape[1:])
2398
+ # Octal escapes consume at most three digits: "\12" "3" needs a
2399
+ # boundary, but "\123" "4" can become "\1234". Universal character names
2400
+ # have fixed widths and cannot absorb characters from the next literal.
2401
+ return (
2402
+ 1 <= len(escape) < 3
2403
+ and all(ch in "01234567" for ch in escape)
2404
+ and right[0] in "01234567"
2405
+ )
2406
+
2407
+ # ------------------------------------------------------------------
2408
+ # Initializers
2409
+ # ------------------------------------------------------------------
2410
+ # BNF: initializer : assignment_expression
2411
+ # | '{' initializer_list ','? '}'
2412
+ # | '{' '}'
2413
+ def _parse_initializer(self) -> c_ast.Node:
2414
+ lbrace_tok = self._accept("LBRACE")
2415
+ if lbrace_tok:
2416
+ if self._accept("RBRACE"):
2417
+ return c_ast.InitList([], self._tok_coord(lbrace_tok))
2418
+ init_list = self._parse_initializer_list()
2419
+ self._accept("COMMA")
2420
+ self._expect("RBRACE")
2421
+ return init_list
2422
+
2423
+ return self._parse_assignment_expression()
2424
+
2425
+ # BNF: initializer_list : initializer_item (',' initializer_item)* ','?
2426
+ def _parse_initializer_list(self) -> c_ast.Node:
2427
+ items = [self._parse_initializer_item()]
2428
+ while self._accept("COMMA"):
2429
+ if self._peek_type() == "RBRACE":
2430
+ break
2431
+ items.append(self._parse_initializer_item())
2432
+ return c_ast.InitList(items, items[0].coord)
2433
+
2434
+ # BNF: initializer_item : designation? initializer
2435
+ def _parse_initializer_item(self) -> c_ast.Node:
2436
+ designation = None
2437
+ if self._peek_type() in {"LBRACKET", "PERIOD"}:
2438
+ designation = self._parse_designation()
2439
+ init = self._parse_initializer()
2440
+ if designation is not None:
2441
+ return c_ast.NamedInitializer(designation, init)
2442
+ return init
2443
+
2444
+ # BNF: designation : designator_list '='
2445
+ def _parse_designation(self) -> list[c_ast.Node]:
2446
+ designators = self._parse_designator_list()
2447
+ self._expect("EQUALS")
2448
+ return designators
2449
+
2450
+ # BNF: designator_list : designator+
2451
+ def _parse_designator_list(self) -> list[c_ast.Node]:
2452
+ designators = []
2453
+ while self._peek_type() in {"LBRACKET", "PERIOD"}:
2454
+ designators.append(self._parse_designator())
2455
+ return designators
2456
+
2457
+ # BNF: designator : '[' constant_expression ']'
2458
+ # | '.' identifier_or_typeid
2459
+ def _parse_designator(self) -> c_ast.Node:
2460
+ if tok := self._accept("LBRACKET"):
2461
+ expr = self._parse_constant_expression()
2462
+ self._expect("RBRACKET")
2463
+ return c_ast.ArrayDesignator(expr, self._tok_coord(tok))
2464
+ if self._accept("PERIOD"):
2465
+ return self._parse_identifier_or_typeid()
2466
+ self._parse_error("Invalid designator", self.clex.filename)
2467
+
2468
+ # ------------------------------------------------------------------
2469
+ # Preprocessor-like directives
2470
+ # ------------------------------------------------------------------
2471
+ # BNF: pp_directive : '#' ... (unsupported)
2472
+ def _parse_pp_directive(self) -> NoReturn:
2473
+ tok = self._expect("PPHASH")
2474
+ self._parse_error("Directives not supported yet", self._tok_coord(tok))
2475
+
2476
+ # BNF: pppragma_directive : PPPRAGMA PPPRAGMASTR?
2477
+ # | _PRAGMA '(' string_literal ')'
2478
+ def _parse_pppragma_directive(self) -> c_ast.Node:
2479
+ if self._peek_type() == "PPPRAGMA":
2480
+ tok = self._advance()
2481
+ if self._peek_type() == "PPPRAGMASTR":
2482
+ str_tok = self._advance()
2483
+ return c_ast.Pragma(str_tok.value, self._tok_coord(str_tok))
2484
+ return c_ast.Pragma("", self._tok_coord(tok))
2485
+
2486
+ if self._peek_type() == "_PRAGMA":
2487
+ tok = self._advance()
2488
+ lparen = self._expect("LPAREN")
2489
+ literal = self._parse_unified_string_literal()
2490
+ self._expect("RPAREN")
2491
+ return c_ast.Pragma(literal, self._tok_coord(lparen))
2492
+
2493
+ self._parse_error("Invalid pragma", self.clex.filename)
2494
+
2495
+ # BNF: pppragma_directive_list : pppragma_directive+
2496
+ def _parse_pppragma_directive_list(self) -> list[c_ast.Node]:
2497
+ pragmas = []
2498
+ while self._peek_type() in {"PPPRAGMA", "_PRAGMA"}:
2499
+ pragmas.append(self._parse_pppragma_directive())
2500
+ return pragmas
2501
+
2502
+ # BNF: static_assert : _STATIC_ASSERT '(' constant_expression
2503
+ # (',' unified_string_literal)? ')' ';'
2504
+ # C11 requires a message; omission is supported as an extension.
2505
+ def _parse_static_assert(self) -> c_ast.StaticAssert:
2506
+ tok = self._expect("_STATIC_ASSERT")
2507
+ self._expect("LPAREN")
2508
+ cond = self._parse_constant_expression()
2509
+ msg = None
2510
+ if self._accept("COMMA"):
2511
+ msg = self._parse_unified_string_literal()
2512
+ self._expect("RPAREN")
2513
+ self._expect("SEMI")
2514
+ return c_ast.StaticAssert(cond, msg, self._tok_coord(tok))
2515
+
2516
+
2517
+ _ASSIGNMENT_OPS = {
2518
+ "EQUALS",
2519
+ "XOREQUAL",
2520
+ "TIMESEQUAL",
2521
+ "DIVEQUAL",
2522
+ "MODEQUAL",
2523
+ "PLUSEQUAL",
2524
+ "MINUSEQUAL",
2525
+ "LSHIFTEQUAL",
2526
+ "RSHIFTEQUAL",
2527
+ "ANDEQUAL",
2528
+ "OREQUAL",
2529
+ }
2530
+
2531
+ # Precedence of operators (lower number = weather binding)
2532
+ # If this changes, c_generator.CGenerator.precedence_map needs to change as
2533
+ # well
2534
+ _BINARY_PRECEDENCE = {
2535
+ "LOR": 0,
2536
+ "LAND": 1,
2537
+ "OR": 2,
2538
+ "XOR": 3,
2539
+ "AND": 4,
2540
+ "EQ": 5,
2541
+ "NE": 5,
2542
+ "GT": 6,
2543
+ "GE": 6,
2544
+ "LT": 6,
2545
+ "LE": 6,
2546
+ "RSHIFT": 7,
2547
+ "LSHIFT": 7,
2548
+ "PLUS": 8,
2549
+ "MINUS": 8,
2550
+ "TIMES": 9,
2551
+ "DIVIDE": 9,
2552
+ "MOD": 9,
2553
+ }
2554
+
2555
+ _STORAGE_CLASS = {
2556
+ "AUTO",
2557
+ "CONSTEXPR",
2558
+ "REGISTER",
2559
+ "STATIC",
2560
+ "EXTERN",
2561
+ "TYPEDEF",
2562
+ "_THREAD_LOCAL",
2563
+ }
2564
+
2565
+ _FUNCTION_SPEC = {"INLINE", "_NORETURN"}
2566
+
2567
+ _TYPE_QUALIFIER = {"CONST", "RESTRICT", "VOLATILE", "_ATOMIC"}
2568
+
2569
+ _TYPEOF_SPEC = {"TYPEOF", "TYPEOF_UNQUAL"}
2570
+
2571
+ _TYPE_SPEC_SIMPLE = {
2572
+ "VOID",
2573
+ "_BOOL",
2574
+ "CHAR",
2575
+ "SHORT",
2576
+ "INT",
2577
+ "LONG",
2578
+ "FLOAT",
2579
+ "DOUBLE",
2580
+ "_DECIMAL32",
2581
+ "_DECIMAL64",
2582
+ "_DECIMAL128",
2583
+ "_COMPLEX",
2584
+ "SIGNED",
2585
+ "UNSIGNED",
2586
+ "__INT128",
2587
+ }
2588
+
2589
+ # Struct members without declarators carry a type specifier directly instead.
2590
+ _DECLARATOR_NODES = (c_ast.TypeDecl, c_ast.PtrDecl, c_ast.ArrayDecl, c_ast.FuncDecl)
2591
+
2592
+ _DECL_START = (
2593
+ _STORAGE_CLASS
2594
+ | _FUNCTION_SPEC
2595
+ | _TYPE_QUALIFIER
2596
+ | _TYPE_SPEC_SIMPLE
2597
+ | _TYPEOF_SPEC
2598
+ | {
2599
+ "TYPEID",
2600
+ "STRUCT",
2601
+ "UNION",
2602
+ "ENUM",
2603
+ "_ALIGNAS",
2604
+ "_ATOMIC",
2605
+ "_BITINT",
2606
+ "ATTRIBUTE_BEGIN",
2607
+ }
2608
+ )
2609
+
2610
+ _EXPR_START = {
2611
+ "ID",
2612
+ "LPAREN",
2613
+ "PLUSPLUS",
2614
+ "MINUSMINUS",
2615
+ "PLUS",
2616
+ "MINUS",
2617
+ "TIMES",
2618
+ "AND",
2619
+ "NOT",
2620
+ "LNOT",
2621
+ "SIZEOF",
2622
+ "_ALIGNOF",
2623
+ "_GENERIC",
2624
+ "OFFSETOF",
2625
+ "__BUILTIN_VA_ARG",
2626
+ }
2627
+
2628
+ _INT_CONST = {
2629
+ "INT_CONST_DEC",
2630
+ "INT_CONST_OCT",
2631
+ "INT_CONST_HEX",
2632
+ "INT_CONST_BIN",
2633
+ "INT_CONST_CHAR",
2634
+ }
2635
+
2636
+ _FLOAT_CONST = {"FLOAT_CONST", "HEX_FLOAT_CONST"}
2637
+
2638
+ _PREDEFINED_CONST = {"BOOL_CONST": "bool", "NULLPTR": "nullptr_t"}
2639
+
2640
+ _CHAR_CONST = {
2641
+ "CHAR_CONST",
2642
+ "WCHAR_CONST",
2643
+ "U8CHAR_CONST",
2644
+ "U16CHAR_CONST",
2645
+ "U32CHAR_CONST",
2646
+ }
2647
+
2648
+ _STRING_LITERAL = {
2649
+ "STRING_LITERAL",
2650
+ "WSTRING_LITERAL",
2651
+ "U8STRING_LITERAL",
2652
+ "U16STRING_LITERAL",
2653
+ "U32STRING_LITERAL",
2654
+ }
2655
+
2656
+ _STARTS_EXPRESSION = (
2657
+ _EXPR_START
2658
+ | _INT_CONST
2659
+ | _FLOAT_CONST
2660
+ | _CHAR_CONST
2661
+ | _STRING_LITERAL
2662
+ | _PREDEFINED_CONST.keys()
2663
+ )
2664
+
2665
+ _STARTS_STATEMENT = {
2666
+ "LBRACE",
2667
+ "IF",
2668
+ "SWITCH",
2669
+ "WHILE",
2670
+ "DO",
2671
+ "FOR",
2672
+ "GOTO",
2673
+ "BREAK",
2674
+ "CONTINUE",
2675
+ "RETURN",
2676
+ "CASE",
2677
+ "DEFAULT",
2678
+ "PPPRAGMA",
2679
+ "_PRAGMA",
2680
+ "SEMI",
2681
+ }
2682
+
2683
+
2684
+ class _TokenStream:
2685
+ """Provides buffered access to tokens supplied by a reader."""
2686
+
2687
+ def __init__(self, read_token: Callable[[], Token | None]) -> None:
2688
+ self._read_token = read_token
2689
+ self._buffer: list[Token | None] = []
2690
+ self._index = 0
2691
+
2692
+ def peek(self, k: int = 1) -> Token | None:
2693
+ """Peek at the k-th next token in the stream, without consuming it.
2694
+
2695
+ Examples:
2696
+ k=1 returns the immediate next token.
2697
+ k=2 returns the token after that.
2698
+ """
2699
+ if k <= 0:
2700
+ return None
2701
+ pos = self._index + k - 1
2702
+ if pos >= len(self._buffer):
2703
+ self._fill(k)
2704
+ return self._buffer[pos]
2705
+
2706
+ def next(self) -> Token | None:
2707
+ """Consume a single token and return it."""
2708
+ if self._index >= len(self._buffer):
2709
+ self._fill(1)
2710
+ tok = self._buffer[self._index]
2711
+ self._index += 1
2712
+ return tok
2713
+
2714
+ # The 'mark' and 'reset' methods are useful for speculative parsing with
2715
+ # backtracking; when the parser needs to examine a sequence of tokens
2716
+ # and potentially decide to try a different path on the same sequence, it
2717
+ # can call 'mark' to obtain the current token position, and if the first
2718
+ # path fails restore the position with `reset(pos)`.
2719
+ def mark(self) -> int:
2720
+ return self._index
2721
+
2722
+ def reset(self, mark: int) -> None:
2723
+ self._index = mark
2724
+
2725
+ def _fill(self, n: int) -> None:
2726
+ while len(self._buffer) < self._index + n:
2727
+ tok = self._read_token()
2728
+ self._buffer.append(tok)
2729
+ if tok is None:
2730
+ break
2731
+
2732
+
2733
+ # Declaration specifiers are represented by a dictionary with entries:
2734
+ # - qual: a list of type qualifiers
2735
+ # - storage: a list of storage class specifiers
2736
+ # - type: a list of type specifiers
2737
+ # - function: a list of function specifiers
2738
+ # - alignment: a list of alignment specifiers
2739
+ # - type_attributes: attribute groups following the specifier sequence
2740
+ class _DeclSpec(TypedDict):
2741
+ qual: list[str]
2742
+ storage: list[str]
2743
+ type: list[c_ast.Node]
2744
+ function: list[str]
2745
+ alignment: list[c_ast.Alignas]
2746
+ type_attributes: list[c_ast.AttributeSpecifier]
2747
+
2748
+
2749
+ _DeclSpecKind = Literal["qual", "storage", "type", "function", "alignment"]
2750
+
2751
+
2752
+ class _DeclInfo(TypedDict):
2753
+ # Declarator payloads used by declaration/initializer parsing:
2754
+ # - decl: the declarator node (may be None for abstract/implicit cases)
2755
+ # - init: initializer expression; the key may be omitted when absent
2756
+ # - bitsize: bit-field width expression; the key may be omitted when absent
2757
+ decl: c_ast.Node | None
2758
+ init: NotRequired[c_ast.Node | None]
2759
+ bitsize: NotRequired[c_ast.Node | None]