From e727a33f51c331d7b6e2c670672a25a39255adf7 Mon Sep 17 00:00:00 2001 From: Tor-Einar Skog <tor-einar.skog@nibio.no> Date: Mon, 13 Feb 2023 11:20:20 +0100 Subject: [PATCH] First version with working endpoint (/models) --- app/__init.py__ | 0 app/internal/__init.py__ | 0 {src => app/internal}/model_factory.py | 19 +++++++++++-------- app/main.py | 18 ++++++++++++++++++ safe_pip_freeze.py | 6 ++++++ src/main.py | 8 -------- 6 files changed, 35 insertions(+), 16 deletions(-) create mode 100644 app/__init.py__ create mode 100644 app/internal/__init.py__ rename {src => app/internal}/model_factory.py (87%) create mode 100644 app/main.py create mode 100644 safe_pip_freeze.py delete mode 100644 src/main.py diff --git a/app/__init.py__ b/app/__init.py__ new file mode 100644 index 0000000..e69de29 diff --git a/app/internal/__init.py__ b/app/internal/__init.py__ new file mode 100644 index 0000000..e69de29 diff --git a/src/model_factory.py b/app/internal/model_factory.py similarity index 87% rename from src/model_factory.py rename to app/internal/model_factory.py index 0abc91c..4c8821a 100644 --- a/src/model_factory.py +++ b/app/internal/model_factory.py @@ -34,11 +34,7 @@ def discover_models(): return models def get_model_instance(model_id): - global _models - if _models is None: - print("Indexing models") - _models = discover_models() - return _models.get(model_id)() + return get_vips_models().get(model_id)() def get_vips_model_packages(): global _packages @@ -46,9 +42,16 @@ def get_vips_model_packages(): discover_models() return _packages +def get_vips_models(): + global _models + if _models is None: + #print("Indexing models") + _models = discover_models() + return _models + # USAGE EXAMPLE. REMOVE when U start using the module from elsewhere -model = get_model_instance("REFERENCEM") -print(model.get_model_name()) -print(get_vips_model_packages()) +#model = get_model_instance("REFERENCEM") +#print(model.get_model_name()) +#print(get_vips_model_packages()) diff --git a/app/main.py b/app/main.py new file mode 100644 index 0000000..e5ff893 --- /dev/null +++ b/app/main.py @@ -0,0 +1,18 @@ +from fastapi import FastAPI +from fastapi.responses import PlainTextResponse +from app.internal.model_factory import * + +app = FastAPI() + + +@app.get("/") +async def root(): + return {"message": "Hello World"} + +@app.get("/models", response_class=PlainTextResponse) +async def print_model_list() -> str: + model_list = "" + vips_models = get_vips_models() + for model_id in vips_models: + model_list = "%s%s %s\n" %(model_list, model_id, get_model_instance(model_id).get_model_name()) + return model_list diff --git a/safe_pip_freeze.py b/safe_pip_freeze.py new file mode 100644 index 0000000..6ddff3e --- /dev/null +++ b/safe_pip_freeze.py @@ -0,0 +1,6 @@ +import sys +import subprocess +import src.model_factory + +# Intention: Make sure that pip freeze doesn't include VIPS models +# Only necessary if we decide to stick with using pip freeze \ No newline at end of file diff --git a/src/main.py b/src/main.py deleted file mode 100644 index ee60be1..0000000 --- a/src/main.py +++ /dev/null @@ -1,8 +0,0 @@ -from fastapi import FastAPI - -app = FastAPI() - - -@app.get("/") -async def root(): - return {"message": "Hello World"} -- GitLab