mirror of
https://github.com/Akkudoktor-EOS/EOS.git
synced 2025-09-13 07:21:16 +00:00
Add documentation. (#321)
Add documentation that covers: - Prediction - Measuremnt - REST API Add Python scripts that support automatic documentation generation using the Sphinx sphinxcontrib.eval extension. Add automatic update/ test for REST API documentation. Filter proxy endpoints from REST API documentation. Signed-off-by: Bobby Noelte <b0661n0e17e@gmail.com>
This commit is contained in:
69
scripts/generate_openapi.py
Executable file
69
scripts/generate_openapi.py
Executable file
@@ -0,0 +1,69 @@
|
||||
#!.venv/bin/python
|
||||
"""This module generates the OpenAPI specification for the FastAPI application defined in `akkudoktoreos.server.fastapi_server`.
|
||||
|
||||
The script can be executed directly to generate the OpenAPI specification
|
||||
either to the standard output or to a specified file.
|
||||
|
||||
Usage:
|
||||
scripts/generate_openapi.py [--output-file OUTPUT_FILE]
|
||||
|
||||
Arguments:
|
||||
--output-file : Optional. The file path to write the OpenAPI specification to.
|
||||
|
||||
Example:
|
||||
scripts/generate_openapi.py --output-file openapi.json
|
||||
"""
|
||||
|
||||
import argparse
|
||||
import json
|
||||
import sys
|
||||
|
||||
from fastapi.openapi.utils import get_openapi
|
||||
|
||||
from akkudoktoreos.server.fastapi_server import app
|
||||
|
||||
|
||||
def generate_openapi() -> dict:
|
||||
"""Generate the OpenAPI specification.
|
||||
|
||||
Returns:
|
||||
openapi_spec (dict): OpenAPI specification.
|
||||
"""
|
||||
openapi_spec = get_openapi(
|
||||
title=app.title,
|
||||
version=app.version,
|
||||
openapi_version=app.openapi_version,
|
||||
description=app.description,
|
||||
routes=app.routes,
|
||||
)
|
||||
|
||||
return openapi_spec
|
||||
|
||||
|
||||
def main():
|
||||
"""Main function to run the generation of the OpenAPI specification."""
|
||||
parser = argparse.ArgumentParser(description="Generate OpenAPI Specification")
|
||||
parser.add_argument(
|
||||
"--output-file", type=str, default=None, help="File to write the OpenAPI Specification to"
|
||||
)
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
try:
|
||||
openapi_spec = generate_openapi()
|
||||
openapi_spec_str = json.dumps(openapi_spec, indent=2)
|
||||
if args.output_file:
|
||||
# Write to file
|
||||
with open(args.output_file, "w") as f:
|
||||
f.write(openapi_spec_str)
|
||||
else:
|
||||
# Write to std output
|
||||
print(openapi_spec_str)
|
||||
|
||||
except Exception as e:
|
||||
print(f"Error during OpenAPI specification generation: {e}", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
Reference in New Issue
Block a user