summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages.toml1
-rwxr-xr-xpydoc.py21
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]
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