From bbe9ca23c944776db58c261dbc7035cd6399f0dc Mon Sep 17 00:00:00 2001 From: Tor-Einar Skog <tor-einar.skog@nibio.no> Date: Tue, 14 Feb 2023 10:46:14 +0100 Subject: [PATCH] Working endpoint for running a model! --- app/main.py | 55 ++++++++++++++++++++++++------------------------ requirements.txt | 2 +- 2 files changed, 28 insertions(+), 29 deletions(-) diff --git a/app/main.py b/app/main.py index 7c3485f..be6ad2e 100644 --- a/app/main.py +++ b/app/main.py @@ -23,58 +23,57 @@ app = FastAPI( } ) - +# TODO Create a nice welcome page @app.get("/") async def root(): return {"message": "Hello World"} -@app.get("/models", response_class=PlainTextResponse, - name="List all models (plain text, default language)") -async def print_model_list_default_language() -> str: - return _print_model_list(VIPSModel.default_language) - +####### Model listing endpoints ####### -@app.get("/models/{language}", response_class=PlainTextResponse, - name="List all models (plain text)" - ) -async def print_model_list(language: str) -> str: - return _print_model_list(language) - - - -@app.get("/models/json", - name="List all models (Json, default language)" - ) +@app.get("/models/json", name="List all models (Json, default language)") async def print_model_list_json_default_language(): return _print_model_list_json(VIPSModel.default_language) - -@app.get("/models/json/{language}", - name="List all models (Json)") +@app.get("/models/json/{language}", name="List all models (Json)") async def print_model_list_json(language:str): return _print_model_list_json(language) +@app.get("/models", response_class=PlainTextResponse, name="List all models (plain text, default language)") +async def print_model_list_default_language() -> str: + return _print_model_list(VIPSModel.default_language) + +@app.get("/models/{language}", response_class=PlainTextResponse, name="List all models (plain text)") +async def print_model_list(language: str) -> str: + return _print_model_list(language) + -@app.post("/models/run/", - name="Run a model" - ) +####### Model running endpoints ####### +@app.post("/models/run/", name="Run a model") async def run_model_from_config_only(model_configuration:ModelConfiguration): return _run_model(model_configuration.model_id, model_configuration) -@app.post("/models/{model_id}/run/", - name="Run a model" - ) +@app.post("/models/{model_id}/run/", name="Run a model") async def run_model_from_config_only(model_id, model_configuration:ModelConfiguration): - return _run_model(model_configuration.model_id, model_configuration) + return _run_model(model_id, model_configuration) +####### Helper functions ####### +# Dealing with no method overload in Python :-) + def _run_model(model_id:str, model_configuration:ModelConfiguration): + """ + Run a model, using provided model_id and ModelConfiguration + Return a list of Result objects + """ requested_model = get_model_instance(model_id) requested_model.set_configuration(model_configuration) return requested_model.get_result() def _print_model_list(language:str): + """ + Returns the list of available models in plain text format + """ model_list = "" vips_models = get_vips_models() for model_id in vips_models: @@ -83,7 +82,7 @@ def _print_model_list(language:str): def _print_model_list_json(language:str): """ - Common method for the web service methods + Returns the list of available models in Json format """ model_list = [] vips_models = get_vips_models() diff --git a/requirements.txt b/requirements.txt index 20e9bbd..dbc3d72 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,2 @@ fastapi==0.89.1 -git+https://gitlab.nibio.no/VIPS/vipscore-python-common.git@0.1.6 \ No newline at end of file +git+https://gitlab.nibio.no/VIPS/vipscore-python-common.git@0.1.9 \ No newline at end of file -- GitLab