From 42b54ae55d76f3c86ccf60c2d63dff96cc97a2b6 Mon Sep 17 00:00:00 2001 From: Aria Desires Date: Fri, 21 Nov 2025 16:26:26 -0500 Subject: [PATCH 1/3] make implicit submodule imports re-exported --- crates/ty_python_semantic/src/semantic_index/definition.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/ty_python_semantic/src/semantic_index/definition.rs b/crates/ty_python_semantic/src/semantic_index/definition.rs index b01c112eecad7..ad8b28847fa5c 100644 --- a/crates/ty_python_semantic/src/semantic_index/definition.rs +++ b/crates/ty_python_semantic/src/semantic_index/definition.rs @@ -702,7 +702,7 @@ impl DefinitionKind<'_> { match self { DefinitionKind::Import(import) => import.is_reexported(), DefinitionKind::ImportFrom(import) => import.is_reexported(), - DefinitionKind::ImportFromSubmodule(_) => false, + DefinitionKind::ImportFromSubmodule(_) => true, _ => true, } } From 65524e87c25caf4a280c2a3463305ba46fee638f Mon Sep 17 00:00:00 2001 From: Aria Desires Date: Fri, 21 Nov 2025 16:31:48 -0500 Subject: [PATCH 2/3] regen tests --- .../mdtest/import/nonstandard_conventions.md | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/crates/ty_python_semantic/resources/mdtest/import/nonstandard_conventions.md b/crates/ty_python_semantic/resources/mdtest/import/nonstandard_conventions.md index ce5c995014020..e4d62333bd478 100644 --- a/crates/ty_python_semantic/resources/mdtest/import/nonstandard_conventions.md +++ b/crates/ty_python_semantic/resources/mdtest/import/nonstandard_conventions.md @@ -241,11 +241,10 @@ X: int = 42 ```py import mypackage -# error: "has no member `submodule`" -reveal_type(mypackage.submodule) # revealed: Unknown -# error: "has no member `submodule`" +reveal_type(mypackage.submodule) # revealed: +# error: "has no member `nested`" reveal_type(mypackage.submodule.nested) # revealed: Unknown -# error: "has no member `submodule`" +# error: "has no member `nested`" reveal_type(mypackage.submodule.nested.X) # revealed: Unknown # error: "has no member `nested`" reveal_type(mypackage.nested) # revealed: Unknown @@ -318,12 +317,10 @@ X: int = 42 ```py import mypackage -# TODO: this could work and would be nice to have -# error: "has no member `submodule`" -reveal_type(mypackage.submodule) # revealed: Unknown -# error: "has no member `submodule`" +reveal_type(mypackage.submodule) # revealed: +# error: "has no member `nested`" reveal_type(mypackage.submodule.nested) # revealed: Unknown -# error: "has no member `submodule`" +# error: "has no member `nested`" reveal_type(mypackage.submodule.nested.X) # revealed: Unknown # error: "has no member `nested`" reveal_type(mypackage.nested) # revealed: Unknown @@ -623,8 +620,7 @@ X: int = 42 ```py import mypackage -# error: "no member `imported`" -reveal_type(mypackage.imported.X) # revealed: Unknown +reveal_type(mypackage.imported.X) # revealed: int ``` ### In Non-Stub From 2900cf42089fcaf59416b8013c30f4b83c4b49fd Mon Sep 17 00:00:00 2001 From: Carl Meyer Date: Fri, 21 Nov 2025 13:42:01 -0800 Subject: [PATCH 3/3] update test prose --- .../resources/mdtest/import/nonstandard_conventions.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/ty_python_semantic/resources/mdtest/import/nonstandard_conventions.md b/crates/ty_python_semantic/resources/mdtest/import/nonstandard_conventions.md index e4d62333bd478..b5217a1ca908b 100644 --- a/crates/ty_python_semantic/resources/mdtest/import/nonstandard_conventions.md +++ b/crates/ty_python_semantic/resources/mdtest/import/nonstandard_conventions.md @@ -214,8 +214,8 @@ reveal_type(mypackage.imported.X) # revealed: Unknown ## Relative `from` Import of Nested Submodule in `__init__` -`from .submodule import nested` in an `__init__.pyi` does not re-export `mypackage.submodule`, -`mypackage.submodule.nested`, or `nested`. +`from .submodule import nested` in an `__init__.pyi` does re-export `mypackage.submodule`, but not +`mypackage.submodule.nested` or `nested`. ### In Stub