orchestrata_tools.backcompat.diagram_generator
Reference › orchestrata_tools › backcompat › diagram_generator
This module is a command-line wrapper that keeps the old diagram_generator.py interface alive. Nothing imports it, and tests/test_orchestrata_tools_backcompat.py covers it.
main loads the AST file and builds an index, then chooses a generator from the flags. --class NAME, --module PATH and --full use ClassDiagramGenerator from class_diagram for one class with its subclasses, the classes of one module, or the largest classes. With no flag it uses ModuleDiagramGenerator from module_diagram. The Mermaid text is printed or written to the --output file.
At a glance
| Source | src/orchestrata_tools/backcompat/diagram_generator.py |
| Lines of code | 53 |
| Classes | 0 |
| Functions | 1 |
| Imports (internal) | orchestrata_tools.diagram, orchestrata_tools.parser |
| Imported by | none |
| Tests that import it | tests/test_orchestrata_tools_backcompat.py |
Class diagram
No classes; see Functions.
Dependency diagram
API
Functions
| Function | Signature | Summary |
|---|---|---|
main |
main(argv: list[str] | None = None) -> int |
Source
#!/usr/bin/env python3
"""Backward-compatible wrapper for diagram_generator.py."""
from __future__ import annotations
import argparse
import sys
from orchestrata_tools.diagram import (
ClassDiagramGenerator,
ModuleDiagramGenerator,
)
from orchestrata_tools.parser import ASTIndex, JSONASTLoader
def main(argv: list[str] | None = None) -> int:
parser = argparse.ArgumentParser(description="Mermaid Diagram Generator")
parser.add_argument("--ast", default="plans/ast-ultimate.json")
parser.add_argument("--output", "-o")
parser.add_argument("--class", dest="class_name", help="Generate class diagram")
parser.add_argument("--module", help="Generate module diagram")
parser.add_argument("--full", action="store_true", help="Full class diagram")
args = parser.parse_args(argv)
ast = JSONASTLoader().load(args.ast)
index = ASTIndex(ast)
gen: ClassDiagramGenerator | ModuleDiagramGenerator
if args.class_name:
gen = ClassDiagramGenerator(index)
diagram = gen.generate_for_class(args.class_name)
elif args.module:
gen = ClassDiagramGenerator(index)
diagram = gen.generate_for_module(args.module)
elif args.full:
gen = ClassDiagramGenerator(index)
diagram = gen.generate_full()
else:
gen = ModuleDiagramGenerator(index)
diagram = gen.generate()
output = diagram.render()
if args.output:
with open(args.output, "w") as f:
f.write(output)
else:
print(output)
return 0
if __name__ == "__main__":
sys.exit(main())