summaryrefslogtreecommitdiff
path: root/pydoc.py
diff options
context:
space:
mode:
authorMartin Fischer <martin@push-f.com>2022-02-08 08:41:59 +0100
committerMartin Fischer <martin@push-f.com>2022-02-08 08:41:59 +0100
commitd461e52483902558e72aab64ecbb6430c098ca1c (patch)
tree69d0be87665b1056567f0db389ae6b81ad4b47c1 /pydoc.py
parent68e00a92f000deaed9f420b021cb09d949b3d126 (diff)
refactor: introduce system_for_sphinx_inventory helper function
Diffstat (limited to 'pydoc.py')
-rwxr-xr-xpydoc.py44
1 files changed, 24 insertions, 20 deletions
diff --git a/pydoc.py b/pydoc.py
index 9311e0a..0b124f7 100755
--- a/pydoc.py
+++ b/pydoc.py
@@ -124,6 +124,29 @@ class SphinxAwareSystem(model.System):
return super().privacyClass(ob)
+def system_for_sphinx_inventory(inventory_url: str):
+ inventory_url = packages[package_name]['sphinx_inventory_url']
+ url_base = inventory_url.rsplit('/', maxsplit=1)[0]
+ inventory_path = inventories / (package_name + '.inv')
+ try:
+ with inventory_path.open('rb') as f:
+ inventory = InventoryFile.load(f, url_base, posixpath.join)
+ except FileNotFoundError:
+ inventory_bytes = requests.get(inventory_url, stream=True).content
+ inventory = InventoryFile.load(
+ io.BytesIO(inventory_bytes), url_base, posixpath.join
+ )
+ with inventory_path.open('wb') as f:
+ f.write(inventory_bytes)
+
+ if 'py:module' not in inventory:
+ print(f"[warning] sphinx inventory for {package_name} does not contain py:module, we're ignoring the inventory")
+ # TODO: display warning in HTML
+ return None
+
+ system = SphinxAwareSystem(inventory)
+ system.options.docformat = docformat
+ return system
if __name__ == '__main__':
sources = Path('sources')
@@ -245,26 +268,7 @@ if __name__ == '__main__':
system = None
if 'sphinx_inventory_url' in packages[package_name]:
- inventory_url = packages[package_name]['sphinx_inventory_url']
- url_base = inventory_url.rsplit('/', maxsplit=1)[0]
- inventory_path = inventories / (package_name + '.inv')
- try:
- with inventory_path.open('rb') as f:
- inventory = InventoryFile.load(f, url_base, posixpath.join)
- except FileNotFoundError:
- inventory_bytes = requests.get(inventory_url, stream=True).content
- inventory = InventoryFile.load(
- io.BytesIO(inventory_bytes), url_base, posixpath.join
- )
- with inventory_path.open('wb') as f:
- f.write(inventory_bytes)
-
- if 'py:module' in inventory:
- system = SphinxAwareSystem(inventory)
- system.options.docformat = docformat
- else:
- print(f"[warning] sphinx inventory for {package_name} does not contain py:module, we're ignoring the inventory")
- # TODO: display warning in HTML
+ system = system_for_sphinx_inventory(packages[package_name]['sphinx_inventory_url'])
pydoctor.driver.main(