diff options
author | Martin Fischer <martin@push-f.com> | 2022-02-08 08:21:35 +0100 |
---|---|---|
committer | Martin Fischer <martin@push-f.com> | 2022-02-08 08:21:35 +0100 |
commit | f4f60f96bdf3e3ee0f42321dced94d39634cdb4c (patch) | |
tree | a73baab1e5fb6be4dd15930ec775ca5bb19b0a1e /pydoc.py | |
parent | d895594c38a8033f64383dee30936924316a61ce (diff) |
consider all modules that contain an object from a sphinx inventory public
Diffstat (limited to 'pydoc.py')
-rwxr-xr-x | pydoc.py | 21 |
1 files changed, 21 insertions, 0 deletions
@@ -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 |