Skip to content

Claude/native declines perf - #208

Closed
KotlinIsland wants to merge 16 commits into
mainfrom
claude/native-declines-perf
Closed

KotlinIsland wants to merge 16 commits into
mainfrom
claude/native-declines-perf

Conversation

@KotlinIsland

Copy link
Copy Markdown
Owner

No description provided.

…lds as python does

compiled `==` asks the type rather than answering true for identical
objects, tagged ints handle the short minimum and literals too wide to tag,
the handled exception survives a re-raise and an except clause's class
evaluation, a with block looks its methods up on the type, a name's value is
released when the name is rebound, an instance made without __init__ has no
fields, comparisons used as values keep the object their method returned, a
second import hands back the first module object, and a float subclass goes
to the interpreted definition. also releases temporaries at their last read,
stores closure cells natively and speeds up big tagged ints
…ave as python's

state objects collected from creation and refused construction from python,
throw/close/athrow with python's arguments and wording, delegation through
yield from and await, a running frame refused, the RuntimeWarning for a
coroutine never awaited, weak references, generator expressions and lambdas
inside a resumable frame, finally blocks on the exception path, and a
traceback entry for each compiled frame an exception passes
a compiled call notices a module function rebound, deleted or patched from
outside, and honours a reassigned __code__ or defaults; a compiled recursion
counts against the recursion limit and the thread's stack.
compile.bind-functions-early and compile.follow-recursion-limit turn each
back off, and the development docs say what each leaves
…run python

add an analysis of which operations can run python code over the native
call graph, and use it to ask once, on the way into a loop, whether a
builtin or module function still stands and whether an int field is set;
read an extended class's fields through one licence per class
fill every slot python gives a dunder's name, carry members the module body
rewrites after the class statement onto the emitted type, keep an attribute
that shares a method's name in the instance dict, give instances a weak
reference list on python's terms, hand interpreted subclasses an allocator
that marks int fields unset, and fix delegation, parked loop iterators and
generator expression evaluation order in generators
step a generator directly from a for loop with its state number as a
machine integer and its iternext inlined, recycle finished generators'
memory, release tagged int temporaries at their last read, borrow list
elements across an unbox, hold loop counters as machine integers inside a
loop copy, convert counters straight to doubles, unswitch nested loops, and
follow python's float floor division, remainder and power case for case
…d checks

methods bind through PyMethod_New and answer their def, module, qualname,
defaults, annotations and repr as the interpreted function does, class and
static methods are wrapped as a class statement wraps them, tp_new is left to
object, class patterns read fields only where the layout is held, and a
compiled module makes the interpreted build's soundness checks in the same
places and words
emit the copy a versioned recursion falls back to as a function of its own,
drop a type test an earlier guard already answered, memoize global reads and
the soundness check per type and class, answer equality from the right
operand's type, build displays from borrowed operands, stop leaking a
reference on every compiled int return, and empty a moved-from register with
its declared value
…on, and add inherit_ov and loops_aug rows

bench.py stages only the source a leg builds from so .by rows build again, the
benchmark programs are annotated as their docstrings say, and the sweep renderer
prints a compiled method as a callable. cdiff scopes a by.h change definition by
definition and writes its summary into its output file, ci runs the scoper's
tests, and two benchmark rows measure @OverRide and augmented assignment against
their plain siblings
an expression region carries the declarations a statement expression makes
instead of asserting it has none, an overload set and a valueless Final are
checked in a scope whose end is unreachable, and a class with a gradual base
answers as having a gradual member
…eated `_` positional-only

re-emit only the nodes an AST pass rewrote and pass the source of the rest
through, keeping comments, indentation, clause-line bodies and docstrings, and
report the author's own text for f-string and t-string fields. the splice
refuses any edit it leaves out unless the pass covering it declares it writes
that lowering. a repeated `_` is numbered past every name the module spells,
positional-only, and named after an overridden method's parameters, decided
once in ty and read by the transpiler, callable types and inline protocols
included. `decorator def` gets real overloads, a context parameter is filled
through an overload set that agrees on it, a module binding a runtime helper's
name is reported, and by run compiles each staged module under its .by path and
lines
…runtime evaluates for it

version checks run for .by files except where the lowering removes the syntax;
an evaluated `|` is `Union` below 3.10 and `T?` a tuple of classes in
isinstance; a `some` parameter is a TypeVar at every version, refused off a
parameter annotation and on variadics; the generics polyfill imports its
constructors and declares its type variables under names the module does not
spell and passes ParamSpec and TypeVarTuple defaults through; by run compiles
from text so 3.9-3.11 do not recurse, and a -W error warning names the .by line;
polyfill runtime tests run on an interpreter that can run them
…facility

typing names, builtins, runtime helper names and module-level private symbols
are imported or declared under names the module does not bind; one decision
names each polyfilled type parameter for the polyfill, inline protocols and
anonymous named tuples; the isinstance classinfo decision is one query ty and
the transpiler share; method type variables are declared at module scope; a
data class gets its slots below 3.10; keyword-pack defaults follow PEP 696
… relate guards by the parameter they narrow, and quote annotations once

a protected or private rename onto a name the class hierarchy stores is
invalid-visibility; `x is int?` parses the marker as part of the type and `?`
over a value types as the `| None` it evaluates; a return guard's target is a
type position, `-> a is not T` is refused, and callable types may return a guard,
related by which parameter each narrows. a forward reference is not quoted again
under the future import, synthesized annotations import with the module's other
imports, imported backing functions and conversion targets are bound under
per-module names, synthesized classes are named once per module by shape, and a
private class-body type alias is a private member. a symbolic fold inside a
tuple or callable type is written by the pass that replaces it, and a fold may
name a type parameter bound where it is written
…and read repeated `_` names from ty

an int register carries a bool or int subclass as the object, asking its own
methods for truthiness, unary operators and mixed float arithmetic; unary `+`
asks any operand's __pos__; a literal default a place cannot hold as itself
goes to the twin; an augmented assignment's slow path asks the in-place
method; compiled repeated `_` parameters are named and made positional-only
from ty's answer; a float subclass narrowed to its value is documented
…and slot data classes

methods marked override, final or abstractmethod compile, and the report counts
what really runs; a method the class body binds again publishes what it bound;
a module body that writes over a compiled class's members leaves the module
interpreted; one decision says which classes are mutable, including a written
__new__; a data class declares its slots, publishes __slots__ and its pickling
state, and is compared against the class its decorators produced; __class__
reads the defining class; the header compiles below 3.13
@github-actions

Copy link
Copy Markdown
Contributor

by ecosystem round-trip

base: f1cd8e5b5c24d873c5eab286f452fe7592f0b026 (merge base) → head: 208/merge

regressions: 0, changed: 5562, improvements: 0, error changes: 0 (across 25268 files in 148 projects)

⚠️ 15 project(s) fail to round-trip on both base and head, so this check says nothing about them.

ℹ️ changed round-trip output

