summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJordan Wiens <jordan@psifertex.com>2023-06-05 20:41:08 -0400
committerJordan Wiens <jordan@psifertex.com>2023-06-05 20:41:08 -0400
commitbdd240a8a07dd154725aef55c74202828e7384ae (patch)
tree11be6d6274c2bd574ad6025da7bd111ea562a1e0
parent1f2faf3ed77cc413a235e8f26634c49207c87826 (diff)
fix docs for submodules like collaboration and debugger
-rw-r--r--api-docs/source/conf.py15
1 files changed, 9 insertions, 6 deletions
diff --git a/api-docs/source/conf.py b/api-docs/source/conf.py
index c10da0bc..efe86520 100644
--- a/api-docs/source/conf.py
+++ b/api-docs/source/conf.py
@@ -59,7 +59,7 @@ def modulelist(module, basename=""):
modules = inspect.getmembers(module, inspect.ismodule)
# We block the module named "debugger", because it is the folder that contains all debugger Python files
moduleblacklist = ["binaryninja", "core", "_binaryninjacore", "associateddatastore",
- "dbgcore", "debugger", "_debuggercore", "_collaboration"]
+ "dbgcore", "_debuggercore", "_collaboration"]
if basename != "":
basename += "."
@@ -69,7 +69,8 @@ def classlist(module):
members = inspect.getmembers(module, inspect.isclass)
classblacklist = ['builtins']
if module.__name__ != "binaryninja.enums":
- members = sorted(x for x in members if type(x[1]) != binaryninja.enum.EnumMeta and x[1].__module__ not in classblacklist)
+ # This is an abomination of a sort key, but it fixes the issue with collab or other nested namespaces
+ members = sorted([x for x in members if type(x[1]) != binaryninja.enum.EnumMeta and x[1].__module__ not in classblacklist], key=lambda x: str(x[1].__module__ + "." + x[1].__name__))
members.extend(fnlist(module))
def in_mod(member):
@@ -111,16 +112,16 @@ The search bar on the side works both online and offline.
:show-inheritance:
Full Class List
----------------
+***************
.. toctree::
- :maxdepth: 2
+ :maxdepth: 1
''')
# Generate docs for both binaryninja and binaryninja.debugger module
modules = modulelist(binaryninja)
- modules.extend(modulelist(binaryninja.debugger))
+ modules.extend(modulelist(binaryninja.debugger, basename="debugger"))
if hasattr(binaryninja, "collaboration"):
modules.extend(modulelist(binaryninja.collaboration, basename="collaboration"))
modules = sorted(modules, key=lambda pair: pair[0])
@@ -130,7 +131,9 @@ Full Class List
# correct name of the module
filename = f"{module.__name__}-module.rst"
spaces = " " * modulename.count(".")
- pythonrst.write(f" {spaces}{modulename} <{filename}>\n")
+ # Dirty hack to skip polutting the main toc with nested modules
+ if modulename.count(".") == 0:
+ pythonrst.write(f" {spaces}{modulename} <{filename}>\n")
modulefile = open(filename, "w")
underline = "="*len(f"{modulename} module")
modulefile.write(f'''{modulename} module