Fix(python-generator): Python namespaces comparision type check #41

Merged
jakob.scheid merged 4 commits from fix/python-namespace-comparision-type-check into main 2026-09-27 22:17:16 +02:00
3 changed files with 32 additions and 3 deletions

No files matched your search

+2 -2
View File
@@ -156,7 +156,7 @@ class PythonPackageNamespace(PythonNamespace):
# For performance reasons, is not called self.sub_namespace_names
# if the name attribute does not match, which can be quickly
# verified
if self.name != value.name:
if not (isinstance(value, type(self)) and self.name == value.name):
return False
return value.sub_namespace_names() == self.sub_namespace_names()
@@ -223,4 +223,4 @@ class PythonModuleNamespace(PythonNamespace):
super().__init__(name)
def __eq__(self, value: PythonModuleNamespace) -> bool:
return self.name == value.name
return isinstance(value, type(self)) and self.name == value.name
@@ -14,7 +14,11 @@
import pytest
from src.jcloud_docsgen.core.python.namespaces import PythonModuleNamespace
from src.jcloud_docsgen.core.python.namespaces import (
PythonModuleNamespace,
PythonNamespace,
PythonPackageNamespace,
)
class StrSubclass(str): ...
@@ -42,6 +46,10 @@ def test_PythonModuleNamespace_name_attribute(namespace, expected_name):
(PythonModuleNamespace('a'), PythonModuleNamespace('b'), False),
(PythonModuleNamespace('0'), PythonModuleNamespace('-0'), False),
(PythonModuleNamespace('1'), PythonModuleNamespace('a'), False),
(PythonModuleNamespace('a'), 'a', False),
(PythonModuleNamespace('a'), 'b', False),
(PythonModuleNamespace('a'), PythonPackageNamespace('a', []), False),
(PythonModuleNamespace('a'), PythonNamespace('a'), False),
],
)
def test_PythonModuleNamespace___eq__(namespace1, namespace2, expected):
@@ -16,6 +16,7 @@ import pytest
from src.jcloud_docsgen.core.python.namespaces import (
PythonModuleNamespace,
PythonNamespace,
PythonPackageNamespace,
)
from src.jcloud_docsgen.exceptions import (
@@ -256,6 +257,26 @@ def test_PythonPackageNamespace_sub_namespace_names(namespace, expected):
PythonPackageNamespace('b', []),
False,
),
(
PythonPackageNamespace('a', []),
'a',
False,
),
(
PythonPackageNamespace('a', []),
'b',
False,
),
(
PythonPackageNamespace('a', []),
PythonModuleNamespace('a'),
False,
),
(
PythonPackageNamespace('a', []),
PythonNamespace('a'),
False,
),
],
)
def test_PythonPackageNamespace___eq__(namespace1, namespace2, expected):