DateType — _by_sourcemap.py
--- base/_by_sourcemap.py
+++ head/_by_sourcemap.py
@@ -14,5 +14,5 @@
 DIGESTS = {
     "/tmp/tmp81xe78y2/DateType/build/docs/conf.py": {"by": "sha256:79307623df6ce61884512e0bdc1b32491e4c2aff4efcfa0c5e45d2976010bcf9", "py": "sha256:06ca40142aa11aa9b37898e59bce635d09cda0789cd6c625cf61aaf8bd01e31d"},
-    "/tmp/tmp81xe78y2/DateType/build/datetype/__init__.py": {"by": "sha256:94a56a11a4d8888bd68aecc60bb49f92906a9be5b64866c1a0d305e178ecf4b0", "py": "sha256:004cfd025a866f8c8e143a268fd944d42cb70dab7afb748afb7f4b9c19460298"},
+    "/tmp/tmp81xe78y2/DateType/build/datetype/__init__.py": {"by": "sha256:94a56a11a4d8888bd68aecc60bb49f92906a9be5b64866c1a0d305e178ecf4b0", "py": "sha256:d2629aef5770ef569dea88a59c81afc2567b7a6186797a1bb40a50ed3ead757c"},
     "/tmp/tmp81xe78y2/DateType/build/datetype/test/__init__.py": {"by": "sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "py": "sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},
     "/tmp/tmp81xe78y2/DateType/build/datetype/test/test_datetype.py": {"by": "sha256:61da5c59dcb92e423e8e5d7e45a646b3f76cf0d130642183aada96412a295dc4", "py": "sha256:680edea67d64782206eddb0866a5e9dae975afe0aa947b7e3d4de420218eea3c"},
DateType — datetype/__init__.py
--- base/datetype/__init__.py
+++ head/datetype/__init__.py
@@ -1,5 +1,5 @@
 lazy from ty_extensions import JustFloat
-lazy from typing import Literal, overload
-_MISSING = object()
+lazy from typing import Any, Literal, overload
+_MISSING: Any = object()
 
 lazy import sys
DateType — datetype/_by_runtime.py
--- base/datetype/_by_runtime.py
+++ head/datetype/_by_runtime.py
@@ -388,4 +388,35 @@
 
 
+# a `t"..."` the author wrote, carrying the text the author wrote for each of its
+# fields rather than the text this file was lowered to
+#
+# `Interpolation.expression` is the source of the field, which python reads off the
+# compiled file — `t"{a!}"` would hand a reader `_force_unwrap(a)`. `_exprs` runs
+# parallel to the fields: a string is the author's own text for that field, and
+# `None` a field nothing lowered, which keeps the interpolation python built and so
+# stays byte-identical to what python would have reported
+#
+# the import is made here rather than at the top of the file because this module is
+# shared with runtimes that have no `string.templatelib`. only a t-string can reach
+# this helper, and a t-string needs 3.14
+def _by_template(_t, _exprs):
+    from string.templatelib import Interpolation, Template
+
+    _strings = _t.strings
+    _parts = []
+    for _index, _field in enumerate(_t.interpolations):
+        _parts.append(_strings[_index])
+        _expr = _exprs[_index]
... 4723 characters elided ...
+        elif isinstance(member, property):
+            if (
+                _by_dataclass_class_cell(member.fget, cls, new)
+                or _by_dataclass_class_cell(member.fset, cls, new)
+                or _by_dataclass_class_cell(member.fdel, cls, new)
+            ):
+                break
+    return new
Expression — _by_sourcemap.py
--- base/_by_sourcemap.py
+++ head/_by_sourcemap.py
@@ -24,49 +24,49 @@
     "/tmp/tmpul2udipb/Expression/build/expression/collections/__init__.py": ("/tmp/tmpul2udipb/Expression/expression/collections/__init__.by", [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]),
... 139698 characters elided ...
     "/tmp/tmpul2udipb/Expression/build/tests/test_typing.py": {"by": "sha256:9ff606f2ff8f1f56236a67c22f0ecba579dcb4e854a595144bd690fae8089d14", "py": "sha256:d81726a709971ef16c9e6e4cb317ede9c6a7243d5e4ac5e82304db205692cc12"},
Expression — expression/_by_runtime.py
--- base/expression/_by_runtime.py
+++ head/expression/_by_runtime.py
@@ -388,4 +388,35 @@
 
 
+# a `t"..."` the author wrote, carrying the text the author wrote for each of its
+# fields rather than the text this file was lowered to
+#
+# `Interpolation.expression` is the source of the field, which python reads off the
+# compiled file — `t"{a!}"` would hand a reader `_force_unwrap(a)`. `_exprs` runs
+# parallel to the fields: a string is the author's own text for that field, and
+# `None` a field nothing lowered, which keeps the interpolation python built and so
+# stays byte-identical to what python would have reported
+#
+# the import is made here rather than at the top of the file because this module is
+# shared with runtimes that have no `string.templatelib`. only a t-string can reach
+# this helper, and a t-string needs 3.14
+def _by_template(_t, _exprs):
+    from string.templatelib import Interpolation, Template
+
+    _strings = _t.strings
+    _parts = []
+    for _index, _field in enumerate(_t.interpolations):
+        _parts.append(_strings[_index])
+        _expr = _exprs[_index]
... 4723 characters elided ...
+        elif isinstance(member, property):
+            if (
+                _by_dataclass_class_cell(member.fget, cls, new)
+                or _by_dataclass_class_cell(member.fset, cls, new)
+                or _by_dataclass_class_cell(member.fdel, cls, new)
+            ):
+                break
+    return new
Expression — expression/collections/array.py
--- base/expression/collections/array.py
+++ head/expression/collections/array.py
@@ -8,5 +8,5 @@
 """
 lazy from ty_extensions import JustFloat
-lazy from typing import Callable, Literal
+lazy from typing import Any as Any2, Callable, Literal
 from expression._by_runtime import Optional, _soundness_check, _soundness_parametric
 
@@ -92,6 +92,6 @@
 
 
-def array_from_typecode(type_code: TypeCode, initializer: Iterable[Any] | None) -> _Array[Any]:
-    arr: _Array[Any] = list(initializer if initializer else [])
+def array_from_typecode(type_code: TypeCode, initializer: Iterable[Any2] | None) -> _Array[Any2]:
+    arr: _Array[Any2] = list(initializer if initializer else [])
     if type_code == TypeCode.Byte:
         return bytearray(arr)
@@ -120,8 +120,8 @@
 
 def array_from_initializer(
-    initializer: Iterable[Any] | None = None,
-) -> tuple[_Array[Any], TypeCode]:
+    initializer: Iterable[Any2] | None = None,
+) -> tuple[_Array[Any2], TypeCode]:
     # Use list as the default array
-    arr: _Array[Any] = list(initializer if initializer else [])
... 1511 characters elided ...
+def empty() -> TypedArray[Any2]:
     return TypedArray()
 
@@ -551,5 +551,5 @@
 
 
-def is_empty(source: TypedArray[Any]) -> bool:
+def is_empty(source: TypedArray[Any2]) -> bool:
     """Returns `True` if the list is empty, `False` otherwise."""
     return _soundness_check(source.is_empty(), bool)
Expression — expression/collections/asyncseq.py
--- base/expression/collections/asyncseq.py
+++ head/expression/collections/asyncseq.py
@@ -1,8 +1,7 @@
-lazy from typing import Any, Callable, overload
 from expression._by_runtime import _soundness_check
 lazy import builtins
 lazy import itertools
 lazy from collections.abc import AsyncIterable, AsyncIterator
-lazy from typing import TypeVar, cast
+lazy from typing import TypeVar, cast, Any, Callable, overload
 
 lazy from expression.core import Option, pipe
Expression — expression/collections/block.py
--- base/expression/collections/block.py
+++ head/expression/collections/block.py
@@ -20,5 +20,5 @@
 lazy from typing import Any, Callable, Literal, overload
 from expression._by_runtime import Optional, _soundness_check, _soundness_parametric
-_MISSING = object()
+_MISSING: Any = object()
Expression — expression/collections/map.py
--- base/expression/collections/map.py
+++ head/expression/collections/map.py
@@ -1,3 +1,2 @@
-lazy from typing import Callable
 from expression._by_runtime import _soundness_check, _soundness_iter
 # Attribution to original authors of this code
@@ -19,5 +18,5 @@
 
 lazy from collections.abc import ItemsView, Iterable, Iterator, Mapping
-lazy from typing import Any, TypeVar, cast
+lazy from typing import Any, TypeVar, cast, Callable
 
 lazy from expression.core import Option, PipeMixin, curry_flip, pipe
Expression — expression/collections/maptree.py
--- base/expression/collections/maptree.py
+++ head/expression/collections/maptree.py
@@ -22,5 +22,4 @@
 Do not use directly. Use the `map` module instead.
 """
-lazy from typing import Any, Callable
 from expression._by_runtime import Optional, _soundness_check, _soundness_iter
 
@@ -28,5 +27,5 @@
 lazy from collections.abc import Iterable, Iterator
 lazy from dataclasses import dataclass
-lazy from typing import Generic, TypeVar
+lazy from typing import Generic, TypeVar, Any, Callable
 
 lazy from expression.core import Nothing, Option, Some, failwith, pipe
Expression — expression/collections/seq.py
--- base/expression/collections/seq.py
+++ head/expression/collections/seq.py
@@ -22,7 +22,7 @@
     >>> ys = xs.map(lambda x: x + 1).filter(lambda x: x < 3)
 """
-lazy from typing import Any, Callable, overload
+lazy from typing import Any, Callable as Callable2, overload
 from expression._by_runtime import Optional, _soundness_check, _soundness_parametric
-_MISSING = object()
+_MISSING: Any = object()
 
 
@@ -96,8 +96,8 @@
         return Seq(concat(self._value, *others))
 
-    def filter(self, predicate: Callable[[_TSource], bool]) -> Seq[_TSource]:
+    def filter(self, predicate: Callable2[[_TSource], bool]) -> Seq[_TSource]:
         return Seq(filter(predicate)(self))
 
-    def choose(self, chooser: Callable[[_TSource], Option[_TResult]]) -> Seq[_TResult]:
+    def choose(self, chooser: Callable2[[_TSource], Option[_TResult]]) -> Seq[_TResult]:
         """Choose items from the sequence.
 
@@ -124,5 +124,5 @@
         return Seq(concat(*self))
 
-    def collect(self, mapping: Callable[[_TSource], Seq[_TResult]]) -> Seq[_TResult]:
... 11213 characters elided ...
     """Unfold sequence.
 
@@ -1078,5 +1078,5 @@
 def zip(
     source1: Iterable[_TSource],
-) -> Callable[[Iterable[_TResult]], Iterable[tuple[_TSource, _TResult]]]:
+) -> Callable2[[Iterable[_TResult]], Iterable[tuple[_TSource, _TResult]]]:
     """Zip sequence with other.
Expression — expression/core/aiotools.py
--- base/expression/core/aiotools.py
+++ head/expression/core/aiotools.py
@@ -8,5 +8,4 @@
 by itself.
 """
-lazy from typing import Any
 from expression._by_runtime import _soundness_check
 
@@ -14,5 +13,5 @@
 lazy from asyncio import Future, Task
 lazy from collections.abc import Awaitable, Callable
-lazy from typing import TypeVar
+lazy from typing import TypeVar, Any
 
 lazy from expression.system import CancellationToken, OperationCanceledError
Expression — expression/core/async_builder.py
--- base/expression/core/async_builder.py
+++ head/expression/core/async_builder.py
@@ -4,5 +4,4 @@
 create computational expressions for async operations.
 """
-lazy from typing import Callable, Literal
 from expression._by_runtime import _soundness_check
 
@@ -11,5 +10,5 @@
 lazy from collections.abc import AsyncGenerator, Awaitable, Callable
 lazy from functools import wraps
-lazy from typing import Any, Generic, TypeVar, cast
+lazy from typing import Any, Generic, TypeVar, cast, Callable as Callable2, Literal
 
 lazy from typing_extensions import ParamSpec
@@ -35,5 +34,5 @@
     # Required methods
     async def bind(
-        self, xs: _M, fn: Callable[[_T], Awaitable[_M]]
+        self, xs: _M, fn: Callable2[[_T], Awaitable[_M]]
     ) -> _M:  # Use concrete types for Callable input and output
         raise NotImplementedError("AsyncBuilder does not implement a `bind` method")
@@ -58,5 +57,5 @@
 
     # Optional methods for control flow
-    async def delay(self, fn: Callable[[], _M]) -> _M:
+    async def delay(self, fn: Callable2[[], _M]) -> _M:
         """Delay the computation.
Expression — expression/core/builder.py
--- base/expression/core/builder.py
+++ head/expression/core/builder.py
@@ -1,3 +1,2 @@
-lazy from typing import Callable, Literal
 from expression._by_runtime import _soundness_check
 lazy import inspect
@@ -5,5 +4,5 @@
 lazy from collections.abc import Callable, Generator
 lazy from functools import wraps
-lazy from typing import Any, Generic, TypeVar, cast
+lazy from typing import Any, Generic, TypeVar, cast, Callable as Callable2, Literal
 
 lazy from typing_extensions import ParamSpec
@@ -28,5 +27,5 @@
 
     # Required methods
-    def bind(self, xs: _M, fn: Callable[[_T], _M]) -> _M:  # Use concrete types for Callable input and output
+    def bind(self, xs: _M, fn: Callable2[[_T], _M]) -> _M:  # Use concrete types for Callable input and output
         raise NotImplementedError("Builder does not implement a `bind` method")
 
@@ -50,5 +49,5 @@
 
     # Optional methods for control flow
-    def delay(self, fn: Callable[[], _M]) -> _M:
+    def delay(self, fn: Callable2[[], _M]) -> _M:
         """Delay the computation.
Expression — expression/core/compose.py
--- base/expression/core/compose.py
+++ head/expression/core/compose.py
@@ -1,5 +1,4 @@
-lazy from typing import Any, Callable, overload
 lazy from functools import reduce
-lazy from typing import TypeVar
+lazy from typing import TypeVar, Any, Callable, overload
 
 lazy from typing import TypeVarTuple, Unpack
Expression — expression/core/curry.py
--- base/expression/core/curry.py
+++ head/expression/core/curry.py
@@ -1,6 +1,5 @@
-lazy from typing import Any, Callable, Literal, overload
 lazy import functools
 lazy from collections.abc import Callable
-lazy from typing import Concatenate, TypeVar
+lazy from typing import Concatenate, TypeVar, Any, Callable as Callable2, Literal, overload
 
 lazy from typing_extensions import ParamSpec
@@ -17,5 +16,5 @@
 
 
-def _curry(args: tuple[Any, ...], arity: int, fun: Callable[..., Any]) -> Callable[..., Any]:
+def _curry(args: tuple[Any, ...], arity: int, fun: Callable2[..., Any]) -> Callable2[..., Any]:
     def wrapper(*args_: Any, **kw: Any) -> Any:
         if arity == 1:
@@ -27,5 +26,5 @@
 
 @overload
-def curry(num_args: Literal[0]) -> Callable[[Callable[_P, _B]], Callable[_P, _B]]: ...
+def curry(num_args: Literal[0]) -> Callable2[[Callable[_P, _B]], Callable[_P, _B]]: ...
 
 
@@ -33,5 +32,5 @@
 def curry(
     num_args: Literal[1],
-) -> Callable[[Callable[Concatenate[_A, _P], _B]], Callable[[_A], Callable[_P, _B]]]: ...
... 3354 characters elided ...
             def _wrap_curried(*curry_args: Any) -> Any:
                 return fun(*curry_args, *args, **kwargs)
@@ -146,5 +145,5 @@
     *args: _P.args,
     **kwargs: _P.kwargs,
-) -> Callable[[_A], _B]:
+) -> Callable2[[_A], _B]:
     """Partially apply a function's arguments after its pipeline value.
Expression — expression/core/mailbox.py
--- base/expression/core/mailbox.py
+++ head/expression/core/mailbox.py
@@ -1,3 +1,2 @@
-lazy from typing import Any, Callable
 from expression._by_runtime import _soundness_check
 # Attribution to original authors of this code
@@ -18,5 +17,5 @@
 lazy from queue import SimpleQueue
 lazy from threading import RLock
-lazy from typing import Generic, TypeVar
+lazy from typing import Generic, TypeVar, Any, Callable
 
 lazy from expression.system import CancellationToken, OperationCanceledError
Expression — expression/core/misc.py
--- base/expression/core/misc.py
+++ head/expression/core/misc.py
@@ -1,4 +1,3 @@
-lazy from typing import Any, Callable
-lazy from typing import TypeVar
+lazy from typing import TypeVar, Any, Callable
 
 lazy from typing import TypeVarTuple, Unpack
Expression — expression/core/option.py
--- base/expression/core/option.py
+++ head/expression/core/option.py
@@ -6,5 +6,5 @@
 the only argument.
 """
