Add feature to get the names of all sub-namespaces of a core.python.namespaces.PythonPackageNamespace

This commit is contained in:
2026-04-08 13:26:35 +02:00
parent 0dcf34c068
commit 2cac1727e1
3 changed files with 50 additions and 10 deletions
@@ -5,11 +5,9 @@ from src.jcloud_docsgen.exceptions import NamespaceNotFoundError, InvalidNamespa
class StrSubclass(str): ...
@pytest.mark.parametrize('namespace,expected_name', [
(PythonPackageNamespace('', {}), ''),
(PythonPackageNamespace(' ', {}), ' '),
(PythonPackageNamespace('a', {}), 'a'),
(PythonPackageNamespace('1', {}), '1'),
(PythonPackageNamespace(StrSubclass(''), {}), StrSubclass('')),
(PythonPackageNamespace(StrSubclass('a'), {}), StrSubclass('a')),
])
def test_PythonPackageNamespace_name_attribute(namespace, expected_name):
assert namespace.name == expected_name
@@ -29,15 +27,15 @@ namespace_e = PythonPackageNamespace('e', {'f': namespace_f})
namespace_d = PythonPackageNamespace('d', {'e': namespace_e})
@pytest.mark.parametrize('namespace,sub_namespaces,expected', [
(PythonPackageNamespace('', {
(PythonPackageNamespace('name', {
'a': namespace_a,
'c': namespace_c
}), ['c'], namespace_c),
(PythonPackageNamespace('', {
(PythonPackageNamespace('name', {
'a': namespace_a,
'c': namespace_c
}), ['a'], namespace_a),
(PythonPackageNamespace('', {
(PythonPackageNamespace('name', {
'a': namespace_a,
'c': namespace_c
}), ['a', 'b'], namespace_b),
@@ -58,4 +56,13 @@ def test_PythonPackageNamespace_namespace(namespace: PythonPackageNamespace, sub
def test_PythonPackageNamespace_namespace_exceptions(namespace, sub_namespaces, expected_exception, expected_exception_msg):
with pytest.raises(expected_exception) as exc_info:
namespace.namespace(sub_namespaces)
assert str(exc_info.value) == expected_exception_msg
assert str(exc_info.value) == expected_exception_msg
@pytest.mark.parametrize('namespace,expected', [
(PythonPackageNamespace('a', {'b': PythonModuleNamespace('b')}), {'b': 'b'}),
(PythonPackageNamespace('a', {'b': PythonModuleNamespace('b'), 'c': PythonPackageNamespace('c', {'d': PythonModuleNamespace('d')})}), {'b': 'b', 'c': {'d': 'd'}}),
(PythonPackageNamespace('a', {}), {})
])
def test_PythonPackageNamespace_sub_namespace_names(namespace, expected):
print('NAMESPACE NAMESPACE NAMESPACE NAMESPACE NAMESPACE:', namespace)
assert namespace.sub_namespace_names() == expected