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