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 --- packages.toml | 1 + pydoc.py | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+) 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] 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