-lazy from typing import Callable, Literal, Protocol
+lazy from typing import Any, Callable, Literal, Protocol
 from expression._by_runtime import Optional, _soundness_check
 class _Callable_3fc10be8(Protocol):
Expression — expression/core/pipe.py
--- base/expression/core/pipe.py
+++ head/expression/core/pipe.py
@@ -12,5 +12,5 @@
     >>> assert pipe(v, fn, gn) == gn(fn(v))
 """
-lazy from typing import Callable, Protocol, overload
+lazy from typing import Any, Callable as Callable2, Protocol, overload
 from expression._by_runtime import _soundness_check
 class _Callable_22b0031f(Protocol):
@@ -57,17 +57,17 @@
 
 @overload
-def pipe(value: _A, fn1: Callable[[_A], _B], /) -> _B: ...
-
-
-@overload
-def pipe(value: _A, fn1: Callable[[_A], _B], fn2: Callable[[_B], _C], /) -> _C: ...
-
-
-@overload
-def pipe(
-    value: _A,
-    fn1: Callable[[_A], _B],
-    fn2: Callable[[_B], _C],
-    fn3: Callable[[_C], _D],
+def pipe(value: _A, fn1: Callable2[[_A], _B], /) -> _B: ...
+
+
+@overload
+def pipe(value: _A, fn1: Callable2[[_A], _B], fn2: Callable2[[_B], _C], /) -> _C: ...
+
+
+@overload
+def pipe(
+    value: _A,
+    fn1: Callable2[[_A], _B],
+    fn2: Callable2[[_B], _C],
+    fn3: Callable2[[_C], _D],
     /,
 ) -> _D: ...
@@ -77,8 +77,8 @@
 def pipe(
     value: _A,
-    fn1: Callable[[_A], _B],
-    fn2: Callable[[_B], _C],
... 23071 characters elided ...
+        fn9: Callable2[[_T], _J],
+        fn10: Callable2[[_J], _I],
+        fn11: Callable2[[_I], _K1],
+        fn12: Callable2[[_K1], _L],
+        fn13: Callable2[[_L], _M],
+        fn14: Callable2[[_M], _N],
+        fn15: Callable2[[_N], _O],
+        fn16: Callable2[[_O], _P1],
         /,
     ) -> _P1: ...
Expression — expression/core/result.py
--- base/expression/core/result.py
+++ head/expression/core/result.py
@@ -9,5 +9,4 @@
 the Result type to Exception.
 """
