Skip to content

[ty] Optimize signature checking based on number of arguments#24674

Merged
charliermarsh merged 1 commit intomainfrom
charlie/num-args
Apr 26, 2026
Merged

[ty] Optimize signature checking based on number of arguments#24674
charliermarsh merged 1 commit intomainfrom
charlie/num-args

Conversation

@charliermarsh
Copy link
Copy Markdown
Member

@charliermarsh charliermarsh commented Apr 16, 2026

Summary

This PR adds a fast path to signature subtyping that checks positional parameter count compatibility (along with a few other cases) before doing expensive per-parameter type comparisons. In short, if the signatures have a different number of positional arguments, they can't match up.

Not much movement on CodSpeed, but the more-itertools improvement at least seems to be real based on local benchmarking (17x faster or something like that).

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

astral-sh-bot Bot commented Apr 16, 2026

Typing conformance results

No changes detected ✅

Current numbers
The percentage of diagnostics emitted that were expected errors held steady at 87.94%. The percentage of expected errors that received a diagnostic held steady at 83.36%. The number of fully passing files held steady at 79/133.

@astral-sh-bot
Copy link
Copy Markdown

astral-sh-bot Bot commented Apr 16, 2026

Memory usage report

Memory usage unchanged ✅

@astral-sh-bot
Copy link
Copy Markdown

astral-sh-bot Bot commented Apr 16, 2026

ecosystem-analyzer results

No diagnostic changes detected ✅

Large timing changes:

Project Old Time New Time Change
more-itertools 1.31s 0.10s -93%

Full report with detailed diff (timing results)

@charliermarsh charliermarsh added the performance Potential performance improvement label Apr 16, 2026
@charliermarsh charliermarsh marked this pull request as ready for review April 16, 2026 15:29
@charliermarsh charliermarsh marked this pull request as draft April 26, 2026 00:22
@charliermarsh charliermarsh marked this pull request as ready for review April 26, 2026 01:44
@charliermarsh charliermarsh merged commit af09f2e into main Apr 26, 2026
56 checks passed
@charliermarsh charliermarsh deleted the charlie/num-args branch April 26, 2026 01:47
carljm added a commit to tamird/ruff that referenced this pull request Apr 27, 2026
* main: (248 commits)
  [ty] bump conformance suite commit (astral-sh#24848)
  [ty] Pass unmapped type variables to `SpecializationBuilder::build_with` (astral-sh#24809)
  [ty] Avoid bookkeeping for unannotated functions (astral-sh#24842)
  [ty] Optimize signature checking based on number of arguments (astral-sh#24674)
  [ty] Avoid eagerly inferring legacy generic context (astral-sh#24841)
  [ty] Skip decorator inference for undecorated functions (astral-sh#24839)
  [ty] solve unions against generic protocols (astral-sh#24837)
  [ty] Lazily allocate parameter type builders (astral-sh#24838)
  [ty] Lazily compute call argument fallbacks (astral-sh#24836)
  [ty] Avoid collecting type context callables (astral-sh#24835)
  Bump ecosystem-analyzer to e7576e6 (astral-sh#24834)
  [ty] Support basic narrowing with aliased conditional expressions (astral-sh#24302)
  [ty] Fix project and workspace selection (astral-sh#24824)
  [ty] Fix missing memory usage attributes (astral-sh#24823)
  Fix setting selection for multi folder workspace (astral-sh#24819)
  Improve diagnostics for implicit calls to a possibly unbound unary operator. (astral-sh#24816)
  [ty] Update review pool (astral-sh#24818)
  Bump 0.15.12 (astral-sh#24815)
  [ty] Complete support for more detailed diagnostics on possibly unbound errors from implicit dunder calls against unions. (astral-sh#24676)
  Implement `#ruff:file-ignore` file-level suppressions (astral-sh#23599)
  ...
carljm added a commit that referenced this pull request Apr 27, 2026
* main: (44 commits)
  Update cargo-bins/cargo-binstall action to v1.18.1 (#24855)
  Update dependency ruff to v0.15.12 (#24857)
  Update taiki-e/install-action action to v2.75.18 (#24864)
  [ty] Model bool-op branch snapshots (#24458)
  [ty] Support `Unpack[TypedDict]` in `**kwargs` signatures (#24653)
  Update prek dependencies (#24858)
  Update Rust crate bitflags to v2.11.1 (#24859)
  Update Rust crate clap to v4.6.1 (#24860)
  Update Rust crate mimalloc to v0.1.49 (#24862)
  Update Rust crate uuid to v1.23.1 (#24863)
  Update Rust crate rayon to v1.12.0 (#24866)
  Update Rust crate libc to v0.2.185 (#24861)
  [ty] Reserve union element storage (#24849)
  [ty] bump conformance suite commit (#24848)
  [ty] Pass unmapped type variables to `SpecializationBuilder::build_with` (#24809)
  [ty] Avoid bookkeeping for unannotated functions (#24842)
  [ty] Optimize signature checking based on number of arguments (#24674)
  [ty] Avoid eagerly inferring legacy generic context (#24841)
  [ty] Skip decorator inference for undecorated functions (#24839)
  [ty] solve unions against generic protocols (#24837)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

performance Potential performance improvement ty Multi-file analysis & type inference

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants