Thanks to visit codestin.com
Credit goes to github.com

Skip to content

[ty] Render full diagnostics in color#26384

Merged
AlexWaygood merged 2 commits into
mainfrom
alex/colored-diagnostics
Jun 26, 2026
Merged

[ty] Render full diagnostics in color#26384
AlexWaygood merged 2 commits into
mainfrom
alex/colored-diagnostics

Conversation

@AlexWaygood

@AlexWaygood AlexWaygood commented Jun 25, 2026

Copy link
Copy Markdown
Member

Context

This builds on the original Click for full diagnostic feature implemented in astral-sh/ruff#26269 and astral-sh/ty-vscode#462. The colored rendering follows the approach established by rust-lang/rust-analyzer#13848.

Summary

  • render full ty diagnostics with ANSI color and styling
  • disable terminal hyperlinks in LSP output and cover the behavior under forced hyperlink support

Companion PRs

Test plan

Screen.Recording.2026-06-25.at.19.40.15.mov

@AlexWaygood AlexWaygood added ty Multi-file analysis & type inference server Related to the LSP server labels Jun 25, 2026 — with ChatGPT Codex Connector
@astral-sh-bot

astral-sh-bot Bot commented Jun 25, 2026

Copy link
Copy Markdown

Memory usage report

Memory usage unchanged ✅

@astral-sh-bot

astral-sh-bot Bot commented Jun 25, 2026

Copy link
Copy Markdown

ecosystem-analyzer results

Lint rule Added Removed Changed
invalid-argument-type 29 1 3
no-matching-overload 13 0 0
unresolved-attribute 11 0 2
invalid-assignment 2 0 8
unsupported-operator 4 0 4
not-subscriptable 4 0 0
type-assertion-failure 0 1 2
invalid-return-type 1 1 0
not-iterable 1 0 1
call-non-callable 0 1 0
invalid-yield 1 0 0
unused-type-ignore-comment 0 1 0
Total 66 5 20

Flaky changes detected. This PR summary excludes flaky changes; see the HTML report for details.

