Add internal function to generate the documentation of a package namespace

This commit is contained in:
2026-04-26 22:23:18 +02:00
parent a17e56fb3d
commit 22f3233381
+43 -1
View File
@@ -835,6 +835,35 @@ class PythonModuleDocumentationGenerator:
return md.strip() return md.strip()
def _generate_package_namespace_documentation(namespace: PythonPackageNamespace, documentation_directory: ExistingDirectory, root_directory: ExistingDirectory) -> None:
'''
Generates the documentation for a package namespace and writes it to
the documentation directory.
:param namespace: The namespace.
:type namespace: PythonPackageNamespace
:param documentation_directory: The directory for the documentation.
:type documentation_directory: ExistingDirectory
:param root_directory: The root directory.
:type root_directory: ExistingDirectory
'''
assert_that_is_instance(documentation_directory, ExistingDirectory)
documentation_directory = pathlib.Path(str(documentation_directory))
for sub_namespace in namespace.sub_namespaces:
if isinstance(sub_namespace, PythonPackageNamespace):
_generate_package_namespace_documentation(sub_namespace, documentation_directory / sub_namespace.name, root_directory)
elif isinstance(sub_namespace, PythonModuleNamespace):
(
documentation_directory / (sub_namespace.name + '.py')
).write_text(
PythonModuleDocumentationGenerator(
documentation_directory / sub_namespace.name,
root_directory
).generate_documentation()
)
class PythonDocumentationGenerator: class PythonDocumentationGenerator:
''' '''
@@ -877,4 +906,17 @@ class PythonDocumentationGenerator:
return [ return [
self._namespace(dir) self._namespace(dir)
for dir in src_dir.iterdir() if dir.is_dir() for dir in src_dir.iterdir() if dir.is_dir()
] ]
def generate_documentation(self) -> None:
'''
Generates the full project documentation and writes it to the
documentation directory.
'''
namespaces = self.namespace()
for namespace in namespaces:
namespace_documentation_directory = self.docs_directory / namespace.name
namespace_documentation_directory.mkdir()
_generate_package_namespace_documentation(namespace, namespace_documentation_directory, self.project_directory / 'src' / namespace.name)