Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
391 commits
Select commit Hold shift + click to select a range
c6682d2
[ty] Don't store `source_order` in BDD nodes (#27176)
carljm Jul 29, 2026
8e5cd42
[ty] Decide satisfiability of simple typevar-free conjunctions direct…
benedikt-bartscher Jul 29, 2026
7de420e
Fix indexing of excluded nested Ruff workspaces (#27303)
MichaReiser Jul 29, 2026
f3c869d
[`ruff`] reintroduce `demisto/content` to `ruff-ecosystem` (#27305)
Andrej730 Jul 29, 2026
a4f873d
[ty] Preserve exact numeric types in covariant collections (#27311)
carljm Jul 29, 2026
64bc5a9
[`flake8-pytest-style`] Mark `PT022` fixes as unsafe (#26440)
joshuavetos Jul 29, 2026
d5ef97f
[`flake8-return`] Fix false positive when variable is read in `finall…
anishgirianish Jul 29, 2026
7c3e2db
[ty] Fix enum class container assignability (#27318)
carljm Jul 29, 2026
4d4c8fa
[ty] Emit diagnostic when specializing a non-generic class (#26883)
dhruvmanila Jul 30, 2026
b20daf7
[ty] refactor: add helper function to send partial results (#27249)
ribru17 Jul 30, 2026
7da4b8b
[ty] Respect bounds and constraints in generic materializations (#27228)
carljm Jul 30, 2026
d91586b
Update prek dependencies (#27293)
renovate[bot] Jul 30, 2026
0d80497
Lint TOML files in the LSP (#26862)
ntBre Jul 30, 2026
f40dca9
[ty] Preserve forwarded expanded-variadic diagnostic sources (#27266)
charliermarsh Jul 30, 2026
63830f3
[ty] Borrow from constraint set storage less often (#27328)
dcreager Jul 30, 2026
80790b3
Bump 0.16.1 (#27330)
ntBre Jul 30, 2026
4a437b0
[ty] Precalculate supports in constraint sets (#27306)
dcreager Jul 30, 2026
f584b3d
[ty] Do not top-materialize (user) `TypeIs` return types (#26864)
sharkdp Jul 31, 2026
30d5dba
[ty] Migrate legacy TypeVar diagnostics to inline snapshots (#27343)
sharkdp Jul 31, 2026
eb82215
[ty] Reuse static-class accessor for tuple checks (#27364)
sharkdp Jul 31, 2026
10a4085
[ty] Remove unused frozen-collection APIs (#27347)
sharkdp Jul 31, 2026
ec09a62
[ty] Remove unused generic-context display settings (#27351)
sharkdp Jul 31, 2026
6407d24
[ty] Share symmetric narrowing-constraint branches (#27358)
sharkdp Jul 31, 2026
fce5f37
[ty] Remove unused string-literal display settings (#27352)
sharkdp Jul 31, 2026
2605c55
[ty] Remove unused file-scoped place identifiers (#27354)
sharkdp Jul 31, 2026
e1f72fb
[ty] Simplify static class specialization dispatch (#27359)
sharkdp Jul 31, 2026
0b30620
[ty] Unify symmetric bounded TypeVar comparisons (#27357)
sharkdp Jul 31, 2026
974916c
[ty] Consolidate functional enum mixin conversion (#27342)
sharkdp Jul 31, 2026
05ae2d1
[ty] Derive the corpus workspace root without spawning Cargo (#27345)
sharkdp Jul 31, 2026
e70e9b7
[ty] Unify break and continue flow handling (#27360)
sharkdp Jul 31, 2026
7e45d7b
[ty] Deduplicate module-resolver test-builder transitions (#27353)
sharkdp Jul 31, 2026
93ac182
[ty] Remove unused nonlocal symbol lookup (#27363)
sharkdp Jul 31, 2026
28e5bf0
[ty] Share dynamic class header-range reconstruction (#27356)
sharkdp Jul 31, 2026
03a5472
[ty] Remove bespoke inference VecMap iterator (#27362)
sharkdp Jul 31, 2026
cf3ddc3
[ty] Merge duplicated VecSet implementation blocks (#27365)
sharkdp Jul 31, 2026
81f97ec
[ty] Remove empty corpus known-failure machinery (#27344)
sharkdp Jul 31, 2026
0e24940
[ty] Reuse tuple length accessors for size hints (#27366)
sharkdp Jul 31, 2026
9dfeff4
[ty] Remove single-use current-assignment conversions (#27361)
sharkdp Jul 31, 2026
8ebf0eb
[ty] Restore frozen-collection APIs (#27367)
sharkdp Jul 31, 2026
88afdef
[ty] Diagnose dataclass fields after inherited defaults (#27327)
charliermarsh Jul 31, 2026
7a7b2ab
[ty] Use legacy ParamSpec syntax in legacy wrapper test (#27348)
sharkdp Jul 31, 2026
2b85a51
[ty] Index with-statement targets as symbols (#27256)
Punisheroot Jul 31, 2026
7111e13
Register formatting capabilities dynamically to exclude TOML files (#…
ntBre Jul 31, 2026
31cb63a
[`flake8-pyi`] Avoid false positives on `singledispatch` functions (`…
ntBre Jul 31, 2026
8430a09
[ty] Reject specializing non-generic subclasses (#27377)
charliermarsh Jul 31, 2026
9e5424f
[ty] Preserve TypeVarTuple context during Generic recovery (#27381)
charliermarsh Jul 31, 2026
2272478
[ty] Reject `ClassVar` and `Final` qualifiers in `NamedTuple` fields …
BitWeaverDev Jul 31, 2026
6cfeb8a
Narrow internal visibility with Hawk (#27339)
charliermarsh Aug 1, 2026
4d03c62
Remove unused APIs from ruff_ranged_value (#27391)
charliermarsh Aug 1, 2026
589050b
[ty] Remove unused APIs from ty_site_packages (#27399)
charliermarsh Aug 1, 2026
e0a0b8d
[ty] Remove unused APIs from ty_python_core (#27396)
charliermarsh Aug 1, 2026
d6c6b45
Remove unused APIs from ruff_workspace (#27393)
charliermarsh Aug 1, 2026
f21e418
Remove unused APIs from ruff_diagnostics (#27383)
charliermarsh Aug 1, 2026
cc7a77f
Remove unused APIs from ruff_linter (#27385)
charliermarsh Aug 1, 2026
103168b
Remove unused APIs from ruff_python_stdlib (#27390)
charliermarsh Aug 1, 2026
8089b33
[ty] Remove unused APIs from ty_server (#27398)
charliermarsh Aug 1, 2026
9783303
Remove unused APIs from ruff_db (#27382)
charliermarsh Aug 1, 2026
67ecabc
[ty] Remove unused APIs from ty_module_resolver (#27394)
charliermarsh Aug 1, 2026
adb763d
[ty] Remove unused APIs from ty_project (#27395)
charliermarsh Aug 1, 2026
62e3fb4
[ty] Sync vendored typeshed stubs (#27401)
github-actions[bot] Aug 1, 2026
9ef3f91
[`ruff_python_ast`] Fix double visit / missing elif visit (#27404)
Andrej730 Aug 1, 2026
ee278f4
Restore symmetric public APIs (#27405)
charliermarsh Aug 1, 2026
64737b2
Remove unused APIs from ruff_notebook (#27386)
charliermarsh Aug 1, 2026
1fcdb82
Move formatter line terminators into test module (#27384)
charliermarsh Aug 1, 2026
6002a07
Remove unused APIs from ruff_source_file (#27392)
charliermarsh Aug 1, 2026
c4fb1f4
Remove unused ClassMemberBoundness predicates (#27389)
charliermarsh Aug 1, 2026
2742f95
[ty] Remove unused TypeVarVariance bounds (#27408)
charliermarsh Aug 1, 2026
e31dffc
[ty] Detect `__aenter__` and `__aexit__` that do not return awaitable…
BitWeaverDev Aug 2, 2026
299a227
[ty] Improve error context for incompatible callable signatures (#27422)
AlexWaygood Aug 2, 2026
2fa7c67
[ty] Prioritize readable mdtest organization in AGENTS.md (#27424)
AlexWaygood Aug 2, 2026
da17b77
[ty] Trigger signature help after completing callable with parenthese…
cheparity Aug 3, 2026
d3544b5
[ty] Revert "Remove bespoke inference VecMap iterator" (#27428)
sharkdp Aug 3, 2026
d3baae5
Use `LinterSettings` builder methods in tests (#27418)
Andrej730 Aug 3, 2026
f78d516
[ty] Make parsed modules Python-version aware (#26856)
MichaReiser Aug 3, 2026
cd138a3
[ty] Document inference behavior of unannotated parameters with defau…
sharkdp Aug 3, 2026
a24a1dd
[ty] Recognize Pydantic on extra search paths (#27429)
sharkdp Aug 3, 2026
6ffd512
[ty] Move Unknown into ty_extensions._internal (#27430)
AlexWaygood Aug 3, 2026
acc1b0f
[ty] Reject out-of-scope ParamSpec components (#27378)
charliermarsh Aug 3, 2026
f70a1a3
[ty] Hide stub-only helpers from implicit builtin lookup (#27423)
charliermarsh Aug 3, 2026
64a4f10
Add pywin32 to Ruff ecosystem checks (#27437)
Avasam Aug 4, 2026
7fd30bb
[ty] Check property compatibility when matching class objects to prot…
charliermarsh Aug 4, 2026
95734a5
[ty] Make module resolution environment-aware (#27128)
MichaReiser Aug 4, 2026
aa5b04a
[ty] Support different type inference settings in a single Salsa DB (…
MichaReiser Aug 4, 2026
e87ddc0
[ty] Move Python version source out of `Program` (#27434)
MichaReiser Aug 4, 2026
b9fa93c
[ty] Preserve return constraints for object-variadic callables (#27431)
dhruvmanila Aug 4, 2026
e55b98e
[ty] Preserve return constraints for top callables (#27446)
dhruvmanila Aug 4, 2026
f00d9b8
[ty] Bump ecosystem-analyzer to fix attrs and Bokeh (#27457)
sharkdp Aug 4, 2026
f96df04
[ty] Top-materialize `is_dataclass` type guard (#27455)
sharkdp Aug 4, 2026
94d1bef
[ty] Reject unsupported `dataclass_transform` parameters (#27458)
sharkdp Aug 4, 2026
0fcc5ae
[ty] Fix unused hints for OR-pattern captures (#27438)
carljm Aug 4, 2026
b56bb12
[ty] Preserve generic class type variables in constructor inference (…
charliermarsh Aug 4, 2026
d82ee58
[ty] Retain typing-only symbols in explicit completions (#27435)
charliermarsh Aug 4, 2026
721f310
[ty] Remove deprecated `src.root` setting in favor of `environment.ro…
MichaReiser Aug 4, 2026
9f45b2e
[ty] Fix specialization cycle with deferred TypeVar defaults (#27453)
charliermarsh Aug 4, 2026
3f50935
[ty] Extract constraint-set-related benchmarks into separate file (#2…
dcreager Aug 4, 2026
1a92e30
[ty] Infer generic TypedDicts through synthesized constructor signatu…
charliermarsh Aug 4, 2026
b404fe1
[ty] Rename the Markdown code-span predicate used in docstring parsin…
lerebear Aug 4, 2026
e63c27e
[ty] Preserve class type parameters through generic decorators (#27442)
carljm Aug 4, 2026
e1938d3
[ty] Recover generic constructor types from failing overloads (#27460)
charliermarsh Aug 4, 2026
e49143a
[ty] Index match-pattern bindings as symbols (#27260)
Punisheroot Aug 4, 2026
5810946
[ty] Preserve called types in intersection diagnostics (#27475)
carljm Aug 5, 2026
ea933ff
[ty] Validate constructor calls on unbounded type variables (#27449)
charliermarsh Aug 5, 2026
2ddadb9
[ty] Fix constructor calls on narrowed type-variable intersections (#…
carljm Aug 5, 2026
7982c94
Update Rust crate camino to v1.2.5 (#27481)
renovate[bot] Aug 5, 2026
b220003
Update Rust crate thin-vec to v0.2.19 (#27484)
renovate[bot] Aug 5, 2026
5ba9d8f
Update taiki-e/install-action action to v2.85.3 (#27490)
renovate[bot] Aug 5, 2026
c82cbfe
Update CodSpeedHQ/action action to v4.19.1 (#27487)
renovate[bot] Aug 5, 2026
e38aea0
Update Rust crate toml to v1.1.4 (#27485)
renovate[bot] Aug 5, 2026
8961e0e
Update Rust crate toml_parser to v1.1.3 (#27486)
renovate[bot] Aug 5, 2026
bfa551c
Update Rust crate jiff to v0.2.35 (#27482)
renovate[bot] Aug 5, 2026
78fd19c
Update dependency astral-sh/uv to v0.12.1 (#27477)
renovate[bot] Aug 5, 2026
f76455d
Update dependency unidiff to v1 (#27491)
renovate[bot] Aug 5, 2026
04eb43c
Update Rust crate schemars to v1.2.2 (#27483)
renovate[bot] Aug 5, 2026
44460d4
Update cargo-bins/cargo-binstall action to v1.21.1 (#27476)
renovate[bot] Aug 5, 2026
26435b5
Update prek dependencies (#27480)
renovate[bot] Aug 5, 2026
8348f2f
Update dependency ruff to v0.16.1 (#27479)
renovate[bot] Aug 5, 2026
101d25d
Update dependency prek to v0.4.11 (#27478)
renovate[bot] Aug 5, 2026
a16cb1b
Update NPM Development dependencies (#27489)
renovate[bot] Aug 5, 2026
21b866e
Update docker/login-action action to v4.5.2 (#27488)
renovate[bot] Aug 5, 2026
7b025a5
[ty] [playground] Make run panel scrollable and wrapping (#27474)
MeGaGiGaGon Aug 5, 2026
3e628b8
[ty] Update Salsa to 0.28.2 (#27496)
MichaReiser Aug 5, 2026
bc0422e
[ty] Select benchmark projects in memory reports (#27499)
MichaReiser Aug 5, 2026
082dc5b
[ty] Infer generic TypedDicts from unpacked TypedDicts (#27439)
charliermarsh Aug 5, 2026
c0efa1a
[ty] Avoid exponential slowdown copying narrowed TypedDict unions (#2…
carljm Aug 5, 2026
19330b4
[ty] Reject Self with incompatible explicit receiver annotations (#27…
charliermarsh Aug 5, 2026
4f75884
[ty] Install primer dependencies for memory reports (#27500)
MichaReiser Aug 5, 2026
79e9224
[ty] Suppress `unimported-reveal` diagnostics in stub files and `if T…
AlexWaygood Aug 5, 2026
f33f59f
[ty] Clarify ecosystem summary diagnostic placement (#27511)
AlexWaygood Aug 5, 2026
8c30182
[ty] Normalize unpacked callable signatures for assignability (#27450)
charliermarsh Aug 5, 2026
c8399f2
test(annotate): Verify cell_index behavior
epage Jul 31, 2026
22b2bc8
fix(annotate): Fix the suggestion anonymous logic
epage Jul 31, 2026
36eb998
refactor(annotate): Pull out origin formatting
epage Jul 31, 2026
c6c4d38
fix(annotate): Render cells for patches
epage Jul 31, 2026
9706569
refactor(annotate): Allow optional paths in Origin
epage Jul 31, 2026
54adc11
fix(annotate): Show origin when cell changed from last suggestion
epage Jul 31, 2026
03989bf
fix(annotate): Always show cell index
epage Jul 31, 2026
68d556d
fix(annotate): Hide the path when just the cell changes
epage Jul 31, 2026
2e64753
fix(annotate): Use ruff's patch origin marker
epage Aug 1, 2026
f5f7e14
test(annotate): Capture confusing suggestion
epage Aug 3, 2026
bb86883
perf(annotate): Remove redundant location lookup
epage Aug 4, 2026
9c53b5d
fix(annotate): Remove panic in suggestions
epage Aug 4, 2026
a663722
[ty]Tokenize reStructuredText prefix roles (#27464)
lerebear Aug 5, 2026
59de3d2
refactor(db): Delegate Diff::fmt to an inherent method
epage Jul 30, 2026
3a04e25
refactor(db): Extract applicability note
epage Jul 29, 2026
65e6104
refactor(db): Decouple applicability note from Diff Part 1
epage Jul 30, 2026
9e18e07
refactor(db): Decouple applicability note from Diff Part 2
epage Jul 30, 2026
ba5fdba
refactor(db): Pull out common applicability code
epage Jul 30, 2026
0ae4d9f
refactor(db): Pull out applicability note call
epage Jul 29, 2026
3c09617
refactor(db): Render Applicability through annotate-snippets
epage Jul 29, 2026
3d1516f
release: use self-repo syntax (#27514)
woodruffw Aug 5, 2026
d8e5507
[ty] Target the mdtest binary when running individual mdtests (#27521)
charliermarsh Aug 5, 2026
3eb4c71
[ty] Reject unhashable objects for Hashable protocols (#27441)
carljm Aug 5, 2026
3618a85
[ty] Restore bottom callable subtyping for gradual prefixes (#27519)
carljm Aug 5, 2026
8c7933a
[ty] Shrink callable types in property tests (#27504)
AlexWaygood Aug 5, 2026
4ac5dee
[ty] Add subdiagnostic hint when an open `TypedDict` is not assignabl…
AlexWaygood Aug 5, 2026
39ff33c
[ty] Preserve property getter call errors (#27509)
charliermarsh Aug 5, 2026
c3ac422
refactor(db): Better focus comments
epage Jul 29, 2026
89ddb33
refactor(db): Extract cell calculation function
epage Jul 30, 2026
973372e
refactor(db): Prefer early return
epage Jul 30, 2026
8effcb8
refactor(db): Clarify we are working with a cell index
epage Jul 30, 2026
9ed797b
refactor(db): Pull out range calculations
epage Jul 30, 2026
2582b1a
refactor(db): Adjust cell index type
epage Jul 31, 2026
08f48a6
refactor(db): Decouple edit filters from diff render
epage Jul 30, 2026
9501d97
[ty] Simplify numeric tower displays (e.g., `float` over `int | float…
charliermarsh Aug 5, 2026
c88d3c5
[ty] Avoid double inference of Unpack operands in Union (#27525)
carljm Aug 5, 2026
6dc1031
Disable local ThinLTO for optimized development workflows (#27526)
charliermarsh Aug 5, 2026
fce9727
[ty] Fix panic from mismatched OR-pattern bindings (#27533)
carljm Aug 6, 2026
87aa1aa
[ty] Gradual `isinstance` narrowing for generic classes (#27308)
sharkdp Aug 6, 2026
c06c003
[ty] Temporarily remove myself from the reviewer pool (#27541)
sharkdp Aug 6, 2026
64021cf
[ty] Require ClassVar declarations for protocol members (#27530)
charliermarsh Aug 6, 2026
e7a2d2c
[ty] Infer variance through type[T] (#27534)
charliermarsh Aug 6, 2026
c88946e
[ty] Bump ecosystem-analyzer for strict project settings (#27542)
sharkdp Aug 6, 2026
baea3d0
[ty] Expose strict analysis options in the playground (#27543)
sharkdp Aug 6, 2026
05160d5
[ty] Diagnose invalid descriptor `__get__` calls (#27400)
charliermarsh Aug 6, 2026
22c7823
[ty] Enable (but downrank) auto-import completion suggestions from st…
AlexWaygood Aug 6, 2026
2fc445f
[ty] Diagnose invalid __getattr__ calls (#27502)
charliermarsh Aug 6, 2026
6ea296b
[ty] Normalize type labels in structured docstrings (#26923)
lerebear Aug 6, 2026
17a00de
[ty] Reuse primer commands in memory reports (#27553)
MichaReiser Aug 6, 2026
c4e86fc
[ty] Add helper extension methods for half-range and equality constra…
dcreager Aug 7, 2026
1b9e5fc
Update Swatinem/rust-cache action to v2.9.2 (#27568)
charliermarsh Aug 7, 2026
5b48a04
Bump 0.16.2 (#27555)
ntBre Aug 7, 2026
02ce4ba
[ty] Add an opt-in unsound-return-statement lint (#27561)
AlexWaygood Aug 7, 2026
9a908ef
[ty] Enable missing ecosystem analysis rules (#27559)
AlexWaygood Aug 7, 2026
55c7d48
[ty] Consider object members in protocol comparisons (#27532)
carljm Aug 7, 2026
2aff056
[ty] Stabilize recursive gradual type alias materialization (#27563)
carljm Aug 7, 2026
fbcaa20
[ty] Expand type aliases for `Generator` when evaluating a generator …
AlexWaygood Aug 7, 2026
fade22c
[ty] Recognize overlapping NewTypes and their underlying values (#27522)
carljm Aug 7, 2026
a706896
[ty] Infer precise TypedDict key-membership truthiness (#27579)
carljm Aug 7, 2026
2c5dcc2
[`ruff`] Also suggest `asyncio.TaskGroup` (`RUF006`) (#27461)
tjkuson Aug 7, 2026
df3216e
[`numpy`] Make `np.chararray` autofix backwards-compatible (`NPY201`)…
romero-deshaw Aug 7, 2026
6f86de2
[`pylint`] Fix false negatives on negative numbers (`PLR6104`) (#27251)
Avasam Aug 7, 2026
ba581e1
[ty] Avoid composite Salsa keys for unspecialized MROs (#27592)
MichaReiser Aug 8, 2026
463826d
[ty] Update flaky primer projects (#27597)
AlexWaygood Aug 8, 2026
3115cba
[ty] Preserve contextual inference for declarations in loops (#27594)
charliermarsh Aug 8, 2026
24baf2c
[ty] Remove unnecessary constraint set display simplification logic (…
dcreager Aug 8, 2026
344c279
[ty] Resolve uv from PATH before workspace discovery (#27609)
MichaReiser Aug 9, 2026
4f312d3
[ty] Avoid deadlock when scheduling watch checks (#27605)
MichaReiser Aug 9, 2026
c56aad1
[ty] Reduce Expr size to 64 bytes (#27591)
charliermarsh Aug 9, 2026
17980fe
Update mimalloc version to 0.1.52 (#27586)
chirizxc Aug 9, 2026
09a7441
[ty] Split-off `Command` execution from `System` (#27608)
MichaReiser Aug 9, 2026
78cad66
[ty] Add an opt-in `unsound-yield` lint (#27593)
AlexWaygood Aug 9, 2026
68799c4
[ty] Two equality constraints are usually disjoint (#27614)
dcreager Aug 9, 2026
18bb80d
[ty] Fix signature help at end of file (#27622)
MichaReiser Aug 10, 2026
3440632
[`pylint`] Allow `continue` in `finally` on Python 3.8 (#27626)
MichaReiser Aug 10, 2026
d031eb1
[ty] Support Annotated inside type[...] (#27629)
AlexWaygood Aug 10, 2026
c0824de
Enable rustfmt on more files (#27630)
AlexWaygood Aug 10, 2026
4992557
[ty] Preserve typing-only completion ranking in TYPE_CHECKING blocks …
AlexWaygood Aug 10, 2026
282d6f9
[ty] Improve ecosystem minimization and reporting skills (#27632)
AlexWaygood Aug 10, 2026
60d2207
Enable PGO for Linux x86-64 Ruff releases (#27570)
charliermarsh Aug 10, 2026
efccf49
Enable PGO for macOS ARM64 Ruff releases (#27572)
charliermarsh Aug 10, 2026
f32cff5
Enable PGO for Windows x86-64 Ruff releases (#27573)
charliermarsh Aug 10, 2026
fbe3e25
Enable PGO for Linux ARM64 Ruff releases (#27574)
charliermarsh Aug 10, 2026
6f89634
[ty] Exclude quantified constraints from semantic type walks (#27613)
charliermarsh Aug 10, 2026
a015723
[ty] Validate augmented assignment stores (#27545)
charliermarsh Aug 10, 2026
d23b7e8
[`pylint`] Fix false positives and negatives with `%b` format charact…
Andrej730 Aug 10, 2026
b9afd02
[ty] Fix truthiness inference for subclassable known classes (#27638)
AlexWaygood Aug 10, 2026
7be0508
[ty] Preserve literal-string origin in comparison narrowing (#27582)
carljm Aug 10, 2026
d00a1a2
[ty] fix mdtest prose about string literal identity checks (#27639)
carljm Aug 10, 2026
2a42ea5
[ty] Clarify incompatible loop declaration regression (#27640)
charliermarsh Aug 10, 2026
d08b174
[ty] Validate boolean conversion in comprehension filters (#27641)
carljm Aug 11, 2026
58652e1
[ty] Validate unpacked callable argument shapes (#27516)
dhruvmanila Aug 11, 2026
96737aa
Use Depot runners for release builds (#27627)
charliermarsh Aug 11, 2026
a2e887a
[ty] Preserve constrained TypeVars when slicing (#27645)
carljm Aug 11, 2026
3436ac3
Pin Depot runners to Ubuntu 24.04 (#27656)
charliermarsh Aug 11, 2026
490f2b3
Use a four-core Depot runner for Linux ARM64 PGO builds (#27657)
charliermarsh Aug 11, 2026
ed768f0
[ty] Preserve enum attributes on Self and bounded type variables (#27…
carljm Aug 11, 2026
feb64f2
[`pylint`] Fix `PLE1307` false positive with bools (#27651)
Andrej730 Aug 11, 2026
93901e6
[ty] Separate place-load resolution from type inference. (#27319)
lerebear Aug 11, 2026
6d8d1b9
[`pylint`] Improve handling of concatenated strings (`PLE1300`) (#27659)
Andrej730 Aug 11, 2026
17097a6
Use eight-core runners for native Linux PGO builds (#27662)
charliermarsh Aug 11, 2026
8f11b10
[ty] Initialize `PlaceLoadResolution::crosses_scope_declaration` with…
lerebear Aug 11, 2026
672d75c
[ty] Resolve generic type aliases subscripted inside `type[]` (#27663)
augustelalande Aug 12, 2026
95af589
[ty] Diagnose invalid __getattribute__ calls (#27506)
charliermarsh Aug 12, 2026
16049e4
[ty] Handle class objects that may be descriptors (#26687)
charliermarsh Aug 12, 2026
845ef6d
Update Rust crate clap to v4.6.5 (#27675)
renovate[bot] Aug 12, 2026
10f8dc2
Update Rust crate globset to v0.4.20 (#27676)
renovate[bot] Aug 12, 2026
2a1f6f6
Update dependency prek to v0.4.12 (#27671)
renovate[bot] Aug 12, 2026
0d773b0
Update dependency ruff to v0.16.2 (#27672)
renovate[bot] Aug 12, 2026
c52b66d
Update Rust crate aho-corasick to v1.1.5 (#27674)
renovate[bot] Aug 12, 2026
2ff9cfd
Update Rust crate ignore to v0.4.33 (#27677)
renovate[bot] Aug 12, 2026
0e85931
Update prek dependencies (#27673)
renovate[bot] Aug 12, 2026
fe9af4f
Update CodSpeedHQ/action action to v5 (#27686)
renovate[bot] Aug 12, 2026
5609806
Update taiki-e/install-action action to v2.85.8 (#27680)
renovate[bot] Aug 12, 2026
25e9154
Update Rust crate similar to v3.1.2 (#27679)
renovate[bot] Aug 12, 2026
98aae2e
Update dependency pyrefly to v1.2.0 (#27682)
renovate[bot] Aug 12, 2026
2936d57
Update dependency astral-sh/uv to v0.12.3 (#27670)
renovate[bot] Aug 12, 2026
9ddde64
Update docker/login-action action to v4.6.0 (#27683)
renovate[bot] Aug 12, 2026
1f21a77
Update dependency mdformat-mkdocs to v5.3.0 (#27681)
renovate[bot] Aug 12, 2026
a5bb9fb
Update NPM Development dependencies (#27684)
renovate[bot] Aug 12, 2026
ad23a94
merge upstream ruff (390 commits, 47d7184a61 -> a5bb9fb802dc)
KotlinIsland Aug 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
66 changes: 51 additions & 15 deletions .agents/skills/minimizing-ty-ecosystem-changes/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,24 @@ description: Use when a user says "minimize this ty ecosystem change", "reproduc

## Invariants

1. Use the exact Ruff revisions, PR config, dependency cutoff, mypy-primer revision, and project Python version from the Actions run.
1. Use the exact Ruff revisions, user-level PR config, dependency cutoff, mypy-primer revision, project Python version, and strictness settings from the Actions run.
2. Reproduce the reported project difference before explaining it or writing a smaller example.
3. Treat copied binaries and config as read-only, and verify every reduction against both binaries.
4. Derive every candidate from the preceding verified candidate; NEVER substitute an independently constructed example.
5. Preserve the underlying trigger, not merely the diagnostic rule, message, or displayed type.

Start each investigation from fresh artifacts. Do not trust retained memories, previous minimizations, current upstream project state, or the helper script's default lockfile.

## Collect Exact-Run Metadata

Run the bundled helper with the Actions run ID or URL and every affected mypy-primer project name:
If a primary agent supplied an existing run-metadata manifest, verify that its run ID and attempt match the frozen report and that it contains each assigned project. Reuse the manifest without modifying it.

Otherwise, run the bundled helper with the Actions run ID or URL, matching attempt, and every affected mypy-primer project name:

```bash
scripts/collect_ty_ecosystem_run_metadata.py \
<actions-run> <project-name>... \
--attempt <actions-attempt> \
--output target/ty-ecosystem-run.json
```

Expand All @@ -29,7 +34,7 @@ The current workflow splits compilation into `Build ty (base)` and `Build ty (pr

## Prepare ty

If a primary agent supplied freshly copied base and PR binaries plus the PR ecosystem config, verify the paths exist and reuse them. Do not rebuild, switch Ruff refs, or overwrite the shared artifacts.
If a primary agent supplied freshly copied base and PR profiling binaries plus the PR ecosystem config, preserve their absolute paths as `TY_ECOSYSTEM_BASE_BINARY` and `TY_ECOSYSTEM_PR_BINARY`, verify they exist, and reuse them. Do not rebuild those binaries, switch shared Ruff refs, or overwrite the shared artifacts. An agent may build an exact-revision debug binary on demand to identify an ambiguous internal type, using an isolated worktree if necessary; the profiling binaries remain the behavioral oracle.

Otherwise, require a clean working tree, copy `.github/ty-ecosystem.toml` from the PR revision, and build ty on the manifest's merge base and PR revision:

Expand All @@ -55,40 +60,71 @@ cp target/profiling/ty target/ty-ecosystem-bins/ty-pr

## Reproduce

Create a unique temporary directory for each project. Read its Python version and the pinned mypy-primer revision from the manifest, then bypass the adjacent script lockfile:
Create a unique temporary directory for each project and use its absolute path. Read its Python version and the pinned mypy-primer revision from the manifest. Obtain the project revision from the `/blob/<commit>/` component of the original diagnostic's source permalink, and check that links for the same project agree. If no diagnostic permalink exists, inspect the matching diagnostics shard or Actions logs; if the exact revision cannot be recovered, explicitly report that limitation. Then bypass the adjacent script lockfile:

```bash
uv run \
--python <project-python> \
--with "mypy-primer @ git+https://github.com/hauntsaninja/mypy_primer@<mypy-primer-revision>" \
--no-project \
python scripts/setup_primer_project.py \
<project-name> <temporary-directory> \
<project-name> <absolute-temporary-directory> \
--revision <report-project-revision> \
--exclude-newer <EXCLUDE_NEWER>
```

Use absolute paths and re-export `TY_CONFIG_FILE` in every new shell before running either binary:
Use the ecosystem config as user-level configuration, matching CI without replacing project-level config discovery, and re-export `XDG_CONFIG_HOME` in each new shell. If a primary agent supplied `TY_ECOSYSTEM_CONFIG_HOME`, reuse its installed config without modifying it; otherwise, install the copied config locally. Read the project's `strict` or `non-strict` label from the frozen detailed report, or its `strict_settings` value from the matching diagnostics shard. Preserve that mode when running either binary:

```bash
export TY_CONFIG_FILE="$PWD/target/ty-ecosystem-bins/ty-ecosystem.toml"
test -f "$TY_CONFIG_FILE"
project_dir="$PWD/<temporary-directory>"
ty_base="$PWD/target/ty-ecosystem-bins/ty-base"
ty_pr="$PWD/target/ty-ecosystem-bins/ty-pr"
if [[ -n "${TY_ECOSYSTEM_CONFIG_HOME:-}" ]]; then
export XDG_CONFIG_HOME="$TY_ECOSYSTEM_CONFIG_HOME"
test -f "$XDG_CONFIG_HOME/ty/ty.toml" || exit 1
else
export XDG_CONFIG_HOME="$PWD/target/ty-ecosystem-config"
mkdir -p "$XDG_CONFIG_HOME/ty"
cp "$PWD/target/ty-ecosystem-bins/ty-ecosystem.toml" "$XDG_CONFIG_HOME/ty/ty.toml"
fi
unset TY_CONFIG_FILE

project_dir="<absolute-temporary-directory>"
ty_base="${TY_ECOSYSTEM_BASE_BINARY:-$PWD/target/ty-ecosystem-bins/ty-base}"
ty_pr="${TY_ECOSYSTEM_PR_BINARY:-$PWD/target/ty-ecosystem-bins/ty-pr}"
test -x "$ty_base" && test -x "$ty_pr" || exit 1
ecosystem_analysis_mode="<strict-or-non-strict-from-detailed-report>"

if [[ "$ecosystem_analysis_mode" != strict && "$ecosystem_analysis_mode" != non-strict ]]; then
echo "Unknown ecosystem analysis mode: $ecosystem_analysis_mode" >&2
exit 1
fi

run_ecosystem_ty() {
if [[ "$ecosystem_analysis_mode" == strict ]]; then
<project-specific command printed by setup_primer_project.py> \
--config analysis.strict-equality-semantics=true \
--config analysis.strict-generic-narrowing=true
else
<project-specific command printed by setup_primer_project.py>
fi
}

cd "$project_dir"
ty_binary="$ty_base"
<project-specific command printed by setup_primer_project.py>
base_exit_status=0
run_ecosystem_ty || base_exit_status=$?
ty_binary="$ty_pr"
<project-specific command printed by setup_primer_project.py>
pr_exit_status=0
run_ecosystem_ty || pr_exit_status=$?
```

Confirm the detailed report's difference exactly, including duplicate diagnostics when present.
Confirm the detailed report's difference exactly, including duplicate diagnostics and both exit statuses. Ordinary diagnostics can produce exit status 1; do not mistake that for a failed reproduction.

## Minimize

Reduce the reproduced project iteratively, using the base-versus-PR output as the oracle after every change. Prefer a single file, no third-party imports, and the least complex code that preserves the difference. For nontrivial reductions, follow [references/advanced-minimization.md](references/advanced-minimization.md).
Reduce the reproduced project toward a self-contained single-file reproducer with minimal code and dependencies. A reduction is trivial only when the difference already occurs in one self-contained file and can be preserved solely by deleting obviously unrelated code. Multiple files, imports or dependencies, inlining, replacing language constructs, ambiguous types such as `@Todo`, or an uncertain cause make a reduction nontrivial. Before attempting any nontrivial reduction, read and follow [references/advanced-minimization.md](references/advanced-minimization.md). If in doubt, treat the reduction as nontrivial.

Matching diagnostics or displayed types do not establish a shared cause. When the output is ambiguous, identify the original and minimized triggers using exact-revision debug output, a targeted `reveal_type`, or the producing Rust call site.

Record the original source permalink, accepted reductions, both binaries' results, and any causal fingerprint. If source provenance or a matching cause cannot be established, return the original project excerpt explicitly marked as unminimized.

## Return

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Prefer a single-file reproducer with no third-party imports, few definitions, an

## Reduction Loop

Work systematically from the reproduced project. Do not skip ahead to an explanation, hand-written reproducer, or a guessed subset of relevant code. Follow the stages below in order and exhaust each stage before advancing. Try one controlled reduction at a time, run both copied ty binaries after every change, and keep the reduction only if the original difference remains. After every successful reduction, restart at step 1 because it may make earlier reductions possible.
Work systematically from the reproduced project. NEVER skip ahead to an explanation, hand-written reproducer, or a guessed subset of relevant code. Follow the stages below in order and exhaust each stage before advancing. Try one controlled reduction at a time, run both copied ty binaries after every change, and keep the reduction only if the original difference and underlying trigger remain. After every successful reduction, restart at step 1 because it may make earlier reductions possible.

1. Delete unrelated files.
2. Remove imports, definitions, decorators, annotations, statements, and branches.
Expand All @@ -23,4 +23,6 @@ Repeat the full loop until an exhaustive pass through every stage finds no furth

Attempt to remove every remaining import and inline every remaining third-party definition. Record why any surviving import is essential. Keep these notes as working evidence; the caller decides whether they belong in its final artifact.

Verify that the recorded reduction chain connects the final reproducer to the original ecosystem entry and, when diagnostic output is ambiguous, preserves the original causal fingerprint. If either check fails, return the original project excerpt as unminimized instead of substituting an unrelated example.

Delete transient project and dependency copies after the investigation.
14 changes: 8 additions & 6 deletions .agents/skills/summarise-ecosystem-results/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ description: Use when a user says "summarise ecosystem results", "summarize this
## Priorities

1. Reproduce every retained behavior with the exact environment used by the Actions run.
2. Lead the report with analysis of diagnostic changes and clear minimized examples.
2. Lead the report with new or changed project failures, then cover meaningful flaky behavior, diagnostic changes, and clear minimized examples.
3. Keep execution, audit, and traceability bookkeeping out of the report.

## Deliverable
Expand All @@ -21,9 +21,11 @@ If summarising an ecosystem report is the only thing you're asked to do in a Cod

## Workflow

1. **Locate the evidence.** Normalize the input to a PR number, find the ty ecosystem-results comment, open the linked detailed HTML report, and identify the exact Actions run that produced it. Use the comment as the change list and the detailed report as evidence.
2. **Reproduce from scratch.** Ignore retained memories and previous local artifacts. Load the `minimizing-ty-ecosystem-changes` skill, use its metadata helper and exact-run workflow, and reproduce each report entry before explaining or minimizing it.
3. **Minimize and curate.** Retain the smallest clear reproducer for each distinct behavior change. Group entries only when the same base-to-PR behavior, explanation, and reproducer account for every entry in the group.
4. **Write and verify.** Fill the report template, check every link and diagnostic, then run `uvx prek run --files PR_<number>_ECOSYSTEM_SUMMARY.md`. Present the Markdown file as the finished product.
1. **Freeze the evidence.** Preserve any report URL or ecosystem-results comment explicitly supplied by the user before identifying the PR. For PR-only input, find its ecosystem-results comment and linked detailed report. Capture the matching Actions run and attempt as described in [references/evidence-acquisition.md](references/evidence-acquisition.md); never replace a supplied report with the PR's current report. Ignore later comment edits, PR updates, and workflow runs. Use the frozen detailed report as the authoritative change list and the comment for orientation when available.
2. **Identify changed outcomes.** Check the detailed report for new, fixed, or changed project failures, panics, timeouts, abnormal exits, and meaningful flaky diagnostic or exit-status changes. Omit unchanged persistent failures. If neither project outcomes nor diagnostics changed, say explicitly that the run had no ecosystem impact and omit project-specific sections and reproduction details.
3. **Reproduce from scratch.** Ignore retained memories and previous local artifacts. Load the `minimizing-ty-ecosystem-changes` skill, use its metadata helper and exact-run workflow, and reproduce each report entry before explaining or minimizing it. Reproduce flaky behavior with the reported run counts.
4. **Minimize with provenance.** Include a standalone reproducer only when a verified reduction chain connects it to a cited ecosystem entry and preserves the same underlying trigger. If either cannot be verified, retain the original source excerpt and identify it as unminimized.
5. **Group by cause.** Group entries only when the same base-to-PR behavior, underlying trigger, explanation, and reproducer account for every entry. Identical diagnostic text or displayed `@Todo` types do not establish equivalence.
6. **Write and verify.** Fill the report template, record each affected project's strict or non-strict analysis mode, and include both strict-analysis flags in the comparison method when applicable. Check every link, diagnostic, reproducer's source provenance, and causal fingerprint when required, then run `uv run --only-group dev --locked prek run --files PR_<number>_ECOSYSTEM_SUMMARY.md`. Present the Markdown file as the finished product.

When parallelizing step 2, read [references/subagent-handoff.md](references/subagent-handoff.md). Otherwise, keep batches small and work through them sequentially.
When parallelizing reproduction or minimization, read [references/subagent-handoff.md](references/subagent-handoff.md). Otherwise, keep batches small and work through them sequentially.
Original file line number Diff line number Diff line change
@@ -1,8 +1,20 @@
<!-- Replace every placeholder and remove all HTML comments before presenting the report. Keep each prose paragraph and list item on one source line. Do not add change-count tables, bot-update timestamps, reproduction-completeness bookkeeping, import-audit details, exhaustive traceability appendices, raw URLs, or artifact hashes. -->
<!-- Replace every placeholder and remove all HTML comments before presenting the report. Keep each prose paragraph and list item on one source line. Omit project-specific reproduction details when there are no affected projects. Do not add change-count tables, bot-update timestamps, reproduction-completeness bookkeeping, import-audit details, exhaustive traceability appendices, raw URLs, or artifact hashes. -->

# [PR #<number>](https://github.com/astral-sh/ruff/pull/<number>) ecosystem summary

<Summarize the distinct diagnostic behavior changes and their significance. Lead with the analysis readers need; do not describe how the report was generated.>
<Summarize the distinct failure, flakiness, and diagnostic behavior changes and their significance. Lead with the analysis readers need; do not describe how the report was generated.>

<!-- Omit this entire section if no project failures or meaningful flaky outcomes changed. -->

## <New, fixed, or changed project failure or flaky outcome>

**Affected projects:**

- [<project>](<project-url>): merge base: `<base outcome>`; PR: `<PR outcome>`.

<Explain the crash, panic, timeout, abnormal exit, or flaky change, including relevant stderr and observed base/PR run frequencies where applicable.>

<!-- Omit this entire section if no diagnostic behavior changed. -->

## <Distinct behavior change>

Expand All @@ -14,19 +26,37 @@

<Explain the exact behavior on the merge base and PR. Group additional entries here only when the same explanation and minimized reproducer account for all of them.>

<!--
A minimal reproducer should annotate every line with a new, changed, or removed diagnostic using comments immediately above that line. Include the full error messages and error codes from both revisions, including duplicates.

For example:

```python
from typing import Final

# Merge base: `[error-code-1] "Some error message"`
# PR: no diagnostic
x: Final = 42

if x:
# Merge base: `[error-code-2] "Some error message"`
# PR: `[error-code-2] "Some other error message"`
Y = 56
```
-->

```python
# Merge base: <every full diagnostic message and error code, including duplicates, or no diagnostic>
# PR: <every full diagnostic message and error code, including duplicates, or no diagnostic>
<minimal reproducer>
```

## Reproduction

- Detailed report: [ecosystem-analyzer report](<report-url>)
- Actions run: [run <id>](<run-url>)
- Actions run: [run <id>, attempt <attempt>](<run-url>)
- Ruff comparison: [`<merge-base>`](https://github.com/astral-sh/ruff/commit/<merge-base>) to [`<pr-revision>`](https://github.com/astral-sh/ruff/commit/<pr-revision>)
- `ecosystem-analyzer`: [`<revision>`](https://github.com/astral-sh/ecosystem-analyzer/commit/<revision>)
- `mypy-primer`: [`<revision>`](https://github.com/hauntsaninja/mypy_primer/commit/<revision>)
- Project Python: `<project: version, ...>`
- Dependency cutoff: `<EXCLUDE_NEWER>`
- Comparison method: `<concise exact commands or method used to run both copied ty binaries>`
- Project Python: `<project: version, ...>`
- Project analysis mode: `<project: strict or non-strict, ...>`
- Comparison method: `<concise exact commands or method used to run both copied ty binaries, including --config analysis.strict-equality-semantics=true and --config analysis.strict-generic-narrowing=true for strict projects>`
Loading
Loading