diff --git a/{{cookiecutter.repo_name}}/migrations/env.py b/{{cookiecutter.repo_name}}/migrations/env.py index 13b74b8..e3c1632 100644 --- a/{{cookiecutter.repo_name}}/migrations/env.py +++ b/{{cookiecutter.repo_name}}/migrations/env.py @@ -1,9 +1,7 @@ from logging.config import fileConfig -from sqlalchemy import engine_from_config -from sqlalchemy import pool - from alembic import context +from sqlalchemy import engine_from_config, pool from {{cookiecutter.module_name}}.models.base import Base from {{cookiecutter.module_name}}.settings import get_settings @@ -61,7 +59,7 @@ def run_migrations_online(): """ configuration = config.get_section(config.config_ini_section) - configuration['sqlalchemy.url'] = settings.DB_DSN + configuration['sqlalchemy.url'] = str(settings.DB_DSN) connectable = engine_from_config( configuration, prefix="sqlalchemy.", diff --git a/{{cookiecutter.repo_name}}/requirements.txt b/{{cookiecutter.repo_name}}/requirements.txt index 3c83f42..9fd26f2 100644 --- a/{{cookiecutter.repo_name}}/requirements.txt +++ b/{{cookiecutter.repo_name}}/requirements.txt @@ -6,5 +6,6 @@ gunicorn logging-profcomff psycopg2-binary pydantic[dotenv] +pydantic-settings SQLAlchemy uvicorn diff --git a/{{cookiecutter.repo_name}}/{{cookiecutter.module_name}}/__init__.py b/{{cookiecutter.repo_name}}/{{cookiecutter.module_name}}/__init__.py index ebcaeac..4ed3366 100644 --- a/{{cookiecutter.repo_name}}/{{cookiecutter.module_name}}/__init__.py +++ b/{{cookiecutter.repo_name}}/{{cookiecutter.module_name}}/__init__.py @@ -1,3 +1,3 @@ import os -__version__ = os.getenv('APP_VERSION', 'dev') +__version__ = os.getenv("APP_VERSION", "dev") diff --git a/{{cookiecutter.repo_name}}/{{cookiecutter.module_name}}/__main__.py b/{{cookiecutter.repo_name}}/{{cookiecutter.module_name}}/__main__.py index 4f3e9c5..7e2d401 100644 --- a/{{cookiecutter.repo_name}}/{{cookiecutter.module_name}}/__main__.py +++ b/{{cookiecutter.repo_name}}/{{cookiecutter.module_name}}/__main__.py @@ -1,7 +1,5 @@ import uvicorn - from {{cookiecutter.module_name}}.routes.base import app - if __name__ == '__main__': uvicorn.run(app) diff --git a/{{cookiecutter.repo_name}}/{{cookiecutter.module_name}}/models/base.py b/{{cookiecutter.repo_name}}/{{cookiecutter.module_name}}/models/base.py index 16065b5..3fc9b96 100644 --- a/{{cookiecutter.repo_name}}/{{cookiecutter.module_name}}/models/base.py +++ b/{{cookiecutter.repo_name}}/{{cookiecutter.module_name}}/models/base.py @@ -19,4 +19,4 @@ def __repr__(self) -> str: attrs = [] for c in self.__table__.columns: attrs.append(f"{c.name}={getattr(self, c.name)}") - return "{}({})".format(self.__class__.__name__, ', '.join(attrs)) + return "{}({})".format(self.__class__.__name__, ", ".join(attrs)) diff --git a/{{cookiecutter.repo_name}}/{{cookiecutter.module_name}}/routes/base.py b/{{cookiecutter.repo_name}}/{{cookiecutter.module_name}}/routes/base.py index 12a6222..068f158 100644 --- a/{{cookiecutter.repo_name}}/{{cookiecutter.module_name}}/routes/base.py +++ b/{{cookiecutter.repo_name}}/{{cookiecutter.module_name}}/routes/base.py @@ -19,7 +19,7 @@ app.add_middleware( DBSessionMiddleware, - db_url=settings.DB_DSN, + db_url=str(settings.DB_DSN), engine_args={"pool_pre_ping": True, "isolation_level": "AUTOCOMMIT"}, ) diff --git a/{{cookiecutter.repo_name}}/{{cookiecutter.module_name}}/routes/models/base.py b/{{cookiecutter.repo_name}}/{{cookiecutter.module_name}}/routes/models/base.py index d96d4d5..251e426 100644 --- a/{{cookiecutter.repo_name}}/{{cookiecutter.module_name}}/routes/models/base.py +++ b/{{cookiecutter.repo_name}}/{{cookiecutter.module_name}}/routes/models/base.py @@ -1,4 +1,4 @@ -from pydantic import BaseModel +from pydantic import BaseModel, ConfigDict class Base(BaseModel): @@ -6,7 +6,6 @@ def __repr__(self) -> str: attrs = [] for k, v in self.__class__.schema().items(): attrs.append(f"{k}={v}") - return "{}({})".format(self.__class__.__name__, ', '.join(attrs)) + return "{}({})".format(self.__class__.__name__, ", ".join(attrs)) - class Config: - orm_mode = True + model_config = ConfigDict(from_attributes=True, extra="ignore") diff --git a/{{cookiecutter.repo_name}}/{{cookiecutter.module_name}}/settings.py b/{{cookiecutter.repo_name}}/{{cookiecutter.module_name}}/settings.py index 9a90f55..a98c0d9 100644 --- a/{{cookiecutter.repo_name}}/{{cookiecutter.module_name}}/settings.py +++ b/{{cookiecutter.repo_name}}/{{cookiecutter.module_name}}/settings.py @@ -1,25 +1,22 @@ import os from functools import lru_cache -from pydantic import BaseSettings, PostgresDsn +from pydantic import ConfigDict, PostgresDsn +from pydantic_settings import BaseSettings class Settings(BaseSettings): """Application settings""" - DB_DSN: PostgresDsn = 'postgresql://postgres@localhost:5432/postgres' - ROOT_PATH: str = '/' + os.getenv("APP_NAME", "") + DB_DSN: PostgresDsn = "postgresql://postgres@localhost:5432/postgres" + ROOT_PATH: str = "/" + os.getenv("APP_NAME", "") - CORS_ALLOW_ORIGINS: list[str] = ['*'] + CORS_ALLOW_ORIGINS: list[str] = ["*"] CORS_ALLOW_CREDENTIALS: bool = True - CORS_ALLOW_METHODS: list[str] = ['*'] - CORS_ALLOW_HEADERS: list[str] = ['*'] + CORS_ALLOW_METHODS: list[str] = ["*"] + CORS_ALLOW_HEADERS: list[str] = ["*"] - class Config: - """Pydantic BaseSettings config""" - - case_sensitive = True - env_file = ".env" + model_config = ConfigDict(case_sensitive=True, env_file=".env", extra="ignore") @lru_cache