diff options
-rw-r--r-- | packages.toml | 1 | ||||
-rwxr-xr-x | pydoc.py | 21 |
2 files changed, 22 insertions, 0 deletions
diff --git a/packages.toml b/packages.toml index 3b79315..91f8c58 100644 --- a/packages.toml +++ b/packages.toml @@ -8,6 +8,7 @@ sphinx_inventory_url = "https://www.crummy.com/software/BeautifulSoup/bs4/doc/ob sphinx_inventory_url = "https://bottlepy.org/docs/stable/objects.inv" [click] +sphinx_inventory_url = "https://click.palletsprojects.com/en/8.0.x/objects.inv" [django] @@ -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 |