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.
- tpy_lang-0.3.0.dev0.dist-info/METADATA +151 -0
- tpy_lang-0.3.0.dev0.dist-info/RECORD +333 -0
- tpy_lang-0.3.0.dev0.dist-info/WHEEL +4 -0
- tpy_lang-0.3.0.dev0.dist-info/entry_points.txt +3 -0
- tpyc/__init__.py +104 -0
- tpyc/__main__.py +6 -0
- tpyc/_buildinfo.py +1 -0
- tpyc/_data/docs/LANGUAGE_FEATURES.md +6278 -0
- tpyc/_data/docs/STDLIB_ROADMAP.md +1258 -0
- tpyc/_data/docs/TPY_FOR_AGENTS.md +556 -0
- tpyc/_data/lib/tpy/_bindings/__init__.py +6 -0
- tpyc/_data/lib/tpy/_bindings/pcre2.py +173 -0
- tpyc/_data/lib/tpy/_bindings/posix_socket.py +161 -0
- tpyc/_data/lib/tpy/_functools_macros.py +80 -0
- tpyc/_data/lib/tpy/_macro_helpers.py +161 -0
- tpyc/_data/lib/tpy/argparse.py +2062 -0
- tpyc/_data/lib/tpy/asyncio/__init__.py +744 -0
- tpyc/_data/lib/tpy/asyncio/_executor.py +515 -0
- tpyc/_data/lib/tpy/base64.py +410 -0
- tpyc/_data/lib/tpy/bisect.py +39 -0
- tpyc/_data/lib/tpy/builtins.py +38 -0
- tpyc/_data/lib/tpy/dataclasses.py +354 -0
- tpyc/_data/lib/tpy/enum.py +23 -0
- tpyc/_data/lib/tpy/functools.py +33 -0
- tpyc/_data/lib/tpy/hashlib.py +206 -0
- tpyc/_data/lib/tpy/heapq.py +118 -0
- tpyc/_data/lib/tpy/io.py +395 -0
- tpyc/_data/lib/tpy/json.py +221 -0
- tpyc/_data/lib/tpy/math.py +406 -0
- tpyc/_data/lib/tpy/random.py +597 -0
- tpyc/_data/lib/tpy/re.py +467 -0
- tpyc/_data/lib/tpy/socket.py +379 -0
- tpyc/_data/lib/tpy/struct.py +178 -0
- tpyc/_data/lib/tpy/sys.py +40 -0
- tpyc/_data/lib/tpy/time.py +39 -0
- tpyc/_data/lib/tpy/tpy/__init__.py +78 -0
- tpyc/_data/lib/tpy/tpy/_bootstrap/__init__.py +10 -0
- tpyc/_data/lib/tpy/tpy/_bootstrap/_decorators.py +37 -0
- tpyc/_data/lib/tpy/tpy/_bootstrap/_extern.py +64 -0
- tpyc/_data/lib/tpy/tpy/_builtins/__init__.py +11 -0
- tpyc/_data/lib/tpy/tpy/_builtins/_bytes.py +378 -0
- tpyc/_data/lib/tpy/tpy/_builtins/_dict.py +151 -0
- tpyc/_data/lib/tpy/tpy/_builtins/_exceptions.py +125 -0
- tpyc/_data/lib/tpy/tpy/_builtins/_funcs.py +681 -0
- tpyc/_data/lib/tpy/tpy/_builtins/_io.py +97 -0
- tpyc/_data/lib/tpy/tpy/_builtins/_list.py +127 -0
- tpyc/_data/lib/tpy/tpy/_builtins/_range.py +52 -0
- tpyc/_data/lib/tpy/tpy/_builtins/_set.py +139 -0
- tpyc/_data/lib/tpy/tpy/_builtins/_super.py +11 -0
- tpyc/_data/lib/tpy/tpy/_builtins/_types.py +661 -0
- tpyc/_data/lib/tpy/tpy/_core/__init__.py +23 -0
- tpyc/_data/lib/tpy/tpy/_core/_bytes_view.py +129 -0
- tpyc/_data/lib/tpy/tpy/_core/_containers.py +137 -0
- tpyc/_data/lib/tpy/tpy/_core/_functions.py +40 -0
- tpyc/_data/lib/tpy/tpy/_core/_types.py +2061 -0
- tpyc/_data/lib/tpy/tpy/_typing/__init__.py +77 -0
- tpyc/_data/lib/tpy/tpy/_version.py +29 -0
- tpyc/_data/lib/tpy/tpy/bits.py +28 -0
- tpyc/_data/lib/tpy/tpy/coro/__init__.py +127 -0
- tpyc/_data/lib/tpy/tpy/extern.py +8 -0
- tpyc/_data/lib/tpy/tpy/mem.py +49 -0
- tpyc/_data/lib/tpy/tpy/unsafe.py +195 -0
- tpyc/_data/lib/tpy/tpy/version.py +21 -0
- tpyc/_data/lib/tpy/typing.py +13 -0
- tpyc/_data/runtime/cpp/include/tpy/any.hpp +461 -0
- tpyc/_data/runtime/cpp/include/tpy/as_ostream.hpp +117 -0
- tpyc/_data/runtime/cpp/include/tpy/async.hpp +76 -0
- tpyc/_data/runtime/cpp/include/tpy/bigint.hpp +1343 -0
- tpyc/_data/runtime/cpp/include/tpy/builtins.hpp +400 -0
- tpyc/_data/runtime/cpp/include/tpy/bytes_ops.hpp +469 -0
- tpyc/_data/runtime/cpp/include/tpy/container_ops.hpp +487 -0
- tpyc/_data/runtime/cpp/include/tpy/copy_iter.hpp +82 -0
- tpyc/_data/runtime/cpp/include/tpy/core.hpp +558 -0
- tpyc/_data/runtime/cpp/include/tpy/dict_ops.hpp +289 -0
- tpyc/_data/runtime/cpp/include/tpy/dunder.hpp +750 -0
- tpyc/_data/runtime/cpp/include/tpy/dynamic.hpp +44 -0
- tpyc/_data/runtime/cpp/include/tpy/enum.hpp +40 -0
- tpyc/_data/runtime/cpp/include/tpy/file.hpp +245 -0
- tpyc/_data/runtime/cpp/include/tpy/fixed_int.hpp +317 -0
- tpyc/_data/runtime/cpp/include/tpy/format.hpp +954 -0
- tpyc/_data/runtime/cpp/include/tpy/frame_slot.hpp +120 -0
- tpyc/_data/runtime/cpp/include/tpy/generator.hpp +47 -0
- tpyc/_data/runtime/cpp/include/tpy/iterable_ops.hpp +122 -0
- tpyc/_data/runtime/cpp/include/tpy/itertools.hpp +749 -0
- tpyc/_data/runtime/cpp/include/tpy/next_iter.hpp +82 -0
- tpyc/_data/runtime/cpp/include/tpy/ordered_map.hpp +518 -0
- tpyc/_data/runtime/cpp/include/tpy/ordered_set.hpp +337 -0
- tpyc/_data/runtime/cpp/include/tpy/own_iter.hpp +54 -0
- tpyc/_data/runtime/cpp/include/tpy/pascal_graph_sdl.hpp +192 -0
- tpyc/_data/runtime/cpp/include/tpy/printing.hpp +302 -0
- tpyc/_data/runtime/cpp/include/tpy/protocols.hpp +61 -0
- tpyc/_data/runtime/cpp/include/tpy/range.hpp +115 -0
- tpyc/_data/runtime/cpp/include/tpy/ranges.hpp +212 -0
- tpyc/_data/runtime/cpp/include/tpy/set_ops.hpp +265 -0
- tpyc/_data/runtime/cpp/include/tpy/slice.hpp +47 -0
- tpyc/_data/runtime/cpp/include/tpy/span_iter.hpp +42 -0
- tpyc/_data/runtime/cpp/include/tpy/stdlib/math.hpp +41 -0
- tpyc/_data/runtime/cpp/include/tpy/stdlib/pcre2_h.hpp +96 -0
- tpyc/_data/runtime/cpp/include/tpy/stdlib/random.hpp +25 -0
- tpyc/_data/runtime/cpp/include/tpy/stdlib/socket_h.hpp +145 -0
- tpyc/_data/runtime/cpp/include/tpy/stdlib/time.hpp +62 -0
- tpyc/_data/runtime/cpp/include/tpy/system.hpp +121 -0
- tpyc/_data/runtime/cpp/include/tpy/throwable.hpp +55 -0
- tpyc/_data/runtime/cpp/include/tpy/tpy.hpp +156 -0
- tpyc/_data/runtime/cpp/include/tpy/type_name.hpp +77 -0
- tpyc/_data/runtime/cpp/include/tpy/type_traits.hpp +240 -0
- tpyc/_data/runtime/cpp/include/tpy/uninit_array_storage.hpp +250 -0
- tpyc/_data/runtime/cpp/include/tpy/uninit_heap_storage.hpp +277 -0
- tpyc/_data/runtime/cpp/include/tpy/varargs.hpp +174 -0
- tpyc/_data/runtime/cpp/include/tpy/variant_ref.hpp +118 -0
- tpyc/_data/runtime/cpp/src/stdlib/socket_impl.cpp +104 -0
- tpyc/_data/runtime/cpp/third_party/README.md +58 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/AUTHORS +36 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/CMakeLists.txt +1233 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/COPYING +5 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/ChangeLog +3097 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/HACKING +853 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/INSTALL +368 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/LICENCE +94 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/NEWS +492 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/NON-AUTOTOOLS-BUILD +430 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/README +956 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/cmake/COPYING-CMAKE-SCRIPTS +22 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/cmake/FindEditline.cmake +16 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/cmake/FindPackageHandleStandardArgs.cmake +58 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/cmake/FindReadline.cmake +29 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/cmake/pcre2-config-version.cmake.in +15 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/cmake/pcre2-config.cmake.in +148 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/config-cmake.h.in +56 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/libpcre2-16.pc.in +13 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/libpcre2-32.pc.in +13 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/libpcre2-8.pc.in +13 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/libpcre2-posix.pc.in +13 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/pcre2-config.in +121 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/config.h +483 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/config.h.generic +483 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/config.h.in +460 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2.h +1010 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2.h.generic +1010 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2.h.in +1010 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_auto_possess.c +1371 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_chartables.c +196 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_chartables.c.dist +196 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_chkdint.c +96 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_compile.c +11001 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_config.c +252 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_context.c +510 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_convert.c +1189 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_dfa_match.c +4119 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_dftables.c +297 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_error.c +345 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_extuni.c +162 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_find_bracket.c +219 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_fuzzsupport.c +792 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_internal.h +2084 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_intmodedep.h +940 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_jit_compile.c +14972 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_jit_match.c +200 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_jit_misc.c +234 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_jit_neon_inc.h +354 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_jit_simd_inc.h +2355 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_jit_test.c +2528 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_maketables.c +165 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_match.c +7777 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_match_data.c +185 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_newline.c +243 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_ord2utf.c +120 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_pattern_info.c +432 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_printint.c +886 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_script_run.c +344 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_serialize.c +286 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_string_utils.c +237 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_study.c +1915 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_substitute.c +1009 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_substring.c +550 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_tables.c +234 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_ucd.c +5460 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_ucp.h +396 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_ucptables.c +1533 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_valid_utf.c +398 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2_xclass.c +308 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2demo.c +497 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2grep.c +4606 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2posix.c +425 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2posix.h +187 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2posix_test.c +209 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/pcre2test.c +9708 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/allocator_src/sljitExecAllocatorApple.c +137 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/allocator_src/sljitExecAllocatorCore.c +327 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/allocator_src/sljitExecAllocatorFreeBSD.c +89 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/allocator_src/sljitExecAllocatorPosix.c +62 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/allocator_src/sljitExecAllocatorWindows.c +40 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/allocator_src/sljitProtExecAllocatorNetBSD.c +72 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/allocator_src/sljitProtExecAllocatorPosix.c +172 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/allocator_src/sljitWXExecAllocatorPosix.c +141 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/allocator_src/sljitWXExecAllocatorWindows.c +102 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/sljitConfig.h +142 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/sljitConfigCPU.h +188 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/sljitConfigInternal.h +907 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/sljitLir.c +3561 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/sljitLir.h +2466 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/sljitNativeARM_32.c +4636 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/sljitNativeARM_64.c +3491 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/sljitNativeARM_T2_32.c +4302 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/sljitNativeLOONGARCH_64.c +3765 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/sljitNativeMIPS_32.c +472 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/sljitNativeMIPS_64.c +387 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/sljitNativeMIPS_common.c +4259 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/sljitNativePPC_32.c +485 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/sljitNativePPC_64.c +719 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/sljitNativePPC_common.c +3161 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/sljitNativeRISCV_32.c +142 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/sljitNativeRISCV_64.c +222 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/sljitNativeRISCV_common.c +3121 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/sljitNativeS390X.c +4526 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/sljitNativeX86_32.c +1685 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/sljitNativeX86_64.c +1398 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/sljitNativeX86_common.c +5001 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/sljitSerialize.c +516 -0
- tpyc/_data/runtime/cpp/third_party/pcre2/src/sljit/sljitUtils.c +344 -0
- tpyc/_data/runtime/cpp/third_party/pcre2.sources.txt +54 -0
- tpyc/_data/runtime/cpp/third_party/pcre2.vendor.json +7 -0
- tpyc/build/__init__.py +7 -0
- tpyc/build/pcre2.py +122 -0
- tpyc/build/third_party.py +413 -0
- tpyc/cli.py +822 -0
- tpyc/codegen_cpp/__init__.py +18 -0
- tpyc/codegen_cpp/builtins.py +484 -0
- tpyc/codegen_cpp/context.py +2064 -0
- tpyc/codegen_cpp/expressions.py +5940 -0
- tpyc/codegen_cpp/functions.py +1913 -0
- tpyc/codegen_cpp/gen_async.py +3258 -0
- tpyc/codegen_cpp/gen_generators.py +657 -0
- tpyc/codegen_cpp/generator.py +2258 -0
- tpyc/codegen_cpp/match.py +1997 -0
- tpyc/codegen_cpp/param_const.py +172 -0
- tpyc/codegen_cpp/protocols.py +907 -0
- tpyc/codegen_cpp/records.py +1654 -0
- tpyc/codegen_cpp/resumable_cfg.py +1651 -0
- tpyc/codegen_cpp/statements.py +4963 -0
- tpyc/codegen_cpp/string_dispatch.py +76 -0
- tpyc/codegen_cpp/test_context.py +46 -0
- tpyc/codegen_cpp/test_param_const.py +113 -0
- tpyc/codegen_cpp/test_resumable_cfg.py +182 -0
- tpyc/codegen_cpp/type_resolution.py +53 -0
- tpyc/codegen_cpp/types.py +436 -0
- tpyc/codegen_cpp/variant_access.py +135 -0
- tpyc/coercions.py +749 -0
- tpyc/compilation_context.py +57 -0
- tpyc/compiler.py +3945 -0
- tpyc/cycle_detection.py +358 -0
- tpyc/diagnostics.py +135 -0
- tpyc/dump_types.py +353 -0
- tpyc/frontend_diagnostics.py +47 -0
- tpyc/frontend_ir/__init__.py +140 -0
- tpyc/frontend_ir/lower.py +1098 -0
- tpyc/frontend_ir/nodes.py +718 -0
- tpyc/frontend_ir/resolver_adapter.py +151 -0
- tpyc/frontend_plugin.py +209 -0
- tpyc/install_docs.py +81 -0
- tpyc/liveness.py +756 -0
- tpyc/macro_api.py +1724 -0
- tpyc/macro_loader.py +497 -0
- tpyc/module_names.py +64 -0
- tpyc/modules/__init__.py +31 -0
- tpyc/modules/defs.py +89 -0
- tpyc/modules/registry.py +36 -0
- tpyc/modules/resolver.py +192 -0
- tpyc/modules/type_resolution.py +629 -0
- tpyc/namespace.py +172 -0
- tpyc/parse/__init__.py +84 -0
- tpyc/parse/imports.py +490 -0
- tpyc/parse/nodes.py +1732 -0
- tpyc/parse/parser.py +4043 -0
- tpyc/parse/resolve_refs.py +466 -0
- tpyc/parse/type_resolver.py +1060 -0
- tpyc/prescan.py +254 -0
- tpyc/qnames.py +149 -0
- tpyc/repl.py +529 -0
- tpyc/repl_backends.py +848 -0
- tpyc/sema/__init__.py +21 -0
- tpyc/sema/analyzer.py +3625 -0
- tpyc/sema/bound_check.py +72 -0
- tpyc/sema/builder_trace.py +684 -0
- tpyc/sema/calls.py +5406 -0
- tpyc/sema/compatibility.py +2107 -0
- tpyc/sema/context.py +1243 -0
- tpyc/sema/expressions.py +3737 -0
- tpyc/sema/flow_facts.py +199 -0
- tpyc/sema/init_tracker.py +150 -0
- tpyc/sema/list_literals.py +69 -0
- tpyc/sema/literal_utils.py +27 -0
- tpyc/sema/local_deduction.py +1088 -0
- tpyc/sema/macros.py +179 -0
- tpyc/sema/match.py +1177 -0
- tpyc/sema/method_expansion.py +347 -0
- tpyc/sema/methods.py +2197 -0
- tpyc/sema/mutation_propagation.py +268 -0
- tpyc/sema/narrowing.py +857 -0
- tpyc/sema/numeric_lattice.py +160 -0
- tpyc/sema/operators.py +402 -0
- tpyc/sema/overloads.py +841 -0
- tpyc/sema/protocols.py +1209 -0
- tpyc/sema/reach_analysis.py +202 -0
- tpyc/sema/registration.py +3156 -0
- tpyc/sema/scope_tracker.py +193 -0
- tpyc/sema/statements.py +4426 -0
- tpyc/sema/type_ops.py +1879 -0
- tpyc/sema/value_range.py +181 -0
- tpyc/symbol_binding.py +259 -0
- tpyc/test_c3_mro.py +208 -0
- tpyc/test_cli_argv.py +52 -0
- tpyc/test_compiler.py +559 -0
- tpyc/test_contains_type_param.py +101 -0
- tpyc/test_cycle_detection.py +221 -0
- tpyc/test_dump_types.py +225 -0
- tpyc/test_install_docs.py +65 -0
- tpyc/test_local_cpp_form.py +135 -0
- tpyc/test_macro_loader.py +76 -0
- tpyc/test_method_expansion.py +254 -0
- tpyc/test_nominal_identity.py +182 -0
- tpyc/test_overloads.py +410 -0
- tpyc/test_parse.py +303 -0
- tpyc/test_parse_type_ref.py +506 -0
- tpyc/test_parse_version_info.py +58 -0
- tpyc/test_reach_analysis.py +72 -0
- tpyc/test_ref_type.py +216 -0
- tpyc/test_send_sync_substitution.py +276 -0
- tpyc/test_tuple_mutation_propagation.py +206 -0
- tpyc/test_type_def_registry.py +1729 -0
- tpyc/test_union_types.py +195 -0
- tpyc/type_def_registry.py +975 -0
- tpyc/typesys.py +5104 -0
tpyc/namespace.py
ADDED
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
"""
|
|
2
|
+
TurboPython Namespace System
|
|
3
|
+
|
|
4
|
+
Unified name resolution for all binding types:
|
|
5
|
+
- Variables (local and global)
|
|
6
|
+
- User-defined functions
|
|
7
|
+
- User-defined records (classes)
|
|
8
|
+
- Imported modules
|
|
9
|
+
- Imported names (from X import Y)
|
|
10
|
+
- Builtins (__name__, etc.)
|
|
11
|
+
|
|
12
|
+
The namespace forms a chain: local_ns -> global_ns -> builtins_ns
|
|
13
|
+
Lookup traverses the chain, so inner bindings automatically shadow outer ones.
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
from __future__ import annotations
|
|
17
|
+
from dataclasses import dataclass, field
|
|
18
|
+
from enum import Enum, auto
|
|
19
|
+
from typing import Optional, TYPE_CHECKING
|
|
20
|
+
|
|
21
|
+
if TYPE_CHECKING:
|
|
22
|
+
from .typesys import TpyType, FunctionInfo, RecordInfo, NominalType
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class BindingKind(Enum):
|
|
26
|
+
"""The kind of name binding."""
|
|
27
|
+
VARIABLE = auto() # Local or global variable
|
|
28
|
+
FUNCTION = auto() # User-defined function
|
|
29
|
+
RECORD = auto() # User-defined record (class)
|
|
30
|
+
ENUM = auto() # User-defined enum type
|
|
31
|
+
MODULE = auto() # import X
|
|
32
|
+
IMPORTED_NAME = auto() # from X import Y
|
|
33
|
+
BUILTIN = auto() # Built-in names like __name__
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
@dataclass
|
|
37
|
+
class NameBinding:
|
|
38
|
+
"""A binding of a name to some entity."""
|
|
39
|
+
kind: BindingKind
|
|
40
|
+
name: str
|
|
41
|
+
type: Optional[TpyType] = None # For VARIABLE/BUILTIN
|
|
42
|
+
func_infos: Optional[list[FunctionInfo]] = None # For FUNCTION (single or @overload group)
|
|
43
|
+
record_info: Optional[RecordInfo] = None # For RECORD
|
|
44
|
+
enum_type: Optional[NominalType] = None # For ENUM (NominalType with TypeDef.enum)
|
|
45
|
+
import_source: Optional[tuple[str, str]] = None # For IMPORTED_NAME: (module, original_name)
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
class Namespace:
|
|
49
|
+
"""A namespace containing name bindings with optional parent chain.
|
|
50
|
+
|
|
51
|
+
Namespaces form a chain for nested scopes:
|
|
52
|
+
- builtins_ns (root, no parent)
|
|
53
|
+
- global_ns (parent=builtins_ns)
|
|
54
|
+
- local_ns (parent=global_ns, per function/method)
|
|
55
|
+
|
|
56
|
+
Lookup traverses the chain from inner to outer, so inner bindings
|
|
57
|
+
automatically shadow outer ones.
|
|
58
|
+
"""
|
|
59
|
+
|
|
60
|
+
def __init__(self, parent: Optional[Namespace] = None):
|
|
61
|
+
self.parent = parent
|
|
62
|
+
self._bindings: dict[str, NameBinding] = {}
|
|
63
|
+
|
|
64
|
+
def bind(self, binding: NameBinding) -> None:
|
|
65
|
+
"""Add a binding to this namespace."""
|
|
66
|
+
self._bindings[binding.name] = binding
|
|
67
|
+
|
|
68
|
+
def bind_variable(self, name: str, typ: TpyType) -> None:
|
|
69
|
+
"""Convenience method to bind a variable."""
|
|
70
|
+
self.bind(NameBinding(kind=BindingKind.VARIABLE, name=name, type=typ))
|
|
71
|
+
|
|
72
|
+
def bind_function(self, info: FunctionInfo) -> None:
|
|
73
|
+
"""Convenience method to bind a single user-defined function."""
|
|
74
|
+
self.bind(NameBinding(kind=BindingKind.FUNCTION, name=info.name, func_infos=[info]))
|
|
75
|
+
|
|
76
|
+
def bind_record(self, info: RecordInfo) -> None:
|
|
77
|
+
"""Convenience method to bind a user-defined record."""
|
|
78
|
+
self.bind(NameBinding(kind=BindingKind.RECORD, name=info.name, record_info=info))
|
|
79
|
+
|
|
80
|
+
def bind_enum(self, enum_type: NominalType, name: str | None = None) -> None:
|
|
81
|
+
"""Convenience method to bind a user-defined enum."""
|
|
82
|
+
self.bind(NameBinding(kind=BindingKind.ENUM, name=name or enum_type.name, enum_type=enum_type))
|
|
83
|
+
|
|
84
|
+
def bind_module(self, module_name: str, alias: str | None = None) -> None:
|
|
85
|
+
"""Convenience method to bind an imported module.
|
|
86
|
+
|
|
87
|
+
Args:
|
|
88
|
+
module_name: The canonical module name (e.g., "mypackage.utils").
|
|
89
|
+
alias: Optional local name (e.g., "utils"). If None, uses
|
|
90
|
+
module_name as the local name.
|
|
91
|
+
"""
|
|
92
|
+
local_name = alias if alias else module_name
|
|
93
|
+
self.bind(NameBinding(
|
|
94
|
+
kind=BindingKind.MODULE,
|
|
95
|
+
name=local_name,
|
|
96
|
+
import_source=(module_name, local_name) if local_name != module_name else None
|
|
97
|
+
))
|
|
98
|
+
|
|
99
|
+
def bind_imported_name(self, name: str, module: str, original_name: str) -> None:
|
|
100
|
+
"""Convenience method to bind an imported name (from X import Y)."""
|
|
101
|
+
self.bind(NameBinding(
|
|
102
|
+
kind=BindingKind.IMPORTED_NAME,
|
|
103
|
+
name=name,
|
|
104
|
+
import_source=(module, original_name)
|
|
105
|
+
))
|
|
106
|
+
|
|
107
|
+
def bind_builtin(self, name: str, typ: TpyType) -> None:
|
|
108
|
+
"""Convenience method to bind a builtin name."""
|
|
109
|
+
self.bind(NameBinding(kind=BindingKind.BUILTIN, name=name, type=typ))
|
|
110
|
+
|
|
111
|
+
def lookup(self, name: str) -> Optional[NameBinding]:
|
|
112
|
+
"""Look up a name in this namespace and its parents.
|
|
113
|
+
|
|
114
|
+
Returns the binding if found, None otherwise.
|
|
115
|
+
Inner bindings automatically shadow outer ones.
|
|
116
|
+
"""
|
|
117
|
+
if name in self._bindings:
|
|
118
|
+
return self._bindings[name]
|
|
119
|
+
if self.parent:
|
|
120
|
+
return self.parent.lookup(name)
|
|
121
|
+
return None
|
|
122
|
+
|
|
123
|
+
def lookup_local(self, name: str) -> Optional[NameBinding]:
|
|
124
|
+
"""Look up a name only in this namespace (not parents).
|
|
125
|
+
|
|
126
|
+
Useful for checking if a name is defined in the current scope
|
|
127
|
+
without traversing the chain.
|
|
128
|
+
"""
|
|
129
|
+
return self._bindings.get(name)
|
|
130
|
+
|
|
131
|
+
def update_variable_type(self, name: str, typ: TpyType) -> bool:
|
|
132
|
+
"""Update the type of an existing variable binding.
|
|
133
|
+
|
|
134
|
+
Returns True if the binding was found and updated, False otherwise.
|
|
135
|
+
Only searches the local namespace (not parents).
|
|
136
|
+
"""
|
|
137
|
+
binding = self._bindings.get(name)
|
|
138
|
+
if binding and binding.kind == BindingKind.VARIABLE:
|
|
139
|
+
binding.type = typ
|
|
140
|
+
return True
|
|
141
|
+
return False
|
|
142
|
+
|
|
143
|
+
def update_variable_type_recursive(self, name: str, typ: TpyType) -> bool:
|
|
144
|
+
"""Update an existing variable binding at the level where it lives.
|
|
145
|
+
|
|
146
|
+
Walks up the parent chain; rewrites the first VARIABLE binding found
|
|
147
|
+
and returns True. Returns False if the name is not bound or the
|
|
148
|
+
binding is non-variable.
|
|
149
|
+
"""
|
|
150
|
+
ns: Optional[Namespace] = self
|
|
151
|
+
while ns is not None:
|
|
152
|
+
binding = ns._bindings.get(name)
|
|
153
|
+
if binding is not None:
|
|
154
|
+
if binding.kind == BindingKind.VARIABLE:
|
|
155
|
+
binding.type = typ
|
|
156
|
+
return True
|
|
157
|
+
return False
|
|
158
|
+
ns = ns.parent
|
|
159
|
+
return False
|
|
160
|
+
|
|
161
|
+
def all_bindings(self) -> dict[str, NameBinding]:
|
|
162
|
+
"""Return all bindings in this namespace (not including parents)."""
|
|
163
|
+
return dict(self._bindings)
|
|
164
|
+
|
|
165
|
+
def __contains__(self, name: str) -> bool:
|
|
166
|
+
"""Check if a name is bound in this namespace (not including parents)."""
|
|
167
|
+
return name in self._bindings
|
|
168
|
+
|
|
169
|
+
def __repr__(self) -> str:
|
|
170
|
+
names = list(self._bindings.keys())
|
|
171
|
+
parent_str = f" -> {repr(self.parent)}" if self.parent else ""
|
|
172
|
+
return f"Namespace({names}{parent_str})"
|
tpyc/parse/__init__.py
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"""
|
|
2
|
+
TurboPython Parser package.
|
|
3
|
+
|
|
4
|
+
Re-exports all public symbols for backward compatibility.
|
|
5
|
+
All existing imports like ``from .parse import X`` continue to work.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from .nodes import (
|
|
9
|
+
ParseError, SourceLocation, RecordLinkage, FunctionLinkage, VarLinkage,
|
|
10
|
+
TpyTypeRef, TpyUnionRef, TpyCallableRef, TpyLiteralRef, TpyInferFromDefaultRef,
|
|
11
|
+
ResolverInputNode, TypeRefNode,
|
|
12
|
+
TpyExpr, TpyIntLiteral, TpyFloatLiteral, TpyStrLiteral, TpyBytesLiteral,
|
|
13
|
+
TpyFStringValue, TpyFString,
|
|
14
|
+
FSTRING_CONV_NONE, FSTRING_CONV_STR, FSTRING_CONV_REPR, FSTRING_CONV_ASCII,
|
|
15
|
+
TpyBoolLiteral,
|
|
16
|
+
TpyNoneLiteral, TpyName, TpyBinOp, TpyChainedCompare, TpyUnaryOp, TpyTypeParamConstruct,
|
|
17
|
+
TpyVarargPack, TpyStarUnpack, TpyCall, TpyMethodCall,
|
|
18
|
+
TpyFieldAccess, TpyArrayLiteral, TpyTupleLiteral, TupleElemCapture, TpyDictLiteral, TpySetLiteral, TpyListRepeat,
|
|
19
|
+
TpyComprehensionGenerator, TpyListComprehension, TpyDictComprehension, TpySetComprehension, TpyGeneratorExpression,
|
|
20
|
+
TpySlice, TpySubscript, TpyCoerce,
|
|
21
|
+
TpyIfExpr, TpyNamedExpr, TpyAwait, TpyLambda,
|
|
22
|
+
TpyStmt, TpyVarDecl, TpyTupleUnpack, TpyAssign, TpyAugAssign, TpyDelItem, TpyDelVar, TpyDelAttr, TpyExprStmt, TpyReturn, TpyYield,
|
|
23
|
+
TpyAssert, TpyIf, TpyWhile, TpyForEach, TpyBreak, TpyContinue,
|
|
24
|
+
TpyPassStmt, TpyGlobal, TpyNonlocal, TpyRaise, TpyExceptHandler, TpyTry, TpyWithItem, TpyWith,
|
|
25
|
+
TpyNestedDef,
|
|
26
|
+
TpyPattern, TpyWildcardPattern, TpyCapturePattern, TpyClassPattern,
|
|
27
|
+
TpyLiteralPattern, TpyValuePattern, TpyOrPattern, TpyAsPattern,
|
|
28
|
+
TpyMatchCase, TpyMatch,
|
|
29
|
+
RelativeImportKey, TpyImport, TpyFunction, TpyRecord, TpyProtocol, TpyEnum,
|
|
30
|
+
ParseWarning, TpyModule,
|
|
31
|
+
is_docstring,
|
|
32
|
+
is_super_del_call,
|
|
33
|
+
is_base_init_call,
|
|
34
|
+
collect_name_refs,
|
|
35
|
+
collect_top_level_local_names,
|
|
36
|
+
expr_reads_self_field,
|
|
37
|
+
is_stable_address_lvalue,
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
from .imports import (
|
|
41
|
+
is_parser_keyword, _IMPLICIT_MODULES,
|
|
42
|
+
get_builtins_exports, get_typing_exports, get_tpy_exports,
|
|
43
|
+
scan_star_exports, NonLiteralAllError,
|
|
44
|
+
ImportProcessor,
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
from .parser import Parser
|
|
48
|
+
|
|
49
|
+
__all__ = [
|
|
50
|
+
# nodes
|
|
51
|
+
"ParseError", "SourceLocation", "RecordLinkage", "FunctionLinkage", "VarLinkage",
|
|
52
|
+
"TpyExpr", "TpyIntLiteral", "TpyFloatLiteral", "TpyStrLiteral", "TpyBytesLiteral",
|
|
53
|
+
"TpyFStringValue", "TpyFString",
|
|
54
|
+
"FSTRING_CONV_NONE", "FSTRING_CONV_STR", "FSTRING_CONV_REPR", "FSTRING_CONV_ASCII",
|
|
55
|
+
"TpyBoolLiteral",
|
|
56
|
+
"TpyNoneLiteral", "TpyName", "TpyBinOp", "TpyChainedCompare", "TpyUnaryOp", "TpyTypeParamConstruct",
|
|
57
|
+
"TpyCall", "TpyMethodCall",
|
|
58
|
+
"TpyFieldAccess", "TpyArrayLiteral", "TpyTupleLiteral", "TupleElemCapture", "TpyDictLiteral", "TpySetLiteral", "TpyListRepeat",
|
|
59
|
+
"TpyComprehensionGenerator", "TpyListComprehension", "TpyDictComprehension", "TpySetComprehension", "TpyGeneratorExpression",
|
|
60
|
+
"TpySlice", "TpySubscript", "TpyCoerce",
|
|
61
|
+
"TpyIfExpr", "TpyNamedExpr", "TpyAwait", "TpyLambda",
|
|
62
|
+
"TpyStmt", "TpyVarDecl", "TpyTupleUnpack", "TpyAssign", "TpyAugAssign", "TpyDelItem", "TpyDelVar", "TpyDelAttr", "TpyExprStmt", "TpyReturn", "TpyYield",
|
|
63
|
+
"TpyAssert", "TpyIf", "TpyWhile", "TpyForEach", "TpyBreak", "TpyContinue",
|
|
64
|
+
"TpyPassStmt", "TpyGlobal", "TpyNonlocal", "TpyRaise", "TpyExceptHandler", "TpyTry", "TpyWithItem", "TpyWith",
|
|
65
|
+
"TpyNestedDef",
|
|
66
|
+
"TpyPattern", "TpyWildcardPattern", "TpyCapturePattern", "TpyClassPattern",
|
|
67
|
+
"TpyLiteralPattern", "TpyValuePattern", "TpyOrPattern", "TpyAsPattern",
|
|
68
|
+
"TpyMatchCase", "TpyMatch",
|
|
69
|
+
"RelativeImportKey", "TpyImport", "TpyFunction", "TpyRecord", "TpyProtocol", "TpyEnum",
|
|
70
|
+
"ParseWarning", "TpyModule",
|
|
71
|
+
"is_docstring",
|
|
72
|
+
"is_super_del_call",
|
|
73
|
+
"is_base_init_call",
|
|
74
|
+
"collect_name_refs",
|
|
75
|
+
"collect_top_level_local_names",
|
|
76
|
+
"expr_reads_self_field",
|
|
77
|
+
# imports
|
|
78
|
+
"is_parser_keyword", "_IMPLICIT_MODULES",
|
|
79
|
+
"get_builtins_exports", "get_typing_exports", "get_tpy_exports",
|
|
80
|
+
"scan_star_exports", "NonLiteralAllError",
|
|
81
|
+
"ImportProcessor",
|
|
82
|
+
# parser
|
|
83
|
+
"Parser",
|
|
84
|
+
]
|