tpy-lang 0.3.0.dev0__py3-none-any.whl

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 (333) hide show
  1. tpy_lang-0.3.0.dev0.dist-info/METADATA +151 -0
  2. tpy_lang-0.3.0.dev0.dist-info/RECORD +333 -0
  3. tpy_lang-0.3.0.dev0.dist-info/WHEEL +4 -0
  4. tpy_lang-0.3.0.dev0.dist-info/entry_points.txt +3 -0
  5. tpyc/__init__.py +104 -0
  6. tpyc/__main__.py +6 -0
  7. tpyc/_buildinfo.py +1 -0
  8. tpyc/_data/docs/LANGUAGE_FEATURES.md +6278 -0
  9. tpyc/_data/docs/STDLIB_ROADMAP.md +1258 -0
  10. tpyc/_data/docs/TPY_FOR_AGENTS.md +556 -0
  11. tpyc/_data/lib/tpy/_bindings/__init__.py +6 -0
  12. tpyc/_data/lib/tpy/_bindings/pcre2.py +173 -0
  13. tpyc/_data/lib/tpy/_bindings/posix_socket.py +161 -0
  14. tpyc/_data/lib/tpy/_functools_macros.py +80 -0
  15. tpyc/_data/lib/tpy/_macro_helpers.py +161 -0
  16. tpyc/_data/lib/tpy/argparse.py +2062 -0
  17. tpyc/_data/lib/tpy/asyncio/__init__.py +744 -0
  18. tpyc/_data/lib/tpy/asyncio/_executor.py +515 -0
  19. tpyc/_data/lib/tpy/base64.py +410 -0
  20. tpyc/_data/lib/tpy/bisect.py +39 -0
  21. tpyc/_data/lib/tpy/builtins.py +38 -0
  22. tpyc/_data/lib/tpy/dataclasses.py +354 -0
  23. tpyc/_data/lib/tpy/enum.py +23 -0
  24. tpyc/_data/lib/tpy/functools.py +33 -0
  25. tpyc/_data/lib/tpy/hashlib.py +206 -0
  26. tpyc/_data/lib/tpy/heapq.py +118 -0
  27. tpyc/_data/lib/tpy/io.py +395 -0
  28. tpyc/_data/lib/tpy/json.py +221 -0
  29. tpyc/_data/lib/tpy/math.py +406 -0
  30. tpyc/_data/lib/tpy/random.py +597 -0
  31. tpyc/_data/lib/tpy/re.py +467 -0
  32. tpyc/_data/lib/tpy/socket.py +379 -0
  33. tpyc/_data/lib/tpy/struct.py +178 -0
  34. tpyc/_data/lib/tpy/sys.py +40 -0
  35. tpyc/_data/lib/tpy/time.py +39 -0
  36. tpyc/_data/lib/tpy/tpy/__init__.py +78 -0
  37. tpyc/_data/lib/tpy/tpy/_bootstrap/__init__.py +10 -0
  38. tpyc/_data/lib/tpy/tpy/_bootstrap/_decorators.py +37 -0
  39. tpyc/_data/lib/tpy/tpy/_bootstrap/_extern.py +64 -0
  40. tpyc/_data/lib/tpy/tpy/_builtins/__init__.py +11 -0
  41. tpyc/_data/lib/tpy/tpy/_builtins/_bytes.py +378 -0
  42. tpyc/_data/lib/tpy/tpy/_builtins/_dict.py +151 -0
  43. tpyc/_data/lib/tpy/tpy/_builtins/_exceptions.py +125 -0
  44. tpyc/_data/lib/tpy/tpy/_builtins/_funcs.py +681 -0
  45. tpyc/_data/lib/tpy/tpy/_builtins/_io.py +97 -0
  46. tpyc/_data/lib/tpy/tpy/_builtins/_list.py +127 -0
  47. tpyc/_data/lib/tpy/tpy/_builtins/_range.py +52 -0
  48. tpyc/_data/lib/tpy/tpy/_builtins/_set.py +139 -0
  49. tpyc/_data/lib/tpy/tpy/_builtins/_super.py +11 -0
  50. tpyc/_data/lib/tpy/tpy/_builtins/_types.py +661 -0
  51. tpyc/_data/lib/tpy/tpy/_core/__init__.py +23 -0
  52. tpyc/_data/lib/tpy/tpy/_core/_bytes_view.py +129 -0
  53. tpyc/_data/lib/tpy/tpy/_core/_containers.py +137 -0
  54. tpyc/_data/lib/tpy/tpy/_core/_functions.py +40 -0
  55. tpyc/_data/lib/tpy/tpy/_core/_types.py +2061 -0
  56. tpyc/_data/lib/tpy/tpy/_typing/__init__.py +77 -0
  57. tpyc/_data/lib/tpy/tpy/_version.py +29 -0
  58. tpyc/_data/lib/tpy/tpy/bits.py +28 -0
  59. tpyc/_data/lib/tpy/tpy/coro/__init__.py +127 -0
  60. tpyc/_data/lib/tpy/tpy/extern.py +8 -0
  61. tpyc/_data/lib/tpy/tpy/mem.py +49 -0
  62. tpyc/_data/lib/tpy/tpy/unsafe.py +195 -0
  63. tpyc/_data/lib/tpy/tpy/version.py +21 -0
  64. tpyc/_data/lib/tpy/typing.py +13 -0
  65. tpyc/_data/runtime/cpp/include/tpy/any.hpp +461 -0
  66. tpyc/_data/runtime/cpp/include/tpy/as_ostream.hpp +117 -0
  67. tpyc/_data/runtime/cpp/include/tpy/async.hpp +76 -0
  68. tpyc/_data/runtime/cpp/include/tpy/bigint.hpp +1343 -0
  69. tpyc/_data/runtime/cpp/include/tpy/builtins.hpp +400 -0
  70. tpyc/_data/runtime/cpp/include/tpy/bytes_ops.hpp +469 -0
  71. tpyc/_data/runtime/cpp/include/tpy/container_ops.hpp +487 -0
  72. tpyc/_data/runtime/cpp/include/tpy/copy_iter.hpp +82 -0
  73. tpyc/_data/runtime/cpp/include/tpy/core.hpp +558 -0
  74. tpyc/_data/runtime/cpp/include/tpy/dict_ops.hpp +289 -0
  75. tpyc/_data/runtime/cpp/include/tpy/dunder.hpp +750 -0
  76. tpyc/_data/runtime/cpp/include/tpy/dynamic.hpp +44 -0
  77. tpyc/_data/runtime/cpp/include/tpy/enum.hpp +40 -0
  78. tpyc/_data/runtime/cpp/include/tpy/file.hpp +245 -0
  79. tpyc/_data/runtime/cpp/include/tpy/fixed_int.hpp +317 -0
  80. tpyc/_data/runtime/cpp/include/tpy/format.hpp +954 -0
  81. tpyc/_data/runtime/cpp/include/tpy/frame_slot.hpp +120 -0
  82. tpyc/_data/runtime/cpp/include/tpy/generator.hpp +47 -0
  83. tpyc/_data/runtime/cpp/include/tpy/iterable_ops.hpp +122 -0
  84. tpyc/_data/runtime/cpp/include/tpy/itertools.hpp +749 -0
  85. tpyc/_data/runtime/cpp/include/tpy/next_iter.hpp +82 -0
  86. tpyc/_data/runtime/cpp/include/tpy/ordered_map.hpp +518 -0
  87. tpyc/_data/runtime/cpp/include/tpy/ordered_set.hpp +337 -0
  88. tpyc/_data/runtime/cpp/include/tpy/own_iter.hpp +54 -0
  89. tpyc/_data/runtime/cpp/include/tpy/pascal_graph_sdl.hpp +192 -0
  90. tpyc/_data/runtime/cpp/include/tpy/printing.hpp +302 -0
  91. tpyc/_data/runtime/cpp/include/tpy/protocols.hpp +61 -0
  92. tpyc/_data/runtime/cpp/include/tpy/range.hpp +115 -0
  93. tpyc/_data/runtime/cpp/include/tpy/ranges.hpp +212 -0
  94. tpyc/_data/runtime/cpp/include/tpy/set_ops.hpp +265 -0
  95. tpyc/_data/runtime/cpp/include/tpy/slice.hpp +47 -0
  96. tpyc/_data/runtime/cpp/include/tpy/span_iter.hpp +42 -0
  97. tpyc/_data/runtime/cpp/include/tpy/stdlib/math.hpp +41 -0
  98. tpyc/_data/runtime/cpp/include/tpy/stdlib/pcre2_h.hpp +96 -0
  99. tpyc/_data/runtime/cpp/include/tpy/stdlib/random.hpp +25 -0
  100. tpyc/_data/runtime/cpp/include/tpy/stdlib/socket_h.hpp +145 -0
  101. tpyc/_data/runtime/cpp/include/tpy/stdlib/time.hpp +62 -0
  102. tpyc/_data/runtime/cpp/include/tpy/system.hpp +121 -0
  103. tpyc/_data/runtime/cpp/include/tpy/throwable.hpp +55 -0
  104. tpyc/_data/runtime/cpp/include/tpy/tpy.hpp +156 -0
  105. tpyc/_data/runtime/cpp/include/tpy/type_name.hpp +77 -0
  106. tpyc/_data/runtime/cpp/include/tpy/type_traits.hpp +240 -0
  107. tpyc/_data/runtime/cpp/include/tpy/uninit_array_storage.hpp +250 -0
  108. tpyc/_data/runtime/cpp/include/tpy/uninit_heap_storage.hpp +277 -0
  109. tpyc/_data/runtime/cpp/include/tpy/varargs.hpp +174 -0
  110. tpyc/_data/runtime/cpp/include/tpy/variant_ref.hpp +118 -0
  111. tpyc/_data/runtime/cpp/src/stdlib/socket_impl.cpp +104 -0
  112. tpyc/_data/runtime/cpp/third_party/README.md +58 -0
  113. tpyc/_data/runtime/cpp/third_party/pcre2/AUTHORS +36 -0
  114. tpyc/_data/runtime/cpp/third_party/pcre2/CMakeLists.txt +1233 -0
  115. tpyc/_data/runtime/cpp/third_party/pcre2/COPYING +5 -0
  116. tpyc/_data/runtime/cpp/third_party/pcre2/ChangeLog +3097 -0
  117. tpyc/_data/runtime/cpp/third_party/pcre2/HACKING +853 -0
  118. tpyc/_data/runtime/cpp/third_party/pcre2/INSTALL +368 -0
  119. tpyc/_data/runtime/cpp/third_party/pcre2/LICENCE +94 -0
  120. tpyc/_data/runtime/cpp/third_party/pcre2/NEWS +492 -0
  121. tpyc/_data/runtime/cpp/third_party/pcre2/NON-AUTOTOOLS-BUILD +430 -0
  122. tpyc/_data/runtime/cpp/third_party/pcre2/README +956 -0
  123. tpyc/_data/runtime/cpp/third_party/pcre2/cmake/COPYING-CMAKE-SCRIPTS +22 -0
  124. tpyc/_data/runtime/cpp/third_party/pcre2/cmake/FindEditline.cmake +16 -0
  125. tpyc/_data/runtime/cpp/third_party/pcre2/cmake/FindPackageHandleStandardArgs.cmake +58 -0
  126. tpyc/_data/runtime/cpp/third_party/pcre2/cmake/FindReadline.cmake +29 -0
  127. tpyc/_data/runtime/cpp/third_party/pcre2/cmake/pcre2-config-version.cmake.in +15 -0
  128. tpyc/_data/runtime/cpp/third_party/pcre2/cmake/pcre2-config.cmake.in +148 -0
  129. tpyc/_data/runtime/cpp/third_party/pcre2/config-cmake.h.in +56 -0
  130. tpyc/_data/runtime/cpp/third_party/pcre2/libpcre2-16.pc.in +13 -0
  131. tpyc/_data/runtime/cpp/third_party/pcre2/libpcre2-32.pc.in +13 -0
  132. tpyc/_data/runtime/cpp/third_party/pcre2/libpcre2-8.pc.in +13 -0
  133. tpyc/_data/runtime/cpp/third_party/pcre2/libpcre2-posix.pc.in +13 -0
  134. tpyc/_data/runtime/cpp/third_party/pcre2/pcre2-config.in +121 -0
  135. tpyc/_data/runtime/cpp/third_party/pcre2/src/config.h +483 -0
  136. tpyc/_data/runtime/cpp/third_party/pcre2/src/config.h.generic +483 -0
  137. tpyc/_data/runtime/cpp/third_party/pcre2/src/config.h.in +460 -0
  138. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2.h +1010 -0
  139. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2.h.generic +1010 -0
  140. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2.h.in +1010 -0
  141. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_auto_possess.c +1371 -0
  142. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_chartables.c +196 -0
  143. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_chartables.c.dist +196 -0
  144. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_chkdint.c +96 -0
  145. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_compile.c +11001 -0
  146. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_config.c +252 -0
  147. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_context.c +510 -0
  148. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_convert.c +1189 -0
  149. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_dfa_match.c +4119 -0
  150. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_dftables.c +297 -0
  151. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_error.c +345 -0
  152. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_extuni.c +162 -0
  153. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_find_bracket.c +219 -0
  154. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_fuzzsupport.c +792 -0
  155. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_internal.h +2084 -0
  156. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_intmodedep.h +940 -0
  157. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_jit_compile.c +14972 -0
  158. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_jit_match.c +200 -0
  159. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_jit_misc.c +234 -0
  160. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_jit_neon_inc.h +354 -0
  161. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_jit_simd_inc.h +2355 -0
  162. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_jit_test.c +2528 -0
  163. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_maketables.c +165 -0
  164. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_match.c +7777 -0
  165. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_match_data.c +185 -0
  166. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_newline.c +243 -0
  167. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_ord2utf.c +120 -0
  168. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_pattern_info.c +432 -0
  169. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_printint.c +886 -0
  170. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_script_run.c +344 -0
  171. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_serialize.c +286 -0
  172. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_string_utils.c +237 -0
  173. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_study.c +1915 -0
  174. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_substitute.c +1009 -0
  175. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_substring.c +550 -0
  176. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_tables.c +234 -0
  177. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_ucd.c +5460 -0
  178. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_ucp.h +396 -0
  179. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_ucptables.c +1533 -0
  180. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_valid_utf.c +398 -0
  181. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_xclass.c +308 -0
  182. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2demo.c +497 -0
  183. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2grep.c +4606 -0
  184. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2posix.c +425 -0
  185. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2posix.h +187 -0
  186. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2posix_test.c +209 -0
  187. tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2test.c +9708 -0
  188. tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/allocator_src/sljitExecAllocatorApple.c +137 -0
  189. tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/allocator_src/sljitExecAllocatorCore.c +327 -0
  190. tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/allocator_src/sljitExecAllocatorFreeBSD.c +89 -0
  191. tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/allocator_src/sljitExecAllocatorPosix.c +62 -0
  192. tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/allocator_src/sljitExecAllocatorWindows.c +40 -0
  193. tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/allocator_src/sljitProtExecAllocatorNetBSD.c +72 -0
  194. tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/allocator_src/sljitProtExecAllocatorPosix.c +172 -0
  195. tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/allocator_src/sljitWXExecAllocatorPosix.c +141 -0
  196. tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/allocator_src/sljitWXExecAllocatorWindows.c +102 -0
  197. tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/sljitConfig.h +142 -0
  198. tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/sljitConfigCPU.h +188 -0
  199. tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/sljitConfigInternal.h +907 -0
  200. tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/sljitLir.c +3561 -0
  201. tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/sljitLir.h +2466 -0
  202. tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/sljitNativeARM_32.c +4636 -0
  203. tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/sljitNativeARM_64.c +3491 -0
  204. tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/sljitNativeARM_T2_32.c +4302 -0
  205. tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/sljitNativeLOONGARCH_64.c +3765 -0
  206. tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/sljitNativeMIPS_32.c +472 -0
  207. tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/sljitNativeMIPS_64.c +387 -0
  208. tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/sljitNativeMIPS_common.c +4259 -0
  209. tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/sljitNativePPC_32.c +485 -0
  210. tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/sljitNativePPC_64.c +719 -0
  211. tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/sljitNativePPC_common.c +3161 -0
  212. tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/sljitNativeRISCV_32.c +142 -0
  213. tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/sljitNativeRISCV_64.c +222 -0
  214. tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/sljitNativeRISCV_common.c +3121 -0
  215. tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/sljitNativeS390X.c +4526 -0
  216. tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/sljitNativeX86_32.c +1685 -0
  217. tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/sljitNativeX86_64.c +1398 -0
  218. tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/sljitNativeX86_common.c +5001 -0
  219. tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/sljitSerialize.c +516 -0
  220. tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/sljitUtils.c +344 -0
  221. tpyc/_data/runtime/cpp/third_party/pcre2.sources.txt +54 -0
  222. tpyc/_data/runtime/cpp/third_party/pcre2.vendor.json +7 -0
  223. tpyc/build/__init__.py +7 -0
  224. tpyc/build/pcre2.py +122 -0
  225. tpyc/build/third_party.py +413 -0
  226. tpyc/cli.py +822 -0
  227. tpyc/codegen_cpp/__init__.py +18 -0
  228. tpyc/codegen_cpp/builtins.py +484 -0
  229. tpyc/codegen_cpp/context.py +2064 -0
  230. tpyc/codegen_cpp/expressions.py +5940 -0
  231. tpyc/codegen_cpp/functions.py +1913 -0
  232. tpyc/codegen_cpp/gen_async.py +3258 -0
  233. tpyc/codegen_cpp/gen_generators.py +657 -0
  234. tpyc/codegen_cpp/generator.py +2258 -0
  235. tpyc/codegen_cpp/match.py +1997 -0
  236. tpyc/codegen_cpp/param_const.py +172 -0
  237. tpyc/codegen_cpp/protocols.py +907 -0
  238. tpyc/codegen_cpp/records.py +1654 -0
  239. tpyc/codegen_cpp/resumable_cfg.py +1651 -0
  240. tpyc/codegen_cpp/statements.py +4963 -0
  241. tpyc/codegen_cpp/string_dispatch.py +76 -0
  242. tpyc/codegen_cpp/test_context.py +46 -0
  243. tpyc/codegen_cpp/test_param_const.py +113 -0
  244. tpyc/codegen_cpp/test_resumable_cfg.py +182 -0
  245. tpyc/codegen_cpp/type_resolution.py +53 -0
  246. tpyc/codegen_cpp/types.py +436 -0
  247. tpyc/codegen_cpp/variant_access.py +135 -0
  248. tpyc/coercions.py +749 -0
  249. tpyc/compilation_context.py +57 -0
  250. tpyc/compiler.py +3945 -0
  251. tpyc/cycle_detection.py +358 -0
  252. tpyc/diagnostics.py +135 -0
  253. tpyc/dump_types.py +353 -0
  254. tpyc/frontend_diagnostics.py +47 -0
  255. tpyc/frontend_ir/__init__.py +140 -0
  256. tpyc/frontend_ir/lower.py +1098 -0
  257. tpyc/frontend_ir/nodes.py +718 -0
  258. tpyc/frontend_ir/resolver_adapter.py +151 -0
  259. tpyc/frontend_plugin.py +209 -0
  260. tpyc/install_docs.py +81 -0
  261. tpyc/liveness.py +756 -0
  262. tpyc/macro_api.py +1724 -0
  263. tpyc/macro_loader.py +497 -0
  264. tpyc/module_names.py +64 -0
  265. tpyc/modules/__init__.py +31 -0
  266. tpyc/modules/defs.py +89 -0
  267. tpyc/modules/registry.py +36 -0
  268. tpyc/modules/resolver.py +192 -0
  269. tpyc/modules/type_resolution.py +629 -0
  270. tpyc/namespace.py +172 -0
  271. tpyc/parse/__init__.py +84 -0
  272. tpyc/parse/imports.py +490 -0
  273. tpyc/parse/nodes.py +1732 -0
  274. tpyc/parse/parser.py +4043 -0
  275. tpyc/parse/resolve_refs.py +466 -0
  276. tpyc/parse/type_resolver.py +1060 -0
  277. tpyc/prescan.py +254 -0
  278. tpyc/qnames.py +149 -0
  279. tpyc/repl.py +529 -0
  280. tpyc/repl_backends.py +848 -0
  281. tpyc/sema/__init__.py +21 -0
  282. tpyc/sema/analyzer.py +3625 -0
  283. tpyc/sema/bound_check.py +72 -0
  284. tpyc/sema/builder_trace.py +684 -0
  285. tpyc/sema/calls.py +5406 -0
  286. tpyc/sema/compatibility.py +2107 -0
  287. tpyc/sema/context.py +1243 -0
  288. tpyc/sema/expressions.py +3737 -0
  289. tpyc/sema/flow_facts.py +199 -0
  290. tpyc/sema/init_tracker.py +150 -0
  291. tpyc/sema/list_literals.py +69 -0
  292. tpyc/sema/literal_utils.py +27 -0
  293. tpyc/sema/local_deduction.py +1088 -0
  294. tpyc/sema/macros.py +179 -0
  295. tpyc/sema/match.py +1177 -0
  296. tpyc/sema/method_expansion.py +347 -0
  297. tpyc/sema/methods.py +2197 -0
  298. tpyc/sema/mutation_propagation.py +268 -0
  299. tpyc/sema/narrowing.py +857 -0
  300. tpyc/sema/numeric_lattice.py +160 -0
  301. tpyc/sema/operators.py +402 -0
  302. tpyc/sema/overloads.py +841 -0
  303. tpyc/sema/protocols.py +1209 -0
  304. tpyc/sema/reach_analysis.py +202 -0
  305. tpyc/sema/registration.py +3156 -0
  306. tpyc/sema/scope_tracker.py +193 -0
  307. tpyc/sema/statements.py +4426 -0
  308. tpyc/sema/type_ops.py +1879 -0
  309. tpyc/sema/value_range.py +181 -0
  310. tpyc/symbol_binding.py +259 -0
  311. tpyc/test_c3_mro.py +208 -0
  312. tpyc/test_cli_argv.py +52 -0
  313. tpyc/test_compiler.py +559 -0
  314. tpyc/test_contains_type_param.py +101 -0
  315. tpyc/test_cycle_detection.py +221 -0
  316. tpyc/test_dump_types.py +225 -0
  317. tpyc/test_install_docs.py +65 -0
  318. tpyc/test_local_cpp_form.py +135 -0
  319. tpyc/test_macro_loader.py +76 -0
  320. tpyc/test_method_expansion.py +254 -0
  321. tpyc/test_nominal_identity.py +182 -0
  322. tpyc/test_overloads.py +410 -0
  323. tpyc/test_parse.py +303 -0
  324. tpyc/test_parse_type_ref.py +506 -0
  325. tpyc/test_parse_version_info.py +58 -0
  326. tpyc/test_reach_analysis.py +72 -0
  327. tpyc/test_ref_type.py +216 -0
  328. tpyc/test_send_sync_substitution.py +276 -0
  329. tpyc/test_tuple_mutation_propagation.py +206 -0
  330. tpyc/test_type_def_registry.py +1729 -0
  331. tpyc/test_union_types.py +195 -0
  332. tpyc/type_def_registry.py +975 -0
  333. tpyc/typesys.py +5104 -0
@@ -0,0 +1,681 @@
1
+ # tpy: native_module
2
+ # tpy: cpp_namespace("tpystd::builtins")
3
+ from .._typing import overload, Sized, Sequence, Iterator, Iterable
4
+ from .._bootstrap._decorators import readonly, pure, error_return, Own, Fn
5
+ from .._core._types import (
6
+ Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64,
7
+ Char, String, StrView, Float32, AnyFixedInt,
8
+ Hashable, Representable, Stringable, NativeIterable, Truthy, Comparable, Equatable,
9
+ )
10
+ from .._bootstrap._extern import native, cpp_template, builtin_type, builtin_function, type_param_default, DefaultInt
11
+
12
+
13
+ @pure
14
+ @readonly
15
+ @native("tpy::__len__")
16
+ def len(x: Sized) -> Int32: ...
17
+
18
+
19
+ @pure
20
+ @readonly
21
+ @cpp_template("::tpy::repr_of({0})")
22
+ def repr(x: Representable) -> str: ...
23
+
24
+
25
+ @pure
26
+ @readonly
27
+ @native("tpy::__hash__")
28
+ def hash(x: Hashable) -> UInt64: ...
29
+
30
+
31
+ @overload
32
+ @pure
33
+ @readonly
34
+ @cpp_template("static_cast<char>({0})")
35
+ def chr(i: Int32) -> Char: ...
36
+
37
+ @overload
38
+ @pure
39
+ @readonly
40
+ @cpp_template("static_cast<char>(({0}).to_fixed_check<int32_t>())")
41
+ def chr(i: int) -> Char: ...
42
+
43
+
44
+ @overload
45
+ @pure
46
+ @readonly
47
+ @cpp_template("static_cast<int32_t>(static_cast<unsigned char>({0}))")
48
+ def ord(c: Char) -> Int32: ...
49
+
50
+ @overload
51
+ @readonly
52
+ @native("tpy::ord_str")
53
+ def ord(s: str) -> Int32: ...
54
+
55
+ @overload
56
+ @readonly
57
+ @native("tpy::ord_str")
58
+ def ord(s: String) -> Int32: ...
59
+
60
+ @overload
61
+ @readonly
62
+ @native("tpy::ord_str")
63
+ def ord(s: StrView) -> Int32: ...
64
+
65
+
66
+ @overload
67
+ @pure
68
+ @readonly
69
+ @native("std::abs")
70
+ def abs(x: Int32) -> Int32: ...
71
+
72
+ @overload
73
+ @pure
74
+ @readonly
75
+ @native("tpy::BigInt::abs")
76
+ def abs(x: int) -> int: ...
77
+
78
+ @overload
79
+ @pure
80
+ @readonly
81
+ @native("std::fabs")
82
+ def abs(x: float) -> float: ...
83
+
84
+
85
+ @overload
86
+ @pure
87
+ @readonly
88
+ @native("std::min")
89
+ def min(a: Int32, b: Int32) -> Int32: ...
90
+
91
+ @overload
92
+ @pure
93
+ @readonly
94
+ @native("tpy::min3")
95
+ def min(a: Int32, b: Int32, c: Int32) -> Int32: ...
96
+
97
+ @overload
98
+ @pure
99
+ @readonly
100
+ @native("std::min")
101
+ def min(a: int, b: int) -> int: ...
102
+
103
+ @overload
104
+ @pure
105
+ @readonly
106
+ @native("tpy::min3")
107
+ def min(a: int, b: int, c: int) -> int: ...
108
+
109
+ @overload
110
+ @pure
111
+ @readonly
112
+ @native("std::fmin")
113
+ def min(a: float, b: float) -> float: ...
114
+
115
+ @overload
116
+ @pure
117
+ @readonly
118
+ @cpp_template("std::fmin(std::fmin({0}, {1}), {2})")
119
+ def min(a: float, b: float, c: float) -> float: ...
120
+
121
+ @overload
122
+ @pure
123
+ @readonly
124
+ @cpp_template("::tpy::min_key({0}, {1}, {2})")
125
+ def min[T, K: Comparable](a: T, b: T, key: Fn[[T], K]) -> T: ...
126
+
127
+ @overload
128
+ @pure
129
+ @readonly
130
+ @cpp_template("::tpy::min3_key({0}, {1}, {2}, {3})")
131
+ def min[T, K: Comparable](a: T, b: T, c: T, key: Fn[[T], K]) -> T: ...
132
+
133
+
134
+ @overload
135
+ @pure
136
+ @readonly
137
+ @native("std::max")
138
+ def max(a: Int32, b: Int32) -> Int32: ...
139
+
140
+ @overload
141
+ @pure
142
+ @readonly
143
+ @native("tpy::max3")
144
+ def max(a: Int32, b: Int32, c: Int32) -> Int32: ...
145
+
146
+ @overload
147
+ @pure
148
+ @readonly
149
+ @native("std::max")
150
+ def max(a: int, b: int) -> int: ...
151
+
152
+ @overload
153
+ @pure
154
+ @readonly
155
+ @native("tpy::max3")
156
+ def max(a: int, b: int, c: int) -> int: ...
157
+
158
+ @overload
159
+ @pure
160
+ @readonly
161
+ @native("std::fmax")
162
+ def max(a: float, b: float) -> float: ...
163
+
164
+ @overload
165
+ @pure
166
+ @readonly
167
+ @cpp_template("std::fmax(std::fmax({0}, {1}), {2})")
168
+ def max(a: float, b: float, c: float) -> float: ...
169
+
170
+ @overload
171
+ @pure
172
+ @readonly
173
+ @cpp_template("::tpy::max_key({0}, {1}, {2})")
174
+ def max[T, K: Comparable](a: T, b: T, key: Fn[[T], K]) -> T: ...
175
+
176
+ @overload
177
+ @pure
178
+ @readonly
179
+ @cpp_template("::tpy::max3_key({0}, {1}, {2}, {3})")
180
+ def max[T, K: Comparable](a: T, b: T, c: T, key: Fn[[T], K]) -> T: ...
181
+
182
+
183
+ # pow(x, y) -- checked exponentiation
184
+ @overload
185
+ @pure
186
+ @readonly
187
+ @cpp_template("({0}).pow({1})")
188
+ def pow(x: int, y: int) -> int: ...
189
+
190
+ @overload
191
+ @pure
192
+ @readonly
193
+ @native("std::pow")
194
+ def pow(x: float, y: float) -> float: ...
195
+
196
+ @overload
197
+ @pure
198
+ @readonly
199
+ @native("tpy::pow_check<int8_t>")
200
+ def pow(x: Int8, y: Int8) -> Int8: ...
201
+
202
+ @overload
203
+ @pure
204
+ @readonly
205
+ @native("tpy::pow_check<int16_t>")
206
+ def pow(x: Int16, y: Int16) -> Int16: ...
207
+
208
+ @overload
209
+ @pure
210
+ @readonly
211
+ @native("tpy::pow_check<int32_t>")
212
+ def pow(x: Int32, y: Int32) -> Int32: ...
213
+
214
+ @overload
215
+ @pure
216
+ @readonly
217
+ @native("tpy::pow_check<int64_t>")
218
+ def pow(x: Int64, y: Int64) -> Int64: ...
219
+
220
+ @overload
221
+ @pure
222
+ @readonly
223
+ @native("tpy::pow_check<uint8_t>")
224
+ def pow(x: UInt8, y: UInt8) -> UInt8: ...
225
+
226
+ @overload
227
+ @pure
228
+ @readonly
229
+ @native("tpy::pow_check<uint16_t>")
230
+ def pow(x: UInt16, y: UInt16) -> UInt16: ...
231
+
232
+ @overload
233
+ @pure
234
+ @readonly
235
+ @native("tpy::pow_check<uint32_t>")
236
+ def pow(x: UInt32, y: UInt32) -> UInt32: ...
237
+
238
+ @overload
239
+ @pure
240
+ @readonly
241
+ @native("tpy::pow_check<uint64_t>")
242
+ def pow(x: UInt64, y: UInt64) -> UInt64: ...
243
+
244
+
245
+ # divmod(a, b) -> tuple[T, T]
246
+ @overload
247
+ @pure
248
+ @readonly
249
+ @native("tpy::divmod_bigint")
250
+ def divmod(a: int, b: int) -> tuple[int, int]: ...
251
+
252
+ @overload
253
+ @pure
254
+ @readonly
255
+ @native("tpy::divmod_float")
256
+ def divmod(a: float, b: float) -> tuple[float, float]: ...
257
+
258
+ @overload
259
+ @pure
260
+ @readonly
261
+ @native("tpy::divmod_fixed<int8_t>")
262
+ def divmod(a: Int8, b: Int8) -> tuple[Int8, Int8]: ...
263
+
264
+ @overload
265
+ @pure
266
+ @readonly
267
+ @native("tpy::divmod_fixed<int16_t>")
268
+ def divmod(a: Int16, b: Int16) -> tuple[Int16, Int16]: ...
269
+
270
+ @overload
271
+ @pure
272
+ @readonly
273
+ @native("tpy::divmod_fixed<int32_t>")
274
+ def divmod(a: Int32, b: Int32) -> tuple[Int32, Int32]: ...
275
+
276
+ @overload
277
+ @pure
278
+ @readonly
279
+ @native("tpy::divmod_fixed<int64_t>")
280
+ def divmod(a: Int64, b: Int64) -> tuple[Int64, Int64]: ...
281
+
282
+ @overload
283
+ @pure
284
+ @readonly
285
+ @native("tpy::divmod_fixed<uint8_t>")
286
+ def divmod(a: UInt8, b: UInt8) -> tuple[UInt8, UInt8]: ...
287
+
288
+ @overload
289
+ @pure
290
+ @readonly
291
+ @native("tpy::divmod_fixed<uint16_t>")
292
+ def divmod(a: UInt16, b: UInt16) -> tuple[UInt16, UInt16]: ...
293
+
294
+ @overload
295
+ @pure
296
+ @readonly
297
+ @native("tpy::divmod_fixed<uint32_t>")
298
+ def divmod(a: UInt32, b: UInt32) -> tuple[UInt32, UInt32]: ...
299
+
300
+ @overload
301
+ @pure
302
+ @readonly
303
+ @native("tpy::divmod_fixed<uint64_t>")
304
+ def divmod(a: UInt64, b: UInt64) -> tuple[UInt64, UInt64]: ...
305
+
306
+
307
+ @error_return(StopIteration)
308
+ @native("tpy::next")
309
+ def next[T](it: Iterator[T]) -> T: ...
310
+
311
+
312
+ # TODO: make non-native once regular functions can return protocol types
313
+ @readonly
314
+ @type_param_default(T=DefaultInt)
315
+ @native("tpy::__iter__")
316
+ def iter[T](x: Iterable[T]) -> Iterator[T]: ...
317
+
318
+
319
+ # round(): generic float->T with default T=DefaultInt (resolved via --default-int),
320
+ # identity for integer types, and ndigits variants.
321
+ @overload
322
+ @type_param_default(T=DefaultInt)
323
+ @pure
324
+ @readonly
325
+ @cpp_template("::tpy::round_to<{T}>({0})")
326
+ def round[T](x: float) -> T: ...
327
+
328
+ @overload
329
+ @pure
330
+ @readonly
331
+ @native("tpy::round_float")
332
+ def round(x: float, ndigits: Int32) -> float: ...
333
+
334
+ @overload
335
+ @pure
336
+ @readonly
337
+ @cpp_template("({0})")
338
+ def round(x: Int8) -> Int8: ...
339
+ @overload
340
+ @pure
341
+ @readonly
342
+ @native("tpy::round_fixed<int8_t>")
343
+ def round(x: Int8, ndigits: Int32) -> Int8: ...
344
+
345
+ @overload
346
+ @pure
347
+ @readonly
348
+ @cpp_template("({0})")
349
+ def round(x: Int16) -> Int16: ...
350
+ @overload
351
+ @pure
352
+ @readonly
353
+ @native("tpy::round_fixed<int16_t>")
354
+ def round(x: Int16, ndigits: Int32) -> Int16: ...
355
+
356
+ @overload
357
+ @pure
358
+ @readonly
359
+ @cpp_template("({0})")
360
+ def round(x: Int32) -> Int32: ...
361
+ @overload
362
+ @pure
363
+ @readonly
364
+ @native("tpy::round_fixed<int32_t>")
365
+ def round(x: Int32, ndigits: Int32) -> Int32: ...
366
+
367
+ @overload
368
+ @pure
369
+ @readonly
370
+ @cpp_template("({0})")
371
+ def round(x: Int64) -> Int64: ...
372
+ @overload
373
+ @pure
374
+ @readonly
375
+ @native("tpy::round_fixed<int64_t>")
376
+ def round(x: Int64, ndigits: Int32) -> Int64: ...
377
+
378
+ @overload
379
+ @pure
380
+ @readonly
381
+ @cpp_template("({0})")
382
+ def round(x: UInt8) -> UInt8: ...
383
+ @overload
384
+ @pure
385
+ @readonly
386
+ @native("tpy::round_fixed<uint8_t>")
387
+ def round(x: UInt8, ndigits: Int32) -> UInt8: ...
388
+
389
+ @overload
390
+ @pure
391
+ @readonly
392
+ @cpp_template("({0})")
393
+ def round(x: UInt16) -> UInt16: ...
394
+ @overload
395
+ @pure
396
+ @readonly
397
+ @native("tpy::round_fixed<uint16_t>")
398
+ def round(x: UInt16, ndigits: Int32) -> UInt16: ...
399
+
400
+ @overload
401
+ @pure
402
+ @readonly
403
+ @cpp_template("({0})")
404
+ def round(x: UInt32) -> UInt32: ...
405
+ @overload
406
+ @pure
407
+ @readonly
408
+ @native("tpy::round_fixed<uint32_t>")
409
+ def round(x: UInt32, ndigits: Int32) -> UInt32: ...
410
+
411
+ @overload
412
+ @pure
413
+ @readonly
414
+ @cpp_template("({0})")
415
+ def round(x: UInt64) -> UInt64: ...
416
+ @overload
417
+ @pure
418
+ @readonly
419
+ @native("tpy::round_fixed<uint64_t>")
420
+ def round(x: UInt64, ndigits: Int32) -> UInt64: ...
421
+
422
+ @overload
423
+ @pure
424
+ @readonly
425
+ @cpp_template("({0})")
426
+ def round(x: int) -> int: ...
427
+ @overload
428
+ @pure
429
+ @readonly
430
+ @native("tpy::round_bigint")
431
+ def round(x: int, ndigits: Int32) -> int: ...
432
+
433
+
434
+ # -- all / any --
435
+
436
+ @pure
437
+ @readonly
438
+ @type_param_default(T=DefaultInt)
439
+ @native("tpy::builtin_all")
440
+ def all[T: Truthy](iterable: Iterable[T]) -> bool: ...
441
+
442
+ @pure
443
+ @readonly
444
+ @type_param_default(T=DefaultInt)
445
+ @native("tpy::builtin_any")
446
+ def any[T: Truthy](iterable: Iterable[T]) -> bool: ...
447
+
448
+
449
+ # -- sum --
450
+
451
+ @overload
452
+ @pure
453
+ @readonly
454
+ @native("tpy::builtin_sum<int32_t>")
455
+ def sum(iterable: Iterable[Int32]) -> Int32: ...
456
+
457
+ @overload
458
+ @pure
459
+ @readonly
460
+ @native("tpy::builtin_sum_start<int32_t>")
461
+ def sum(iterable: Iterable[Int32], start: Int32) -> Int32: ...
462
+
463
+ @overload
464
+ @pure
465
+ @readonly
466
+ @native("tpy::builtin_sum<int64_t>")
467
+ def sum(iterable: Iterable[Int64]) -> Int64: ...
468
+
469
+ @overload
470
+ @pure
471
+ @readonly
472
+ @native("tpy::builtin_sum_start<int64_t>")
473
+ def sum(iterable: Iterable[Int64], start: Int64) -> Int64: ...
474
+
475
+ @overload
476
+ @pure
477
+ @readonly
478
+ @cpp_template("::tpy::builtin_sum<{T}>({0})")
479
+ def sum[T: AnyFixedInt](iterable: Iterable[T]) -> T: ...
480
+
481
+ @overload
482
+ @pure
483
+ @readonly
484
+ @cpp_template("::tpy::builtin_sum_start<{T}>({0}, {1})")
485
+ def sum[T: AnyFixedInt](iterable: Iterable[T], start: T) -> T: ...
486
+
487
+ @overload
488
+ @pure
489
+ @readonly
490
+ @native("tpy::builtin_sum_bigint")
491
+ def sum(iterable: Iterable[int]) -> int: ...
492
+
493
+ @overload
494
+ @pure
495
+ @readonly
496
+ @native("tpy::builtin_sum_start_bigint")
497
+ def sum(iterable: Iterable[int], start: int) -> int: ...
498
+
499
+ @overload
500
+ @pure
501
+ @readonly
502
+ @native("tpy::builtin_sum_float")
503
+ def sum(iterable: Iterable[float]) -> float: ...
504
+
505
+ @overload
506
+ @pure
507
+ @readonly
508
+ @native("tpy::builtin_sum_start_float")
509
+ def sum(iterable: Iterable[float], start: float) -> float: ...
510
+
511
+
512
+ # -- sorted --
513
+
514
+ @overload
515
+ @pure
516
+ @readonly
517
+ @type_param_default(T=DefaultInt)
518
+ @cpp_template("::tpy::builtin_sorted<{T}>({0})")
519
+ def sorted[T: Comparable](iterable: Iterable[T]) -> Own[list[T]]: ...
520
+
521
+ @overload
522
+ @pure
523
+ @readonly
524
+ @cpp_template("::tpy::builtin_sorted_key<{T}>({0}, {1})")
525
+ def sorted[T, K: Comparable](iterable: Iterable[T], key: Fn[[T], K]) -> Own[list[T]]: ...
526
+
527
+
528
+ # -- bin / hex / oct --
529
+
530
+ @overload
531
+ @pure
532
+ @readonly
533
+ @native("tpy::builtin_bin")
534
+ def bin[T: AnyFixedInt](x: T) -> str: ...
535
+
536
+ @overload
537
+ @pure
538
+ @readonly
539
+ @native("tpy::builtin_bin_bigint")
540
+ def bin(x: int) -> str: ...
541
+
542
+
543
+ @overload
544
+ @pure
545
+ @readonly
546
+ @native("tpy::builtin_hex")
547
+ def hex[T: AnyFixedInt](x: T) -> str: ...
548
+
549
+ @overload
550
+ @pure
551
+ @readonly
552
+ @native("tpy::builtin_hex_bigint")
553
+ def hex(x: int) -> str: ...
554
+
555
+
556
+ @overload
557
+ @pure
558
+ @readonly
559
+ @native("tpy::builtin_oct")
560
+ def oct[T: AnyFixedInt](x: T) -> str: ...
561
+
562
+ @overload
563
+ @pure
564
+ @readonly
565
+ @native("tpy::builtin_oct_bigint")
566
+ def oct(x: int) -> str: ...
567
+
568
+
569
+ # -- enumerate --
570
+
571
+ @overload
572
+ @readonly
573
+ @type_param_default(T=DefaultInt)
574
+ @cpp_template("::tpy::builtin_enumerate<{T}>({0})")
575
+ def enumerate[T](iterable: Iterable[T]) -> Iterator[tuple[Int32, T]]: ...
576
+
577
+ @overload
578
+ @readonly
579
+ @type_param_default(T=DefaultInt)
580
+ @cpp_template("::tpy::builtin_enumerate_start<{T}>({0}, {1})")
581
+ def enumerate[T](iterable: Iterable[T], start: Int32) -> Iterator[tuple[Int32, T]]: ...
582
+
583
+
584
+ # -- reversed --
585
+
586
+ @readonly
587
+ @type_param_default(T=DefaultInt)
588
+ @cpp_template("::tpy::builtin_reversed<{T}>({0})")
589
+ def reversed[T](seq: Sequence[T]) -> Iterator[T]: ...
590
+
591
+
592
+ # -- zip --
593
+
594
+ @overload
595
+ @readonly
596
+ @cpp_template("::tpy::builtin_zip<{T1}, {T2}>({0}, {1})")
597
+ def zip[T1, T2](iter1: Iterable[T1], iter2: Iterable[T2]) -> Iterator[tuple[T1, T2]]: ...
598
+
599
+ @overload
600
+ @readonly
601
+ @cpp_template("::tpy::builtin_zip<{T1}, {T2}, {T3}>({0}, {1}, {2})")
602
+ def zip[T1, T2, T3](iter1: Iterable[T1], iter2: Iterable[T2], iter3: Iterable[T3]) -> Iterator[tuple[T1, T2, T3]]: ...
603
+
604
+ @overload
605
+ @readonly
606
+ @cpp_template("::tpy::builtin_zip<{T1}, {T2}, {T3}, {T4}>({0}, {1}, {2}, {3})")
607
+ def zip[T1, T2, T3, T4](iter1: Iterable[T1], iter2: Iterable[T2], iter3: Iterable[T3], iter4: Iterable[T4]) -> Iterator[tuple[T1, T2, T3, T4]]: ...
608
+
609
+ @overload
610
+ @readonly
611
+ @cpp_template("::tpy::builtin_zip<{T1}, {T2}, {T3}, {T4}, {T5}>({0}, {1}, {2}, {3}, {4})")
612
+ def zip[T1, T2, T3, T4, T5](iter1: Iterable[T1], iter2: Iterable[T2], iter3: Iterable[T3], iter4: Iterable[T4], iter5: Iterable[T5]) -> Iterator[tuple[T1, T2, T3, T4, T5]]: ...
613
+
614
+
615
+ # -- map --
616
+
617
+ @overload
618
+ @readonly
619
+ @cpp_template("::tpy::builtin_map<{T}, {U}>({0}, {1})")
620
+ def map[T, U](fn: Fn[[T], U], iterable: Iterable[T]) -> Iterator[U]: ...
621
+
622
+ @overload
623
+ @readonly
624
+ @cpp_template("::tpy::builtin_map_n<{U}>({0}, {1}, {2})")
625
+ def map[T1, T2, U](fn: Fn[[T1, T2], U], iter1: Iterable[T1], iter2: Iterable[T2]) -> Iterator[U]: ...
626
+
627
+ @overload
628
+ @readonly
629
+ @cpp_template("::tpy::builtin_map_n<{U}>({0}, {1}, {2}, {3})")
630
+ def map[T1, T2, T3, U](fn: Fn[[T1, T2, T3], U], iter1: Iterable[T1], iter2: Iterable[T2], iter3: Iterable[T3]) -> Iterator[U]: ...
631
+
632
+ @overload
633
+ @readonly
634
+ @cpp_template("::tpy::builtin_map_n<{U}>({0}, {1}, {2}, {3}, {4})")
635
+ def map[T1, T2, T3, T4, U](fn: Fn[[T1, T2, T3, T4], U], iter1: Iterable[T1], iter2: Iterable[T2], iter3: Iterable[T3], iter4: Iterable[T4]) -> Iterator[U]: ...
636
+
637
+ @overload
638
+ @readonly
639
+ @cpp_template("::tpy::builtin_map_n<{U}>({0}, {1}, {2}, {3}, {4}, {5})")
640
+ def map[T1, T2, T3, T4, T5, U](fn: Fn[[T1, T2, T3, T4, T5], U], iter1: Iterable[T1], iter2: Iterable[T2], iter3: Iterable[T3], iter4: Iterable[T4], iter5: Iterable[T5]) -> Iterator[U]: ...
641
+
642
+
643
+ # -- filter --
644
+
645
+ @overload
646
+ @readonly
647
+ @cpp_template("::tpy::builtin_filter<{T}>({0}, {1})")
648
+ def filter[T](fn: Fn[[T], bool], iterable: Iterable[T]) -> Iterator[T]: ...
649
+
650
+ @overload
651
+ @readonly
652
+ @cpp_template("::tpy::builtin_filter_truthy<{T}>({1})")
653
+ def filter[T](fn: None, iterable: Iterable[T]) -> Iterator[T]: ...
654
+
655
+
656
+ # Read one line from stdin (the trailing newline is stripped). Returns
657
+ # the line as a heap-allocated `String`. Mirrors CPython's `input()`
658
+ # minus the optional prompt arg, which is future work.
659
+ @native("tpy::input_line")
660
+ def input() -> String: ...
661
+
662
+
663
+ # -- Special-handling builtins (custom sema/codegen, signatures are illustrative) --
664
+
665
+ @builtin_function("builtins.print")
666
+ def print(*args, sep: str = " ", end: str = "\n"): ...
667
+
668
+ @builtin_function("builtins.isinstance")
669
+ def isinstance(x, type_or_tuple) -> bool: ...
670
+
671
+ @builtin_function("builtins.getattr")
672
+ def getattr(obj, name, default=None): ...
673
+
674
+ @builtin_function("builtins.setattr")
675
+ def setattr(obj, name, value): ...
676
+
677
+ @builtin_function("builtins.delattr")
678
+ def delattr(obj, name): ...
679
+
680
+ @builtin_function("builtins.hasattr")
681
+ def hasattr(obj, name) -> bool: ...