Raw diff (91 changes)
beartype (https://github.com/beartype/beartype)
+ beartype/bite/collection/infercollectionitems.py:288:47 error[invalid-argument-type] Argument to function `make_hint_pep484604_union` is incorrect: Expected `Sequence[TypeForm[Any]]`, found `tuple[object, ...]`
+ beartype/bite/collection/infercollectionitems.py:289:49 error[invalid-argument-type] Argument to function `make_hint_pep484604_union` is incorrect: Expected `Sequence[TypeForm[Any]]`, found `tuple[object, ...]`

bokeh (https://github.com/bokeh/bokeh)
- src/bokeh/core/property/wrappers.py:566:29 error[invalid-argument-type] Method `__getitem__` of type `Overload[(index: int, /) -> Never, (index: slice[int | None, int | None, int | None], /) -> MutableSequence[Never]]` cannot be called with key of type `tuple[@Todo, ...]` on object of type `MutableSequence[Never]`
+ src/bokeh/core/property/wrappers.py:566:29 error[invalid-argument-type] Method `__getitem__` of type `Overload[(index: int, /) -> Never, (index: slice[int | None, int | None, int | None], /) -> MutableSequence[Never]]` cannot be called with key of type `tuple[int | slice[Any, Any, Any], ...]` on object of type `MutableSequence[Never]`
- src/bokeh/core/property/wrappers.py:568:21 error[invalid-assignment] Invalid subscript assignment with key of type `tuple[@Todo, ...]` and value of type `Unknown` on object of type `MutableSequence[Never]`
+ src/bokeh/core/property/wrappers.py:568:21 error[invalid-assignment] Invalid subscript assignment with key of type `tuple[int | slice[Any, Any, Any], ...]` and value of type `Unknown` on object of type `MutableSequence[Never]`

comtypes (https://github.com/enthought/comtypes)
+ comtypes/_vtbl.py:346:16 error[invalid-yield] Yield type `type` does not match annotated yield type `type[IUnknown]`

core (https://github.com/home-assistant/core)
- homeassistant/components/tasmota/light.py:224:40 error[unsupported-operator] Operator `in` is not supported between objects of type `Literal[ColorMode.HS]` and `set[ColorMode] | None | set[Unknown]`
+ homeassistant/components/tasmota/light.py:224:40 error[unsupported-operator] Operator `in` is not supported between objects of type `Literal[ColorMode.HS]` and `set[ColorMode] | None`
- homeassistant/components/tasmota/light.py:228:37 error[unsupported-operator] Operator `in` is not supported between objects of type `Literal[ColorMode.WHITE]` and `set[ColorMode] | None | set[Unknown]`
+ homeassistant/components/tasmota/light.py:228:37 error[unsupported-operator] Operator `in` is not supported between objects of type `Literal[ColorMode.WHITE]` and `set[ColorMode] | None`
- homeassistant/components/tasmota/light.py:239:17 error[unsupported-operator] Operator `in` is not supported between objects of type `Literal[ColorMode.COLOR_TEMP]` and `set[ColorMode] | None | set[Unknown]`
+ homeassistant/components/tasmota/light.py:239:17 error[unsupported-operator] Operator `in` is not supported between objects of type `Literal[ColorMode.COLOR_TEMP]` and `set[ColorMode] | None`

cwltool (https://github.com/common-workflow-language/cwltool)
+ cwltool/main.py:244:57 error[no-matching-overload] No overload of bound method `str.join` matches arguments
+ cwltool/validate_js.py:101:29 error[invalid-argument-type] Method `__getitem__` of type `bound method Top[MutableMapping[Unknown, Unknown]].__getitem__(key: Never, /) -> object` cannot be called with key of type `str` on object of type `Top[MutableMapping[Unknown, Unknown]]`
+ cwltool/validate_js.py:101:29 error[invalid-argument-type] Method `__getitem__` of type `bound method str.__getitem__(key: SupportsIndex | slice[SupportsIndex | None, SupportsIndex | None, SupportsIndex | None], /) -> str` cannot be called with key of type `str` on object of type `str`

egglog-python (https://github.com/egraphs-good/egglog-python)
- python/egglog/egraph_state.py:378:25 error[type-assertion-failure] Type `Unknown & ~Literal["delete"] & ~Literal["subsume"]` is not equivalent to `Never`
- python/egglog/egraph_state.py:623:25 error[type-assertion-failure] Type `Unknown & ~None` is not equivalent to `Never`
+ python/egglog/egraph_state.py:623:25 error[type-assertion-failure] Type `Value` is not equivalent to `Never`
- python/egglog/pretty.py:309:17 error[type-assertion-failure] Type `Unknown & ~None` is not equivalent to `Never`
+ python/egglog/pretty.py:309:17 error[type-assertion-failure] Type `Value` is not equivalent to `Never`
+ python/egglog/thunk.py:69:28 error[invalid-return-type] Return type does not match returned value: expected `T@__call__`, found `TypeVar`

freqtrade (https://github.com/freqtrade/freqtrade)
- freqtrade/optimize/analysis/lookahead.py:137:57 error[invalid-argument-type] Argument to function `LookaheadAnalysis.get_result` is incorrect: Expected `DataFrame`, found `dict[Unknown, Unknown]`
+ freqtrade/optimize/analysis/lookahead.py:137:57 error[invalid-argument-type] Argument to function `LookaheadAnalysis.get_result` is incorrect: Expected `DataFrame`, found `dict[str, DataFrame]`

hydra-zen (https://github.com/mit-ll-responsible-ai/hydra-zen)
- src/hydra_zen/structured_configs/_implementations.py:2880:60 error[invalid-argument-type] Argument to bound method `list.append` is incorrect: Expected `tuple[str, type, Field[Any]]`, found `tuple[str | @Todo, ...]`
+ src/hydra_zen/structured_configs/_implementations.py:2880:60 error[invalid-argument-type] Argument to bound method `list.append` is incorrect: Expected `tuple[str, type, Field[Any]]`, found `tuple[str | Any, ...]`

jax (https://github.com/google/jax)
+ jax/_src/pallas/einshape.py:637:47 error[invalid-argument-type] Argument to function `_is_tile_preserving` is incorrect: Expected `tuple[int, int] | None`, found `tuple[int | None, ...]`
+ jax/_src/pallas/fuser/block_spec.py:1414:60 error[invalid-argument-type] Argument to bound method `NDIndexer.make_trivial_indexer` is incorrect: Expected `tuple[int, ...]`, found `object`
+ jax/_src/pallas/fuser/block_spec.py:1417:25 error[not-iterable] Object of type `_T_co@zip` is not iterable
+ jax/_src/pallas/fuser/block_spec.py:1417:51 error[invalid-argument-type] Argument to constructor `zip.__new__` is incorrect: Expected `Iterable[Unknown]`, found `object`
+ jax/_src/pallas/mosaic_gpu/core.py:1371:19 error[unsupported-operator] Operator `+` is not supported between objects of type `int | Unknown` and `int | Array | Any | Slice`
+ jax/_src/pallas/mosaic_gpu/lowering.py:1133:7 error[invalid-argument-type] Argument to function `_lower_as_gpu_kernel` is incorrect: Expected `tuple[int, int, int]`, found `tuple[int, ...]`
- jax/experimental/mosaic/gpu/constraints.py:211:6 error[invalid-return-type] Function can implicitly return `None`, which is not assignable to return type `Variable | RegisterLayout | TMEMLayout | ... omitted 6 union elements`

manticore (https://github.com/trailofbits/manticore)
+ tests/other/test_smtlibv2.py:139:25 error[invalid-argument-type] Argument to bound method `set.add` is incorrect: Expected `<class 'Expression'> | <class 'BoolOperation'> | <class 'BitVecOperation'> | ... omitted 4 union elements`, found `type`

mongo-python-driver (https://github.com/mongodb/mongo-python-driver)
+ pymongo/asynchronous/mongo_client.py:892:37 error[invalid-argument-type] Argument to bound method `AsyncMongoClient._init_based_on_options` is incorrect: Expected `Collection[tuple[str, int]]`, found `set[Unknown | tuple[str, int | None]] & ~AlwaysFalsy`
+ pymongo/asynchronous/mongo_client.py:971:41 error[invalid-argument-type] Argument to bound method `AsyncMongoClient._init_based_on_options` is incorrect: Expected `Collection[tuple[str, int]]`, found `set[Unknown | tuple[str, int | None]] & ~AlwaysFalsy`
+ pymongo/synchronous/mongo_client.py:893:37 error[invalid-argument-type] Argument to bound method `MongoClient._init_based_on_options` is incorrect: Expected `Collection[tuple[str, int]]`, found `set[Unknown | tuple[str, int | None]] & ~AlwaysFalsy`
+ pymongo/synchronous/mongo_client.py:972:41 error[invalid-argument-type] Argument to bound method `MongoClient._init_based_on_options` is incorrect: Expected `Collection[tuple[str, int]]`, found `set[Unknown | tuple[str, int | None]] & ~AlwaysFalsy`

pandas (https://github.com/pandas-dev/pandas)
+ pandas/core/internals/construction.py:430:21 error[invalid-argument-type] Argument to function `construct_1d_arraylike_from_scalar` is incorrect: Expected `str | bytes | date | ... omitted 10 union elements`, found `object`
+ pandas/core/internals/construction.py:434:17 error[invalid-assignment] Invalid subscript assignment with key of type `int` and value of type `ExtensionArray | ndarray[tuple[Any, ...], dtype[Any]]` on object of type `list[int | float]`

pwndbg (https://github.com/pwndbg/pwndbg)
+ pwndbg/enhance.py:176:53 error[no-matching-overload] No overload of bound method `str.join` matches arguments

pylint (https://github.com/pycqa/pylint)
+ pylint/checkers/match_statements_checker.py:164:25 error[unresolved-attribute] Attribute `value` is not defined on `NodeNG` in union `NodeNG | Proxy`
+ pylint/checkers/classes/class_checker.py:946:54 error[unresolved-attribute] Attribute `name` is not defined on `NodeNG` in union `NodeNG | UninferableBase | Proxy`
+ pylint/checkers/refactoring/recommendation_checker.py:261:29 error[unresolved-attribute] Attribute `name` is not defined on `Attribute` in union `Attribute | Name`
+ pylint/checkers/refactoring/recommendation_checker.py:265:29 error[unresolved-attribute] Attribute `attrname` is not defined on `Name` in union `Attribute | Name`
+ pylint/checkers/refactoring/refactoring_checker.py:652:16 error[unresolved-attribute] Object of type `NodeNG | None` has no attribute `value`
+ pylint/checkers/refactoring/refactoring_checker.py:1178:12 error[unresolved-attribute] Object of type `NodeNG` has no attribute `name`
+ pylint/checkers/refactoring/refactoring_checker.py:1830:32 error[unresolved-attribute] Attribute `name` is not defined on `NodeNG` in union `NodeNG | Proxy`
+ pylint/checkers/refactoring/refactoring_checker.py:1841:38 error[unresolved-attribute] Attribute `name` is not defined on `NodeNG` in union `NodeNG | Proxy`
+ pylint/checkers/utils.py:1303:83 error[invalid-argument-type] Argument to function `has_known_bases` is incorrect: Expected `ClassDef`, found `(ClassDef & BaseInstance) | (FunctionDef & BaseInstance) | (Lambda & BaseInstance) | (UnboundMethod & BaseInstance)`
+ pylint/checkers/utils.py:1304:38 error[invalid-argument-type] Argument is incorrect: Expected `NodeNG`, found `(ClassDef & BaseInstance) | (FunctionDef & BaseInstance) | (Lambda & BaseInstance) | (UnboundMethod & BaseInstance)`

pyppeteer (https://github.com/pyppeteer/pyppeteer)
- pyppeteer/launcher.py:148:40 warning[unused-type-ignore-comment] Unused blanket `type: ignore` directive

pytest (https://github.com/pytest-dev/pytest)
- src/_pytest/assertion/rewrite.py:1012:25 error[invalid-assignment] Invalid subscript assignment with key of type `Unknown` and value of type `expr` on object of type `dict[str, str]`
+ src/_pytest/assertion/rewrite.py:1012:25 error[invalid-assignment] Invalid subscript assignment with key of type `str` and value of type `expr` on object of type `dict[str, str]`
- src/_pytest/assertion/rewrite.py:1110:17 error[invalid-assignment] Invalid subscript assignment with key of type `Unknown` and value of type `NamedExpr` on object of type `dict[str, str]`
+ src/_pytest/assertion/rewrite.py:1110:17 error[invalid-assignment] Invalid subscript assignment with key of type `str` and value of type `NamedExpr` on object of type `dict[str, str]`
- src/_pytest/assertion/rewrite.py:1128:21 error[invalid-assignment] Invalid subscript assignment with key of type `Unknown` and value of type `NamedExpr` on object of type `dict[str, str]`
+ src/_pytest/assertion/rewrite.py:1128:21 error[invalid-assignment] Invalid subscript assignment with key of type `Any & str` and value of type `NamedExpr` on object of type `dict[str, str]`

rotki (https://github.com/rotki/rotki)
- rotkehlchen/api/services/transactions.py:792:40 error[invalid-argument-type] Argument to bound method `list.extend` is incorrect: Expected `Iterable[Literal[SupportedBlockchain.ETHEREUM, SupportedBlockchain.OPTIMISM, SupportedBlockchain.POLYGON_POS, SupportedBlockchain.ARBITRUM_ONE, SupportedBlockchain.BASE, ... omitted 6 literals]]`, found `list[SupportedBlockchain]`

schema_salad (https://github.com/common-workflow-language/schema_salad)
+ src/schema_salad/typescript_codegen.py:408:25 error[invalid-argument-type] Argument is incorrect: Expected `bool`, found `Any | str | Literal[False]`

schemathesis (https://github.com/schemathesis/schemathesis)
+ src/schemathesis/specs/openapi/negative/value_channel.py:205:18 error[invalid-argument-type] Method `__getitem__` of type `Overload[(i: SupportsIndex, /) -> Divergent, (s: slice[SupportsIndex | None, SupportsIndex | None, SupportsIndex | None], /) -> list[Divergent]]` cannot be called with key of type `str` on object of type `list[Divergent]`
+ src/schemathesis/specs/openapi/negative/value_channel.py:205:18 error[invalid-argument-type] Method `__getitem__` of type `bound method dict[str, Divergent].__getitem__(key: str, /) -> Divergent` cannot be called with key of type `int` on object of type `dict[str, Divergent]`
+ src/schemathesis/specs/openapi/negative/value_channel.py:205:18 error[invalid-argument-type] Method `__getitem__` of type `bound method str.__getitem__(key: SupportsIndex | slice[SupportsIndex | None, SupportsIndex | None, SupportsIndex | None], /) -> str` cannot be called with key of type `str` on object of type `str`

scikit-learn (https://github.com/scikit-learn/scikit-learn)
+ sklearn/linear_model/_logistic.py:2402:30 error[no-matching-overload] No overload of function `tile` matches arguments
- sklearn/linear_model/tests/test_logistic.py:1940:12 error[unresolved-attribute] Attribute `shape` is not defined on `list[Unknown]`, `int`, `float` in union `list[Unknown] | ndarray[tuple[Any, ...], dtype[Unknown]] | int | float`
+ sklearn/linear_model/tests/test_logistic.py:1940:12 error[unresolved-attribute] Attribute `shape` is not defined on `list[Any]`, `int`, `float` in union `list[Any] | ndarray[tuple[Any, ...], dtype[Unknown]] | int | float`
- sklearn/linear_model/tests/test_logistic.py:1941:12 error[unresolved-attribute] Attribute `shape` is not defined on `list[Unknown]`, `int`, `float` in union `list[Unknown] | ndarray[tuple[Any, ...], dtype[Unknown]] | int | float`
+ sklearn/linear_model/tests/test_logistic.py:1941:12 error[unresolved-attribute] Attribute `shape` is not defined on `list[Unknown | str | None | int | float]`, `int`, `float` in union `list[Unknown | str | None | int | float] | Unknown | ndarray[tuple[Any, ...], dtype[Any]] | int | float`
+ sklearn/linear_model/tests/test_logistic.py:1946:9 error[no-matching-overload] No overload of function `assert_allclose` matches arguments
+ sklearn/linear_model/tests/test_logistic.py:1995:5 error[no-matching-overload] No overload of function `assert_allclose` matches arguments
+ sklearn/metrics/tests/test_common.py:1305:13 error[invalid-assignment] Object of type `str` is not assignable to attribute `__name__` on type `(Unknown & Top[partial[Unknown]]) | partial[(...) -> Unknown] | (((...) -> Unknown) & Top[partial[Unknown]])`

scipy (https://github.com/scipy/scipy)
+ scipy/conftest.py:661:55 error[invalid-argument-type] Argument to function `filterwarnings` is incorrect: Expected `bool`, found `<class 'RuntimeWarning'> | str | <class 'DeprecationWarning'> | ... omitted 3 union elements`
+ scipy/conftest.py:661:55 error[invalid-argument-type] Argument to function `filterwarnings` is incorrect: Expected `int`, found `<class 'RuntimeWarning'> | str | <class 'DeprecationWarning'> | ... omitted 3 union elements`
+ scipy/conftest.py:661:55 error[invalid-argument-type] Argument to function `filterwarnings` is incorrect: Expected `str`, found `<class 'RuntimeWarning'> | str | <class 'DeprecationWarning'> | ... omitted 3 union elements`
+ scipy/conftest.py:661:55 error[invalid-argument-type] Argument to function `filterwarnings` is incorrect: Expected `str`, found `<class 'RuntimeWarning'> | str | <class 'DeprecationWarning'> | ... omitted 3 union elements`
+ scipy/conftest.py:661:55 error[invalid-argument-type] Argument to function `filterwarnings` is incorrect: Expected `type[Warning]`, found `<class 'RuntimeWarning'> | str | <class 'DeprecationWarning'> | ... omitted 3 union elements`
+ scipy/spatial/tests/test_distance.py:615:14 error[no-matching-overload] No overload of function `cdist` matches arguments
+ scipy/spatial/tests/test_distance.py:664:14 error[no-matching-overload] No overload of function `cdist` matches arguments
+ scipy/spatial/tests/test_distance.py:665:14 error[no-matching-overload] No overload of function `cdist` matches arguments
+ scipy/spatial/tests/test_distance.py:677:15 error[no-matching-overload] No overload of function `cdist` matches arguments
+ scipy/spatial/tests/test_distance.py:1394:19 error[no-matching-overload] No overload of function `pdist` matches arguments
+ scipy/spatial/tests/test_distance.py:1432:14 error[no-matching-overload] No overload of function `pdist` matches arguments
+ scipy/spatial/tests/test_distance.py:1433:14 error[no-matching-overload] No overload of function `pdist` matches arguments

spark (https://github.com/apache/spark)
- python/pyspark/sql/connect/readwriter.py:662:25 error[invalid-assignment] Object of type `list[str] | @Todo` is not assignable to `tuple[str | None, ...]`
+ python/pyspark/sql/connect/readwriter.py:662:25 error[invalid-assignment] Object of type `list[str] | tuple[str, ...]` is not assignable to `tuple[str | None, ...]`
- python/pyspark/sql/connect/readwriter.py:708:25 error[invalid-assignment] Object of type `list[str] | @Todo` is not assignable to `tuple[str | None, ...]`
+ python/pyspark/sql/connect/readwriter.py:708:25 error[invalid-assignment] Object of type `list[str] | tuple[str, ...]` is not assignable to `tuple[str | None, ...]`
- python/pyspark/sql/readwriter.py:1631:25 error[invalid-assignment] Object of type `list[str] | @Todo` is not assignable to `tuple[str | None, ...]`
+ python/pyspark/sql/readwriter.py:1631:25 error[invalid-assignment] Object of type `list[str] | tuple[str, ...]` is not assignable to `tuple[str | None, ...]`
- python/pyspark/sql/readwriter.py:1715:25 error[invalid-assignment] Object of type `list[str] | @Todo` is not assignable to `tuple[str | None, ...]`
+ python/pyspark/sql/readwriter.py:1715:25 error[invalid-assignment] Object of type `list[str] | tuple[str, ...]` is not assignable to `tuple[str | None, ...]`

strawberry (https://github.com/strawberry-graphql/strawberry)
- strawberry/cli/__init__.py:15:9 error[call-non-callable] Object of type `<module 'strawberry.cli.app'>` is not callable

sympy (https://github.com/sympy/sympy)
+ sympy/functions/special/gamma_functions.py:803:30 error[unsupported-operator] Operator `+` is not supported between objects of type `Basic` and `Literal[1]`
+ sympy/geometry/ellipse.py:808:13 error[unsupported-operator] Operator `-` is not supported between two objects of type `Basic`
+ sympy/geometry/ellipse.py:855:13 error[unsupported-operator] Operator `-` is not supported between two objects of type `Basic`
+ sympy/logic/boolalg.py:1372:36 error[invalid-argument-type] Argument to constructor `Or.__new__` is incorrect: Expected `Boolean | bool`, found `Basic`
+ sympy/matrices/expressions/kronecker.py:125:21 error[unresolved-attribute] Object of type `Basic` has no attribute `rows`
+ sympy/matrices/expressions/kronecker.py:126:21 error[unresolved-attribute] Object of type `Basic` has no attribute `cols`
+ sympy/plotting/series.py:528:35 error[not-subscriptable] Cannot subscript object of type `Basic` with no `__getitem__` method
+ sympy/plotting/series.py:529:31 error[not-subscriptable] Cannot subscript object of type `Basic` with no `__getitem__` method
+ sympy/series/order.py:329:26 error[not-subscriptable] Cannot subscript object of type `Basic` with no `__getitem__` method
+ sympy/series/order.py:336:26 error[not-subscriptable] Cannot subscript object of type `Basic` with no `__getitem__` method
+ sympy/series/order.py:363:25 error[no-matching-overload] No overload of `dict.__init__` matches arguments
+ sympy/simplify/radsimp.py:206:35 error[unresolved-attribute] Attribute `base` is not defined on `Expr` in union `Expr | Unknown`
- sympy/simplify/radsimp.py:708:28 error[not-iterable] Object of type `set[Unknown] | Basic` may not be iterable
+ sympy/simplify/radsimp.py:708:28 error[not-iterable] Object of type `set[Expr] | Basic` may not be iterable
- sympy/simplify/simplify.py:1936:27 error[unsupported-operator] Operator `+` is not supported between objects of type `tuple[Unknown | int | float]` and `Unknown | list[Unknown]`
+ sympy/simplify/simplify.py:1936:27 error[unsupported-operator] Operator `+` is not supported between objects of type `tuple[Unknown | int | float]` and `Unknown | list[Unknown] | tuple[Unknown, ...]`

tornado (https://github.com/tornadoweb/tornado)
+ tornado/routing.py:349:55 error[invalid-argument-type] Argument to `Rule.__init__` is incorrect: Expected `dict[str, Any] | None`, found `object`
+ tornado/routing.py:349:55 error[invalid-argument-type] Argument to `Rule.__init__` is incorrect: Expected `str | None`, found `object`

typeshed-stats (https://github.com/AlexWaygood/typeshed-stats)
+ src/typeshed_stats/gather.py:520:27 error[invalid-argument-type] Argument to function `sorted` is incorrect: Expected `Iterable[str]`, found `Top[list[Unknown]]`

Full report with detailed diff (timing results)

@AlexWaygood AlexWaygood force-pushed the alex/colored-diagnostics branch from 5bcc458 to a777b40 Compare June 25, 2026 18:38
@astral-sh-bot

astral-sh-bot Bot commented Jun 25, 2026

Copy link
Copy Markdown

ruff-ecosystem results

Linter (stable)

✅ ecosystem check detected no linter changes.

Linter (preview)

✅ ecosystem check detected no linter changes.

@AlexWaygood AlexWaygood marked this pull request as ready for review June 25, 2026 18:45
@AlexWaygood AlexWaygood requested review from a team as code owners June 25, 2026 18:45
@astral-sh-bot astral-sh-bot Bot requested a review from MichaReiser June 25, 2026 18:45
Comment thread crates/ty_server/src/capabilities.rs Outdated
Comment thread crates/ruff_db/src/diagnostic/mod.rs Outdated
AlexWaygood added a commit to astral-sh/ty-vscode that referenced this pull request Jun 26, 2026
## Context

This builds on the original **Click for full diagnostic** feature
implemented in
[astral-sh/ruff#26269](astral-sh/ruff#26269) and
[#462](#462).
The colored rendering follows the approach established by
[rust-lang/rust-analyzer#13848](rust-lang/rust-analyzer#13848).

## Summary

- advertise support for colored full diagnostic output
- strip ANSI sequences from the virtual document and recreate their
styles with VS Code decorations
- support named terminal colors, 256-color palette entries, truecolor,
and text decorations

## Companion PRs

- [astral-sh/ruff#26384](astral-sh/ruff#26384)
- [astral-sh/ty#3858](astral-sh/ty#3858)

## Test plan



https://github.com/user-attachments/assets/36638263-fe48-4ba7-8abe-95db353f1257
@AlexWaygood AlexWaygood enabled auto-merge (squash) June 26, 2026 12:15
AlexWaygood added a commit to astral-sh/ty that referenced this pull request Jun 26, 2026
## Context

This builds on the original **Click for full diagnostic** feature
implemented in
[astral-sh/ruff#26269](astral-sh/ruff#26269) and
[astral-sh/ty-vscode#462](astral-sh/ty-vscode#462).
The colored rendering follows the approach established by
[rust-lang/rust-analyzer#13848](rust-lang/rust-analyzer#13848).

## Summary

Explain that `fullDiagnosticOutput` can include ANSI colour codes and
clients are expected to be able to handle this

## Companion PRs

- [astral-sh/ruff#26384](astral-sh/ruff#26384)
-
[astral-sh/ty-vscode#463](astral-sh/ty-vscode#463)
@AlexWaygood AlexWaygood merged commit 147bf85 into main Jun 26, 2026
61 checks passed
@AlexWaygood AlexWaygood deleted the alex/colored-diagnostics branch June 26, 2026 12:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

server Related to the LSP server ty Multi-file analysis & type inference

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants