summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Fischer <martin@push-f.com>2022-02-08 08:21:35 +0100
committerMartin Fischer <martin@push-f.com>2022-02-08 08:21:35 +0100
commitf4f60f96bdf3e3ee0f42321dced94d39634cdb4c (patch)
treea73baab1e5fb6be4dd15930ec775ca5bb19b0a1e
parentd895594c38a8033f64383dee30936924316a61ce (diff)
consider all modules that contain an object from a sphinx inventory public
-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