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

Skip to content

[ty] Only specialized types of generic class instances should influence variance#25124

Merged
ibraheemdev merged 1 commit into
mainfrom
ibraheem/specialized-variance
May 16, 2026
Merged

[ty] Only specialized types of generic class instances should influence variance#25124
ibraheemdev merged 1 commit into
mainfrom
ibraheem/specialized-variance

Conversation

@ibraheemdev

Copy link
Copy Markdown
Member

Resolves astral-sh/ty#1459.

@ibraheemdev ibraheemdev added the ty Multi-file analysis & type inference label May 12, 2026
@astral-sh-bot

astral-sh-bot Bot commented May 12, 2026

Copy link
Copy Markdown

Typing conformance results

No changes detected ✅

Current numbers
The percentage of diagnostics emitted that were expected errors held steady at 89.36%. The percentage of expected errors that received a diagnostic held steady at 85.49%. The number of fully passing files held steady at 88/134.

@ibraheemdev ibraheemdev force-pushed the ibraheem/specialized-variance branch from 952f468 to dfe8fe9 Compare May 12, 2026 19:59
@astral-sh-bot

astral-sh-bot Bot commented May 12, 2026

Copy link
Copy Markdown

Memory usage report

Summary

Project Old New Diff Outcome
flake8 47.42MB 47.42MB -0.02% (7.83kB) ⬇️
trio 115.56MB 115.55MB -0.01% (13.44kB) ⬇️
sphinx 256.21MB 256.19MB -0.01% (27.96kB) ⬇️
prefect 681.88MB 681.83MB -0.01% (50.84kB) ⬇️

Significant changes

Click to expand detailed breakdown

flake8

Name Old New Diff Outcome
StaticClassLiteral<'db>::variance_of_ 5.62kB 3.28kB -41.63% (2.34kB) ⬇️
StaticClassLiteral<'db>::variance_of_::interned_arguments 4.92kB 2.81kB -42.86% (2.11kB) ⬇️
GenericAlias<'db>::variance_of_ 3.35kB 2.29kB -31.82% (1.07kB) ⬇️
infer_definition_types 1.72MB 1.72MB -0.05% (960.00B) ⬇️
FunctionType 451.45kB 451.02kB -0.10% (448.00B) ⬇️
FunctionType<'db>::variance_of_ 252.00B 0.00B -100.00% (252.00B) ⬇️
function_known_decorators 146.39kB 146.15kB -0.16% (244.00B) ⬇️
OverloadLiteral 120.94kB 120.72kB -0.18% (224.00B) ⬇️
FunctionType<'db>::variance_of_::interned_arguments 72.00B 0.00B -100.00% (72.00B) ⬇️
GenericAlias<'db>::variance_of_::interned_arguments 2.53kB 2.46kB -2.78% (72.00B) ⬇️
assignable_solutions_impl 25.07kB 25.03kB -0.19% (48.00B) ⬇️
when_constraint_set_assignable_to_owned_impl 84.87kB 84.82kB -0.06% (48.00B) ⬇️

trio

Name Old New Diff Outcome
StaticClassLiteral<'db>::variance_of_ 15.76kB 10.17kB -35.45% (5.59kB) ⬇️
StaticClassLiteral<'db>::variance_of_::interned_arguments 13.99kB 8.72kB -37.69% (5.27kB) ⬇️
GenericAlias<'db>::variance_of_ 6.71kB 4.59kB -31.59% (2.12kB) ⬇️
FunctionType<'db>::variance_of_ 252.00B 0.00B -100.00% (252.00B) ⬇️
FunctionType<'db>::variance_of_::interned_arguments 72.00B 0.00B -100.00% (72.00B) ⬇️
GenericAlias<'db>::variance_of_::interned_arguments 5.77kB 5.70kB -1.22% (72.00B) ⬇️
assignable_solutions_impl 70.88kB 70.83kB -0.07% (48.00B) ⬇️
when_constraint_set_assignable_to_owned_impl 199.16kB 199.13kB -0.01% (24.00B) ⬇️

sphinx

