Skip to content

Commit 048add8

Browse files
committed
added pydantic settings, config loading from .env or env var
1 parent 14101c5 commit 048add8

File tree

7 files changed

+57
-1
lines changed

7 files changed

+57
-1
lines changed

.env.example

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
INFERADMIN_HF_TOKEN='your_hf_token'
2+
INFERADMIN_MODEL_STORAGE_PATH='/your/path/to/store/models'

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ dependencies = [
1212
"aiodocker>=0.24.0",
1313
"fastapi>=0.115.12",
1414
"pydantic>=2.11.2",
15+
"pydantic-settings>=2.8.1",
1516
"uvicorn>=0.34.0",
1617
]
1718

src/inferadmin/config/loader.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
from .models import InferAdminConfig
2+
3+
class Config:
4+
async def load(self):
5+
self.config = InferAdminConfig()
6+
print(self.get_config())
7+
8+
def get_config(self) -> InferAdminConfig:
9+
return self.config
10+
11+
config_manager = Config()

src/inferadmin/config/models.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# from pydantic import BaseModel
2+
from pydantic_settings import BaseSettings, SettingsConfigDict
3+
4+
class InferAdminConfig(BaseSettings):
5+
model_config = SettingsConfigDict(env_file='.env', env_prefix='INFERADMIN_', extra='ignore')
6+
7+
model_storage_path: str
8+
hf_token: str

src/inferadmin/lifespan.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
from contextlib import asynccontextmanager
2+
from fastapi import FastAPI
3+
from inferadmin.config.loader import config_manager
4+
5+
@asynccontextmanager
6+
async def lifespan(app: FastAPI):
7+
await config_manager.load()
8+
yield

src/inferadmin/main.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
from fastapi import FastAPI
22
from inferadmin.routes import router
33
from .openapi_tags import tags_metadata
4+
from .lifespan import lifespan
45

56
app = FastAPI(
67
title="InferAdmin",
78
description="A lightweight management interface for local LLM infrastructure.",
8-
tags_metadata=tags_metadata
9+
tags_metadata=tags_metadata,
10+
lifespan=lifespan
911
)
1012
app.include_router(router=router)

uv.lock

Lines changed: 24 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)