From b2177519ace15995ce0b3c0ad3c8f790d1c462d7 Mon Sep 17 00:00:00 2001 From: Dan Jones <danjon@noc.ac.uk> Date: Thu, 22 Aug 2024 09:51:30 +0100 Subject: [PATCH] fix: define the flask app once --- generate_schema_config.py | 39 ++++++++++++++++++++++----------------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/generate_schema_config.py b/generate_schema_config.py index 35a19de..c0ffe04 100644 --- a/generate_schema_config.py +++ b/generate_schema_config.py @@ -110,20 +110,8 @@ swagger_config = { }, } -def serve(): - """ - Run as local flask app on port 5000 - """ - # Replace schema route to remove invalid - # definitions: {} - # Should be fixed if Flassger 0.9.7 is released - # - # The last release of flasgger was Aug 2020 - # This bug was fixed in Nov 2021 - # There is a pre-release from May 2023 - # Until the fix gets released we have to - # remove the invalid definitions object - # from the spec + +def configure_flask(swagger_config): app = Flask(__name__) Swagger(app, config=swagger_config, merge=True) @@ -137,6 +125,24 @@ def serve(): response.data = json.dumps(data) return response + return app + + +def serve(swagger_config): + """ + Run as local flask app on port 5000 + """ + # Replace schema route to remove invalid + # definitions: {} + # Should be fixed if Flassger 0.9.7 is released + # + # The last release of flasgger was Aug 2020 + # This bug was fixed in Nov 2021 + # There is a pre-release from May 2023 + # Until the fix gets released we have to + # remove the invalid definitions object + # from the spec + app = configure_flask(swagger_config) app.run(debug=True, host=FLASK_HOST, port=FLASK_PORT) @@ -150,8 +156,7 @@ def compile_schema(swagger_config): The function that returns the definition can't be called outside the flask app context """ - app = Flask(__name__) - Swagger(app, config=swagger_config, merge=True) + app = configure_flask(swagger_config) route = swagger_config['specs'][0]['route'] client = app.test_client() response = client.get(route) @@ -196,4 +201,4 @@ if __name__ == "__main__": # Run flask app if config.get("run_flask"): - serve() + serve(swagger_config) -- GitLab