Name Old New Diff Outcome
StaticClassLiteral<'db>::variance_of_ 24.14kB 13.71kB -43.19% (10.43kB) ⬇️
StaticClassLiteral<'db>::variance_of_::interned_arguments 21.16kB 11.25kB -46.84% (9.91kB) ⬇️
GenericAlias<'db>::variance_of_ 23.86kB 17.82kB -25.29% (6.04kB) ⬇️
assignable_solutions_impl 285.38kB 284.79kB -0.21% (612.00B) ⬇️
when_constraint_set_assignable_to_owned_impl 948.66kB 948.07kB -0.06% (612.00B) ⬇️
FunctionType<'db>::variance_of_ 780.00B 528.00B -32.31% (252.00B) ⬇️
FunctionType<'db>::variance_of_::interned_arguments 504.00B 432.00B -14.29% (72.00B) ⬇️
GenericAlias<'db>::variance_of_::interned_arguments 19.69kB 19.62kB -0.36% (72.00B) ⬇️

prefect

Name Old New Diff Outcome
StaticClassLiteral<'db>::variance_of_ 66.18kB 40.40kB -38.95% (25.77kB) ⬇️
StaticClassLiteral<'db>::variance_of_::interned_arguments 51.75kB 27.42kB -47.01% (24.33kB) ⬇️
GenericAlias<'db>::variance_of_ 42.86kB 30.83kB -28.06% (12.02kB) ⬇️
infer_expression_types_impl 52.23MB 52.24MB +0.01% (3.01kB) ⬇️
infer_expression_type_impl 7.78MB 7.79MB +0.03% (2.50kB) ⬇️
infer_definition_types 80.95MB 80.95MB +0.00% (2.11kB) ⬇️
Type<'db>::member_lookup_with_policy_ 16.36MB 16.37MB +0.01% (1.76kB) ⬇️
all_narrowing_constraints_for_expression 6.45MB 6.45MB +0.01% (916.00B) ⬇️
all_negative_narrowing_constraints_for_expression 6.24MB 6.24MB +0.01% (916.00B) ⬇️
FunctionType<'db>::variance_of_ 3.27kB 2.78kB -15.05% (504.00B) ⬇️
StaticClassLiteral<'db>::implicit_attribute_inner_ 6.82MB 6.82MB +0.01% (472.00B) ⬇️
is_redundant_with_impl::interned_arguments 2.18MB 2.18MB +0.02% (352.00B) ⬇️
assignable_solutions_impl 417.13kB 416.82kB -0.08% (324.00B) ⬇️
UnionType 911.27kB 911.50kB +0.03% (240.00B) ⬇️
when_constraint_set_assignable_to_owned_impl 1.62MB 1.61MB -0.01% (228.00B) ⬇️
... 5 more

@astral-sh-bot

astral-sh-bot Bot commented May 12, 2026

Copy link
Copy Markdown

ecosystem-analyzer results

No diagnostic changes detected ✅

Full report with detailed diff (timing results)

@ibraheemdev ibraheemdev force-pushed the ibraheem/specialized-variance branch from dfe8fe9 to 1fcd25f Compare May 12, 2026 20:05
@ibraheemdev ibraheemdev marked this pull request as ready for review May 12, 2026 20:05
@astral-sh-bot astral-sh-bot Bot requested a review from oconnor663 May 12, 2026 20:05
// if the class is the thing defining the variable, then it can
// reference it without it being applied to the specialization
std::iter::once(origin.variance_of(db, typevar))
.chain(

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The fix makes sense to me, but I wish I understood why these lines were included in the original PR. @ericmarkmartin do you remember?

@ibraheemdev ibraheemdev merged commit c3bf783 into main May 16, 2026
58 checks passed
@ibraheemdev ibraheemdev deleted the ibraheem/specialized-variance branch May 16, 2026 01:14
thejchap pushed a commit to thejchap/ruff that referenced this pull request May 23, 2026
anishgirianish pushed a commit to anishgirianish/ruff that referenced this pull request May 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ty Multi-file analysis & type inference

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Specialized typevars are wrongly considered still generic for variance inference

2 participants