From f4f60f96bdf3e3ee0f42321dced94d39634cdb4c Mon Sep 17 00:00:00 2001 From: Martin Fischer Date: Tue, 8 Feb 2022 08:21:35 +0100 Subject: consider all modules that contain an object from a sphinx inventory public --- pydoc.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'pydoc.py') 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 -- cgit v1.2.3