Skip to content

Commit 0eb4e6e

Browse files
committed
Ignore submodules if parent module is ignored
1 parent 34f288c commit 0eb4e6e

File tree

1 file changed

+40
-8
lines changed

1 file changed

+40
-8
lines changed

src/lazydocs/generation.py

Lines changed: 40 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,22 @@ def _is_object_ignored(obj: Any) -> bool:
274274
return False
275275

276276

277+
def _is_module_ignored(module_name: str, ignored_modules: List[str]) -> bool:
278+
"""Checks if a given module is ignored."""
279+
if module_name.split(".")[-1].startswith("_"):
280+
return True
281+
282+
for ignored_module in ignored_modules:
283+
if module_name == ignored_module:
284+
return True
285+
286+
# Check is module is subpackage of an ignored package
287+
if module_name.startswith(ignored_module + "."):
288+
return True
289+
290+
return False
291+
292+
277293
def _get_src_root_path(obj: Any) -> str:
278294
"""Get the root path to a imported module.
279295
@@ -862,7 +878,7 @@ def generate_docs(
862878
src_root_path: Optional[str] = None,
863879
src_base_url: Optional[str] = None,
864880
remove_package_prefix: bool = False,
865-
ignored_modules: List[str] = [],
881+
ignored_modules: Optional[List[str]] = None,
866882
overview_file: Optional[str] = None,
867883
watermark: bool = True,
868884
validate: bool = False,
@@ -886,6 +902,9 @@ def generate_docs(
886902
# Create output path
887903
os.makedirs(output_path)
888904

905+
if not ignored_modules:
906+
ignored_modules = list()
907+
889908
if not src_root_path:
890909
try:
891910
# Set src root path to git root
@@ -923,17 +942,23 @@ def generate_docs(
923942

924943
if not stdout_mode:
925944
print(f"Generating docs for python package at: {path}")
945+
926946
# Generate one file for every discovered module
927947
for loader, module_name, _ in pkgutil.walk_packages([path]):
928-
if module_name in ignored_modules: # lgtm [py/non-iterable-in-for-loop]
929-
continue
930-
931-
if module_name.split(".")[-1].startswith("_"):
948+
if _is_module_ignored(module_name, ignored_modules):
949+
# Add module to ignore list, so submodule will also be ignored
950+
ignored_modules.append(module_name)
932951
continue
933952

934953
try:
935954
mod = loader.find_module(module_name).load_module(module_name) # type: ignore
936955
module_md = generator.module2md(mod)
956+
if not module_md:
957+
# Module md is empty -> ignore module and all submodules
958+
# Add module to ignore list, so submodule will also be ignored
959+
ignored_modules.append(module_name)
960+
continue
961+
937962
if stdout_mode:
938963
print(module_md)
939964
else:
@@ -995,16 +1020,23 @@ def generate_docs(
9951020
path=obj.__path__, # type: ignore
9961021
prefix=obj.__name__ + ".", # type: ignore
9971022
):
998-
if module_name in ignored_modules:
1023+
if _is_module_ignored(module_name, ignored_modules):
1024+
# Add module to ignore list, so submodule will also be ignored
1025+
ignored_modules.append(module_name)
9991026
continue
10001027

1001-
if module_name.split(".")[-1].startswith("_"):
1002-
continue
10031028
try:
10041029
mod = loader.find_module(module_name).load_module( # type: ignore
10051030
module_name
10061031
)
10071032
module_md = generator.module2md(mod)
1033+
1034+
if not module_md:
1035+
# Module MD is empty -> ignore module and all submodules
1036+
# Add module to ignore list, so submodule will also be ignored
1037+
ignored_modules.append(module_name)
1038+
continue
1039+
10081040
if stdout_mode:
10091041
print(module_md)
10101042
else:

0 commit comments

Comments
 (0)