From a4ec9e0b2ba38da9b1aff2807c8bdfbf4b92f7cb Mon Sep 17 00:00:00 2001 From: Maximilian Albert Date: Thu, 9 Jan 2025 20:36:10 +0000 Subject: [PATCH 1/2] Add example folder for testing implicit namespacepackage with subpackages --- .../ns1/pkg/pkgA/__init__.py | 0 .../ns2/pkg/pkgB/__init__.py | 0 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 test/examples/implicit_namespace_package_with_subpackages/ns1/pkg/pkgA/__init__.py create mode 100644 test/examples/implicit_namespace_package_with_subpackages/ns2/pkg/pkgB/__init__.py diff --git a/test/examples/implicit_namespace_package_with_subpackages/ns1/pkg/pkgA/__init__.py b/test/examples/implicit_namespace_package_with_subpackages/ns1/pkg/pkgA/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/test/examples/implicit_namespace_package_with_subpackages/ns2/pkg/pkgB/__init__.py b/test/examples/implicit_namespace_package_with_subpackages/ns2/pkg/pkgB/__init__.py new file mode 100644 index 00000000..e69de29b From 61848afc7ce76ea59878e3b349413fba55c81999 Mon Sep 17 00:00:00 2001 From: Maximilian Albert Date: Mon, 13 Jan 2025 19:10:41 +0000 Subject: [PATCH 2/2] Add regression test for #2044 --- test/test_api/test_interpreter.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/test/test_api/test_interpreter.py b/test/test_api/test_interpreter.py index 1aa027bf..1141c7f0 100644 --- a/test/test_api/test_interpreter.py +++ b/test/test_api/test_interpreter.py @@ -9,8 +9,10 @@ import pytest import jedi import jedi.settings +from jedi import Project from jedi.inference.compiled import mixed from importlib import import_module +from test.helpers import get_example_dir class _GlobalNameSpace: @@ -591,6 +593,18 @@ def test_dict_completion(code, column, expected): assert [c.complete for c in comps] == expected +def test_implicit_namespace_package_with_subpackages(): + sys_path = [ + get_example_dir('implicit_namespace_package_with_subpackages', 'ns1'), + get_example_dir('implicit_namespace_package_with_subpackages', 'ns2'), + ] + project = Project('.', sys_path=sys_path) + interpreter = jedi.Interpreter("import pkg; pkg.", namespaces=[], project=project) + comps = interpreter.complete() + expected = ["pkgA", "pkgB"] + assert [c.complete for c in comps] == expected + + @pytest.mark.parametrize( 'code, types', [ ('dct[1]', ['int']),