-lazy from typing import Callable, Literal
 from expression._by_runtime import Optional, _soundness_check
 
@@ -15,5 +14,5 @@
 lazy import builtins
 lazy from collections.abc import Awaitable, Generator, Iterable
-from typing import TYPE_CHECKING, Any, Generic, TypeGuard, TypeVar, cast, get_args, get_origin
+from typing import TYPE_CHECKING, Any, Generic, TypeGuard, TypeVar, cast, get_args, get_origin, Callable, Literal
Expression — expression/core/tagged_union.py
--- base/expression/core/tagged_union.py
+++ head/expression/core/tagged_union.py
@@ -1,7 +1,6 @@
-lazy from typing import Any, Callable, overload
 from expression._by_runtime import _soundness_check
 lazy from copy import deepcopy
 lazy from dataclasses import dataclass, field, fields
-lazy from typing import TypeVar
+lazy from typing import TypeVar, Any, Callable, overload
 
 lazy from typing import dataclass_transform
Expression — expression/core/typing.py
--- base/expression/core/typing.py
+++ head/expression/core/typing.py
@@ -1,7 +1,6 @@
 lazy from abc import abstractmethod
-lazy from typing import Any
 
 lazy from collections.abc import Iterable
-lazy from typing import Protocol, TypeVar, get_origin
+lazy from typing import Protocol, TypeVar, get_origin, Any
Expression — expression/effect/async_option.py
--- base/expression/effect/async_option.py
+++ head/expression/effect/async_option.py
@@ -5,9 +5,8 @@
 works with async operations.
 """
-lazy from typing import Callable
 from expression._by_runtime import Optional, _soundness_check
 
 lazy from collections.abc import AsyncGenerator, Awaitable, Callable
-lazy from typing import Any, ParamSpec, TypeVar
+lazy from typing import Any, ParamSpec, TypeVar, Callable as Callable2
 
 lazy from expression.core import Nothing, Option, Some
@@ -30,5 +29,5 @@
         self,
         xs: Option[_TSource],
-        fn: Callable[[Any], Awaitable[Option[_TResult]]],
+        fn: Callable2[[Any], Awaitable[Option[_TResult]]],
     ) -> Option[_TResult]:
         """Bind a function to an async option value.
@@ -108,5 +107,5 @@
         return Nothing
 
-    async def delay(self, fn: Callable[[], Option[_TSource]]) -> Option[_TSource]:
+    async def delay(self, fn: Callable2[[], Option[_TSource]]) -> Option[_TSource]:
         """Delay the computation.
Expression — expression/effect/async_result.py
--- base/expression/effect/async_result.py
+++ head/expression/effect/async_result.py
@@ -5,9 +5,8 @@
 works with async operations.
 """
-lazy from typing import Callable
 from expression._by_runtime import _soundness_check
 
 lazy from collections.abc import AsyncGenerator, Awaitable, Callable
-lazy from typing import Any, ParamSpec, TypeVar
+lazy from typing import Any, ParamSpec, TypeVar, Callable as Callable2
 
 lazy from expression.core import Ok, Result
@@ -31,5 +30,5 @@
         self,
         xs: Result[_TSource, _TError],
-        fn: Callable[[Any], Awaitable[Result[_TResult, _TError]]],
+        fn: Callable2[[Any], Awaitable[Result[_TResult, _TError]]],
     ) -> Result[_TResult, _TError]:
         """Bind a function to an async result value.
@@ -109,5 +108,5 @@
         return _soundness_check(Ok(None), Result)
 
-    async def delay(self, fn: Callable[[], Result[_TSource, _TError]]) -> Result[_TSource, _TError]:
+    async def delay(self, fn: Callable2[[], Result[_TSource, _TError]]) -> Result[_TSource, _TError]:
         """Delay the computation.
Expression — expression/effect/option.py
--- base/expression/effect/option.py
+++ head/expression/effect/option.py
@@ -1,6 +1,5 @@
-lazy from typing import Callable
 from expression._by_runtime import Optional, _soundness_check
 lazy from collections.abc import Callable, Generator
-lazy from typing import Any, TypeVar
+lazy from typing import Any, TypeVar, Callable as Callable2
 
 lazy from typing_extensions import ParamSpec
@@ -15,5 +14,5 @@
 
 class OptionBuilder(Builder[_TSource, Option[Any]]):
-    def bind(self, xs: Option[_TSource], fn: Callable[[_TSource], Option[_TResult]]) -> Option[_TResult]:
+    def bind(self, xs: Option[_TSource], fn: Callable2[[_TSource], Option[_TResult]]) -> Option[_TResult]:
         """Bind a function to an option value.
 
@@ -84,5 +83,5 @@
         return Nothing
 
-    def delay(self, fn: Callable[[], Option[_TSource]]) -> Option[_TSource]:
+    def delay(self, fn: Callable2[[], Option[_TSource]]) -> Option[_TSource]:
         """Delay an option computation.
Expression — expression/effect/result.py
--- base/expression/effect/result.py
+++ head/expression/effect/result.py
@@ -1,6 +1,5 @@
-lazy from typing import Callable
 from expression._by_runtime import _soundness_check
 lazy from collections.abc import Callable, Generator
-lazy from typing import Any, TypeVar
+lazy from typing import Any, TypeVar, Callable as Callable2
 
 lazy from typing_extensions import ParamSpec
@@ -19,5 +18,5 @@
         self,
         xs: Result[_TSource, _TError],
