Skip to content

[ty] Fix Self specialization for bound methods on union-bounded typevars#24425

Draft
charliermarsh wants to merge 3 commits intomainfrom
charlie/test
Draft

[ty] Fix Self specialization for bound methods on union-bounded typevars#24425
charliermarsh wants to merge 3 commits intomainfrom
charlie/test

Conversation

@charliermarsh
Copy link
Copy Markdown
Member

No description provided.

@astral-sh-bot astral-sh-bot bot added the ty Multi-file analysis & type inference label Apr 5, 2026
@astral-sh-bot
Copy link
Copy Markdown

astral-sh-bot bot commented Apr 5, 2026

Typing conformance results

No changes detected ✅

Current numbers
The percentage of diagnostics emitted that were expected errors held steady at 87.72%. The percentage of expected errors that received a diagnostic held steady at 82.85%. The number of fully passing files held steady at 74/132.

@astral-sh-bot
Copy link
Copy Markdown

astral-sh-bot bot commented Apr 5, 2026

Memory usage report

Summary

Project Old New Diff Outcome
sphinx 264.96MB 264.97MB +0.00% (7.59kB)
trio 117.82MB 117.82MB +0.00% (4.18kB)
flake8 48.02MB 48.02MB +0.00% (1.20kB)
prefect 717.91MB 717.89MB -0.00% (16.99kB) ⬇️

Significant changes

Click to expand detailed breakdown

sphinx

Name Old New Diff Outcome
BoundMethodType<'db>::into_callable_type_ 278.27kB 285.87kB +2.73% (7.59kB)

trio

Name Old New Diff Outcome
BoundMethodType<'db>::into_callable_type_ 73.56kB 78.13kB +6.21% (4.57kB)
infer_expression_types_impl 7.09MB 7.09MB -0.00% (156.00B)
Specialization 464.83kB 464.72kB -0.02% (112.00B)
Type<'db>::apply_specialization_::interned_arguments 641.56kB 641.48kB -0.01% (80.00B)
Type<'db>::apply_specialization_ 729.46kB 729.41kB -0.01% (56.00B)

flake8

Name Old New Diff Outcome
BoundMethodType<'db>::into_callable_type_ 27.61kB 28.80kB +4.33% (1.20kB)

prefect

Name Old New Diff Outcome
BoundMethodType<'db>::into_callable_type_ 317.80kB 330.32kB +3.94% (12.52kB) ⬇️
check_file_impl 17.98MB 17.97MB -0.06% (10.53kB) ⬇️
Type<'db>::apply_specialization_::interned_arguments 2.93MB 2.92MB -0.28% (8.44kB) ⬇️
Type<'db>::apply_specialization_ 3.66MB 3.65MB -0.16% (5.84kB) ⬇️
Specialization 2.53MB 2.53MB -0.11% (2.84kB) ⬇️
infer_definition_types 90.07MB 90.07MB -0.00% (2.42kB) ⬇️
infer_scope_types_impl 54.29MB 54.29MB -0.00% (840.00B) ⬇️
Type<'db>::try_call_dunder_get_ 10.82MB 10.82MB +0.01% (568.00B) ⬇️
TupleType 716.72kB 716.20kB -0.07% (528.00B) ⬇️
InferableTypeVarsInner 198.48kB 198.99kB +0.25% (516.00B) ⬇️
infer_expression_types_impl 62.08MB 62.08MB -0.00% (420.00B) ⬇️
StaticClassLiteral<'db>::try_mro_ 5.91MB 5.91MB +0.01% (416.00B) ⬇️
bound_typevar_default_type 27.64kB 27.26kB -1.38% (392.00B) ⬇️
Type<'db>::class_member_with_policy_ 17.99MB 17.99MB +0.00% (292.00B) ⬇️
inferable_typevars_inner 69.37kB 69.57kB +0.29% (204.00B) ⬇️
... 13 more

@astral-sh-bot
Copy link
Copy Markdown

astral-sh-bot bot commented Apr 6, 2026

ecosystem-analyzer results

