Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
223 commits
Select commit Hold shift + click to select a range
3e1f636
Bump 0.15.21 (#26676)
ntBre Jul 9, 2026
eca6937
[ty] Reorganize bidirectional inference tests (#26675)
ibraheemdev Jul 9, 2026
32bb6cf
[`flake8-datetimez`] Clarify naming guidance for `datetime.today` (`D…
Joosboy Jul 9, 2026
a907a12
[`ruff`] Add rule to replace `noqa` comments with `ruff:ignore` (`RUF…
ntBre Jul 9, 2026
fb15b89
[`pylint`] Ignore mutable type updates in `redefined-loop-name` (`PLW…
KaufmanDmitriy Jul 9, 2026
04d831a
[`ruff`] Clarify intentional async contexts for `unused-async` (`RUF0…
Joosboy Jul 9, 2026
5233e4f
[ty] Support cached properties in protocols (#26681)
charliermarsh Jul 10, 2026
7a7bba8
[ty] Fix protocol matching for class variables (#26669)
charliermarsh Jul 10, 2026
00ba5d7
[ty] Make structured hard breaks visible in snapshots (#26686)
lerebear Jul 10, 2026
20740c5
[ty] Rename type for Google docstring sections that do not participat…
lerebear Jul 10, 2026
7041b52
Adopt recently stabilized Rust APIs (#26668)
MichaReiser Jul 10, 2026
517028f
[ty] Retain raw `Options` by precedence (#26662)
MichaReiser Jul 10, 2026
937ac6e
[ty] Guard descriptor classification cycles (#26690)
charliermarsh Jul 10, 2026
4d37f1b
[ty] Pydantic: Support field metadata in `Annotated` (#26650)
sharkdp Jul 10, 2026
2362111
[ty] Use purpose-specific types for completion and module text (#26664)
charliermarsh Jul 10, 2026
bd55d97
[ty] Avoid allocation for every stdout write (#26698)
MichaReiser Jul 10, 2026
eac76aa
[ty] Pydantic: Support custom `__init__` methods (#26699)
sharkdp Jul 10, 2026
3edd10c
[ty] Buffer diagnostic output (#26702)
MichaReiser Jul 10, 2026
9b3d7d7
[ty] Correct how we expand tabs in docstrings (#26679)
lerebear Jul 10, 2026
2e2d738
[ty] Allow unsafe equality-based narrowing for builtins (#26414)
charliermarsh Jul 10, 2026
945b74d
[ty] Exempt ParamSpec callables from the dunder descriptor heuristic …
charliermarsh Jul 10, 2026
035ebc3
[ty] Document enum subclass literal narrowing (#26709)
charliermarsh Jul 10, 2026
9c2b709
[ty] Bind Self in implicit dunder calls (#26711)
charliermarsh Jul 10, 2026
815468b
[`ruff`] Add rule to use human-readable names in `ruff:ignore` commen…
ntBre Jul 10, 2026
742a289
[ty] Resolve ambiguity in Google-style docstring parsing in favour of…
lerebear Jul 10, 2026
00b431e
[ty] Remove transitive typevar artifacts during collection inference …
ibraheemdev Jul 10, 2026
70e39e0
[ty] Avoid duplicate diagnostics for overloaded TypeIs (#26716)
carljm Jul 10, 2026
c588a3f
[ty] Correct protocol method receiver binding (#26701)
charliermarsh Jul 11, 2026
2022d53
[ty] Update Salsa to 0.0.28 (#26663)
MichaReiser Jul 12, 2026
b291fbd
[ty] Reuse common TypedDict constraints through intersections (#26747)
charliermarsh Jul 12, 2026
aede2c1
[ty] Cache generic context (#26745)
MichaReiser Jul 12, 2026
c329125
[ty] Avoid broad invalidation from file check eligibility (#26741)
MichaReiser Jul 12, 2026
9ccd45b
[ty] Cache known class instances (#26746)
MichaReiser Jul 12, 2026
04ff791
[ty] Respect `init=False` in dataclass field-order checks (#26749)
charliermarsh Jul 12, 2026
70e2510
[ty] skip `Self` type scans for non-generic instances (#26703)
mtshiba Jul 13, 2026
b9b621d
[ty] Pydantic: Support `populate_by_name` and custom initializers (#2…
sharkdp Jul 13, 2026
6fd508a
Avoid unnecessary identifier lookahead (#26525)
charliermarsh Jul 13, 2026
3928165
[ty] Prevent type that is written with a code span from being incorre…
lerebear Jul 13, 2026
8c1f407
[`pycodestyle`] Add an autofix for `E402` (#22212)
PeterJCLaw Jul 13, 2026
aaa594c
[ty] Treat transparent callable decorators consistently in class assi…
carljm Jul 13, 2026
124acf1
[ty] Represent Markdown code spans in docstrings as text ranges (#26777)
lerebear Jul 13, 2026
6f2f486
[ty] Pydantic: Warn about immediately discarded extra arguments (#26762)
sharkdp Jul 13, 2026
61a0642
[ty] Extend `PathBounds` fast-path to support both upper and lower bo…
ibraheemdev Jul 13, 2026
e97d41b
[ty] Compare overloaded protocol method returns pairwise (#26684)
charliermarsh Jul 13, 2026
7beebf3
[ty] Support class and static protocol methods (#26574)
charliermarsh Jul 13, 2026
1b1a83a
[ty] Avoid quadratic analysis of repeated statement calls (#26775)
charliermarsh Jul 14, 2026
bfa66e6
[ty] Revert deferred call-gate optimization (#26792)
charliermarsh Jul 14, 2026
fdd9f06
[ty] Expand transparent callable workaround with overloads and `Await…
dhruvmanila Jul 14, 2026
9ece127
[ty] Rewrite inlay hint test to avoid `isinstance` dependency (#26800)
sharkdp Jul 14, 2026
9036c13
Move incremental ignore-file checking down into `System` (#26771)
BurntSushi Jul 14, 2026
ee4cfb1
[ty] Apply type mappings to constraint sets (#26801)
dcreager Jul 14, 2026
c957c9e
[ty] Hoist repeated Salsa field reads (#26769)
MichaReiser Jul 14, 2026
53b0733
Add TOML support to mdtest (#26802)
ntBre Jul 14, 2026
c87ba51
[ty] Consolidate tab stop offset calculations (#26707)
lerebear Jul 14, 2026
b860ddc
[ty] Add universal constraint quantification (#26694)
charliermarsh Jul 14, 2026
25b10f9
Avoid redundant lexer token bookkeeping (#26765)
charliermarsh Jul 14, 2026
6e29838
Avoid redundant pending-indentation writes (#26774)
charliermarsh Jul 14, 2026
20b113c
[ty] Add support for ignored snippets in mdtests (#26796)
sharkdp Jul 14, 2026
a05cc07
[ty] Use a simpler fuel to bound sequent map growth (#26674)
dcreager Jul 14, 2026
70acda3
[ty] Narrow TypeGuard keyword arguments, remove invalid-type-guard-ca…
carljm Jul 14, 2026
bfe70b8
[ty] Support type[Protocol] (#26649)
charliermarsh Jul 14, 2026
f74bcb1
[ty] Support class objects satisfying instance-method protocols (#26789)
carljm Jul 14, 2026
c84e8eb
[ty] Refactor the syntax helpers that are used to parse field headers…
lerebear Jul 14, 2026
ed3233e
[ty] Handle cycles in derived constraint relations (#26814)
charliermarsh Jul 14, 2026
5ec1ca7
[ty] Refactor Google docstrings into a document model (#26670)
lerebear Jul 14, 2026
80116e3
[ty] Sync vendored typeshed stubs (#26840)
github-actions[bot] Jul 15, 2026
e4a233c
[ty] Resolve PEP 695 aliases in type[...] annotations (#26842)
carljm Jul 15, 2026
923f612
Update astral-sh/setup-uv action to v8.3.2 (#26820)
renovate[bot] Jul 15, 2026
bfb3074
Update CodSpeedHQ/action action to v4.18.2 (#26821)
renovate[bot] Jul 15, 2026
8d1d54c
Update dependency prek to v0.4.8 (#26823)
renovate[bot] Jul 15, 2026
80a09c8
Update dependency ruff to v0.15.21 (#26824)
renovate[bot] Jul 15, 2026
f261ff8
Update Rust crate arrayvec to v0.7.8 (#26826)
renovate[bot] Jul 15, 2026
d05b4b9
Update Rust crate ignore to v0.4.27 (#26827)
renovate[bot] Jul 15, 2026
aa4acef
Update Rust crate indicatif to v0.18.6 (#26828)
renovate[bot] Jul 15, 2026
d49c191
Update Rust crate quick-junit to v0.6.1 (#26829)
renovate[bot] Jul 15, 2026
b17367c
Update Rust crate rand to v0.10.2 (#26830)
renovate[bot] Jul 15, 2026
e54bb61
Update Rust crate rkyv to v0.8.17 (#26831)
renovate[bot] Jul 15, 2026
3f02b6e
Update Rust crate rustc-hash to v2.1.3 (#26832)
renovate[bot] Jul 15, 2026
36ace20
Update taiki-e/install-action action to v2.82.10 (#26833)
renovate[bot] Jul 15, 2026
b42f7d9
Update docker/build-push-action action to v7.3.0 (#26834)
renovate[bot] Jul 15, 2026
a8ea31b
Update docker/login-action action to v4.4.0 (#26835)
renovate[bot] Jul 15, 2026
8da4773
Update docker/metadata-action action to v6.2.0 (#26836)
renovate[bot] Jul 15, 2026
5bae972
Update docker/setup-buildx-action action to v4.2.0 (#26837)
renovate[bot] Jul 15, 2026
1659a42
Update dependency mdformat-mkdocs to v5.2.1 (#26822)
renovate[bot] Jul 15, 2026
e9c64c6
Update Rust crate memchr to v2.8.3 (#26841)
renovate[bot] Jul 15, 2026
05f38fb
Update prek dependencies (#26825)
renovate[bot] Jul 15, 2026
bdf1320
Update Rust toolchain to 1.97 and MSRV to 1.95 (#26844)
charliermarsh Jul 15, 2026
9e06f27
Update NPM Development dependencies (#26839)
renovate[bot] Jul 15, 2026
98ab666
[`refurb`] Allow subclassing builtins in stub files (`FURB189`) (#26812)
ntBre Jul 15, 2026
a616e08
Refactor TOML file linting (#26806)
ntBre Jul 15, 2026
466f1ec
Use Rust 1.95 features (#26845)
charliermarsh Jul 15, 2026
bf3f5f6
[ty] Support own-line suppression comments (#26785)
charliermarsh Jul 15, 2026
41be4af
[ty] Use `let` guards more (#26853)
AlexWaygood Jul 15, 2026
46e214c
[ty] Project exact-length narrowing through TypeVars (#26852)
RasmusNygren Jul 15, 2026
ecba8d6
[ty] Replace type hierarchy callback with an enum (#26855)
MichaReiser Jul 15, 2026
4e84378
[ty] Centralize protocol constraint inference (#26858)
charliermarsh Jul 15, 2026
ad3cb60
[ty] Avoid recursive protocol union redundancy checks (#26689)
charliermarsh Jul 15, 2026
b37d56b
[ty] Separate type-mapping caches by transformation mode (#26857)
charliermarsh Jul 15, 2026
8c3856f
[ty] Use attrs for frozen project benchmark (#26867)
charliermarsh Jul 15, 2026
0ced743
Restore the fuzz workspace lockfile (#26868)
charliermarsh Jul 15, 2026
3adf133
[ty] Handle recursive protocols in redundant-cast checks (#26708)
charliermarsh Jul 15, 2026
e087358
[ty] Preserve constraints from bound receivers (#26776)
charliermarsh Jul 15, 2026
2934414
[ty] Implement unified generic call inference (#26141)
ibraheemdev Jul 15, 2026
9a5220e
Reuse parser scratch buffers (#26798)
MichaReiser Jul 16, 2026
4bee079
[ty] Retain sequence pattern narrowing in successful `match` cases (#…
charliermarsh Jul 16, 2026
e96819b
[ty] Derive descriptor setter domains for protocols (#26683)
charliermarsh Jul 16, 2026
db195f3
[ty] Render Google docstrings as structured Markdown (#26599)
lerebear Jul 16, 2026
6d6b2b3
[ty] Avoid allocations during Salsa interned lookups (#26877)
MichaReiser Jul 16, 2026
6f361a7
[ty] only collect expected types for files open in the editor (#25546)
denyszhak Jul 16, 2026
e454f91
[ty] Share interned query keys across Salsa queries (#26794)
MichaReiser Jul 16, 2026
87fc38c
[ty] Parallelize subtype hierarchy search (#26875)
MichaReiser Jul 16, 2026
54acbcd
[ty] Support `TypeVarTuple` and `Unpack` (#25240)
dhruvmanila Jul 16, 2026
f239758
[`flake8-pyi`] Fix false positive in `__all__` (`PYI053`) (#26872)
ntBre Jul 16, 2026
d244fd7
Document argfile support (#26803)
Joosboy Jul 16, 2026
f3cf7c8
[`ruff`] Add `rule-codes-in-selectors` (`RUF201`) (#26772)
ntBre Jul 16, 2026
fe8ba85
[`pycodestyle`] Document `E731` fix safety (#26847)
dwego Jul 16, 2026
0177a7e
Bump 0.15.22 (#26884)
ntBre Jul 16, 2026
16dca0f
[ty] Enforce declared receiver TypeVar domains (#26863)
charliermarsh Jul 16, 2026
1797ed5
[ty] Remove duplicated docstring parsing test (#26893)
lerebear Jul 16, 2026
301b7ed
[ty] Share heap-backed parser names with CharStr (#26594)
charliermarsh Jul 16, 2026
c72fc2e
[ty] Deduplicate completion labels (#26890)
charliermarsh Jul 16, 2026
e84ac0f
[ty] Remove inferable typevar artifacts recursively (#26787)
ibraheemdev Jul 16, 2026
5315bc8
[ty] Narrow tagged unions by tag truthiness (#26887)
carljm Jul 16, 2026
403bd20
[ty] Avoid extending own-line suppressions in `--add-ignore` (#26808)
charliermarsh Jul 17, 2026
7f16205
[ty] Project intersections in to_instance (#26892)
carljm Jul 17, 2026
a16b84e
[ty] Share structured docstring parsing components (#26889)
lerebear Jul 17, 2026
437e408
[ty] Fix memory report detail outcome icons (#26929)
MichaReiser Jul 17, 2026
543ea43
[ty] Collect Pydantic field metadata through subscripted generic `Ann…
Aethryl Jul 17, 2026
676aefd
Add missing period in `RUF200` "Why is this bad?" documentation porti…
jonathandung Jul 17, 2026
7bdf9a8
[`pyupgrade`] Fix false positive with `TypeVar` default before Python…
ntBre Jul 17, 2026
9e2d4a9
[ty] Infer isinstance results for fixed class tuples (#26935)
charliermarsh Jul 17, 2026
1075fab
[ty] Update to ignore 0.4.30
BurntSushi Jul 17, 2026
86af403
[ty] Minimally replace existing matcher with `ignore::IncrementalIgnore`
BurntSushi Jul 17, 2026
9eecb45
[ty] Simplify `IgnoreIncremental` interface
BurntSushi Jul 17, 2026
990180a
[ty] Optimize ignore path checking
BurntSushi Jul 17, 2026
b3ab2aa
[ty] Narrow walrus expression values (#26949)
carljm Jul 17, 2026
8a20a51
[ty] Narrow inline list and set membership checks (#26955)
carljm Jul 17, 2026
6cd6133
[ty] Respect mixin receiver domains in method overrides (#26941)
charliermarsh Jul 17, 2026
ace2171
[ty] Fix isinstance tuple coverage for aliases and type variables (#2…
carljm Jul 17, 2026
1b50a85
[ty] Avoid recursive protocol structural comparisons (#26721)
charliermarsh Jul 18, 2026
5055442
[ty] Avoid editing ignore comments with trailing reasons (#26939)
charliermarsh Jul 18, 2026
34940c0
[ty] Gate TypedDict PEP 728 parameters by Python version (#26968)
carljm Jul 18, 2026
4d7d214
[ty] Remove redundant branch in `call/bind.rs` (#26977)
AlexWaygood Jul 19, 2026
c5aa906
Prefer `let` guards and direct pattern matching (#26975)
AlexWaygood Jul 19, 2026
fce6bc7
[ty] Fix TODO in `Type::try_call_dunder_get_on_attribute` (#26978)
AlexWaygood Jul 19, 2026
5a1f299
[ty] Fix Callable isinstance reachability (#26970)
carljm Jul 19, 2026
775de0e
[ty] Improve `match` reachability inference around value-pattern bran…
AlexWaygood Jul 19, 2026
8bbdb8e
[ty] Remove unnecessary call to `is_single_valued` in `match_pattern.…
AlexWaygood Jul 19, 2026
8276d63
[ty] Prevent stack overflows in recursive type relation checks (#26503)
mtshiba Jul 19, 2026
d929a42
[ty] Make membership and equality narrowing consistent (#26982)
charliermarsh Jul 19, 2026
1d3d784
[ty] Preserve constrained TypeVar equality narrowing (#26988)
charliermarsh Jul 19, 2026
67ffd19
ruff-ecosystem: bump bokeh/bokeh branch to `branch-3.10` (#26987)
Andrej730 Jul 19, 2026
0e36518
[ty] Add membership narrowing ecosystem regression (#26991)
charliermarsh Jul 19, 2026
dc9c428
[ty] Fix ecosystem metadata collection for split build jobs (#26993)
AlexWaygood Jul 19, 2026
228f3c3
[ty] Preserve constrained TypeVar inequality narrowing (#26995)
charliermarsh Jul 19, 2026
8ee2d3c
Propagate invalid format type characters from `FormatSpec::parse()` i…
AlexWaygood Jul 20, 2026
6ee9b86
invalid_index_type: remove redundant `is_slice_type` re-check (#26985)
Andrej730 Jul 20, 2026
502937d
[ty] Prefer innermost inline suppressions (#26940)
charliermarsh Jul 20, 2026
bd75eb1
Update branch for jrnl (#27007)
ntBre Jul 20, 2026
cc42899
[`ruff`] Fix missing check on unrecognized early bound (`RUF016`) (#2…
Andrej730 Jul 20, 2026
4fc9653
[ty] Reuse applicable own-line suppressions in `--add-ignore` (#26925)
charliermarsh Jul 20, 2026
b466ee9
[ty] Respect metaclass `__setattr__` for class attributes (#27000)
charliermarsh Jul 20, 2026
5101fab
[ty] Remove unused own-line ignore comments (#27013)
charliermarsh Jul 20, 2026
c4b8749
[ty] Fix nested short-circuit flow snapshots (#26956)
carljm Jul 20, 2026
4efb264
[ty] Contextually infer custom `__setattr__` assignments (#27015)
charliermarsh Jul 20, 2026
38a96fc
[ty] Respect bounded typevars in union inference (#27023)
carljm Jul 20, 2026
150377d
[ty] Audit remaining sources of non-determinism in constraint set sol…
dcreager Jul 20, 2026
f34ad60
[ty] Avoid recursive TypeVarTuple alias expansion (#27032)
carljm Jul 20, 2026
ba777a8
[ty] Cache non-terminal-call reachability prefixes (#26810)
charliermarsh Jul 21, 2026
850ac21
[ty] Cache sparse reachability checkpoints (#26811)
charliermarsh Jul 21, 2026
db17b17
[ty] Defer statement-call narrowing gates (#26793)
charliermarsh Jul 21, 2026
d1e7791
[ty] Recover from cancelled file indexing (#26876)
MichaReiser Jul 21, 2026
a415d0a
[ty] Respect `rules` and `analysis` in PEP 723 script metadata config…
MichaReiser Jul 21, 2026
02c3a16
[ty] Cache protocol Self binding (#26997)
charliermarsh Jul 21, 2026
f91f972
[ty] Check inherited method conflicts via the MRO (#27019)
charliermarsh Jul 21, 2026
677a25f
[`pyupgrade`] Speed up `unnecessary-future-import` (`UP010`) (#27047)
ntBre Jul 21, 2026
5e698d5
[ty] Refactor constraint set path walking (#26900)
dcreager Jul 21, 2026
edce301
[ty] Guard recursive Protocol and TypedDict relations (#26990)
mtshiba Jul 21, 2026
b563081
[ty] Fix Just[float] protocol matching (#27053)
carljm Jul 21, 2026
6ee852a
[ty] Fix Self binding for classmethod __new__ constructors (#27030)
carljm Jul 21, 2026
54f2565
[ty] Accept gradual constrained TypeVar solutions (#26965)
charliermarsh Jul 21, 2026
82005cc
[ty] Preserve unsatisfiable generic call constraints (#26964)
charliermarsh Jul 21, 2026
fdb6ff8
[ty] Fix double specialization of generic type aliases (#27058)
carljm Jul 22, 2026
3afe7b9
Update Rust crate uuid to v1.23.5 (#27071)
renovate[bot] Jul 22, 2026
27bbfd3
Update astral-sh/setup-uv action to v9 (#27080)
renovate[bot] Jul 22, 2026
a171688
Update Rust crate syn to v2.0.119 (#27069)
renovate[bot] Jul 22, 2026
eda3a59
Update dependency astral-sh/uv to v0.11.31 (#27061)
renovate[bot] Jul 22, 2026
ce5cb21
Update cargo-bins/cargo-binstall action to v1.21.0 (#27072)
renovate[bot] Jul 22, 2026
c58f09e
Update Rust crate bstr to v1.13.0 (#27073)
renovate[bot] Jul 22, 2026
10ec732
Update Rust crate jiff to v0.2.32 (#27066)
renovate[bot] Jul 22, 2026
2594f5c
Update Rust crate regex to v1.13.0 (#27077)
renovate[bot] Jul 22, 2026
b80c46a
Update Rust crate regex-automata to v0.4.15 (#27068)
renovate[bot] Jul 22, 2026
09687c8
Update taiki-e/install-action action to v2.83.2 (#27078)
renovate[bot] Jul 22, 2026
ce1bf83
Update Rust crate toml to v1.1.3 (#27070)
renovate[bot] Jul 22, 2026
5549de2
Update Rust crate parking_lot to v0.12.5 (#27067)
renovate[bot] Jul 22, 2026
0e8de8e
Update dependency go to v1.26.5 (#27062)
renovate[bot] Jul 22, 2026
e7735c8
Update CodSpeedHQ/action action to v4.18.5 (#27060)
renovate[bot] Jul 22, 2026
a4a39cc
Update Rust crate lsp-types to 0.10.0 (#27076)
renovate[bot] Jul 22, 2026
e8f6775
Update dependency ruff to v0.15.22 (#27064)
renovate[bot] Jul 22, 2026
421418b
Update dependency prek to v0.4.9 (#27063)
renovate[bot] Jul 22, 2026
30742a3
Update actions/setup-node action to v7 (#27079)
renovate[bot] Jul 22, 2026
1ac8c48
Update Rust crate path-absolutize to v4 (#27082)
renovate[bot] Jul 22, 2026
ce0fb55
Update prek dependencies (#27065)
renovate[bot] Jul 22, 2026
eb4779b
Update NPM Development dependencies (#27081)
renovate[bot] Jul 22, 2026
af3a1c2
[ty] Update Salsa to 0.28.1 (#27087)
MichaReiser Jul 22, 2026
7cb38ea
Update Rust crate lsp-server to 0.9.0 (#27075)
renovate[bot] Jul 22, 2026
b02719b
[ty] Bump ecosystem-analyzer (#27094)
sharkdp Jul 22, 2026
1a82d31
[ty] Simplify semantic type handling with `let` guards (#27093)
AlexWaygood Jul 22, 2026
c7ba8f7
[ty] Avoid normalizing cached absolute file paths (#26998)
charliermarsh Jul 22, 2026
64722a0
[ty] Allow equality narrowing across non-final classes (#27031)
charliermarsh Jul 22, 2026
a8f0040
[ty] Reimplement constraint set walking as a visitor (#27036)
dcreager Jul 22, 2026
40f0688
[ty] Avoid exponential narrowing of optional dynamic match subjects (…
charliermarsh Jul 22, 2026
fae1374
[ty] Fix type and TypeForm intersections (#27099)
carljm Jul 22, 2026
cd84a6e
[ty] Handle generic stringified PEP 613 type aliases (#27092)
sharkdp Jul 22, 2026
920db1a
Use Namespace runners for macOS (#27097)
zaniebot Jul 22, 2026
72d59e4
[ty] Pydantic: Support special underscore parameters in `BaseSettings…
sharkdp Jul 22, 2026
309ef16
[`pydocstyle`] Document fix safety (`D400`) (#26971)
Joosboy Jul 22, 2026
12e473e
[ty] Pydantic: Stricter validation of sub-model fields in lax mode (#…
sharkdp Jul 22, 2026
15b3d9e
[`ruff`] Remove redundant `is_literal` check (`RUF016`) (#27014)
Andrej730 Jul 22, 2026
633cb01
[ty] Intersect class-pattern member types (#27103)
carljm Jul 22, 2026
4ce5384
[ty] Allow interpolated string literals to be promoted to `str` (#27104)
ibraheemdev Jul 22, 2026
47d7184
[`flake8-simplify`] Clarify `os.environ` behavior on Windows (`SIM112…
Joosboy Jul 22, 2026
5fb58fc
merge upstream astral-sh/ruff (222 commits, jul 9 → jul 22 2026)
KotlinIsland Jul 23, 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
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions .agents/skills/minimizing-ty-ecosystem-changes/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ scripts/collect_ty_ecosystem_run_metadata.py \

The manifest contains the analyzed Ruff revisions, Actions `EXCLUDE_NEWER`, ecosystem-analyzer and mypy-primer revisions, and each project's CI Python version. Stop if the helper cannot determine a unique value; never substitute a comment timestamp or local default.

The current workflow splits compilation into `Build ty (base)` and `Build ty (pr)`. The helper reads the base job, which records both the merge base and PR merge revision, and still supports historical runs with a single `Build ty` job.

## 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.
Expand Down
75 changes: 75 additions & 0 deletions .agents/skills/wobbling-ty-constraint-order/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
---
name: wobbling-ty-constraint-order
description: >
Use when a user asks to wobble ty constraint ordering, check constraint-set or TDD ordering
determinism, test reversed constraint/typevar IDs, or investigate nondeterministic ty inference
and mdtest results.
compatibility: >
Requires Cargo, mktemp, and a POSIX-compatible shell; uses cargo-nextest when available and
otherwise falls back to cargo test.
---

# Wobbling ty constraint order

`TY_CONSTRAINT_SET_ORDER` perturbs both the builder-local TDD-variable order and the local typevar order used to orient typevar-to-typevar constraints. The setting is fixed for the lifetime of each test process.

- unset/`0`: normal ordering;
- `reverse`: reverse both orderings;
- an integer: XOR each local ID with that mask. Small masks immediately perturb dense arena IDs: `1` swaps adjacent IDs, `3` reverses blocks of four, and powers of two exchange neighboring blocks.

This deliberately changes internal TDD shape. Run **mdtests only**: graph-structure unit snapshots are expected to differ. Never enable snapshot updates for a wobble run, since updating would hide the failures being sought.

## Run

From the Ruff root, first establish the normal baseline, then run the reversed and XOR-masked orders sequentially. Set `TY_CONSTRAINT_ORDER_LOG_DIR` to retain logs in a particular writable directory; otherwise `mktemp` chooses an appropriate temporary directory (respecting the environment's temporary-directory configuration).

```bash
set -u

if test -n "${TY_CONSTRAINT_ORDER_LOG_DIR:-}"; then
log_dir="$TY_CONSTRAINT_ORDER_LOG_DIR"
mkdir -p "$log_dir"
else
log_dir="$(mktemp -d -t ty-constraint-order.XXXXXXXX)"
fi
printf '%s\n' "logs: $log_dir"

if cargo nextest --version >/dev/null 2>&1; then
runner=nextest
else
runner=test
fi
printf '%s\n' "runner: cargo $runner"

export CARGO_PROFILE_DEV_OPT_LEVEL=1
export CARGO_PROFILE_DEV_DEBUG=line-tables-only
export INSTA_UPDATE=no
export MDTEST_UPDATE_SNAPSHOTS=0
unset INSTA_FORCE_PASS || true

for order in normal reverse 1 2 3 4 7 8 15; do
if test "$order" = normal; then
unset TY_CONSTRAINT_SET_ORDER || true
else
export TY_CONSTRAINT_SET_ORDER="$order"
fi

log="$log_dir/ty-constraint-order-${order}.log"
if test "$runner" = nextest; then
cargo nextest run -p ty_python_semantic --test mdtest \
--no-fail-fast --status-level fail --failure-output immediate-final \
>"$log" 2>&1
else
cargo test -p ty_python_semantic --test mdtest >"$log" 2>&1
fi
status=$?

printf '%-7s exit=%s\n' "$order" "$status"
grep -E 'Summary \[|test result:' "$log" | tail -1 || true
printf '%s\n' " log: $log"
done
```

Read each failing log and report the mdtest file, section, line, expected result, and actual diagnostic/revealed type. A wobble failure is evidence that inference semantics or displayed solution types still depend on ordering; do not update the mdtest expectations merely to make the wobble run green.

The knob does **not** perturb hashing of Salsa-backed values. The `Solution binding order follows constraint source order` section of `regression/constraint_set_ordering.md` separately varies typevar declaration order to catch binding-order changes caused by draining an `FxHashMap<BoundTypeVarInstance, ...>`.
2 changes: 1 addition & 1 deletion .github/actionlint.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ self-hosted-runner:
- depot-ubuntu-latest-8
- depot-ubuntu-22.04-16
- depot-ubuntu-22.04-32
- depot-macos-15
- namespace-profile-macos-15
- depot-windows-2022-16
- depot-ubuntu-22.04-arm-4
- github-windows-2025-x86_64-8
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/build-binaries.yml
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ jobs:

macos-x86_64:
if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-build') }}
runs-on: macos-15
runs-on: ${{ github.repository == 'astral-sh/ruff' && 'namespace-profile-macos-15' || 'macos-15' }}
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
Expand Down Expand Up @@ -96,7 +96,7 @@ jobs:

macos-aarch64:
if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-build') }}
runs-on: macos-15
runs-on: ${{ github.repository == 'astral-sh/ruff' && 'namespace-profile-macos-15' || 'macos-15' }}
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
Expand Down
28 changes: 14 additions & 14 deletions .github/workflows/build-docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,9 @@ jobs:
submodules: recursive
persist-credentials: false

- uses: docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4.1.0
- uses: docker/setup-buildx-action@bb05f3f5519dd87d3ba754cc423b652a5edd6d2c # v4.2.0

- uses: docker/login-action@650006c6eb7dba73a995cc03b0b2d7f5ca915bee # v4.2.0
- uses: docker/login-action@af1e73f918a031802d376d3c8bbc3fe56130a9b0 # v4.4.0
if: ${{ inputs.plan != '' && !fromJson(inputs.plan).announcement_tag_is_implicit }}
with:
registry: ghcr.io
Expand All @@ -78,7 +78,7 @@ jobs:

- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@80c7e94dd9b9319bd5eb7a0e0fe9291e23a2a2e9 # v6.1.0
uses: docker/metadata-action@dc802804100637a589fabce1cb79ff13a1411302 # v6.2.0
with:
images: ${{ env.RUFF_BASE_IMG }}
# Defining this makes sure the org.opencontainers.image.version OCI label becomes the actual release version and not the branch name
Expand All @@ -94,7 +94,7 @@ jobs:
# Adapted from https://docs.docker.com/build/ci/github-actions/multi-platform/
- name: Build and push by digest
id: build
uses: docker/build-push-action@f9f3042f7e2789586610d6e8b85c8f03e5195baf # v7.2.0
uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7.3.0
with:
context: .
platforms: ${{ matrix.platform }}
Expand Down Expand Up @@ -138,19 +138,19 @@ jobs:
pattern: digests-*
merge-multiple: true

- uses: docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4.1.0
- uses: docker/setup-buildx-action@bb05f3f5519dd87d3ba754cc423b652a5edd6d2c # v4.2.0

- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@80c7e94dd9b9319bd5eb7a0e0fe9291e23a2a2e9 # v6.1.0
uses: docker/metadata-action@dc802804100637a589fabce1cb79ff13a1411302 # v6.2.0
with:
images: ${{ env.RUFF_BASE_IMG }}
# Order is on purpose such that the label org.opencontainers.image.version has the first pattern with the full version
tags: |
type=pep440,pattern={{ version }},value=${{ fromJson(inputs.plan).announcement_tag }}
type=pep440,pattern={{ major }}.{{ minor }},value=${{ fromJson(inputs.plan).announcement_tag }}

- uses: docker/login-action@650006c6eb7dba73a995cc03b0b2d7f5ca915bee # v4.2.0
- uses: docker/login-action@af1e73f918a031802d376d3c8bbc3fe56130a9b0 # v4.4.0
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
Expand Down Expand Up @@ -210,9 +210,9 @@ jobs:
- debian:trixie-slim,trixie-slim,debian-slim
- buildpack-deps:trixie,trixie,debian
steps:
- uses: docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4.1.0
- uses: docker/setup-buildx-action@bb05f3f5519dd87d3ba754cc423b652a5edd6d2c # v4.2.0

- uses: docker/login-action@650006c6eb7dba73a995cc03b0b2d7f5ca915bee # v4.2.0
- uses: docker/login-action@af1e73f918a031802d376d3c8bbc3fe56130a9b0 # v4.4.0
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
Expand Down Expand Up @@ -262,7 +262,7 @@ jobs:

- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@80c7e94dd9b9319bd5eb7a0e0fe9291e23a2a2e9 # v6.1.0
uses: docker/metadata-action@dc802804100637a589fabce1cb79ff13a1411302 # v6.2.0
# ghcr.io prefers index level annotations
env:
DOCKER_METADATA_ANNOTATIONS_LEVELS: index
Expand All @@ -275,7 +275,7 @@ jobs:

- name: Build and push
id: build-and-push
uses: docker/build-push-action@f9f3042f7e2789586610d6e8b85c8f03e5195baf # v7.2.0
uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7.3.0
with:
context: .
platforms: linux/amd64,linux/arm64
Expand Down Expand Up @@ -316,11 +316,11 @@ jobs:
pattern: digests-*
merge-multiple: true

- uses: docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4.1.0
- uses: docker/setup-buildx-action@bb05f3f5519dd87d3ba754cc423b652a5edd6d2c # v4.2.0

- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@80c7e94dd9b9319bd5eb7a0e0fe9291e23a2a2e9 # v6.1.0
uses: docker/metadata-action@dc802804100637a589fabce1cb79ff13a1411302 # v6.2.0
env:
DOCKER_METADATA_ANNOTATIONS_LEVELS: index
with:
Expand All @@ -330,7 +330,7 @@ jobs:
type=pep440,pattern={{ version }},value=${{ fromJson(inputs.plan).announcement_tag }}
type=pep440,pattern={{ major }}.{{ minor }},value=${{ fromJson(inputs.plan).announcement_tag }}

- uses: docker/login-action@650006c6eb7dba73a995cc03b0b2d7f5ca915bee # v4.2.0
- uses: docker/login-action@af1e73f918a031802d376d3c8bbc3fe56130a9b0 # v4.4.0
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
Expand Down
Loading
Loading