Skip to content

[red-knot] support Any as a class in typeshed #17107

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Apr 1, 2025
Merged

[red-knot] support Any as a class in typeshed #17107

merged 2 commits into from
Apr 1, 2025

Conversation

carljm
Copy link
Contributor

@carljm carljm commented Apr 1, 2025

Summary

In python/typeshed#13520 the typeshed definition of typing.Any was changed from Any = object() to class Any: .... Our automated typeshed updater pulled down this change in #17106, with the consequence that we no longer understand Any, which is... not good.

This PR gives us the ability to understand Any defined as a class instead of object(). It doesn't remove our ability to understand the old form. Perhaps at some point we'll want to remove it, but for now we may as well support both old and new typeshed?

This also directly patches typeshed to use the new form of Any; this is purely to work around our tests that no known class is inferred as Unknown, which otherwise fail with the old typeshed and the changes in this PR. (All other tests pass.) This patch to typeshed will shortly be subsumed by #17106 anyway.

Test Plan

Without the typeshed change in this PR, all tests pass except for the two known_class_doesnt_fallback_to_unknown_unexpectedly_* tests (so we still support the old form of defining Any). With the typeshed change in this PR, all tests pass, so we now support the new form in a way that is indistinguishable to our test suite from the old form. And indistinguishable to the ecosystem check: after rebasing #17106 on this PR, there's zero ecosystem impact.

@carljm carljm added the ty Multi-file analysis & type inference label Apr 1, 2025
Copy link
Contributor

github-actions bot commented Apr 1, 2025

mypy_primer results

No ecosystem changes detected ✅

@MichaReiser
Copy link
Member

Should we add a TODO or at least a comment to the Any (object) to clarify that this is no longer used with recent typeshed versions?

@carljm carljm enabled auto-merge (squash) April 1, 2025 16:35
@carljm carljm merged commit 3f63c08 into main Apr 1, 2025
21 checks passed
@carljm carljm deleted the cjm/anyclass branch April 1, 2025 16:38
dcreager added a commit that referenced this pull request Apr 1, 2025
* main:
  [red-knot] Add property tests for callable types (#17006)
  [red-knot] Disjointness for callable types (#17094)
  [red-knot] Flatten `Type::Callable` into four `Type` variants (#17126)
  mdtest.py: do a full mdtest run immediately when the script is executed (#17128)
  [red-knot] Fix callable subtyping for standard parameters (#17125)
  [red-knot] Fix more `redundant-cast` false positives (#17119)
  Sync vendored typeshed stubs (#17106)
  [red-knot] support Any as a class in typeshed (#17107)
  Visit `Identifier` node as part of the `SourceOrderVisitor` (#17110)
  [red-knot] Don't infer Todo for quite so many tuple type expressions (#17116)
  CI: Run pre-commit on depot machine (#17120)
  Error instead of `panic!` when running Ruff from a deleted directory (#16903) (#17054)
  Control flow graph: setup (#17064)
  [red-knot] Playground improvements (#17109)
  [red-knot] IDE crate (#17045)
  Update dependency vite to v6.2.4 (#17104)
  [red-knot] Add redundant-cast error (#17100)
  [red-knot] Narrowing on `in tuple[...]` and `in str` (#17059)
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.

3 participants