Lint rule Added Removed Changed
invalid-argument-type 5 38 2
invalid-return-type 1 1 9
invalid-assignment 1 6 1
no-matching-overload 0 6 0
possibly-missing-implicit-call 2 0 0
not-iterable 0 1 0
unresolved-attribute 0 0 1
unsupported-operator 0 1 0
Total 9 53 13
Raw diff (75 changes)
aiohttp (https://github.com/aio-libs/aiohttp)
- aiohttp/client.py:1534:16 error[invalid-return-type] Return type does not match returned value: expected `_RetType_co@_BaseRequestContextManager`, found `ClientResponse | Unknown`
+ aiohttp/client.py:1534:16 error[invalid-return-type] Return type does not match returned value: expected `_RetType_co@_BaseRequestContextManager`, found `ClientResponse | _RetType_co@_BaseRequestContextManager`
- aiohttp/client.py:1534:22 error[invalid-argument-type] Argument to bound method `__aenter__` is incorrect: Argument type `_RetType_co@_BaseRequestContextManager` does not satisfy upper bound `ClientWebSocketResponse[_DecodeText@ClientWebSocketResponse]` of type variable `Self`
- aiohttp/client.py:1542:15 error[invalid-argument-type] Argument to bound method `__aexit__` is incorrect: Argument type `_RetType_co@_BaseRequestContextManager` does not satisfy upper bound `ClientWebSocketResponse[_DecodeText@ClientWebSocketResponse]` of type variable `Self`

core (https://github.com/home-assistant/core)
- homeassistant/components/asuswrt/helpers.py:44:16 error[invalid-return-type] Return type does not match returned value: expected `T@translate_to_legacy`, found `dict[Unknown, object]`
+ homeassistant/components/asuswrt/helpers.py:44:16 error[invalid-return-type] Return type does not match returned value: expected `T@translate_to_legacy`, found `dict[str, Any]`
- homeassistant/components/asuswrt/helpers.py:44:17 error[no-matching-overload] No overload of bound method `get` matches arguments

hydpy (https://github.com/hydpy-dev/hydpy)
- hydpy/auxs/iuhtools.py:516:13 error[invalid-argument-type] Method `__getitem__` of type `Overload[(key: ndarray[tuple[Any, ...], dtype[integer[Any] | numpy.bool[builtins.bool]]] | tuple[ndarray[tuple[Any, ...], dtype[integer[Any] | numpy.bool[builtins.bool]]], ...], /) -> ndarray[tuple[Any, ...], dtype[float64]], (key: SupportsIndex | tuple[SupportsIndex, ...], /) -> Any, (key: SupportsIndex | slice[Any, Any, Any] | EllipsisType | ... omitted 5 union elements, /) -> ndarray[tuple[Any, ...], dtype[float64]], (key: str, /) -> ndarray[tuple[int] | tuple[Any, ...], dtype[Any]], (key: list[str], /) -> ndarray[tuple[int] | tuple[Any, ...], Unknown]]` cannot be called with key of type `bool` on object of type `VectorFloatFlex@__call__`
- hydpy/auxs/iuhtools.py:516:13 error[invalid-argument-type] Method `__getitem__` of type `Overload[(key: ndarray[tuple[Any, ...], dtype[integer[Any] | numpy.bool[builtins.bool]]] | tuple[ndarray[tuple[Any, ...], dtype[integer[Any] | numpy.bool[builtins.bool]]], ...], /) -> ndarray[tuple[Any, ...], dtype[float64]], (key: SupportsIndex | tuple[SupportsIndex, ...], /) -> Any, (key: SupportsIndex | slice[Any, Any, Any] | EllipsisType | ... omitted 5 union elements, /) -> ndarray[tuple[Any, ...], dtype[float64]], (key: str, /) -> ndarray[tuple[int] | tuple[Any, ...], dtype[Any]], (key: list[str], /) -> ndarray[tuple[int] | tuple[Any, ...], Unknown]]` cannot be called with key of type `ndarray[tuple[Any, ...], dtype[numpy.bool[builtins.bool]]]` on object of type `VectorFloatFlex@__call__`
+ hydpy/auxs/iuhtools.py:516:13 warning[possibly-missing-implicit-call] Method `__getitem__` of type `VectorFloatFlex@__call__` may be missing
+ hydpy/auxs/iuhtools.py:516:13 warning[possibly-missing-implicit-call] Method `__getitem__` of type `VectorFloatFlex@__call__` may be missing
+ hydpy/auxs/iuhtools.py:516:13 error[invalid-assignment] Object of type `Any | ndarray[tuple[Any, ...], dtype[float64]]` is not assignable to `VectorFloatFlex@__call__`

pandas (https://github.com/pandas-dev/pandas)
+ pandas/core/algorithms.py:223:12 error[invalid-return-type] Return type does not match returned value: expected `ArrayLikeT@_reconstruct_data`, found `Unknown | ndarray[tuple[Any, ...], Unknown]`
- pandas/core/arrays/datetimes.py:3106:21 error[invalid-assignment] Object of type `Timestamp` is not assignable to `_TimestampNoneT1@_maybe_normalize_endpoints`
- pandas/core/arrays/datetimes.py:3109:19 error[invalid-assignment] Object of type `Timestamp` is not assignable to `_TimestampNoneT2@_maybe_normalize_endpoints`
- pandas/core/dtypes/cast.py:388:16 error[invalid-return-type] Return type does not match returned value: expected `NumpyIndexT@maybe_upcast_numeric_to_64bit`, found `Unknown | Index`
+ pandas/core/dtypes/cast.py:388:16 error[invalid-return-type] Return type does not match returned value: expected `NumpyIndexT@maybe_upcast_numeric_to_64bit`, found `ndarray[tuple[Any, ...], Unknown] | Index`
- pandas/core/dtypes/cast.py:388:16 error[no-matching-overload] No overload of bound method `astype` matches arguments
- pandas/core/dtypes/cast.py:390:16 error[invalid-return-type] Return type does not match returned value: expected `NumpyIndexT@maybe_upcast_numeric_to_64bit`, found `Unknown | Index`
+ pandas/core/dtypes/cast.py:390:16 error[invalid-return-type] Return type does not match returned value: expected `NumpyIndexT@maybe_upcast_numeric_to_64bit`, found `ndarray[tuple[Any, ...], Unknown] | Index`
- pandas/core/dtypes/cast.py:390:16 error[no-matching-overload] No overload of bound method `astype` matches arguments
- pandas/core/dtypes/cast.py:392:16 error[invalid-return-type] Return type does not match returned value: expected `NumpyIndexT@maybe_upcast_numeric_to_64bit`, found `Unknown | Index`
+ pandas/core/dtypes/cast.py:392:16 error[invalid-return-type] Return type does not match returned value: expected `NumpyIndexT@maybe_upcast_numeric_to_64bit`, found `ndarray[tuple[Any, ...], Unknown] | Index`
- pandas/core/dtypes/cast.py:392:16 error[no-matching-overload] No overload of bound method `astype` matches arguments
- pandas/core/resample.py:3208:12 error[invalid-return-type] Return type does not match returned value: expected `FreqIndexT@_asfreq_compat`, found `PeriodIndex | DatetimeIndex | TimedeltaIndex`
+ pandas/core/resample.py:3208:12 error[invalid-return-type] Return type does not match returned value: expected `FreqIndexT@_asfreq_compat`, found `(FreqIndexT@_asfreq_compat & PeriodIndex) | DatetimeIndex | TimedeltaIndex`

prefect (https://github.com/PrefectHQ/prefect)
- src/prefect/utilities/templating.py:92:47 error[invalid-argument-type] Argument to function `find_placeholders` is incorrect: Argument type `object` does not satisfy constraints (`str`, `int`, `int | float`, `bool`, `dict[Any, Any]`, `list[Any]`, `None`) of type variable `T`
- src/prefect/utilities/templating.py:224:29 error[no-matching-overload] No overload of function `apply_values` matches arguments
- src/prefect/utilities/templating.py:232:17 error[invalid-assignment] Invalid subscript assignment with key of type `object` and value of type `Unknown & ~<class 'NotSet'>` on object of type `dict[str, Any]`
- src/prefect/utilities/templating.py:234:17 error[invalid-assignment] Invalid subscript assignment with key of type `object` and value of type `object` on object of type `dict[str, Any]`
- src/prefect/utilities/templating.py:330:29 error[no-matching-overload] No overload of bound method `get` matches arguments
- src/prefect/utilities/templating.py:339:13 error[invalid-assignment] Invalid subscript assignment with key of type `object` and value of type `Unknown` on object of type `dict[str, Any]`
- src/prefect/utilities/templating.py:456:16 error[invalid-return-type] Return type does not match returned value: expected `T@resolve_variables`, found `dict[object, Unknown]`
+ src/prefect/utilities/templating.py:456:16 error[invalid-return-type] Return type does not match returned value: expected `T@resolve_variables`, found `dict[Any, Unknown]`

scikit-build-core (https://github.com/scikit-build/scikit-build-core)
- src/scikit_build_core/metadata/__init__.py:89:24 error[invalid-argument-type] Argument is incorrect: Expected `str`, found `object`
+ src/scikit_build_core/metadata/__init__.py:89:35 error[invalid-argument-type] Argument is incorrect: Expected `str`, found `str | list[str] | dict[str, str]`
- src/scikit_build_core/metadata/__init__.py:89:35 error[invalid-argument-type] Argument is incorrect: Expected `str`, found `object`
- src/scikit_build_core/metadata/__init__.py:107:16 error[invalid-return-type] Return type does not match returned value: expected `T@_process_dynamic_metadata`, found `dict[object, dict[str, str]]`
+ src/scikit_build_core/metadata/__init__.py:107:16 error[invalid-return-type] Return type does not match returned value: expected `T@_process_dynamic_metadata`, found `dict[str, dict[str, str]]`
- src/scikit_build_core/metadata/__init__.py:108:51 error[unresolved-attribute] Object of type `object` has no attribute `items`
+ src/scikit_build_core/metadata/__init__.py:108:51 error[unresolved-attribute] Attribute `items` is not defined on `str`, `list[str]` in union `str | list[str] | dict[str, str]`
- src/scikit_build_core/metadata/__init__.py:117:16 error[invalid-return-type] Return type does not match returned value: expected `T@_process_dynamic_metadata`, found `dict[object, list[str]]`
+ src/scikit_build_core/metadata/__init__.py:117:16 error[invalid-return-type] Return type does not match returned value: expected `T@_process_dynamic_metadata`, found `dict[str, list[str]]`
- src/scikit_build_core/metadata/__init__.py:117:40 error[not-iterable] Object of type `object` is not iterable

spack (https://github.com/spack/spack)
- lib/spack/spack/vendor/markupsafe/__init__.py:248:13 error[invalid-assignment] Invalid subscript assignment with key of type `Any` and value of type `Markup` on object of type `_ListOrDict@_escape_argspec`

xarray (https://github.com/pydata/xarray)
- xarray/computation/rolling.py:199:9 error[unsupported-operator] Operator `/=` is not supported between objects of type `T_Xarray@Rolling` and `Unknown`
- xarray/computation/rolling.py:1216:20 error[invalid-return-type] Return type does not match returned value: expected `T_Xarray@Coarsen`, found `DataArray`
- xarray/core/coordinates.py:1214:69 error[invalid-argument-type] Method `__getitem__` of type `(bound method T_Xarray@assert_coordinate_consistent.__getitem__(key: Any) -> T_Xarray@assert_coordinate_consistent) | (Overload[(key: Hashable) -> DataArray, (key: Iterable[Hashable]) -> T_Xarray@assert_coordinate_consistent])` cannot be called with key of type `Unknown` on object of type `T_Xarray@assert_coordinate_consistent`
- xarray/core/coordinates.py:1217:51 error[invalid-argument-type] Method `__getitem__` of type `(bound method T_Xarray@assert_coordinate_consistent.__getitem__(key: Any) -> T_Xarray@assert_coordinate_consistent) | (Overload[(key: Hashable) -> DataArray, (key: Iterable[Hashable]) -> T_Xarray@assert_coordinate_consistent])` cannot be called with key of type `Unknown` on object of type `T_Xarray@assert_coordinate_consistent`
- xarray/core/groupby.py:688:25 error[invalid-argument-type] Argument to bound method `transpose` is incorrect: Argument type `T_Xarray@GroupBy` does not satisfy upper bound `DataArray` of type variable `Self`
- xarray/core/groupby.py:688:25 error[invalid-argument-type] Argument to bound method `transpose` is incorrect: Argument type `T_Xarray@GroupBy` does not satisfy upper bound `Dataset` of type variable `Self`
- xarray/core/groupby.py:712:27 error[invalid-argument-type] Argument to bound method `isel` is incorrect: Argument type `T_Xarray@GroupBy` does not satisfy upper bound `DataArray` of type variable `Self`
- xarray/core/groupby.py:712:27 error[invalid-argument-type] Argument to bound method `isel` is incorrect: Argument type `T_Xarray@GroupBy` does not satisfy upper bound `Dataset` of type variable `Self`
- xarray/core/groupby.py:776:20 error[invalid-argument-type] Argument to bound method `_shuffle` is incorrect: Argument type `T_Xarray@GroupBy` does not satisfy upper bound `DataArray` of type variable `Self`
- xarray/core/groupby.py:776:20 error[invalid-argument-type] Argument to bound method `_shuffle` is incorrect: Argument type `T_Xarray@GroupBy` does not satisfy upper bound `Dataset` of type variable `Self`
- xarray/core/groupby.py:781:20 error[invalid-argument-type] Argument to bound method `_from_temp_dataset` is incorrect: Argument type `T_Xarray@GroupBy` does not satisfy upper bound `DataArray` of type variable `Self`
- xarray/core/groupby.py:843:16 error[invalid-argument-type] Argument to bound method `isel` is incorrect: Argument type `T_Xarray@GroupBy` does not satisfy upper bound `DataArray` of type variable `Self`
- xarray/core/groupby.py:843:16 error[invalid-argument-type] Argument to bound method `isel` is incorrect: Argument type `T_Xarray@GroupBy` does not satisfy upper bound `Dataset` of type variable `Self`
- xarray/core/groupby.py:871:23 error[invalid-argument-type] Argument to bound method `isel` is incorrect: Argument type `T_Xarray@GroupBy` does not satisfy upper bound `DataArray` of type variable `Self`
- xarray/core/groupby.py:871:23 error[invalid-argument-type] Argument to bound method `isel` is incorrect: Argument type `T_Xarray@GroupBy` does not satisfy upper bound `Dataset` of type variable `Self`
- xarray/core/groupby.py:963:24 error[invalid-argument-type] Method `__getitem__` of type `(bound method T_Xarray@GroupBy.__getitem__(key: Any) -> T_Xarray@GroupBy) | (Overload[(key: Hashable) -> DataArray, (key: Iterable[Hashable]) -> T_Xarray@GroupBy])` cannot be called with key of type `Unknown` on object of type `T_Xarray@GroupBy`
- xarray/core/groupby.py:964:35 error[invalid-argument-type] Method `__getitem__` of type `(bound method T_Xarray@GroupBy.__getitem__(key: Any) -> T_Xarray@GroupBy) | (Overload[(key: Hashable) -> DataArray, (key: Iterable[Hashable]) -> T_Xarray@GroupBy])` cannot be called with key of type `Unknown` on object of type `T_Xarray@GroupBy`
- xarray/core/groupby.py:1148:13 error[invalid-argument-type] Argument to bound method `drop_vars` is incorrect: Argument type `T_Xarray@GroupBy` does not satisfy upper bound `DataArray` of type variable `Self`
- xarray/core/groupby.py:1148:13 error[invalid-argument-type] Argument to bound method `drop_vars` is incorrect: Argument type `T_Xarray@GroupBy` does not satisfy upper bound `Dataset` of type variable `Self`
- xarray/core/groupby.py:1227:15 error[invalid-argument-type] Argument to bound method `transpose` is incorrect: Argument type `T_Xarray@GroupBy` does not satisfy upper bound `DataArray` of type variable `Self`
- xarray/core/groupby.py:1227:15 error[invalid-argument-type] Argument to bound method `transpose` is incorrect: Argument type `T_Xarray@GroupBy` does not satisfy upper bound `Dataset` of type variable `Self`
- xarray/core/indexes.py:1929:23 error[invalid-assignment] Object of type `Index` is not assignable to `T_PandasOrXarrayIndex@Indexes`
+ xarray/core/indexes.py:1929:23 error[invalid-assignment] Object of type `PandasIndex | (T_PandasOrXarrayIndex@Indexes & Index)` is not assignable to `T_PandasOrXarrayIndex@Indexes`
- xarray/core/resample.py:107:16 error[invalid-argument-type] Argument to bound method `drop_vars` is incorrect: Argument type `T_Xarray@Resample` does not satisfy upper bound `DataArray` of type variable `Self`
- xarray/core/resample.py:107:16 error[invalid-argument-type] Argument to bound method `drop_vars` is incorrect: Argument type `T_Xarray@Resample` does not satisfy upper bound `Dataset` of type variable `Self`
- xarray/core/resample.py:129:23 error[invalid-argument-type] Argument to bound method `drop_vars` is incorrect: Argument type `T_Xarray@Resample` does not satisfy upper bound `DataArray` of type variable `Self`
- xarray/core/resample.py:129:23 error[invalid-argument-type] Argument to bound method `drop_vars` is incorrect: Argument type `T_Xarray@Resample` does not satisfy upper bound `Dataset` of type variable `Self`
- xarray/core/resample.py:151:16 error[invalid-argument-type] Argument to bound method `reindex` is incorrect: Argument type `T_Xarray@Resample` does not satisfy upper bound `DataArray` of type variable `Self`
- xarray/core/resample.py:151:16 error[invalid-argument-type] Argument to bound method `reindex` is incorrect: Argument type `T_Xarray@Resample` does not satisfy upper bound `Dataset` of type variable `Self`
- xarray/core/resample.py:178:16 error[invalid-argument-type] Argument to bound method `reindex` is incorrect: Argument type `T_Xarray@Resample` does not satisfy upper bound `DataArray` of type variable `Self`
- xarray/core/resample.py:178:16 error[invalid-argument-type] Argument to bound method `reindex` is incorrect: Argument type `T_Xarray@Resample` does not satisfy upper bound `Dataset` of type variable `Self`
- xarray/core/resample.py:206:16 error[invalid-argument-type] Argument to bound method `reindex` is incorrect: Argument type `T_Xarray@Resample` does not satisfy upper bound `DataArray` of type variable `Self`
- xarray/core/resample.py:206:16 error[invalid-argument-type] Argument to bound method `reindex` is incorrect: Argument type `T_Xarray@Resample` does not satisfy upper bound `Dataset` of type variable `Self`
- xarray/core/resample.py:245:16 error[invalid-argument-type] Argument to bound method `interp` is incorrect: Argument type `T_Xarray@Resample` does not satisfy upper bound `DataArray` of type variable `Self`
- xarray/core/resample.py:245:16 error[invalid-argument-type] Argument to bound method `interp` is incorrect: Argument type `T_Xarray@Resample` does not satisfy upper bound `Dataset` of type variable `Self`
- xarray/indexes/nd_point_index.py:302:38 error[invalid-argument-type] Argument to bound method `equals` is incorrect: Argument type `object` does not satisfy upper bound `TreeAdapter` of type variable `Self`
+ xarray/plot/facetgrid.py:172:43 error[invalid-argument-type] Argument to bound method `to_index` is incorrect: Expected `DataArray`, found `T_DataArrayOrSet@FacetGrid`
+ xarray/plot/facetgrid.py:173:43 error[invalid-argument-type] Argument to bound method `to_index` is incorrect: Expected `DataArray`, found `T_DataArrayOrSet@FacetGrid`
+ xarray/plot/facetgrid.py:231:26 error[invalid-argument-type] Argument to bound method `to_numpy` is incorrect: Expected `DataArray`, found `T_DataArrayOrSet@FacetGrid`
+ xarray/plot/facetgrid.py:232:26 error[invalid-argument-type] Argument to bound method `to_numpy` is incorrect: Expected `DataArray`, found `T_DataArrayOrSet@FacetGrid`
+ xarray/plot/facetgrid.py:236:44 error[invalid-argument-type] Argument to bound method `to_numpy` is incorrect: Expected `DataArray`, found `T_DataArrayOrSet@FacetGrid`
- xarray/plot/facetgrid.py:861:38 error[invalid-argument-type] Method `__getitem__` of type `(Overload[(key: Hashable) -> DataArray, (key: Iterable[Hashable]) -> T_DataArrayOrSet@FacetGrid]) | (bound method T_DataArrayOrSet@FacetGrid.__getitem__(key: Any) -> T_DataArrayOrSet@FacetGrid)` cannot be called with key of type `Any` on object of type `T_DataArrayOrSet@FacetGrid`
+ xarray/plot/facetgrid.py:861:38 error[invalid-argument-type] Argument to function `label_from_attrs` is incorrect: Expected `DataArray | None`, found `T_DataArrayOrSet@FacetGrid`

Full report with detailed diff (timing results)

@codspeed-hq
Copy link
Copy Markdown

codspeed-hq bot commented Apr 6, 2026

Merging this PR will not alter performance

✅ 47 untouched benchmarks
⏩ 60 skipped benchmarks1


Comparing charlie/test (11db173) with main (7b7556d)

Open in CodSpeed

Footnotes

  1. 60 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ty Multi-file analysis & type inference

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant