summaryrefslogtreecommitdiff
path: root/pydoc.py
diff options
context:
space:
mode:
authorMartin Fischer <martin@push-f.com>2022-02-08 08:21:35 +0100
committerMartin Fischer <martin@push-f.com>2022-02-08 08:21:35 +0100
commitf4f60f96bdf3e3ee0f42321dced94d39634cdb4c (patch)
treea73baab1e5fb6be4dd15930ec775ca5bb19b0a1e /pydoc.py
parentd895594c38a8033f64383dee30936924316a61ce (diff)
consider all modules that contain an object from a sphinx inventory public
Diffstat (limited to 'pydoc.py')
-rwxr-xr-xpydoc.py21
1 files changed, 21 insertions, 0 deletions
diff --git a/pydoc.py b/pydoc.py
index 86123ff..f537204 100755
--- a/pydoc.py
+++ b/pydoc.py
@@ -90,13 +90,34 @@ def is_documented_in_inventory(ob: model.Documentable, inventory: Inventory) ->
# TODO: it's not ideal that we default to True, ideally we could cover all kinds
return True
+def inventory_members(inventory: Inventory):
+ for x in inventory['py:class']:
+ yield x
+ for x in inventory['py:exception']:
+ yield x
+ for x in inventory['py:function']:
+ yield x
+ for x in inventory['py:method']:
+ yield x
+ for x in inventory['py:attribute']:
+ yield x
+ for x in inventory['py:property']:
+ yield x
+
class SphinxAwareSystem(model.System):
def __init__(self, inventory: Inventory) -> None:
super().__init__()
self._inventory = inventory
+ self._public_modules = set(inventory['py:module'])
+ for x in inventory_members(inventory):
+ self._public_modules.add(x.rsplit('.', maxsplit=1)[0])
def privacyClass(self, ob: model.Documentable):
+ if isinstance(ob, model.Module):
+ if ob.fullName() in self._public_modules:
+ return model.PrivacyClass.VISIBLE
+
if not is_documented_in_inventory(ob, self._inventory):
# TODO: if ob is return type by another public API member consider it public
return model.PrivacyClass.PRIVATE