diff --git a/whisper_cpp_python/server/__main__.py b/whisper_cpp_python/server/__main__.py index ab88931..dac8195 100644 --- a/whisper_cpp_python/server/__main__.py +++ b/whisper_cpp_python/server/__main__.py @@ -17,28 +17,40 @@ """ import os -import uvicorn +import uvicorn import argparse +from typing import get_type_hints from whisper_cpp_python.server.app import create_app, Settings if __name__ == "__main__": + parser = argparse.ArgumentParser() - for name, field in Settings.__fields__.items(): - description = field.field_info.description + + for name, field in Settings.model_fields.items(): + + # Get field type + field_type = get_type_hints(Settings)[name] + + description = field.description if field.default is not None and description is not None: description += f" (default: {field.default})" + parser.add_argument( f"--{name}", dest=name, - type=field.type_, - help=description, + type=field_type, # Use field type here + help=description ) args = parser.parse_args() + settings = Settings(**{k: v for k, v in vars(args).items() if v is not None}) + app = create_app(settings=settings) uvicorn.run( - app, host=os.getenv("HOST", "localhost"), port=int(os.getenv("PORT", 8001)) - ) + app, + host=os.getenv("HOST", "localhost"), + port=int(os.getenv("PORT", 8001)) + ) \ No newline at end of file diff --git a/whisper_cpp_python/server/app.py b/whisper_cpp_python/server/app.py index 0efa5d8..acb3bc1 100644 --- a/whisper_cpp_python/server/app.py +++ b/whisper_cpp_python/server/app.py @@ -9,7 +9,9 @@ from fastapi import Depends, FastAPI, APIRouter, File, Body from fastapi.middleware.cors import CORSMiddleware -from pydantic import BaseModel, BaseSettings, Field + +from pydantic import BaseModel, Field +from pydantic_settings import BaseSettings from sse_starlette.sse import EventSourceResponse