Skip to content

Comments

[ty] Replace strsim with CPython-based Levenshtein implementation#23291

Merged
AlexWaygood merged 7 commits intomainfrom
claude/upgrade-levenshtein-impl-tLEYU
Feb 16, 2026
Merged

[ty] Replace strsim with CPython-based Levenshtein implementation#23291
AlexWaygood merged 7 commits intomainfrom
claude/upgrade-levenshtein-impl-tLEYU

Conversation

@AlexWaygood
Copy link
Member

@AlexWaygood AlexWaygood commented Feb 15, 2026

Summary

For a couple of diagnostics currently, we add a "Did you mean...?" diagnostic hint if it appears like there's an obvious typo that caused us to emit an error. The "Did you mean...?" suggestion is generated via the strsim Levenshtein implementation on crates.io.

This PR replaces the strsim implementation of Levenshtein used to create these hints with a custom Levenshtein implementation based on the one that CPython itself uses to create these hints:

>>> class Foo:
...     xyxy = 42
...     
>>> Foo.xyxyz
Traceback (most recent call last):
  File "<python-input-1>", line 1, in <module>
    Foo.xyxyz
AttributeError: type object 'Foo' has no attribute 'xyxyz'. Did you mean: 'xyxy'?

The added tests are also derived from CPython's test suite.

The motivation for copying CPython's implementation almost exactly is that CPython has had this feature for several Python versions now, and during that time many bug reports have been filed regarding incorrect suggestions, which have since been fixed. This implementation is thus very well "battle-tested" by this point; we can say with a reasonable degree of confidence that it gives good suggestions for typos in the Python context.

The ecosystem report on this PR bears out that this is an improvement. We see bad suggestions going away:

- [error] invalid-key - Unknown key "pair" for TypedDict `RPCAnalyzedDFMsg` - did you mean "data"?
+ [error] invalid-key - Unknown key "pair" for TypedDict `RPCAnalyzedDFMsg`: Unknown key "pair"

and good suggestions being added:

- [error] invalid-key - Unknown key "old_entity_id" for TypedDict `_EventEntityRegistryUpdatedData_CreateRemove`: Unknown key "old_entity_id"
+ [error] invalid-key - Unknown key "old_entity_id" for TypedDict `_EventEntityRegistryUpdatedData_CreateRemove` - did you mean "entity_id"?

This Levenshtein implementation was originally proposed in #18705, and then again in #18751. Those PRs also made other changes to use the Levenshtein implementation in certain other areas, however, where computing the list of suggestions to pass into the Levenshtein algorithm turned out to be prohibitively expensive. This PR therefore only updates the Levenshtein implementation being used for our existing subdiagnostics, rather than expanding the callsites of the Levenshtein implementation.

Test plan

Unit tests have been added in levenshtein.rs. Some mdtests and snapshots were updated to ensure that they still test what they're meant to be testing, even with the new Levenshtein implementation.

Co-authored-by: Brent Westbrook [email protected]

