From e2a9bb7a7b38cb988d487bf70f81540998e4e639 Mon Sep 17 00:00:00 2001 From: Pavel Kirilin <pavel.kirilin@simbirsoft.com> Date: Mon, 9 Nov 2020 01:54:35 +0400 Subject: [PATCH] Fixed many mypy issues and Dockerfiles. Description: - Fixed Dockerfile libraries versions; - Fixed mypy errors; - Fixed .pre-commit config. Signed-off-by: Pavel Kirilin <pavel.kirilin@simbirsoft.com> --- .../.pre-commit-config.yaml | 1 + {{cookiecutter.project_name}}/Dockerfile | 6 ++---- .../src/services/db/base.py | 14 +++++++------- .../src/services/db/engine.py | 4 ++-- {{cookiecutter.project_name}}/tests/conftest.py | 6 +++--- 5 files changed, 15 insertions(+), 16 deletions(-) diff --git a/{{cookiecutter.project_name}}/.pre-commit-config.yaml b/{{cookiecutter.project_name}}/.pre-commit-config.yaml index 1fff678..408c2c1 100644 --- a/{{cookiecutter.project_name}}/.pre-commit-config.yaml +++ b/{{cookiecutter.project_name}}/.pre-commit-config.yaml @@ -32,6 +32,7 @@ repos: - "--strict" - "--ignore-missing-imports" - "--allow-subclassing-any" + - "--allow-untyped-calls" - "--pretty" - "--show-error-codes" - "--no-warn-return-any" diff --git a/{{cookiecutter.project_name}}/Dockerfile b/{{cookiecutter.project_name}}/Dockerfile index cc8db51..4631950 100644 --- a/{{cookiecutter.project_name}}/Dockerfile +++ b/{{cookiecutter.project_name}}/Dockerfile @@ -30,8 +30,8 @@ ENV PYTHONUNBUFFERED=1 \ RUN apt-get update \ && apt-get install --no-install-recommends -y \ # deps for installing poetry - postgresql=11+200+deb10u3 \ - libpq-dev=11.7-0+deb10u1 \ + postgresql=11+200+deb10u4 \ + libpq-dev=11.9-0+deb10u1 \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* @@ -45,8 +45,6 @@ RUN apt-get update \ && apt-get install --no-install-recommends -y \ # deps for installing poetry curl=7.64.0-4+deb10u1 \ - postgresql=11+200+deb10u3 \ - libpq-dev=11.7-0+deb10u1 \ # deps for building python deps build-essential=12.6 \ && apt-get clean \ diff --git a/{{cookiecutter.project_name}}/src/services/db/base.py b/{{cookiecutter.project_name}}/src/services/db/base.py index 1af33be..99bb90c 100644 --- a/{{cookiecutter.project_name}}/src/services/db/base.py +++ b/{{cookiecutter.project_name}}/src/services/db/base.py @@ -22,7 +22,7 @@ class Base: return self.__name__.lower() @declared_attr - def id(self) -> sa.Column: + def id(self) -> sa.Column[Any]: return Column( UUID(as_uuid=True), primary_key=True, @@ -30,7 +30,7 @@ class Base: ) @declared_attr - def created_at(self) -> sa.Column: + def created_at(self) -> sa.Column[Any]: return sa.Column( sa.DateTime(timezone=True), server_default=sa.text("clock_timestamp()"), @@ -38,7 +38,7 @@ class Base: ) @declared_attr - def updated_at(self) -> sa.Column: + def updated_at(self) -> sa.Column[Any]: return sa.Column( sa.DateTime(timezone=True), server_default=sa.text("clock_timestamp()"), @@ -47,17 +47,17 @@ class Base: ) @classmethod - async def get( + def get( cls, pk: Union[uuid.UUID, str], *fields: InstrumentedAttribute ) -> Optional[Any]: return cls.select_query(*fields).where(cls.id == pk) @classmethod - async def exists(cls, pk: Union[uuid.UUID, str]) -> sa.sql.Select: + def exists(cls, pk: Union[uuid.UUID, str]) -> sa.sql.expression.Exists: return sa.exists().where(cls.id == pk) @classmethod - async def delete(cls, pk: uuid.UUID) -> sa.sql.Delete: + def delete(cls, pk: uuid.UUID) -> sa.sql.Delete: return cls.delete_query().where(cls.id == pk) @classmethod @@ -66,7 +66,7 @@ class Base: *columns: Union[InstrumentedAttribute, Type["Base"]], use_labels: bool = False, ) -> sa.sql.Select: - return sa.select(columns or [cls], use_labels=use_labels) + return sa.select(columns or [cls], use_labels=use_labels) # type: ignore @classmethod def insert_query(cls, **values: Any) -> sa.sql.Insert: diff --git a/{{cookiecutter.project_name}}/src/services/db/engine.py b/{{cookiecutter.project_name}}/src/services/db/engine.py index 83ee83a..17c9b02 100644 --- a/{{cookiecutter.project_name}}/src/services/db/engine.py +++ b/{{cookiecutter.project_name}}/src/services/db/engine.py @@ -6,14 +6,14 @@ from sqlalchemy.engine.url import URL, make_url from src.settings import settings db_url = make_url( - URL( + str(URL( drivername=settings.db_driver, username=settings.postgres_user, password=settings.postgres_password, host=settings.postgres_host, port=settings.postgres_port, database=settings.postgres_db, - ) + )) ) diff --git a/{{cookiecutter.project_name}}/tests/conftest.py b/{{cookiecutter.project_name}}/tests/conftest.py index a41373d..7c2596e 100644 --- a/{{cookiecutter.project_name}}/tests/conftest.py +++ b/{{cookiecutter.project_name}}/tests/conftest.py @@ -17,14 +17,14 @@ warnings.filterwarnings("ignore", category=DeprecationWarning) def get_engine() -> Engine: pg_db_url = make_url( - URL( + str(URL( drivername=settings.db_driver, username=settings.postgres_user, password=settings.postgres_password, host=settings.postgres_host, port=settings.postgres_port, database="postgres", - ) + )) ) engine = create_engine(str(pg_db_url)) return engine @@ -84,7 +84,7 @@ def app_fixture(create_db: None) -> TestClient: @pytest.fixture(scope="function") -def pg_conn() -> Connection: +def pg_conn() -> Generator[Connection, None, None]: engine = create_engine(str(db_url), pool_size=0, echo=True) conn = engine.connect() -- GitLab