diff --git a/crates/ty_completion_eval/completion-evaluation-tasks.csv b/crates/ty_completion_eval/completion-evaluation-tasks.csv index a196fb98e4..ed036b44f6 100644 --- a/crates/ty_completion_eval/completion-evaluation-tasks.csv +++ b/crates/ty_completion_eval/completion-evaluation-tasks.csv @@ -1,4 +1,7 @@ name,file,index,rank +auto-import-includes-modules,main.py,0,1 +auto-import-includes-modules,main.py,1,7 +auto-import-includes-modules,main.py,2,1 auto-import-skips-current-module,main.py,0,1 fstring-completions,main.py,0,1 higher-level-symbols-preferred,main.py,0, @@ -25,4 +28,4 @@ scope-simple-long-identifier,main.py,0,1 tstring-completions,main.py,0,1 ty-extensions-lower-stdlib,main.py,0,9 type-var-typing-over-ast,main.py,0,3 -type-var-typing-over-ast,main.py,1,239 +type-var-typing-over-ast,main.py,1,251 diff --git a/crates/ty_completion_eval/src/main.rs b/crates/ty_completion_eval/src/main.rs index 146041a278..5d3b44ad18 100644 --- a/crates/ty_completion_eval/src/main.rs +++ b/crates/ty_completion_eval/src/main.rs @@ -506,9 +506,21 @@ struct CompletionAnswer { impl CompletionAnswer { /// Returns true when this answer matches the completion given. fn matches(&self, completion: &Completion) -> bool { + if let Some(ref qualified) = completion.qualified { + if qualified.as_str() == self.qualified() { + return true; + } + } self.symbol == completion.name.as_str() && self.module.as_deref() == completion.module_name.map(ModuleName::as_str) } + + fn qualified(&self) -> String { + self.module + .as_ref() + .map(|module| format!("{module}.{}", self.symbol)) + .unwrap_or_else(|| self.symbol.clone()) + } } /// Copy the Python project from `src_dir` to `dst_dir`. diff --git a/crates/ty_completion_eval/truth/auto-import-includes-modules/completion.toml b/crates/ty_completion_eval/truth/auto-import-includes-modules/completion.toml new file mode 100644 index 0000000000..cbd5805f07 --- /dev/null +++ b/crates/ty_completion_eval/truth/auto-import-includes-modules/completion.toml @@ -0,0 +1,2 @@ +[settings] +auto-import = true diff --git a/crates/ty_completion_eval/truth/auto-import-includes-modules/main.py b/crates/ty_completion_eval/truth/auto-import-includes-modules/main.py new file mode 100644 index 0000000000..a019ea5d71 --- /dev/null +++ b/crates/ty_completion_eval/truth/auto-import-includes-modules/main.py @@ -0,0 +1,3 @@ +multiprocess +collect +collabc diff --git a/crates/ty_completion_eval/truth/auto-import-includes-modules/pyproject.toml b/crates/ty_completion_eval/truth/auto-import-includes-modules/pyproject.toml new file mode 100644 index 0000000000..cd277d8097 --- /dev/null +++ b/crates/ty_completion_eval/truth/auto-import-includes-modules/pyproject.toml @@ -0,0 +1,5 @@ +[project] +name = "test" +version = "0.1.0" +requires-python = ">=3.13" +dependencies = [] diff --git a/crates/ty_completion_eval/truth/auto-import-includes-modules/uv.lock b/crates/ty_completion_eval/truth/auto-import-includes-modules/uv.lock new file mode 100644 index 0000000000..a4937d10d3 --- /dev/null +++ b/crates/ty_completion_eval/truth/auto-import-includes-modules/uv.lock @@ -0,0 +1,8 @@ +version = 1 +revision = 3 +requires-python = ">=3.13" + +[[package]] +name = "test" +version = "0.1.0" +source = { virtual = "." }