Skip to content

[ty] Prevent union builder construction for just one declaration - #18954

Merged
sharkdp merged 1 commit into
mainfrom
david/prevent-builder-construction
Jun 26, 2025
Merged

sharkdp merged 1 commit into
mainfrom
david/prevent-builder-construction

Conversation

@sharkdp

@sharkdp sharkdp commented Jun 26, 2025

Copy link
Copy Markdown
Contributor

Summary

Avoid the construction of the DeclaredTypeBuilder if there is just one declared type.

@sharkdp sharkdp added the performance Potential performance improvement label Jun 26, 2025
@sharkdp
sharkdp requested a review from dcreager as a code owner June 26, 2025 10:30
@sharkdp sharkdp added ty The ty type checker internal An internal refactor or improvement (not for changelogs) labels Jun 26, 2025
@github-actions

Copy link
Copy Markdown
Contributor

mypy_primer results

No ecosystem changes detected ✅

@AlexWaygood

Copy link
Copy Markdown
Member

@sharkdp

sharkdp commented Jun 26, 2025

Copy link
Copy Markdown
Contributor Author

some nice speedups of 1-2% on our benchmarks there: https://codspeed.io/astral-sh/ruff/branches/david%2Fprevent-builder-construction?runnerMode=Instrumentation

Nice! Good call, @carljm.

@sharkdp
sharkdp merged commit c0beb34 into main Jun 26, 2025
@sharkdp
sharkdp deleted the david/prevent-builder-construction branch June 26, 2025 11:00
@MichaReiser

Copy link
Copy Markdown
Member

are you saying I should see if my UnionBuilder::from_elements optimization shows a perf win now

@sharkdp

sharkdp commented Jun 26, 2025 •

Copy link
Copy Markdown
Contributor Author

are you saying I should see if my UnionBuilder::from_elements optimization shows a perf win now

Notice that the builder here is not a pure UnionBuilder. Not sure what your optimization was about, but it's unlikely to translate to DeclaredTypeBuilder, I think. I used "union builder" in the title because this is a wrapper around UnionBuilder.

@MichaReiser

Copy link
Copy Markdown
Member

It was this #16218

dcreager added a commit that referenced this pull request Jun 26, 2025
* main:
  [ty] Add regression-benchmark for attribute-assignment hang (#18957)
  [ty] Format conflicting types as an enumeration (#18956)
  [ty] Prevent union builder construction for just one declaration (#18954)
  [ty] Infer nonlocal types as unions of all reachable bindings (#18750)
  [`pyflakes`] Mark `F504`/`F522`/`F523` autofix as unsafe if there's a call with side effect (#18839)
  [`playground`] Add ruff logo docs link to Header.tsx (#18947)
  [ty] Reduce the overwhelming complexity of `TypeInferenceBuilder::infer_call_expression` (#18943)
  [ty] Add subdiagnostic about empty bodies in more cases (#18942)
  [ty] Move search path resolution to `Options::to_program_settings` (#18937)
  [`flake8-errmsg`] Extend `EM101` to support byte strings (#18867)
  Move big rule implementations (#18931)
  [`pylint`] Allow fix with comments and document performance implications (`PLW3301`) (#18936)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

internal An internal refactor or improvement (not for changelogs) performance Potential performance improvement ty The ty type checker

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants