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,97 @@
1
+ # tpy: native_module
2
+ # tpy: cpp_namespace("tpystd::builtins")
3
+ from .._typing import overload, Literal
4
+ from .._bootstrap._extern import native, builtin_type
5
+ from .._core._types import Int32
6
+
7
+
8
+ @builtin_type("builtins.TextIO")
9
+ @native("tpy::TextFile")
10
+ class TextIO:
11
+ @native("read")
12
+ def read(self) -> str: ...
13
+
14
+ @native("write")
15
+ def write(self, text: str) -> Int32: ...
16
+
17
+ @native("readline")
18
+ def readline(self) -> str: ...
19
+
20
+ @native("readlines")
21
+ def readlines(self) -> list[str]: ...
22
+
23
+ @native("flush")
24
+ def flush(self) -> None: ...
25
+
26
+ @native("close")
27
+ def close(self) -> None: ...
28
+
29
+ @native("__enter__")
30
+ def __enter__(self) -> TextIO: ...
31
+
32
+ @native("__exit__")
33
+ def __exit__(self, exc_type, exc_val, exc_tb) -> None: ...
34
+
35
+
36
+ @builtin_type("builtins.BinaryIO")
37
+ @native("tpy::BinaryFile")
38
+ class BinaryIO:
39
+ @native("read")
40
+ def read(self) -> bytes: ...
41
+
42
+ @native("readline")
43
+ def readline(self) -> bytes: ...
44
+
45
+ @native("readlines")
46
+ def readlines(self) -> list[bytes]: ...
47
+
48
+ @native("write")
49
+ def write(self, data: bytes) -> Int32: ...
50
+
51
+ @native("close")
52
+ def close(self) -> None: ...
53
+
54
+ @native("__enter__")
55
+ def __enter__(self) -> BinaryIO: ...
56
+
57
+ @native("__exit__")
58
+ def __exit__(self, exc_type, exc_val, exc_tb) -> None: ...
59
+
60
+
61
+ @overload
62
+ @native("tpy::builtin_open")
63
+ def open(path: str) -> TextIO: ...
64
+
65
+ @overload
66
+ @native("tpy::builtin_open_mode")
67
+ def open(path: str, mode: Literal[
68
+ "r", "w", "a", "x", "rt", "wt", "at", "xt",
69
+ "r+", "w+", "a+", "x+", "r+t", "w+t", "a+t", "x+t", "rt+", "wt+", "at+", "xt+",
70
+ ]) -> TextIO: ...
71
+
72
+ @overload
73
+ @native("tpy::builtin_open_binary")
74
+ def open(path: str, mode: Literal[
75
+ "rb", "wb", "ab", "xb",
76
+ "r+b", "w+b", "a+b", "x+b", "rb+", "wb+", "ab+", "xb+",
77
+ ]) -> BinaryIO: ...
78
+
79
+ @overload
80
+ @native("tpy::builtin_open_mode")
81
+ def open(path: str, mode: str) -> TextIO: ...
82
+
83
+ @overload
84
+ @native("tpy::builtin_open")
85
+ def open_text(path: str) -> TextIO: ...
86
+
87
+ @overload
88
+ @native("tpy::builtin_open_mode")
89
+ def open_text(path: str, mode: str) -> TextIO: ...
90
+
91
+ @overload
92
+ @native("tpy::builtin_open_binary")
93
+ def open_binary(path: str) -> BinaryIO: ...
94
+
95
+ @overload
96
+ @native("tpy::builtin_open_binary")
97
+ def open_binary(path: str, mode: str) -> BinaryIO: ...
@@ -0,0 +1,127 @@
1
+ # tpy: native_module
2
+ # tpy: cpp_namespace("tpystd::builtins")
3
+ from .._typing import overload, Self, Iterator, Iterable
4
+ from .._bootstrap._decorators import readonly, pure, Own
5
+ from .._core._types import Int32, Equatable, Comparable, NativeIterable, NativeRangeConstructible, Spannable
6
+ from .._core._containers import Span
7
+ from .._bootstrap._extern import native, cpp_template, native_preserves_refs, builtin_type
8
+
9
+
10
+ @builtin_type("builtins.list")
11
+ @native("std::vector", indirecting=True)
12
+ class list[T](Iterable[T], NativeIterable[T], NativeRangeConstructible[T], Spannable[T]):
13
+ @pure
14
+ @readonly
15
+ @cpp_template("::tpy::construct<std::vector<{T}>>({0})")
16
+ def __init__(self, x: Iterable[Own[T]]) -> None: ...
17
+
18
+ @overload
19
+ @native("tpy::__iter__", function=True)
20
+ @pure
21
+ @readonly
22
+ def __iter__(self) -> Iterator[T]: ...
23
+
24
+ @overload
25
+ @native("tpy::own_iter", function=True)
26
+ def __iter__(self: Own[Self]) -> Iterator[Own[T]]: ...
27
+
28
+ @native("tpy::__len__", function=True)
29
+ @pure
30
+ @readonly
31
+ def __len__(self) -> Int32: ...
32
+
33
+ @native("push_back")
34
+ def append(self, value: Own[T]) -> None: ...
35
+
36
+ @overload
37
+ @native("tpy::pop_back", function=True)
38
+ def pop(self) -> Own[T]: ...
39
+
40
+ @overload
41
+ @native("tpy::list_pop_at", function=True)
42
+ def pop(self, index: Int32) -> Own[T]: ...
43
+
44
+ @native
45
+ def clear(self) -> None: ...
46
+
47
+ @cpp_template("{self}[{0}]")
48
+ @pure
49
+ @readonly
50
+ def unchecked_get(self, index: Int32) -> T: ...
51
+
52
+ @overload
53
+ @native("tpy::__getitem__", function=True)
54
+ @pure
55
+ @readonly
56
+ def __getitem__(self, index: Int32) -> T: ...
57
+
58
+ @overload
59
+ @cpp_template("::tpy::list_slice({self}, {0})")
60
+ @pure
61
+ @readonly
62
+ def __getitem__(self, index: basic_slice) -> Span[T]: ...
63
+
64
+ @overload
65
+ @cpp_template("::tpy::list_stepped_slice({self}, {0})")
66
+ @pure
67
+ @readonly
68
+ def __getitem__(self, index: slice) -> Own[list[T]]: ...
69
+
70
+ @overload
71
+ @native("tpy::__setitem__", function=True)
72
+ @native_preserves_refs
73
+ def __setitem__(self, index: Int32, value: Own[T]) -> None: ...
74
+
75
+ @overload
76
+ @native("tpy::list_set_slice", function=True)
77
+ def __setitem__(self, index: basic_slice, value: Iterable[Own[T]]) -> None: ...
78
+
79
+ @overload
80
+ @native("tpy::list_set_stepped_slice", function=True)
81
+ def __setitem__(self, index: slice, value: Iterable[Own[T]]) -> None: ...
82
+
83
+ @native("tpy::__delitem__", function=True)
84
+ def __delitem__(self, index: Int32) -> None: ...
85
+
86
+ @native("tpy::list_insert", function=True)
87
+ def insert(self, index: Int32, value: Own[T]) -> None: ...
88
+
89
+ @native("tpy::list_remove", function=True)
90
+ def remove[T: Equatable](self, value: T) -> None: ...
91
+
92
+ @native("tpy::list_extend", function=True)
93
+ def extend(self, other: Iterable[Own[T]]) -> None: ...
94
+
95
+ @native("tpy::list_index", function=True)
96
+ @pure
97
+ @readonly
98
+ def index[T: Equatable](self, value: T) -> Int32: ...
99
+
100
+ @native("tpy::list_count", function=True)
101
+ @pure
102
+ @readonly
103
+ def count[T: Equatable](self, value: T) -> Int32: ...
104
+
105
+ @native("tpy::list_reverse", function=True)
106
+ def reverse(self) -> None: ...
107
+
108
+ @cpp_template("std::stable_sort({self}.begin(), {self}.end())")
109
+ def sort[T: Comparable](self) -> None: ...
110
+
111
+ @native("tpy::list_copy", function=True)
112
+ @pure
113
+ @readonly
114
+ def copy(self) -> Own[list[T]]: ...
115
+
116
+ @native("tpy::list_concat", function=True)
117
+ @pure
118
+ @readonly
119
+ def __add__(self, other: list[T]) -> list[T]: ...
120
+
121
+ @native("tpy::list_extend", function=True)
122
+ def __iadd__(self, other: Iterable[Own[T]]) -> list[T]: ...
123
+
124
+ @native("tpy::as_span", function=True)
125
+ @pure
126
+ @readonly
127
+ def __span__(self) -> Span[readonly[T]]: ...
@@ -0,0 +1,52 @@
1
+ # tpy: native_module
2
+ # tpy: cpp_namespace("tpystd::builtins")
3
+ from .._typing import overload, Sized, Iterator, Iterable
4
+ from .._bootstrap._decorators import readonly, pure, error_return, Own
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
11
+
12
+ # Range type and range() function
13
+ @builtin_type("builtins.Range")
14
+ @native("tpy::Range")
15
+ class Range[T](NativeIterable[T], Iterable[T]):
16
+ @native("tpy::__iter__", function=True)
17
+ @readonly
18
+ @pure
19
+ def __iter__(self) -> Iterator[T]: ...
20
+
21
+
22
+ @overload
23
+ @cpp_template("::tpy::Range<{T}>({0})")
24
+ @readonly
25
+ @pure
26
+ def range[T: AnyFixedInt](stop: T) -> Range[T]: ...
27
+ @overload
28
+ @cpp_template("::tpy::Range<{T}>({0}, {1})")
29
+ @readonly
30
+ @pure
31
+ def range[T: AnyFixedInt](start: T, stop: T) -> Range[T]: ...
32
+ @overload
33
+ @cpp_template("::tpy::Range<{T}>({0}, {1}, {2})")
34
+ @readonly
35
+ @pure
36
+ def range[T: AnyFixedInt](start: T, stop: T, step: T) -> Range[T]: ...
37
+
38
+ @overload
39
+ @cpp_template("::tpy::Range<::tpy::BigInt>({0})")
40
+ @readonly
41
+ @pure
42
+ def range(stop: int) -> Range[int]: ...
43
+ @overload
44
+ @cpp_template("::tpy::Range<::tpy::BigInt>({0}, {1})")
45
+ @readonly
46
+ @pure
47
+ def range(start: int, stop: int) -> Range[int]: ...
48
+ @overload
49
+ @cpp_template("::tpy::Range<::tpy::BigInt>({0}, {1}, {2})")
50
+ @readonly
51
+ @pure
52
+ def range(start: int, stop: int, step: int) -> Range[int]: ...
@@ -0,0 +1,139 @@
1
+ # tpy: native_module
2
+ # tpy: cpp_namespace("tpystd::builtins")
3
+ from .._typing import overload, Self, Iterator, Iterable
4
+ from .._bootstrap._decorators import readonly, pure, Own
5
+ from .._core._types import Int32, NativeIterable
6
+ from .._bootstrap._extern import native, cpp_template, builtin_type
7
+
8
+
9
+ @builtin_type("builtins.set")
10
+ @native("tpy::ordered_set", indirecting=True)
11
+ class set[T](Iterable[T], NativeIterable[T]):
12
+ @pure
13
+ @readonly
14
+ @cpp_template("::tpy::set_construct<{T}>({0})")
15
+ def __init__(self, x: Iterable[Own[T]]) -> None: ...
16
+
17
+ @overload
18
+ @native("tpy::__iter__", function=True)
19
+ @pure
20
+ @readonly
21
+ def __iter__(self) -> Iterator[T]: ...
22
+
23
+ @overload
24
+ @native("tpy::own_iter_set", function=True)
25
+ def __iter__(self: Own[Self]) -> Iterator[Own[T]]: ...
26
+
27
+ @native("tpy::__len__", function=True)
28
+ @pure
29
+ @readonly
30
+ def __len__(self) -> Int32: ...
31
+
32
+ @native("contains")
33
+ @pure
34
+ @readonly
35
+ def __contains__(self, value: T) -> bool: ...
36
+
37
+ @native("insert")
38
+ def add(self, value: Own[T]) -> None: ...
39
+
40
+ @native("erase")
41
+ def discard(self, value: T) -> None: ...
42
+
43
+ @native("tpy::set_remove", function=True)
44
+ def remove(self, value: T) -> None: ...
45
+
46
+ @native("tpy::set_pop", function=True)
47
+ def pop(self) -> Own[T]: ...
48
+
49
+ @native
50
+ def clear(self) -> None: ...
51
+
52
+ @native("tpy::set_copy", function=True)
53
+ @pure
54
+ @readonly
55
+ def copy(self) -> Own[set[T]]: ...
56
+
57
+ # Set algebra (return new set)
58
+ @native("tpy::set_union", function=True)
59
+ @pure
60
+ @readonly
61
+ def union(self, other: set[T]) -> Own[set[T]]: ...
62
+
63
+ @native("tpy::set_intersection", function=True)
64
+ @pure
65
+ @readonly
66
+ def intersection(self, other: set[T]) -> Own[set[T]]: ...
67
+
68
+ @native("tpy::set_difference", function=True)
69
+ @pure
70
+ @readonly
71
+ def difference(self, other: set[T]) -> Own[set[T]]: ...
72
+
73
+ @native("tpy::set_symmetric_difference", function=True)
74
+ @pure
75
+ @readonly
76
+ def symmetric_difference(self, other: set[T]) -> Own[set[T]]: ...
77
+
78
+ # Set predicates
79
+ @native("tpy::set_issubset", function=True)
80
+ @pure
81
+ @readonly
82
+ def issubset(self, other: set[T]) -> bool: ...
83
+
84
+ @native("tpy::set_issuperset", function=True)
85
+ @pure
86
+ @readonly
87
+ def issuperset(self, other: set[T]) -> bool: ...
88
+
89
+ @native("tpy::set_isdisjoint", function=True)
90
+ @pure
91
+ @readonly
92
+ def isdisjoint(self, other: set[T]) -> bool: ...
93
+
94
+ # In-place set algebra
95
+ @native("tpy::set_update", function=True)
96
+ def update(self, other: set[T]) -> None: ...
97
+
98
+ @native("tpy::set_intersection_update", function=True)
99
+ def intersection_update(self, other: set[T]) -> None: ...
100
+
101
+ @native("tpy::set_difference_update", function=True)
102
+ def difference_update(self, other: set[T]) -> None: ...
103
+
104
+ @native("tpy::set_symmetric_difference_update", function=True)
105
+ def symmetric_difference_update(self, other: set[T]) -> None: ...
106
+
107
+ # Operators (same as named methods)
108
+ @native("tpy::set_union", function=True)
109
+ @pure
110
+ @readonly
111
+ def __or__(self, other: set[T]) -> Own[set[T]]: ...
112
+
113
+ @native("tpy::set_intersection", function=True)
114
+ @pure
115
+ @readonly
116
+ def __and__(self, other: set[T]) -> Own[set[T]]: ...
117
+
118
+ @native("tpy::set_difference", function=True)
119
+ @pure
120
+ @readonly
121
+ def __sub__(self, other: set[T]) -> Own[set[T]]: ...
122
+
123
+ @native("tpy::set_symmetric_difference", function=True)
124
+ @pure
125
+ @readonly
126
+ def __xor__(self, other: set[T]) -> Own[set[T]]: ...
127
+
128
+ # In-place operators
129
+ @native("tpy::set_update", function=True)
130
+ def __ior__(self, other: set[T]) -> set[T]: ...
131
+
132
+ @native("tpy::set_intersection_update", function=True)
133
+ def __iand__(self, other: set[T]) -> set[T]: ...
134
+
135
+ @native("tpy::set_difference_update", function=True)
136
+ def __isub__(self, other: set[T]) -> set[T]: ...
137
+
138
+ @native("tpy::set_symmetric_difference_update", function=True)
139
+ def __ixor__(self, other: set[T]) -> set[T]: ...
@@ -0,0 +1,11 @@
1
+ # tpy: native_module
2
+ # super() is a compile-time construct in TPy (no runtime super-proxy object);
3
+ # this stub exists only to give `super` a qualified name so sema can resolve
4
+ # call-site references through the normal namespace chain instead of matching
5
+ # the bare string. A user `def super()` at module/function scope shadows this
6
+ # binding the usual way, matching CPython semantics.
7
+ from .._bootstrap._extern import builtin_type
8
+
9
+
10
+ @builtin_type("builtins.super")
11
+ class super: ...