From 92f95ff4947b1a7c06ad459a0e30f749bd72c1ab Mon Sep 17 00:00:00 2001 From: David Peter Date: Mon, 28 Apr 2025 13:28:43 +0200 Subject: [PATCH] [red-knot] TypedDict: No errors for introspection dunder attributes (#17677) ## Summary Do not emit errors when accessing introspection dunder attributes such as `__required_keys__` on `TypedDict`s. --- .../red_knot_python_semantic/resources/mdtest/typed_dict.md | 3 +++ crates/red_knot_python_semantic/src/types/class_base.rs | 4 +--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/crates/red_knot_python_semantic/resources/mdtest/typed_dict.md b/crates/red_knot_python_semantic/resources/mdtest/typed_dict.md index 22d43260ba..217bfc9e4d 100644 --- a/crates/red_knot_python_semantic/resources/mdtest/typed_dict.md +++ b/crates/red_knot_python_semantic/resources/mdtest/typed_dict.md @@ -21,4 +21,7 @@ msg = Message(id=1, content="Hello") # No errors for yet-unsupported features (`closed`): OtherMessage = TypedDict("OtherMessage", {"id": int, "content": str}, closed=True) + +reveal_type(Person.__required_keys__) # revealed: @Todo(TypedDict) +reveal_type(Message.__required_keys__) # revealed: @Todo(TypedDict) ``` diff --git a/crates/red_knot_python_semantic/src/types/class_base.rs b/crates/red_knot_python_semantic/src/types/class_base.rs index 91c132fc3d..9f480ed07e 100644 --- a/crates/red_knot_python_semantic/src/types/class_base.rs +++ b/crates/red_knot_python_semantic/src/types/class_base.rs @@ -169,9 +169,7 @@ impl<'db> ClassBase<'db> { KnownInstanceType::OrderedDict => { Self::try_from_type(db, KnownClass::OrderedDict.to_class_literal(db)) } - KnownInstanceType::TypedDict => { - Self::try_from_type(db, KnownClass::Dict.to_class_literal(db)) - } + KnownInstanceType::TypedDict => Self::try_from_type(db, todo_type!("TypedDict")), KnownInstanceType::Callable => { Self::try_from_type(db, todo_type!("Support for Callable as a base class")) }