-        fn: Callable[[Any], Result[_TResult, _TError]],
+        fn: Callable2[[Any], Result[_TResult, _TError]],
     ) -> Result[_TResult, _TError]:
         """Bind a function to a result value.
Expression — expression/effect/seq.py
--- base/expression/effect/seq.py
+++ head/expression/effect/seq.py
@@ -1,5 +1,4 @@
-lazy from typing import Callable
 lazy from collections.abc import Generator, Iterable
-lazy from typing import Any, TypeVar
+lazy from typing import Any, TypeVar, Callable
 
 lazy from expression.collections import seq
Expression — expression/extra/option/pipeline.py
--- base/expression/extra/option/pipeline.py
+++ head/expression/extra/option/pipeline.py
@@ -1,6 +1,5 @@
-lazy from typing import Callable, overload
 from expression._by_runtime import Optional, _soundness_check
 lazy from functools import reduce
-lazy from typing import Any, TypeVar
+lazy from typing import Any, TypeVar, Callable, overload
 
 lazy from expression.core import Option, Some
Expression — expression/extra/parser.py
--- base/expression/extra/parser.py
+++ head/expression/extra/parser.py
@@ -1,8 +1,7 @@
 lazy from ty_extensions import JustFloat
-lazy from typing import Any, Callable, overload
 from expression._by_runtime import Optional, _soundness_check, _soundness_parametric
 
 lazy import string
-lazy from typing import Generic, TypeVar
+lazy from typing import Generic, TypeVar, Any, Callable, overload
 
 lazy from expression.collections import Block, block
Expression — expression/extra/result/catch.py
--- base/expression/extra/result/catch.py
+++ head/expression/extra/result/catch.py
@@ -1,7 +1,6 @@
-lazy from typing import Any, Callable, overload
 from expression._by_runtime import _soundness_check
 
 lazy from functools import wraps
-lazy from typing import TypeVar, cast
+lazy from typing import TypeVar, cast, Any, Callable, overload
 
 lazy from expression.core import Error, Ok, Result
Expression — expression/extra/result/pipeline.py
--- base/expression/extra/result/pipeline.py
+++ head/expression/extra/result/pipeline.py
@@ -1,6 +1,5 @@
-lazy from typing import Callable, overload
 from expression._by_runtime import _soundness_check
 lazy from functools import reduce
-lazy from typing import Any, TypeVar
+lazy from typing import Any, TypeVar, Callable, overload
 
 lazy from expression.core.result import Ok, Result
Expression — expression/extra/result/traversable.py
--- base/expression/extra/result/traversable.py
+++ head/expression/extra/result/traversable.py
@@ -1,7 +1,6 @@
 """Data structures that can be traversed from left to right, performing an action on each element."""
-lazy from typing import Any, Callable
 from expression._by_runtime import _soundness_check
 
-lazy from typing import TypeVar
+lazy from typing import TypeVar, Any, Callable
 
 lazy from expression import effect
Expression — expression/system/disposable.py
--- base/expression/system/disposable.py
+++ head/expression/system/disposable.py
@@ -1,7 +1,6 @@
-lazy from abc import abstractmethod
 lazy from typing import Callable
 from expression._by_runtime import _soundness_check, _soundness_iter
 
-lazy from abc import ABC
+lazy from abc import ABC, abstractmethod
 lazy from asyncio import iscoroutinefunction
 lazy from collections.abc import Awaitable
Expression — tests/_by_runtime.py
--- base/tests/_by_runtime.py
+++ head/tests/_by_runtime.py
@@ -388,4 +388,35 @@
 
 
+# a `t"..."` the author wrote, carrying the text the author wrote for each of its
+# fields rather than the text this file was lowered to
+#
+# `Interpolation.expression` is the source of the field, which python reads off the
+# compiled file — `t"{a!}"` would hand a reader `_force_unwrap(a)`. `_exprs` runs
+# parallel to the fields: a string is the author's own text for that field, and
+# `None` a field nothing lowered, which keeps the interpolation python built and so
+# stays byte-identical to what python would have reported
+#
+# the import is made here rather than at the top of the file because this module is
+# shared with runtimes that have no `string.templatelib`. only a t-string can reach
+# this helper, and a t-string needs 3.14
+def _by_template(_t, _exprs):
+    from string.templatelib import Interpolation, Template
+
+    _strings = _t.strings
+    _parts = []
+    for _index, _field in enumerate(_t.interpolations):
+        _parts.append(_strings[_index])
+        _expr = _exprs[_index]
... 4723 characters elided ...
+        elif isinstance(member, property):
+            if (
+                _by_dataclass_class_cell(member.fget, cls, new)
+                or _by_dataclass_class_cell(member.fset, cls, new)
+                or _by_dataclass_class_cell(member.fdel, cls, new)
+            ):
+                break
+    return new
Expression — tests/test_array.py
--- base/tests/test_array.py
+++ head/tests/test_array.py
@@ -1,7 +1,6 @@
-lazy from typing import Callable
 from tests._by_runtime import Optional, _soundness_check, _soundness_iter, _soundness_parametric
 lazy import functools
 lazy from collections.abc import Callable
-lazy from typing import Any
+lazy from typing import Any, Callable as Callable2
 
 lazy import pytest
@@ -57,5 +56,5 @@
     assert len(xs) == 3
 
-    mapper: Callable[[str], array.uint8] = array.uint8  # type: ignore
+    mapper: Callable2[[str], array.uint8] = array.uint8  # type: ignore
     ys: TypedArray[array.uint8] = _soundness_check(pipe(xs, array.map(mapper)), TypedArray)
     assert len(ys) == 3
@@ -68,5 +67,5 @@
     assert len(xs) == 3
 
-    mapper: Callable[[str], array.uint16] = array.uint16  # type: ignore
+    mapper: Callable2[[str], array.uint16] = array.uint16  # type: ignore
     ys: TypedArray[array.uint16] = _soundness_check(pipe(xs, array.map(mapper)), TypedArray)
     assert len(ys) == 3
@@ -79,5 +78,5 @@
     assert len(xs) == 3
 
-    mapper: Callable[[str], array.uint32] = array.uint32  # type: ignore
... 3488 characters elided ...
-    g: Callable[[int], TypedArray[int]] = lambda y: rtn(y * 42)
+    f: Callable2[[int], TypedArray[int]] = lambda x: rtn(x + 10)
+    g: Callable2[[int], TypedArray[int]] = lambda y: rtn(y * 42)
 
     m = _soundness_parametric(array.of_seq(xs), TypedArray[int], (0,))
Expression — tests/test_block.py
--- base/tests/test_block.py
+++ head/tests/test_block.py
@@ -1,9 +1,8 @@
 lazy from ty_extensions import JustFloat
-lazy from typing import Callable
 from tests._by_runtime import Optional, _soundness_check, _soundness_iter, _soundness_parametric
 lazy import functools
 lazy from builtins import list as list
 lazy from collections.abc import Callable
-lazy from typing import Any, List, Annotated
+lazy from typing import Any, List, Annotated, Callable as Callable2
 
 lazy from hypothesis import given  # type: ignore
@@ -135,5 +134,5 @@
 @given(st.lists(st.tuples(st.integers(), st.integers())))  # type: ignore
 def test_seq_pipe_starmap(xs: List[tuple[int, int]]):
-    mapper: Callable[[int, int], int] = lambda x, y: x + y
+    mapper: Callable2[[int, int], int] = lambda x, y: x + y
     ys = _soundness_parametric(pipe(
         _soundness_parametric(block.of_seq(xs), Block[tuple[int, int]], (0,)),
@@ -147,5 +146,5 @@
 @given(st.lists(st.tuples(st.integers(), st.integers())))  # type: ignore
 def test_seq_pipe_map2(xs: List[tuple[int, int]]):
-    mapper: Callable[[int, int], int] = lambda x, y: x + y
... 3339 characters elided ...
-    f: Callable[[int], Block[int]] = lambda x: rtn(x + 10)
-    g: Callable[[int], Block[int]] = lambda y: rtn(y * 42)
+    f: Callable2[[int], Block[int]] = lambda x: rtn(x + 10)
+    g: Callable2[[int], Block[int]] = lambda y: rtn(y * 42)
 
     m = _soundness_parametric(block.of_seq(xs), Block[int], (0,))
Expression — tests/test_compose.py
--- base/tests/test_compose.py
+++ head/tests/test_compose.py
@@ -1,3 +1,3 @@
-lazy from typing import Callable
+lazy from typing import Callable as Callable2
 lazy from collections.abc import Callable
 
@@ -27,5 +27,5 @@
 @given(st.integers())  # type: ignore
 def test_compose_1(x: int):
-    fn: Callable[[int], int] = lambda x: x + 42
+    fn: Callable2[[int], int] = lambda x: x + 42
     gn = compose(fn)
Expression — tests/test_option.py
--- base/tests/test_option.py
+++ head/tests/test_option.py
@@ -1,4 +1,4 @@
 lazy from ty_extensions import JustFloat
-lazy from typing import Callable
+lazy from typing import Any, Callable
 from tests._by_runtime import Optional, _soundness_check, _soundness_iter, _soundness_parametric
 lazy from typing import Any, Annotated
Expression — tests/test_option_builder.py
(only produced on head)
Expression — tests/test_pipe.py
--- base/tests/test_pipe.py
+++ head/tests/test_pipe.py
@@ -1,5 +1,4 @@
-lazy from typing import Callable
 from tests._by_runtime import _soundness_check
-lazy from typing import TypeVar
+lazy from typing import TypeVar, Callable
 
 lazy from hypothesis import given
Expression — tests/test_result.py
--- base/tests/test_result.py
+++ head/tests/test_result.py
@@ -1,7 +1,6 @@
 lazy from ty_extensions import JustFloat
-lazy from typing import Callable
 from tests._by_runtime import Optional, _soundness_check, _soundness_iter, _soundness_parametric
 lazy from dataclasses import dataclass
-lazy from typing import Any, Annotated
+lazy from typing import Any, Annotated, Callable
 
 lazy from hypothesis import given  # type: ignore
Expression — tests/test_result_builder.py
(only produced on head)
Expression — tests/test_seq.py
(only produced on base)
Expression — tests/test_seq_builder.py
--- base/tests/test_seq_builder.py
+++ head/tests/test_seq_builder.py
@@ -1,7 +1,6 @@
-lazy from typing import Any
 from tests._by_runtime import _soundness_check, _soundness_iter
 
 lazy from collections.abc import Generator, Iterable
-lazy from typing import List
+lazy from typing import List, Any
 
 lazy from pytest import raises
Expression — tests/test_tagged_union.py
--- base/tests/test_tagged_union.py
+++ head/tests/test_tagged_union.py
@@ -1,8 +1,7 @@
 lazy from ty_extensions import JustFloat
-lazy from typing import Literal
 from tests._by_runtime import _soundness_check
 
 lazy from dataclasses import asdict, dataclass
-lazy from typing import Generic, TypeVar
+lazy from typing import Generic, TypeVar, Literal
 
 lazy import pytest
PyGithub — _by_sourcemap.py
--- base/_by_sourcemap.py
+++ head/_by_sourcemap.py
@@ -4,13 +4,13 @@
... 478363 characters elided ...
     "/tmp/tmpkeqwyfs3/PyGithub/build/tests/RequiredStatusChecks.py": {"by": "sha256:02e89f7f1870cbdfeb6f79559e659cc116d0809545191f4325bf1a2171ffb89c", "py": "sha256:fd861209441fc49e9532b6870bcf9c6806acf9a0dbe7827f51db1d8db7c26a62"},
PyGithub — github/AdvisoryBase.py
--- base/github/AdvisoryBase.py
+++ head/github/AdvisoryBase.py
@@ -1,3 +1,2 @@
-lazy from typing import Any
 from github._by_runtime import _soundness_check
 ############################ Copyrights and license ############################
@@ -30,5 +29,5 @@
 
 lazy from datetime import datetime
-from typing import TYPE_CHECKING
+from typing import TYPE_CHECKING, Any
 
 lazy import github.CVSS
PyGithub — github/AdvisoryCredit.py
--- base/github/AdvisoryCredit.py
+++ head/github/AdvisoryCredit.py
@@ -1,3 +1,2 @@
-lazy from typing import Any
 from github._by_runtime import _soundness_check
 ############################ Copyrights and license ############################
@@ -32,5 +31,5 @@
 
 
-from typing import TYPE_CHECKING, Union
+from typing import TYPE_CHECKING, Union, Any
 
 lazy from typing_extensions import TypedDict
PyGithub — github/AdvisoryCreditDetailed.py
--- base/github/AdvisoryCreditDetailed.py
+++ head/github/AdvisoryCreditDetailed.py
@@ -1,3 +1,2 @@
-lazy from typing import Any
 from github._by_runtime import _soundness_check
 ############################ Copyrights and license ############################
@@ -45,5 +44,5 @@
 
 
-from typing import TYPE_CHECKING
+from typing import TYPE_CHECKING, Any
 
 lazy import github.NamedUser
PyGithub — github/AdvisoryVulnerability.py
--- base/github/AdvisoryVulnerability.py
+++ head/github/AdvisoryVulnerability.py
@@ -1,3 +1,2 @@
-lazy from typing import Any
 from github._by_runtime import _soundness_check, _soundness_iter
 ############################ Copyrights and license ############################
@@ -31,5 +30,5 @@
 
 
-from typing import TYPE_CHECKING, Union
+from typing import TYPE_CHECKING, Union, Any
 
 lazy from typing_extensions import TypedDict
PyGithub — github/ApplicationOAuth.py
--- base/github/ApplicationOAuth.py
+++ head/github/ApplicationOAuth.py
@@ -1,3 +1,2 @@
-lazy from typing import Any
 from github._by_runtime import _soundness_check
 ############################ Copyrights and license ############################
@@ -34,5 +33,5 @@
 
 lazy import urllib.parse
-from typing import TYPE_CHECKING
+from typing import TYPE_CHECKING, Any
 
 lazy import github.AccessToken
PyGithub — github/Artifact.py
--- base/github/Artifact.py
+++ head/github/Artifact.py
@@ -1,3 +1,2 @@
-lazy from typing import Any
 from github._by_runtime import _soundness_check
 ############################ Copyrights and license ############################
@@ -48,5 +47,5 @@
 
 lazy from datetime import datetime
-from typing import TYPE_CHECKING
+from typing import TYPE_CHECKING, Any
 
 lazy import github.WorkflowRun
PyGithub — github/Auth.py
--- base/github/Auth.py
+++ head/github/Auth.py
@@ -1,4 +1,5 @@
+lazy from typing import Any
 from github._by_runtime import _soundness_check
-_MISSING = object()
+_MISSING: Any = object()
 ############################ Copyrights and license ############################
 #                                                                              #
PyGithub — github/AuthenticatedUser.py
--- base/github/AuthenticatedUser.py
+++ head/github/AuthenticatedUser.py
@@ -1,5 +1,5 @@
 lazy from typing import Any
 from github._by_runtime import _soundness_check, _soundness_iter
-_MISSING = object()
+_MISSING: Any = object()
 ############################ Copyrights and license ############################
 #                                                                              #
PyGithub — github/Authorization.py
--- base/github/Authorization.py
+++ head/github/Authorization.py
@@ -1,5 +1,5 @@
 lazy from typing import Any
 from github._by_runtime import _soundness_check
-_MISSING = object()
+_MISSING: Any = object()
 ############################ Copyrights and license ############################
 #                                                                              #
PyGithub — github/Branch.py
--- base/github/Branch.py
+++ head/github/Branch.py
@@ -1,5 +1,5 @@
 lazy from typing import Any
 from github._by_runtime import _soundness_check, _soundness_iter
-_MISSING = object()
+_MISSING: Any = object()
 ############################ Copyrights and license ############################
 #                                                                              #
PyGithub — github/BranchProtection.py
--- base/github/BranchProtection.py
+++ head/github/BranchProtection.py
@@ -1,3 +1,2 @@
-lazy from typing import Any
 from github._by_runtime import _soundness_check
 ############################ Copyrights and license ############################
@@ -35,5 +34,5 @@
 
 
-from typing import TYPE_CHECKING
+from typing import TYPE_CHECKING, Any
 
 lazy import github.GithubObject
PyGithub — github/CheckRun.py
--- base/github/CheckRun.py
+++ head/github/CheckRun.py
@@ -1,5 +1,5 @@
 lazy from typing import Any
 from github._by_runtime import _soundness_check
-_MISSING = object()
+_MISSING: Any = object()
 ############################ Copyrights and license ############################
 #                                                                              #
PyGithub — github/CheckSuite.py
--- base/github/CheckSuite.py
+++ head/github/CheckSuite.py
@@ -1,5 +1,5 @@
 lazy from typing import Any
 from github._by_runtime import _soundness_check
-_MISSING = object()
+_MISSING: Any = object()
 ############################ Copyrights and license ############################
 #                                                                              #
PyGithub — github/Clones.py
--- base/github/Clones.py
+++ head/github/Clones.py
@@ -1,3 +1,2 @@
-lazy from typing import Any
 from github._by_runtime import _soundness_check
 ############################ Copyrights and license ############################
@@ -42,5 +41,5 @@
 
 
-from typing import TYPE_CHECKING
+from typing import TYPE_CHECKING, Any
 
 lazy import github.Traffic
PyGithub — github/CodeScanAlert.py
--- base/github/CodeScanAlert.py
+++ head/github/CodeScanAlert.py
@@ -1,3 +1,2 @@
-lazy from typing import Any
 from github._by_runtime import _soundness_check
 ############################ Copyrights and license ############################
@@ -34,5 +33,5 @@
 
 lazy from datetime import datetime
-from typing import TYPE_CHECKING
+from typing import TYPE_CHECKING, Any
 
 lazy import github.CodeScanAlertInstance
PyGithub — github/CodeScanAlertInstance.py
--- base/github/CodeScanAlertInstance.py
+++ head/github/CodeScanAlertInstance.py
@@ -1,3 +1,2 @@
-lazy from typing import Any
 from github._by_runtime import _soundness_check
 ############################ Copyrights and license ############################
@@ -30,5 +29,5 @@
 
 
-from typing import TYPE_CHECKING
+from typing import TYPE_CHECKING, Any
 
 lazy import github.CodeScanAlertInstanceLocation
PyGithub — github/CodeSecurityConfigRepository.py
--- base/github/CodeSecurityConfigRepository.py
+++ head/github/CodeSecurityConfigRepository.py
@@ -1,3 +1,2 @@
-lazy from typing import Any
 from github._by_runtime import _soundness_check
 ############################ Copyrights and license ############################
@@ -27,5 +26,5 @@
 
 
-from typing import TYPE_CHECKING
+from typing import TYPE_CHECKING, Any
 
 lazy import github.Repository
PyGithub — github/Commit.py
--- base/github/Commit.py
+++ head/github/Commit.py
@@ -2,5 +2,5 @@
 lazy from typing import Any
 from github._by_runtime import _soundness_check
-_MISSING = object()
+_MISSING: Any = object()
 ############################ Copyrights and license ############################
 #                                                                              #
PyGithub — github/CommitCombinedStatus.py
--- base/github/CommitCombinedStatus.py
+++ head/github/CommitCombinedStatus.py
@@ -1,3 +1,2 @@
-lazy from typing import Any
 from github._by_runtime import _soundness_check
 ############################ Copyrights and license ############################
@@ -44,5 +43,5 @@
 
 
-from typing import TYPE_CHECKING
+from typing import TYPE_CHECKING, Any
 
 lazy import github.CommitStatus
PyGithub — github/CommitComment.py
--- base/github/CommitComment.py
+++ head/github/CommitComment.py
@@ -1,3 +1,2 @@
-lazy from typing import Any
 from github._by_runtime import _soundness_check
 ############################ Copyrights and license ############################
@@ -47,5 +46,5 @@
 
 lazy from datetime import datetime
-from typing import TYPE_CHECKING
+from typing import TYPE_CHECKING, Any
 
 lazy import github.GithubObject
PyGithub — github/CommitStatus.py
--- base/github/CommitStatus.py
+++ head/github/CommitStatus.py
@@ -1,3 +1,2 @@
-lazy from typing import Any
 from github._by_runtime import _soundness_check
 ############################ Copyrights and license ############################
@@ -43,5 +42,5 @@
 
 lazy from datetime import datetime
-from typing import TYPE_CHECKING
+from typing import TYPE_CHECKING, Any
 
 lazy import github.GithubObject
PyGithub — github/Comparison.py
--- base/github/Comparison.py
+++ head/github/Comparison.py
@@ -1,3 +1,2 @@
-lazy from typing import Any
 from github._by_runtime import _soundness_check
 ############################ Copyrights and license ############################
@@ -41,5 +40,5 @@
 
 
-from typing import TYPE_CHECKING
+from typing import TYPE_CHECKING, Any
 
 lazy import github.Commit
PyGithub — github/ContentFile.py
--- base/github/ContentFile.py
+++ head/github/ContentFile.py
@@ -1,4 +1,3 @@
 lazy from ty_extensions import JustFloat
-lazy from typing import Any
 from github._by_runtime import _soundness_check
 ############################ Copyrights and license ############################
@@ -49,5 +48,5 @@
 lazy import base64
 lazy from datetime import datetime
-from typing import TYPE_CHECKING
+from typing import TYPE_CHECKING, Any
 
 lazy import github.GitCommit
PyGithub — github/Copilot.py
--- base/github/Copilot.py
+++ head/github/Copilot.py
@@ -1,3 +1,2 @@
-lazy from typing import Any
 from github._by_runtime import _soundness_check
 ############################ Copyrights and license ############################
@@ -25,5 +24,5 @@
 
 
-from typing import TYPE_CHECKING
+from typing import TYPE_CHECKING, Any
 
 lazy import github.CopilotSeat
PyGithub — github/CopilotSeat.py
--- base/github/CopilotSeat.py
+++ head/github/CopilotSeat.py
@@ -1,3 +1,2 @@
-lazy from typing import Any
 from github._by_runtime import _soundness_check
 ############################ Copyrights and license ############################
@@ -27,5 +26,5 @@
 
 lazy from datetime import datetime
-from typing import TYPE_CHECKING
+from typing import TYPE_CHECKING, Any
 
 lazy import github.NamedUser
PyGithub — github/DefaultCodeSecurityConfig.py
--- base/github/DefaultCodeSecurityConfig.py
+++ head/github/DefaultCodeSecurityConfig.py
@@ -1,3 +1,2 @@
-lazy from typing import Any
 from github._by_runtime import _soundness_check
 ############################ Copyrights and license ############################
@@ -44,5 +43,5 @@
 
 
-from typing import TYPE_CHECKING
+from typing import TYPE_CHECKING, Any
 
 lazy import github.CodeSecurityConfig
PyGithub — github/DependabotAlert.py
--- base/github/DependabotAlert.py
+++ head/github/DependabotAlert.py
@@ -1,3 +1,2 @@
-lazy from typing import Any
 from github._by_runtime import _soundness_check
 ############################ Copyrights and license ############################
@@ -28,5 +27,5 @@
 
 lazy from datetime import datetime
-from typing import TYPE_CHECKING
+from typing import TYPE_CHECKING, Any
 
 lazy import github.AdvisoryVulnerabilityPackage
PyGithub — github/DependabotAlertAdvisory.py
--- base/github/DependabotAlertAdvisory.py
+++ head/github/DependabotAlertAdvisory.py
@@ -1,3 +1,2 @@
-lazy from typing import Any
 from github._by_runtime import _soundness_check
 ############################ Copyrights and license ############################
@@ -27,5 +26,5 @@
 
 
-from typing import TYPE_CHECKING
+from typing import TYPE_CHECKING, Any
 
 lazy import github.DependabotAlertVulnerability
PyGithub — github/DependabotAlertDependency.py
--- base/github/DependabotAlertDependency.py
+++ head/github/DependabotAlertDependency.py
@@ -1,3 +1,2 @@
-lazy from typing import Any
 from github._by_runtime import _soundness_check
 ############################ Copyrights and license ############################
@@ -28,5 +27,5 @@
 
 
-from typing import TYPE_CHECKING
+from typing import TYPE_CHECKING, Any
 
 lazy import github.AdvisoryVulnerabilityPackage
PyGithub — github/DependabotAlertVulnerability.py
--- base/github/DependabotAlertVulnerability.py
+++ head/github/DependabotAlertVulnerability.py
@@ -1,3 +1,2 @@
-lazy from typing import Any
 from github._by_runtime import _soundness_check
 ############################ Copyrights and license ############################
@@ -26,5 +25,5 @@
 
 
-from typing import TYPE_CHECKING
+from typing import TYPE_CHECKING, Any
 
 lazy import github.AdvisoryVulnerabilityPackage
PyGithub — github/Deployment.py
--- base/github/Deployment.py
+++ head/github/Deployment.py
@@ -1,5 +1,5 @@
 lazy from typing import Any
 from github._by_runtime import _soundness_check
-_MISSING = object()
+_MISSING: Any = object()
 ############################ Copyrights and license ############################
 #                                                                              #
PyGithub — github/DeploymentStatus.py
--- base/github/DeploymentStatus.py
+++ head/github/DeploymentStatus.py
@@ -1,3 +1,2 @@
-lazy from typing import Any
 from github._by_runtime import _soundness_check
 ############################ Copyrights and license ############################
@@ -47,5 +46,5 @@
 
 lazy from datetime import datetime
-from typing import TYPE_CHECKING
+from typing import TYPE_CHECKING, Any
 
 lazy import github.GithubApp
PyGithub — github/DiscussionBase.py
--- base/github/DiscussionBase.py
+++ head/github/DiscussionBase.py
@@ -1,3 +1,2 @@
-lazy from typing import Any
 from github._by_runtime import _soundness_check
 ############################ Copyrights and license ############################
@@ -44,5 +43,5 @@
 
 lazy from datetime import datetime
-from typing import TYPE_CHECKING
+from typing import TYPE_CHECKING, Any
 
 lazy import github.GithubObject
PyGithub — github/DiscussionCommentBase.py
--- base/github/DiscussionCommentBase.py
+++ head/github/DiscussionCommentBase.py
@@ -1,3 +1,2 @@
-lazy from typing import Any
 from github._by_runtime import _soundness_check
 ############################ Copyrights and license ############################
@@ -44,5 +43,5 @@
 
 lazy from datetime import datetime
-from typing import TYPE_CHECKING
+from typing import TYPE_CHECKING, Any
 
 lazy import github.GithubObject
PyGithub — github/Enterprise.py
--- base/github/Enterprise.py
+++ head/github/Enterprise.py
@@ -1,3 +1,2 @@
-lazy from typing import Any
 from github._by_runtime import _soundness_check
 ############################ Copyrights and license ############################
@@ -44,5 +43,5 @@
 
 lazy from datetime import datetime
-from typing import TYPE_CHECKING
+from typing import TYPE_CHECKING, Any
 
 lazy from typing_extensions import deprecated
PyGithub — github/EnterpriseConsumedLicenses.py
--- base/github/EnterpriseConsumedLicenses.py
+++ head/github/EnterpriseConsumedLicenses.py
@@ -1,3 +1,2 @@
-lazy from typing import Any
 from github._by_runtime import _soundness_check
 ############################ Copyrights and license ############################
@@ -43,5 +42,5 @@
 
 
-from typing import TYPE_CHECKING
+from typing import TYPE_CHECKING, Any
 
 lazy import github.NamedEnterpriseUser
PyGithub — github/Environment.py
--- base/github/Environment.py
+++ head/github/Environment.py
@@ -1,3 +1,2 @@
-lazy from typing import Any
 from github._by_runtime import _soundness_check
 ############################ Copyrights and license ############################
@@ -46,5 +45,5 @@
 lazy import urllib.parse
 lazy from datetime import datetime
-from typing import TYPE_CHECKING
+from typing import TYPE_CHECKING, Any
 
 lazy import github.EnvironmentDeploymentBranchPolicy
PyGithub — github/EnvironmentProtectionRule.py
--- base/github/EnvironmentProtectionRule.py
+++ head/github/EnvironmentProtectionRule.py
@@ -1,3 +1,2 @@
-lazy from typing import Any
 from github._by_runtime import _soundness_check
 ############################ Copyrights and license ############################
@@ -45,5 +44,5 @@
 
 
-from typing import TYPE_CHECKING
+from typing import TYPE_CHECKING, Any
 
 lazy import github.EnvironmentProtectionRuleReviewer
PyGithub — github/EnvironmentProtectionRuleReviewer.py
--- base/github/EnvironmentProtectionRuleReviewer.py
+++ head/github/EnvironmentProtectionRuleReviewer.py
@@ -1,3 +1,2 @@
-lazy from typing import Any
 from github._by_runtime import _soundness_check
 ############################ Copyrights and license ############################
@@ -44,5 +43,5 @@
 
 
-from typing import TYPE_CHECKING
+from typing import TYPE_CHECKING, Any
 
 lazy import github.NamedUser
PyGithub — github/Event.py
--- base/github/Event.py
+++ head/github/Event.py
@@ -1,3 +1,2 @@
-lazy from typing import Any
 from github._by_runtime import _soundness_check
 ############################ Copyrights and license ############################
@@ -44,5 +43,5 @@
 
 lazy from datetime import datetime
-from typing import TYPE_CHECKING
+from typing import TYPE_CHECKING, Any
 
 lazy import github.GithubObject
PyGithub — github/Gist.py
--- base/github/Gist.py
+++ head/github/Gist.py
@@ -1,5 +1,5 @@
 lazy from typing import Any
 from github._by_runtime import _soundness_check, _soundness_iter
-_MISSING = object()
+_MISSING: Any = object()
 ############################ Copyrights and license ############################
 #                                                                              #
PyGithub — github/GistComment.py
--- base/github/GistComment.py
+++ head/github/GistComment.py
@@ -1,3 +1,2 @@
-lazy from typing import Any
 from github._by_runtime import _soundness_check
 ############################ Copyrights and license ############################
@@ -45,5 +44,5 @@
 
 lazy from datetime import datetime
-from typing import TYPE_CHECKING
+from typing import TYPE_CHECKING, Any
 
 lazy import github.GithubObject
PyGithub — github/GistHistoryState.py
--- base/github/GistHistoryState.py
+++ head/github/GistHistoryState.py
@@ -1,3 +1,2 @@
-lazy from typing import Any
 from github._by_runtime import _soundness_check
 ############################ Copyrights and license ############################
@@ -42,5 +41,5 @@
 
 lazy from datetime import datetime
-from typing import TYPE_CHECKING
+from typing import TYPE_CHECKING, Any
 
 lazy import github.CommitStats
PyGithub — github/GitCommit.py
--- base/github/GitCommit.py
+++ head/github/GitCommit.py
@@ -1,3 +1,2 @@
-lazy from typing import Any
 from github._by_runtime import _soundness_check
 ############################ Copyrights and license ############################
@@ -44,5 +43,5 @@
 
 lazy from datetime import datetime
-from typing import TYPE_CHECKING
+from typing import TYPE_CHECKING, Any
 
 lazy import github.GitAuthor
PyGithub — github/GitRef.py
--- base/github/GitRef.py
+++ head/github/GitRef.py
@@ -1,5 +1,6 @@
+lazy from builtins import object as object2
 lazy from typing import Any
 from github._by_runtime import _soundness_check
-_MISSING = object()
+_MISSING: Any = object2()
 ############################ Copyrights and license ############################
 #                                                                              #
PyGithub — github/GitRelease.py
--- base/github/GitRelease.py
+++ head/github/GitRelease.py
@@ -1,5 +1,5 @@
 lazy from typing import Any
 from github._by_runtime import _soundness_check
-_MISSING = object()
+_MISSING: Any = object()
 ############################ Copyrights and license ############################
 #                                                                              #
PyGithub — github/GitReleaseAsset.py
--- base/github/GitReleaseAsset.py
+++ head/github/GitReleaseAsset.py
@@ -1,3 +1,2 @@
-lazy from typing import Any
 from github._by_runtime import _soundness_check
 ############################ Copyrights and license ############################
@@ -50,5 +49,5 @@
 lazy from collections.abc import Iterator
 lazy from datetime import datetime
-from typing import TYPE_CHECKING
+from typing import TYPE_CHECKING, Any
 
 lazy import github.NamedUser
PyGithub — github/GitTag.py
--- base/github/GitTag.py
+++ head/github/GitTag.py
@@ -1,3 +1,2 @@
-lazy from typing import Any
 from github._by_runtime import _soundness_check
 ############################ Copyrights and license ############################
@@ -42,5 +41,5 @@
 
 
-from typing import TYPE_CHECKING
+from typing import TYPE_CHECKING, Any
 
 lazy import github.GitAuthor
PyGithub — github/GitTree.py
--- base/github/GitTree.py
+++ head/github/GitTree.py
@@ -1,3 +1,2 @@
-lazy from typing import Any
 from github._by_runtime import _soundness_check
 ############################ Copyrights and license ############################
@@ -42,5 +41,5 @@
 
 
-from typing import TYPE_CHECKING
+from typing import TYPE_CHECKING, Any
 
 lazy import github.GitTreeElement
Tanjun — tests/test_annotations.py
(only produced on base)
Tanjun — tests/test_annotations_future_annotations.py
(only produced on base)

5491 finding(s) omitted to fit GitHub's 65536-character comment limit. Every finding, with nothing elided, is in the roundtrip-report.md artifact of this run.

@github-actions

Copy link
Copy Markdown
Contributor

ecosystem check

Linter (stable)

✅ ecosystem check detected no linter changes.

Linter (preview)

✅ ecosystem check detected no linter changes.

Formatter (stable)

✅ ecosystem check detected no format changes.

Formatter (preview)

✅ ecosystem check detected no format changes.

@KotlinIsland
KotlinIsland deleted the claude/native-declines-perf branch September 25, 2026 04:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant