diff options
Diffstat (limited to 'pydoc.py')
-rwxr-xr-x | pydoc.py | 44 |
1 files changed, 24 insertions, 20 deletions
@@ -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( |