Replace the `strsim::damerau_levenshtein` dependency with a Levenshtein
implementation ported from CPython's suggestion algorithm. The new
implementation uses case-insensitive character matching with weighted
costs (matching CPython's approach) and improved max-distance heuristics,
rather than the simple Damerau-Levenshtein with lowercased comparison.

This removes the `strsim` crate dependency from `ty_python_semantic`.

https://claude.ai/code/session_014vwDhReNbswR4MXhYNcvBW
- Rename `unresolved_member` to `typo` and `member` to `candidate` in
  levenshtein.rs since the module is used for TypedDict key suggestions
- Move `pub(crate) use diagnostic::levenshtein` to the use-statement
  section in types.rs
- Update .md test files with typos that trigger suggestions under the
  new Levenshtein algorithm ("nane" -> "name", "leg" -> "legs")
- Add intentional misspellings from test data to _typos.toml allowlist

https://claude.ai/code/session_014vwDhReNbswR4MXhYNcvBW
Exclude the entire levenshtein.rs test file from the typos spell
checker (matching the approach in #18751) rather than adding individual
misspelled words to the allowlist.

https://claude.ai/code/session_014vwDhReNbswR4MXhYNcvBW
@AlexWaygood AlexWaygood added ty Multi-file analysis & type inference ecosystem-analyzer diagnostics Related to reporting of diagnostics. labels Feb 15, 2026
@astral-sh-bot
Copy link

astral-sh-bot bot commented Feb 15, 2026

Typing conformance results

No changes detected ✅

@astral-sh-bot
Copy link

astral-sh-bot bot commented Feb 15, 2026

mypy_primer results

Changes were detected when running on open source projects
spack (https://github.com/spack/spack)
- lib/spack/spack/detection/path.py:169:33: error[invalid-argument-type] Argument to function `dedupe_paths` is incorrect: Expected `list[str]`, found `Unknown | list[int | bytes | PathLike[str] | ... omitted 3 union elements]`
+ lib/spack/spack/detection/path.py:169:33: error[invalid-argument-type] Argument to function `dedupe_paths` is incorrect: Expected `list[str]`, found `Unknown | list[int | str | bytes | ... omitted 3 union elements]`
- lib/spack/spack/llnl/util/filesystem.py:1668:35: error[invalid-argument-type] Argument to function `exists` is incorrect: Expected `int | str | bytes | PathLike[str] | PathLike[bytes]`, found `Unknown | Sized`
+ lib/spack/spack/llnl/util/filesystem.py:1668:35: error[invalid-argument-type] Argument to function `exists` is incorrect: Expected `int | str | bytes | PathLike[str] | PathLike[bytes]`, found `Sized | Unknown`
- lib/spack/spack/llnl/util/filesystem.py:1674:25: error[invalid-argument-type] Argument to function `move` is incorrect: Expected `str | PathLike[str]`, found `Unknown | Sized`
+ lib/spack/spack/llnl/util/filesystem.py:1674:25: error[invalid-argument-type] Argument to function `move` is incorrect: Expected `str | PathLike[str]`, found `Sized | Unknown`

tornado (https://github.com/tornadoweb/tornado)
- tornado/gen.py:255:62: error[invalid-argument-type] Argument to bound method `__init__` is incorrect: Expected `None | Awaitable[Unknown] | list[Awaitable[Unknown]] | dict[Any, Awaitable[Unknown]] | Future[Unknown]`, found `_T@next | _T@next | _VT@next`
+ tornado/gen.py:255:62: error[invalid-argument-type] Argument to bound method `__init__` is incorrect: Expected `None | Awaitable[Unknown] | list[Awaitable[Unknown]] | dict[Any, Awaitable[Unknown]] | Future[Unknown]`, found `_T@next | _VT@next | _T@next`

pydantic (https://github.com/pydantic/pydantic)
- pydantic/_internal/_schema_gather.py:106:36: error[invalid-key] Unknown key "items_schema" for TypedDict `TypedDictSchema`: Unknown key "items_schema"
+ pydantic/_internal/_schema_gather.py:106:36: error[invalid-key] Unknown key "items_schema" for TypedDict `TypedDictSchema` - did you mean "extras_schema"?
- pydantic/_internal/_schema_gather.py:106:36: error[invalid-key] Unknown key "items_schema" for TypedDict `ModelFieldsSchema`: Unknown key "items_schema"
+ pydantic/_internal/_schema_gather.py:106:36: error[invalid-key] Unknown key "items_schema" for TypedDict `ModelFieldsSchema` - did you mean "extras_schema"?
- pydantic/_internal/_schema_gather.py:109:29: error[invalid-key] Unknown key "items_schema" for TypedDict `TypedDictSchema`: Unknown key "items_schema"
+ pydantic/_internal/_schema_gather.py:109:29: error[invalid-key] Unknown key "items_schema" for TypedDict `TypedDictSchema` - did you mean "extras_schema"?
- pydantic/_internal/_schema_gather.py:109:29: error[invalid-key] Unknown key "items_schema" for TypedDict `ModelFieldsSchema`: Unknown key "items_schema"
+ pydantic/_internal/_schema_gather.py:109:29: error[invalid-key] Unknown key "items_schema" for TypedDict `ModelFieldsSchema` - did you mean "extras_schema"?
- pydantic/_internal/_schema_gather.py:113:36: error[invalid-key] Unknown key "keys_schema" for TypedDict `JsonOrPythonSchema`: Unknown key "keys_schema"
+ pydantic/_internal/_schema_gather.py:113:36: error[invalid-key] Unknown key "keys_schema" for TypedDict `JsonOrPythonSchema` - did you mean "json_schema"?
- pydantic/_internal/_schema_gather.py:113:36: error[invalid-key] Unknown key "keys_schema" for TypedDict `LaxOrStrictSchema`: Unknown key "keys_schema"
+ pydantic/_internal/_schema_gather.py:113:36: error[invalid-key] Unknown key "keys_schema" for TypedDict `LaxOrStrictSchema` - did you mean "lax_schema"?
- pydantic/_internal/_schema_gather.py:115:36: error[invalid-key] Unknown key "values_schema" for TypedDict `ArgumentsSchema`: Unknown key "values_schema"
+ pydantic/_internal/_schema_gather.py:115:36: error[invalid-key] Unknown key "values_schema" for TypedDict `ArgumentsSchema` - did you mean "var_args_schema"?
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `DataclassArgsSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `DataclassArgsSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `FloatSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `FloatSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `DecimalSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `DecimalSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `StringSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `StringSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `BytesSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `BytesSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `DateSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `DateSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `TimeSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `TimeSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `DatetimeSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `DatetimeSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `TimedeltaSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `TimedeltaSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `LiteralSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `LiteralSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `MissingSentinelSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `MissingSentinelSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `EnumSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `EnumSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `IsInstanceSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `IsInstanceSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `IsSubclassSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `IsSubclassSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `CallableSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `CallableSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `ListSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `ListSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `TupleSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `TupleSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `SetSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `SetSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `FrozenSetSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `FrozenSetSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `GeneratorSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `GeneratorSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `DictSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `DictSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `AfterValidatorFunctionSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `AfterValidatorFunctionSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `BeforeValidatorFunctionSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `BeforeValidatorFunctionSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `WrapValidatorFunctionSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `WrapValidatorFunctionSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `PlainValidatorFunctionSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `PlainValidatorFunctionSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `WithDefaultSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `WithDefaultSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `NullableSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `NullableSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `UnionSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `UnionSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `IntSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `IntSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `LaxOrStrictSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `LaxOrStrictSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `JsonOrPythonSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `JsonOrPythonSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `TypedDictSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `TypedDictSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `ModelFieldsSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `ModelFieldsSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `ModelSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `ModelSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `InvalidSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `InvalidSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `DataclassSchema` - did you mean "slots"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `DataclassSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `ArgumentsSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `ArgumentsSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `ArgumentsV3Schema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `ArgumentsV3Schema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `CallSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `CallSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `CustomErrorSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `CustomErrorSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `JsonSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `JsonSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `UrlSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `UrlSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `MultiHostUrlSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `MultiHostUrlSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `DefinitionsSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `DefinitionsSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `DefinitionReferenceSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `DefinitionReferenceSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `UuidSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `UuidSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `ComplexSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `ComplexSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `SimpleSerSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `SimpleSerSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `PlainSerializerFunctionSerSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `PlainSerializerFunctionSerSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `WrapSerializerFunctionSerSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `WrapSerializerFunctionSerSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `FormatSerSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `FormatSerSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `ToStringSerSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `ToStringSerSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `ModelSerSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `ModelSerSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `ComputedField` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `ComputedField`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `BoolSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `BoolSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `AnySchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `AnySchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `NoneSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `NoneSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `TaggedUnionSchema` - did you mean "type"?
+ pydantic/_internal/_schema_gather.py:126:28: error[invalid-key] Unknown key "steps" for TypedDict `TaggedUnionSchema`: Unknown key "steps"
- pydantic/_internal/_schema_gather.py:129:32: error[invalid-key] Unknown key "lax_schema" for TypedDict `DictSchema`: Unknown key "lax_schema"
+ pydantic/_internal/_schema_gather.py:129:32: error[invalid-key] Unknown key "lax_schema" for TypedDict `DictSchema` - did you mean "keys_schema"?
- pydantic/_internal/_schema_gather.py:129:32: error[invalid-key] Unknown key "lax_schema" for TypedDict `JsonOrPythonSchema`: Unknown key "lax_schema"
+ pydantic/_internal/_schema_gather.py:129:32: error[invalid-key] Unknown key "lax_schema" for TypedDict `JsonOrPythonSchema` - did you mean "json_schema"?
- pydantic/_internal/_schema_gather.py:132:32: error[invalid-key] Unknown key "json_schema" for TypedDict `DictSchema`: Unknown key "json_schema"
+ pydantic/_internal/_schema_gather.py:132:32: error[invalid-key] Unknown key "json_schema" for TypedDict `DictSchema` - did you mean "keys_schema"?
- pydantic/_internal/_schema_gather.py:132:32: error[invalid-key] Unknown key "json_schema" for TypedDict `LaxOrStrictSchema`: Unknown key "json_schema"
+ pydantic/_internal/_schema_gather.py:132:32: error[invalid-key] Unknown key "json_schema" for TypedDict `LaxOrStrictSchema` - did you mean "lax_schema"?
- pydantic/_internal/_schema_gather.py:133:32: error[invalid-key] Unknown key "python_schema" for TypedDict `CallSchema`: Unknown key "python_schema"
+ pydantic/_internal/_schema_gather.py:133:32: error[invalid-key] Unknown key "python_schema" for TypedDict `CallSchema` - did you mean "return_schema"?
- pydantic/_internal/_schema_gather.py:133:32: error[invalid-key] Unknown key "python_schema" for TypedDict `PlainSerializerFunctionSerSchema`: Unknown key "python_schema"
+ pydantic/_internal/_schema_gather.py:133:32: error[invalid-key] Unknown key "python_schema" for TypedDict `PlainSerializerFunctionSerSchema` - did you mean "return_schema"?
- pydantic/_internal/_schema_gather.py:133:32: error[invalid-key] Unknown key "python_schema" for TypedDict `WrapSerializerFunctionSerSchema`: Unknown key "python_schema"
+ pydantic/_internal/_schema_gather.py:133:32: error[invalid-key] Unknown key "python_schema" for TypedDict `WrapSerializerFunctionSerSchema` - did you mean "return_schema"?
- pydantic/_internal/_schema_gather.py:133:32: error[invalid-key] Unknown key "python_schema" for TypedDict `ComputedField`: Unknown key "python_schema"
+ pydantic/_internal/_schema_gather.py:133:32: error[invalid-key] Unknown key "python_schema" for TypedDict `ComputedField` - did you mean "return_schema"?
- pydantic/_internal/_schema_gather.py:136:36: error[invalid-key] Unknown key "extras_schema" for TypedDict `ListSchema`: Unknown key "extras_schema"
+ pydantic/_internal/_schema_gather.py:136:36: error[invalid-key] Unknown key "extras_schema" for TypedDict `ListSchema` - did you mean "items_schema"?
- pydantic/_internal/_schema_gather.py:136:36: error[invalid-key] Unknown key "extras_schema" for TypedDict `TupleSchema`: Unknown key "extras_schema"
+ pydantic/_internal/_schema_gather.py:136:36: error[invalid-key] Unknown key "extras_schema" for TypedDict `TupleSchema` - did you mean "items_schema"?
- pydantic/_internal/_schema_gather.py:136:36: error[invalid-key] Unknown key "extras_schema" for TypedDict `SetSchema`: Unknown key "extras_schema"
+ pydantic/_internal/_schema_gather.py:136:36: error[invalid-key] Unknown key "extras_schema" for TypedDict `SetSchema` - did you mean "items_schema"?
- pydantic/_internal/_schema_gather.py:136:36: error[invalid-key] Unknown key "extras_schema" for TypedDict `FrozenSetSchema`: Unknown key "extras_schema"
+ pydantic/_internal/_schema_gather.py:136:36: error[invalid-key] Unknown key "extras_schema" for TypedDict `FrozenSetSchema` - did you mean "items_schema"?
- pydantic/_internal/_schema_gather.py:136:36: error[invalid-key] Unknown key "extras_schema" for TypedDict `GeneratorSchema`: Unknown key "extras_schema"
+ pydantic/_internal/_schema_gather.py:136:36: error[invalid-key] Unknown key "extras_schema" for TypedDict `GeneratorSchema` - did you mean "items_schema"?
- pydantic/_internal/_schema_gather.py:152:36: error[invalid-key] Unknown key "var_args_schema" for TypedDict `DictSchema`: Unknown key "var_args_schema"
+ pydantic/_internal/_schema_gather.py:152:36: error[invalid-key] Unknown key "var_args_schema" for TypedDict `DictSchema` - did you mean "values_schema"?
- pydantic/_internal/_schema_gather.py:161:36: error[invalid-key] Unknown key "return_schema" for TypedDict `JsonOrPythonSchema`: Unknown key "return_schema"
+ pydantic/_internal/_schema_gather.py:161:36: error[invalid-key] Unknown key "return_schema" for TypedDict `JsonOrPythonSchema` - did you mean "python_schema"?
- pydantic/_internal/_schema_gather.py:163:32: error[invalid-key] Unknown key "return_schema" for TypedDict `JsonOrPythonSchema`: Unknown key "return_schema"
+ pydantic/_internal/_schema_gather.py:163:32: error[invalid-key] Unknown key "return_schema" for TypedDict `JsonOrPythonSchema` - did you mean "python_schema"?
- pydantic/_internal/_schema_gather.py:172:36: error[invalid-key] Unknown key "return_schema" for TypedDict `JsonOrPythonSchema`: Unknown key "return_schema"
+ pydantic/_internal/_schema_gather.py:172:36: error[invalid-key] Unknown key "return_schema" for TypedDict `JsonOrPythonSchema` - did you mean "python_schema"?
- pydantic/_internal/_schema_gather.py:178:36: error[invalid-key] Unknown key "return_schema" for TypedDict `JsonOrPythonSchema`: Unknown key "return_schema"
+ pydantic/_internal/_schema_gather.py:178:36: error[invalid-key] Unknown key "return_schema" for TypedDict `JsonOrPythonSchema` - did you mean "python_schema"?
- pydantic/v1/networks.py:232:13: error[invalid-key] Unknown key "host" for TypedDict `Parts` - did you mean "port"?
+ pydantic/v1/networks.py:232:13: error[invalid-key] Unknown key "host" for TypedDict `Parts`: Unknown key "host"

freqtrade (https://github.com/freqtrade/freqtrade)
- freqtrade/rpc/telegram.py:556:49: error[invalid-key] Unknown key "pair" for TypedDict `RPCWhitelistMsg` - did you mean "data"?
+ freqtrade/rpc/telegram.py:556:49: error[invalid-key] Unknown key "pair" for TypedDict `RPCWhitelistMsg`: Unknown key "pair"
- freqtrade/rpc/telegram.py:556:49: error[invalid-key] Unknown key "pair" for TypedDict `RPCAnalyzedDFMsg` - did you mean "data"?
+ freqtrade/rpc/telegram.py:556:49: error[invalid-key] Unknown key "pair" for TypedDict `RPCAnalyzedDFMsg`: Unknown key "pair"
- freqtrade/rpc/telegram.py:556:49: error[invalid-key] Unknown key "pair" for TypedDict `RPCNewCandleMsg` - did you mean "data"?
+ freqtrade/rpc/telegram.py:556:49: error[invalid-key] Unknown key "pair" for TypedDict `RPCNewCandleMsg`: Unknown key "pair"
- freqtrade/rpc/telegram.py:563:25: error[invalid-key] Unknown key "pair" for TypedDict `RPCWhitelistMsg` - did you mean "data"?
+ freqtrade/rpc/telegram.py:563:25: error[invalid-key] Unknown key "pair" for TypedDict `RPCWhitelistMsg`: Unknown key "pair"
- freqtrade/rpc/telegram.py:563:25: error[invalid-key] Unknown key "pair" for TypedDict `RPCAnalyzedDFMsg` - did you mean "data"?
+ freqtrade/rpc/telegram.py:563:25: error[invalid-key] Unknown key "pair" for TypedDict `RPCAnalyzedDFMsg`: Unknown key "pair"
- freqtrade/rpc/telegram.py:563:25: error[invalid-key] Unknown key "pair" for TypedDict `RPCNewCandleMsg` - did you mean "data"?
+ freqtrade/rpc/telegram.py:563:25: error[invalid-key] Unknown key "pair" for TypedDict `RPCNewCandleMsg`: Unknown key "pair"
- freqtrade/rpc/telegram.py:584:30: error[invalid-key] Unknown key "msg" for TypedDict `RPCProtectionMsg` - did you mean "id"?
+ freqtrade/rpc/telegram.py:584:30: error[invalid-key] Unknown key "msg" for TypedDict `RPCProtectionMsg`: Unknown key "msg"

prefect (https://github.com/PrefectHQ/prefect)
- src/prefect/input/run_input.py:672:20: error[invalid-return-type] Return type does not match returned value: expected `T@GetAutomaticInputHandler | AutomaticRunInput[T@GetAutomaticInputHandler]`, found `T@GetAutomaticInputHandler | AutomaticRunInput[T@GetAutomaticInputHandler] | Coroutine[Any, Any, T@GetAutomaticInputHandler | AutomaticRunInput[T@GetAutomaticInputHandler]]`
+ src/prefect/input/run_input.py:672:20: error[invalid-return-type] Return type does not match returned value: expected `T@GetAutomaticInputHandler | AutomaticRunInput[T@GetAutomaticInputHandler]`, found `Unknown | Coroutine[Any, Any, Unknown]`

dd-trace-py (https://github.com/DataDog/dd-trace-py)
- setup.py:1280:5: error[invalid-argument-type] Argument to function `setup` is incorrect: Expected `_MutableDictLike[str, type[Command]]`, found `dict[str, <class 'CustomBuildExt'> | <class 'LibraryDownloader'> | <class 'CustomBuildRust'> | <class 'CleanLibraries'> | <class 'ExtensionHashes'>]`
+ setup.py:1280:5: error[invalid-argument-type] Argument to function `setup` is incorrect: Expected `_MutableDictLike[str, type[Command]]`, found `dict[Unknown | str, Unknown | <class 'CustomBuildExt'> | <class 'LibraryDownloader'> | ... omitted 3 union elements]`
- tests/tracer/test_span.py:193:29: error[invalid-argument-type] Argument to bound method `set_metric` is incorrect: Expected `int | float`, found `int | float | complex | ... omitted 6 union elements`
+ tests/tracer/test_span.py:193:29: error[invalid-argument-type] Argument to bound method `set_metric` is incorrect: Expected `int | float`, found `str | Unknown | None | ... omitted 6 union elements`

pandas (https://github.com/pandas-dev/pandas)
- pandas/core/methods/describe.py:215:21: error[not-iterable] Object of type `Unknown | Sized` may not be iterable
+ pandas/core/methods/describe.py:215:21: error[not-iterable] Object of type `Sized | Unknown` may not be iterable

materialize (https://github.com/MaterializeInc/materialize)
- misc/python/materialize/cli/mz_workload_anonymize.py:251:13: error[no-matching-overload] No overload of bound method `join` matches arguments
- Found 537 diagnostics
+ Found 536 diagnostics

rotki (https://github.com/rotki/rotki)
- rotkehlchen/tests/unit/test_makerdao.py:170:9: error[invalid-argument-type] Argument is incorrect: Expected `defaultdict[Asset, defaultdict[str, Balance]]`, found `defaultdict[Asset | Unknown, defaultdict[str, Balance] | Balance | dict[Unknown | str, Unknown | Balance] | Unknown]`
+ rotkehlchen/tests/unit/test_makerdao.py:170:9: error[invalid-argument-type] Argument is incorrect: Expected `defaultdict[Asset, defaultdict[str, Balance]]`, found `defaultdict[Asset | Unknown, defaultdict[str, Balance] | Balance | Unknown | dict[Unknown | str, Unknown | Balance]]`
- rotkehlchen/tests/unit/test_makerdao.py:171:9: error[invalid-argument-type] Argument is incorrect: Expected `defaultdict[Asset, defaultdict[str, Balance]]`, found `defaultdict[Asset | Unknown, defaultdict[str, Balance] | Balance | dict[Unknown | str, Unknown | Balance] | Unknown]`
+ rotkehlchen/tests/unit/test_makerdao.py:171:9: error[invalid-argument-type] Argument is incorrect: Expected `defaultdict[Asset, defaultdict[str, Balance]]`, found `defaultdict[Asset | Unknown, defaultdict[str, Balance] | Balance | Unknown | dict[Unknown | str, Unknown | Balance]]`

scikit-learn (https://github.com/scikit-learn/scikit-learn)
- sklearn/datasets/_lfw.py:469:60: error[invalid-argument-type] Argument to class `str` is incorrect: Expected `bytes | bytearray`, found `str | Unknown`
+ sklearn/datasets/_lfw.py:469:60: error[invalid-argument-type] Argument to class `str` is incorrect: Expected `bytes | bytearray`, found `Unknown | str`
- sklearn/utils/tests/test_multiclass.py:399:27: error[unresolved-attribute] Attribute `toarray` is not defined on `list[Unknown | list[Unknown | int]] & SparseABC`, `ndarray[tuple[Any, ...], dtype[Any]] & SparseABC`, `_NotAnArray & SparseABC`, `list[Unknown | int] & SparseABC`, `list[Unknown | str] & SparseABC`, `list[Unknown | list[Unknown | str]] & SparseABC`, `list[Unknown] & SparseABC`, `list[Unknown | int | float] & SparseABC`, `list[Unknown | list[Unknown]] & SparseABC`, `list[Unknown | tuple[()]] & SparseABC`, `list[Unknown | ndarray[tuple[Any, ...], dtype[Unknown]]] & SparseABC`, `list[Unknown | set[Unknown | int]] & SparseABC`, `list[Unknown | frozenset[int | Unknown]] & SparseABC`, `list[Unknown | dict[Unknown | int, Unknown | str]] & SparseABC` in union `(Unknown & SparseABC) | (list[Unknown | list[Unknown | int]] & SparseABC) | (ndarray[tuple[Any, ...], dtype[Any]] & SparseABC) | ... omitted 12 union elements`
+ sklearn/utils/tests/test_multiclass.py:399:27: error[unresolved-attribute] Attribute `toarray` is not defined on `list[Unknown | list[Unknown | int]] & SparseABC`, `ndarray[tuple[Any, ...], dtype[Any]] & SparseABC`, `_NotAnArray & SparseABC`, `list[Unknown | int] & SparseABC`, `list[Unknown | str] & SparseABC`, `list[Unknown | list[Unknown | str]] & SparseABC`, `list[Unknown] & SparseABC`, `list[Unknown | int | float] & SparseABC`, `list[Unknown | list[Unknown]] & SparseABC`, `list[Unknown | tuple[()]] & SparseABC`, `list[Unknown | ndarray[tuple[Any, ...], dtype[Unknown]]] & SparseABC`, `list[Unknown | set[Unknown | int]] & SparseABC`, `list[Unknown | frozenset[Unknown | int]] & SparseABC`, `list[Unknown | dict[Unknown | int, Unknown | str]] & SparseABC` in union `(Unknown & SparseABC) | (list[Unknown | list[Unknown | int]] & SparseABC) | (ndarray[tuple[Any, ...], dtype[Any]] & SparseABC) | ... omitted 12 union elements`

sympy (https://github.com/sympy/sympy)
- sympy/algebras/tests/test_quaternion.py:75:10: error[not-subscriptable] Cannot subscript object of type `T1'return@call_highest_priority` with no `__getitem__` method
- sympy/algebras/tests/test_quaternion.py:75:10: error[not-subscriptable] Cannot subscript object of type `T2'return@call_highest_priority` with no `__getitem__` method
+ sympy/algebras/tests/test_quaternion.py:422:33: error[unsupported-operator] Operator `-` is not supported between two objects of type `MutableDenseMatrix`
+ sympy/codegen/tests/test_matrix_nodes.py:27:21: error[unsupported-operator] Operator `-` is not supported between two objects of type `MutableDenseMatrix`
- sympy/geometry/point.py:1295:25: error[unresolved-attribute] Attribute `tolist` is not defined on `T1'return@call_highest_priority`, `T2'return@call_highest_priority`, `Expr` in union `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr`
+ sympy/geometry/point.py:1295:25: error[unresolved-attribute] Attribute `tolist` is not defined on `Expr` in union `MatrixBase | Expr`
- sympy/geometry/tests/test_util.py:128:55: error[invalid-argument-type] Argument to function `subsets` is incorrect: Expected `Sequence[Unknown]`, found `set[Point2D | Unknown]`
+ sympy/geometry/tests/test_util.py:128:55: error[invalid-argument-type] Argument to function `subsets` is incorrect: Expected `Sequence[Unknown]`, found `set[Unknown | Point2D]`
- sympy/integrals/tests/test_heurisch.py:389:17: error[unsupported-operator] Operator `*` is not supported between objects of type `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr` and `MutableDenseMatrix`
+ sympy/integrals/tests/test_heurisch.py:390:26: error[not-subscriptable] Cannot subscript object of type `Expr` with no `__getitem__` method
+ sympy/matrices/decompositions.py:1321:16: error[unresolved-attribute] Attribute `diagonalize` is not defined on `Expr` in union `MatrixBase | Expr`
+ sympy/matrices/decompositions.py:1336:16: error[unresolved-attribute] Attribute `diagonalize` is not defined on `Expr` in union `MatrixBase | Expr`
- sympy/matrices/decompositions.py:1321:16: error[unresolved-attribute] Attribute `diagonalize` is not defined on `T1'return@call_highest_priority`, `T2'return@call_highest_priority`, `Expr` in union `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr`
- sympy/matrices/decompositions.py:1334:13: error[unsupported-operator] Operator `*` is not supported between objects of type `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr` and `MatrixBase`
- sympy/matrices/decompositions.py:1336:16: error[unresolved-attribute] Attribute `diagonalize` is not defined on `T1'return@call_highest_priority`, `T2'return@call_highest_priority`, `Expr` in union `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr`
- sympy/matrices/decompositions.py:1348:13: error[unsupported-operator] Operator `*` is not supported between objects of type `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr` and `MatrixBase`
- sympy/matrices/decompositions.py:1350:12: error[invalid-return-type] Return type does not match returned value: expected `tuple[Tmat@_singular_value_decomposition, Tmat@_singular_value_decomposition, Tmat@_singular_value_decomposition]`, found `tuple[Unknown | MatrixBase, MatrixBase, MatrixBase | Unknown]`
+ sympy/matrices/decompositions.py:1350:12: error[invalid-return-type] Return type does not match returned value: expected `tuple[Tmat@_singular_value_decomposition, Tmat@_singular_value_decomposition, Tmat@_singular_value_decomposition]`, found `tuple[MatrixBase | Expr | Unknown, MatrixBase, MatrixBase | Expr | Unknown]`
+ sympy/matrices/eigen.py:1202:37: error[unresolved-attribute] Object of type `T2'return@call_highest_priority | T1'return@call_highest_priority` has no attribute `pow`
- sympy/matrices/expressions/hadamard.py:81:22: error[invalid-argument-type] Argument to function `validate_matadd_integer` is incorrect: Expected `MatrixExpr`, found `int | Any | Basic | float | complex`
+ sympy/matrices/expressions/hadamard.py:81:22: error[invalid-argument-type] Argument to function `validate_matadd_integer` is incorrect: Expected `MatrixExpr`, found `Any | Basic | int | float | complex`
- sympy/matrices/expressions/kronecker.py:109:16: error[unresolved-attribute] Attribute `is_Identity` is not defined on `int`, `Basic`, `float`, `complex` in union `int | Any | Basic | float | complex`
+ sympy/matrices/expressions/kronecker.py:109:16: error[unresolved-attribute] Attribute `is_Identity` is not defined on `Basic`, `int`, `float`, `complex` in union `Any | Basic | int | float | complex`
- sympy/matrices/expressions/kronecker.py:110:33: error[unresolved-attribute] Attribute `rows` is not defined on `int`, `Basic`, `float`, `complex` in union `int | Any | Basic | float | complex`
+ sympy/matrices/expressions/kronecker.py:110:33: error[unresolved-attribute] Attribute `rows` is not defined on `Basic`, `int`, `float`, `complex` in union `Any | Basic | int | float | complex`
- sympy/matrices/expressions/matadd.py:60:22: error[invalid-argument-type] Argument to function `validate_matadd_integer` is incorrect: Expected `MatrixExpr`, found `Unknown | int | Basic | float | complex`
+ sympy/matrices/expressions/matadd.py:60:22: error[invalid-argument-type] Argument to function `validate_matadd_integer` is incorrect: Expected `MatrixExpr`, found `Unknown | Basic | int | float | complex`
+ sympy/matrices/expressions/tests/test_blockmatrix.py:235:13: error[unsupported-operator] Operator `+` is not supported between two objects of type `MutableDenseMatrix`
+ sympy/matrices/expressions/tests/test_blockmatrix.py:235:33: error[unsupported-operator] Operator `+` is not supported between two objects of type `MutableDenseMatrix`
+ sympy/matrices/expressions/tests/test_blockmatrix.py:235:53: error[unsupported-operator] Operator `+` is not supported between two objects of type `MutableDenseMatrix`
+ sympy/matrices/expressions/tests/test_blockmatrix.py:459:12: error[unsupported-operator] Operator `-` is not supported between two objects of type `MutableDenseMatrix`
- sympy/matrices/expressions/tests/test_derivatives.py:551:26: error[unsupported-operator] Operator `+` is not supported between two objects of type `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr`
+ sympy/matrices/expressions/tests/test_derivatives.py:551:26: error[unsupported-operator] Operator `+` is not supported between two objects of type `MatrixBase | Expr`
+ sympy/matrices/expressions/tests/test_matadd.py:36:12: error[unsupported-operator] Operator `+` is not supported between objects of type `MatrixBase` and `MatrixBase | Expr`
- sympy/matrices/expressions/tests/test_matmul.py:158:68: error[unresolved-attribute] Attribute `as_explicit` is not defined on `T1'return@call_highest_priority`, `T2'return@call_highest_priority`, `Expr` in union `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr`
+ sympy/matrices/expressions/tests/test_matmul.py:158:68: error[unresolved-attribute] Attribute `as_explicit` is not defined on `Expr` in union `MatrixBase | Expr`
- sympy/matrices/expressions/tests/test_matpow.py:123:46: error[unsupported-operator] Operator `**` is not supported between objects of type `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr` and `Literal[2]`
+ sympy/matrices/expressions/tests/test_matpow.py:124:47: error[unsupported-operator] Operator `+` is not supported between two objects of type `ImmutableDenseMatrix`
- sympy/matrices/expressions/tests/test_permutation.py:27:12: error[unresolved-attribute] Attribute `as_explicit` is not defined on `T1'return@call_highest_priority`, `T2'return@call_highest_priority`, `Expr` in union `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr`
+ sympy/matrices/expressions/tests/test_permutation.py:27:12: error[unresolved-attribute] Attribute `as_explicit` is not defined on `Expr` in union `MatrixBase | Expr`
- sympy/matrices/inverse.py:384:11: error[unsupported-operator] Operator `*` is not supported between objects of type `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr` and `MatrixBase`
+ sympy/matrices/inverse.py:385:11: error[unsupported-operator] Operator `-` is not supported between objects of type `MatrixBase` and `MatrixBase | Expr | Unknown`
- sympy/matrices/inverse.py:392:11: error[unsupported-operator] Unary operator `-` is not supported for object of type `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr`
- sympy/matrices/inverse.py:393:19: error[unsupported-operator] Operator `*` is not supported between objects of type `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr` and `MatrixBase | Expr`
+ sympy/matrices/inverse.py:393:11: error[unsupported-operator] Operator `+` is not supported between objects of type `MatrixBase` and `MatrixBase | Expr | Unknown`
- sympy/matrices/inverse.py:393:22: error[unsupported-operator] Unary operator `-` is not supported for object of type `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr`
+ sympy/matrices/matrixbase.py:979:18: error[unsupported-operator] Operator `+` is not supported between two objects of type `Self@_eval_wilkinson`
+ sympy/matrices/matrixbase.py:2957:16: error[invalid-return-type] Return type does not match returned value: expected `Self@_eval_pow_by_cayley`, found `Self@_eval_pow_by_cayley | T2'return@call_highest_priority | T1'return@call_highest_priority | Unknown`
- sympy/matrices/matrixbase.py:2955:13: error[unsupported-operator] Operator `*=` is not supported between objects of type `T1'return@call_highest_priority` and `Self@_eval_pow_by_cayley`
- sympy/matrices/matrixbase.py:2955:13: error[unsupported-operator] Operator `*=` is not supported between objects of type `T2'return@call_highest_priority` and `Self@_eval_pow_by_cayley`
- sympy/matrices/matrixbase.py:3046:5: error[invalid-argument-type] Argument is incorrect: Expected `(T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr, T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr, /) -> T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr`, found `Overload[[Self](self, other: Self) -> Self, (self, other: MatrixBase) -> MatrixBase, (self, other: Expr) -> MatrixBase]`
+ sympy/matrices/matrixbase.py:3046:5: error[invalid-argument-type] Argument is incorrect: Expected `(MatrixBase, MatrixBase | Expr, /) -> MatrixBase | Expr`, found `Overload[[Self](self, other: Self) -> Self, (self, other: MatrixBase) -> MatrixBase, (self, other: Expr) -> MatrixBase]`
+ sympy/matrices/matrixbase.py:3256:16: error[invalid-return-type] Return type does not match returned value: expected `MatrixBase`, found `T2'return@call_highest_priority | T1'return@call_highest_priority`
+ sympy/matrices/matrixbase.py:3256:29: error[invalid-argument-type] Argument is incorrect: Expected `T2'return@call_highest_priority | T1'return@call_highest_priority`, found `MatrixBase`
+ sympy/matrices/matrixbase.py:3310:16: error[unsupported-operator] Operator `+` is not supported between two objects of type `MatrixBase`
+ sympy/matrices/matrixbase.py:3314:16: error[invalid-return-type] Return type does not match returned value: expected `Tmat@__sub__`, found `MatrixBase`
- sympy/matrices/matrixbase.py:3944:39: error[not-subscriptable] Cannot subscript object of type `T1'return@call_highest_priority` with no `__getitem__` method
- sympy/matrices/matrixbase.py:3944:39: error[not-subscriptable] Cannot subscript object of type `T2'return@call_highest_priority` with no `__getitem__` method
+ sympy/matrices/matrixbase.py:4386:16: error[unsupported-operator] Operator `+` is not supported between two objects of type `Self@add`
- sympy/matrices/matrixbase.py:4640:16: error[invalid-return-type] Return type does not match returned value: expected `Self@D`, found `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr`
+ sympy/matrices/matrixbase.py:4640:16: error[invalid-return-type] Return type does not match returned value: expected `Self@D`, found `MatrixBase | Expr`
+ sympy/matrices/matrixbase.py:4923:16: error[invalid-return-type] Return type does not match returned value: expected `Self@analytic_func`, found `Self@analytic_func | T2'return@call_highest_priority | T1'return@call_highest_priority | Unknown`
- sympy/matrices/matrixbase.py:4748:16: error[not-subscriptable] Cannot subscript object of type `T1'return@call_highest_priority` with no `__getitem__` method
- sympy/matrices/matrixbase.py:4748:16: error[not-subscriptable] Cannot subscript object of type `T2'return@call_highest_priority` with no `__getitem__` method
- sympy/matrices/matrixbase.py:4922:13: error[unsupported-operator] Operator `*=` is not supported between objects of type `T2'return@call_highest_priority` and `Self@analytic_func`
- sympy/matrices/matrixbase.py:4922:13: error[unsupported-operator] Operator `*=` is not supported between objects of type `T1'return@call_highest_priority` and `Self@analytic_func`
- sympy/matrices/matrixbase.py:5076:19: error[unsupported-operator] Operator `*` is not supported between objects of type `@Todo | T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr` and `@Todo | Self@log`
+ sympy/matrices/matrixbase.py:5078:16: error[invalid-return-type] Return type does not match returned value: expected `Self@log`, found `MatrixBase | @Todo | Expr`
+ sympy/matrices/repmatrix.py:321:17: error[unsupported-operator] Operator `-` is not supported between two objects of type `Self@_eval_is_symmetric`
+ sympy/matrices/solvers.py:741:12: error[invalid-return-type] Return type does not match returned value: expected `Tmat@_pinv_solve`, found `T2'return@call_highest_priority | T1'return@call_highest_priority`
- sympy/matrices/solvers.py:976:16: error[unresolved-attribute] Attribute `solve` is not defined on `T1'return@call_highest_priority`, `T2'return@call_highest_priority`, `Expr` in union `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr`
+ sympy/matrices/solvers.py:976:16: error[unresolved-attribute] Attribute `solve` is not defined on `Expr` in union `MatrixBase | Expr`
- sympy/matrices/solvers.py:976:30: error[invalid-argument-type] Argument to bound method `solve` is incorrect: Argument type `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr` does not satisfy upper bound `MatrixBase` of type variable `Self`
+ sympy/matrices/solvers.py:976:30: error[invalid-argument-type] Argument to bound method `solve` is incorrect: Argument type `MatrixBase | Expr` does not satisfy upper bound `MatrixBase` of type variable `Self`
- sympy/matrices/solvers.py:976:30: error[invalid-argument-type] Argument to bound method `solve` is incorrect: Expected `MatrixBase`, found `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr`
+ sympy/matrices/solvers.py:976:30: error[invalid-argument-type] Argument to bound method `solve` is incorrect: Expected `MatrixBase`, found `MatrixBase | Expr`
- sympy/matrices/sparse.py:417:16: error[unresolved-attribute] Attribute `inv` is not defined on `T1'return@call_highest_priority`, `T2'return@call_highest_priority`, `Expr` in union `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr`
+ sympy/matrices/sparse.py:417:16: error[unresolved-attribute] Attribute `inv` is not defined on `Expr` in union `MatrixBase | Expr`
+ sympy/matrices/tests/test_commonmatrix.py:1249:31: error[unsupported-operator] Operator `+` is not supported between objects of type `MutableDenseMatrix` and `ImmutableDenseNDimArray`
- sympy/matrices/tests/test_decompositions.py:23:12: error[unresolved-attribute] Attribute `permute_rows` is not defined on `T1'return@call_highest_priority`, `T2'return@call_highest_priority`, `Expr` in union `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr`
+ sympy/matrices/tests/test_decompositions.py:23:12: error[unresolved-attribute] Attribute `permute_rows` is not defined on `Expr` in union `MatrixBase | Expr`
- sympy/matrices/tests/test_decompositions.py:32:12: error[unresolved-attribute] Attribute `permute_rows` is not defined on `T1'return@call_highest_priority`, `T2'return@call_highest_priority`, `Expr` in union `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr`
+ sympy/matrices/tests/test_decompositions.py:32:12: error[unresolved-attribute] Attribute `permute_rows` is not defined on `Expr` in union `MatrixBase | Expr`
- sympy/matrices/tests/test_decompositions.py:42:12: error[unresolved-attribute] Attribute `permute_rows` is not defined on `T1'return@call_highest_priority`, `T2'return@call_highest_priority`, `Expr` in union `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr`
+ sympy/matrices/tests/test_decompositions.py:42:12: error[unresolved-attribute] Attribute `permute_rows` is not defined on `Expr` in union `MatrixBase | Expr`
- sympy/matrices/tests/test_decompositions.py:51:12: error[unresolved-attribute] Attribute `permute_rows` is not defined on `T1'return@call_highest_priority`, `T2'return@call_highest_priority`, `Expr` in union `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr`
+ sympy/matrices/tests/test_decompositions.py:51:12: error[unresolved-attribute] Attribute `permute_rows` is not defined on `Expr` in union `MatrixBase | Expr`
- sympy/matrices/tests/test_decompositions.py:57:12: error[unresolved-attribute] Attribute `permute_rows` is not defined on `T1'return@call_highest_priority`, `T2'return@call_highest_priority`, `Expr` in union `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr`
+ sympy/matrices/tests/test_decompositions.py:57:12: error[unresolved-attribute] Attribute `permute_rows` is not defined on `Expr` in union `MatrixBase | Expr`
- sympy/matrices/tests/test_decompositions.py:77:19: error[unsupported-operator] Operator `*` is not supported between objects of type `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr` and `MutableDenseMatrix`
- sympy/matrices/tests/test_decompositions.py:84:19: error[unsupported-operator] Operator `*` is not supported between objects of type `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr` and `MutableDenseMatrix`
- sympy/matrices/tests/test_decompositions.py:90:19: error[unsupported-operator] Operator `*` is not supported between objects of type `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr` and `MutableDenseMatrix`
- sympy/matrices/tests/test_decompositions.py:103:12: error[unsupported-operator] Operator `*` is not supported between objects of type `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr` and `MutableDenseMatrix`
- sympy/matrices/tests/test_decompositions.py:110:12: error[unsupported-operator] Operator `*` is not supported between objects of type `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr` and `MutableDenseMatrix`
- sympy/matrices/tests/test_decompositions.py:123:12: error[unsupported-operator] Operator `*` is not supported between objects of type `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr` and `MutableDenseMatrix`
- sympy/matrices/tests/test_decompositions.py:131:21: error[unsupported-operator] Operator `*` is not supported between objects of type `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr` and `MutableDenseMatrix`
+ sympy/matrices/tests/test_decompositions.py:131:12: error[no-matching-overload] No overload of function `simplify` matches arguments
- sympy/matrices/tests/test_decompositions.py:288:10: error[unresolved-attribute] Attribute `applyfunc` is not defined on `T1'return@call_highest_priority`, `T2'return@call_highest_priority`, `Expr` in union `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr`
+ sympy/matrices/tests/test_decompositions.py:288:10: error[unresolved-attribute] Attribute `applyfunc` is not defined on `Expr` in union `MatrixBase | Expr`
+ sympy/matrices/tests/test_decompositions.py:393:16: error[no-matching-overload] No overload of function `simplify` matches arguments
+ sympy/matrices/tests/test_decompositions.py:394:16: error[no-matching-overload] No overload of function `simplify` matches arguments
- sympy/matrices/tests/test_decompositions.py:290:13: error[unsupported-operator] Operator `-` is not supported between objects of type `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr` and `MutableDenseMatrix`
- sympy/matrices/tests/test_decompositions.py:345:12: error[unsupported-operator] Operator `*` is not supported between objects of type `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr` and `MutableDenseMatrix`
- sympy/matrices/tests/test_decompositions.py:348:12: error[unsupported-operator] Operator `*` is not supported between objects of type `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr` and `MutableDenseMatrix`
- sympy/matrices/tests/test_decompositions.py:355:23: error[unsupported-operator] Operator `*` is not supported between objects of type `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr` and `MutableDenseMatrix`
- sympy/matrices/tests/test_decompositions.py:393:25: error[unsupported-operator] Operator `*` is not supported between objects of type `Unknown | T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr` and `Unknown | MutableDenseMatrix`
- sympy/matrices/tests/test_decompositions.py:394:25: error[unsupported-operator] Operator `*` is not supported between objects of type `Unknown | T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr` and `Unknown | MutableDenseMatrix`
- sympy/matrices/tests/test_decompositions.py:395:16: error[unresolved-attribute] Attribute `H` is not defined on `T1'return@call_highest_priority`, `T2'return@call_highest_priority`, `Expr` in union `Unknown | T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr`
+ sympy/matrices/tests/test_decompositions.py:395:16: error[unresolved-attribute] Attribute `H` is not defined on `Expr` in union `Unknown | MatrixBase | Expr`
- sympy/matrices/tests/test_decompositions.py:396:16: error[unresolved-attribute] Attribute `H` is not defined on `T1'return@call_highest_priority`, `T2'return@call_highest_priority`, `Expr` in union `Unknown | T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr`
+ sympy/matrices/tests/test_decompositions.py:396:16: error[unresolved-attribute] Attribute `H` is not defined on `Expr` in union `Unknown | MatrixBase | Expr`
- sympy/matrices/tests/test_decompositions.py:439:22: error[unsupported-operator] Operator `*` is not supported between objects of type `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr` and `MutableDenseMatrix`
+ sympy/matrices/tests/test_decompositions.py:439:13: error[no-matching-overload] No overload of function `simplify` matches arguments
- sympy/matrices/tests/test_decompositions.py:451:21: error[unsupported-operator] Operator `*` is not supported between objects of type `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr` and `MutableDenseMatrix`
+ sympy/matrices/tests/test_decompositions.py:451:12: error[no-matching-overload] No overload of function `simplify` matches arguments
- sympy/matrices/tests/test_decompositions.py:464:21: error[unsupported-operator] Operator `*` is not supported between objects of type `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr` and `MutableDenseMatrix`
+ sympy/matrices/tests/test_decompositions.py:464:12: error[no-matching-overload] No overload of function `simplify` matches arguments
- sympy/matrices/tests/test_decompositions.py:475:21: error[unsupported-operator] Operator `*` is not supported between objects of type `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr` and `MutableDenseMatrix`
+ sympy/matrices/tests/test_decompositions.py:475:12: error[no-matching-overload] No overload of function `simplify` matches arguments
- sympy/matrices/tests/test_decompositions.py:488:21: error[unsupported-operator] Operator `*` is not supported between objects of type `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr` and `MutableDenseMatrix`
+ sympy/matrices/tests/test_decompositions.py:488:12: error[no-matching-overload] No overload of function `simplify` matches arguments
+ sympy/matrices/tests/test_eigen.py:406:20: error[invalid-argument-type] Argument to function `max` is incorrect: Expected `Iterable[Unknown]`, found `MatrixBase | Unknown`
+ sympy/matrices/tests/test_eigen.py:477:12: error[no-matching-overload] No overload of function `simplify` matches arguments
+ sympy/matrices/tests/test_eigen.py:492:12: error[unresolved-attribute] Attribute `applyfunc` is not defined on `Expr` in union `MatrixBase | Expr | Unknown`
- sympy/matrices/tests/test_eigen.py:257:16: error[unresolved-attribute] Attribute `n` is not defined on `T1'return@call_highest_priority`, `T2'return@call_highest_priority` in union `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr`
- sympy/matrices/tests/test_eigen.py:306:14: error[unsupported-operator] Operator `*` is not supported between objects of type `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr` and `ImmutableDenseMatrix`
- sympy/matrices/tests/test_eigen.py:307:14: error[unsupported-operator] Operator `*` is not supported between objects of type `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr` and `MutableDenseMatrix`
- sympy/matrices/tests/test_eigen.py:322:15: error[unsupported-operator] Operator `*` is not supported between objects of type `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr` and `ImmutableDenseMatrix`
- sympy/matrices/tests/test_eigen.py:323:15: error[unsupported-operator] Operator `*` is not supported between objects of type `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr` and `MutableDenseMatrix`
- sympy/matrices/tests/test_eigen.py:364:14: error[unsupported-operator] Operator `*` is not supported between objects of type `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr` and `ImmutableDenseMatrix`
- sympy/matrices/tests/test_eigen.py:365:14: error[unsupported-operator] Operator `*` is not supported between objects of type `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr` and `MutableDenseMatrix`
- sympy/matrices/tests/test_eigen.py:380:15: error[unsupported-operator] Operator `*` is not supported between objects of type `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr` and `ImmutableDenseMatrix`
- sympy/matrices/tests/test_eigen.py:381:15: error[unsupported-operator] Operator `*` is not supported between objects of type `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr` and `MutableDenseMatrix`
- sympy/matrices/tests/test_eigen.py:405:12: error[unsupported-operator] Operator `*` is not supported between objects of type `T1'return@call_highest_priority | T2'return@call_highest_priority | MatrixBase | Expr` and `MutableDenseMatrix`
- sympy/matrices/tests/test_eigen.py:477:21: error[unsupported-operator] 

... (truncated 419 lines) ...

@astral-sh-bot
Copy link

astral-sh-bot bot commented Feb 15, 2026

Memory usage report

Memory usage unchanged ✅

@astral-sh-bot
Copy link

astral-sh-bot bot commented Feb 15, 2026

ecosystem-analyzer results

Lint rule Added Removed Changed
invalid-key 0 0 95
invalid-argument-type 1 1 31
type-assertion-failure 0 1 3
unresolved-attribute 0 0 3
invalid-assignment 0 0 2
invalid-return-type 0 1 0
unsupported-operator 0 0 1
Total 1 3 135

Full report with detailed diff (timing results)

@astral-sh-bot
Copy link

astral-sh-bot bot commented Feb 15, 2026

ruff-ecosystem results

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.

@AlexWaygood AlexWaygood changed the title Replace strsim with CPython-based Levenshtein implementation [ty] Replace strsim with CPython-based Levenshtein implementation Feb 15, 2026
claude and others added 3 commits February 15, 2026 19:15
…nostic.rs`

- Move `levenshtein.rs` from `types::diagnostic` to `diagnostic`
  (converting `diagnostic.rs` to `diagnostic/mod.rs`)
- Revert all changes to `types/diagnostic.rs`: restore `did_you_mean`
  import and original callsite instead of calling levenshtein directly
- Remove the `levenshtein` re-export from `types.rs`
- Use `HideUnderscoredSuggestions::Yes` in `did_you_mean`
- Update `_typos.toml` exclusion path to match new file location

https://claude.ai/code/session_014vwDhReNbswR4MXhYNcvBW
@AlexWaygood AlexWaygood force-pushed the claude/upgrade-levenshtein-impl-tLEYU branch from cbca655 to 9ce308e Compare February 15, 2026 19:44
@AlexWaygood AlexWaygood changed the title [ty] Replace strsim with CPython-based Levenshtein implementation [ty] Replace strsim with CPython-based Levenshtein implementation Feb 15, 2026
@AlexWaygood AlexWaygood marked this pull request as ready for review February 15, 2026 19:53
Copy link
Contributor

@sharkdp sharkdp left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You seem very eager to maintain your own implementation, so I'm not going object this time 😛.

Thanks!

@sharkdp sharkdp self-assigned this Feb 16, 2026
@AlexWaygood
Copy link
Member Author

Haha. Well, with a higher-quality Levenshtein implementation, we can consider reviving #21780, for example — which wasn't viable with strsim because there were too many low-quality, bogus suggestions

@AlexWaygood AlexWaygood merged commit 8eef2fc into main Feb 16, 2026
50 checks passed
@AlexWaygood AlexWaygood deleted the claude/upgrade-levenshtein-impl-tLEYU branch February 16, 2026 10:36
carljm added a commit that referenced this pull request Feb 16, 2026
* main: (43 commits)
  [`ruff`] Suppress diagnostic for strings with backslashes in interpolations before Python 3.12 (`RUF027`) (#21069)
  [flake8-bugbear] Fix B023 false positive for immediately-invoked lambdas (#23294)
  [ty] Add `Final` mdtests for loops and redeclaration (#23331)
  [`flake8-pyi`] Also check string annotations (`PYI041`) (#19023)
  Remove AlexWaygood as a flake8-pyi codeowner (#23347)
  [ty] Add comments to clarify the purpose of `NominalInstanceType::class_name` and `NominalInstanceType::class_module_name` (#23339)
  Add attestations for release artifacts and Docker images (#23111)
  [ty] Fix `assert_type` diagnostic messages (#23342)
  [ty] Force-update all insta snapshots (#23343)
  Add Q004 to the list of conflicting rules (#23340)
  [ty] Fix `invalid-match-pattern` false positives (#23338)
  [ty] new diagnostic called-match-pattern-must-be-a-type (#22939)
  [ty] Update flaky projects  (#23337)
  [ty] Increase timeout for ecosystem report to 40 min (#23336)
  Bump ecosystem-analyzer pin  (#23335)
  [ty] Replace `strsim` with CPython-based Levenshtein implementation (#23291)
  [ty] Add mdtest for staticmethod assigned in class body (#23330)
  [ty] fix inferring type variable from string literal argument (#23326)
  [ty] bytes literal is a sequence of integers (#23329)
  Update rand and getrandom (#23333)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

diagnostics Related to reporting of diagnostics. ecosystem-analyzer ty Multi-file analysis & type inference

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants