From 2156fd4909ab37063c37b28905053191891442a9 Mon Sep 17 00:00:00 2001 From: Sarah Hoffmann Date: Fri, 27 Jan 2023 21:53:53 +0100 Subject: [PATCH] adapt annotations for SQLAlchemy 2.x It is not possible to produce type annotations that work with both versions 1.4 and 2.0. So keep to the principle of only supporting newest versions when it comes to mypy. This means that some types may have to be string quoted to not cause issues when running with SQLAlchemy 1.4. --- .github/workflows/ci-tests.yml | 8 ++++---- docs/develop/Development-Environment.md | 2 +- nominatim/api/connection.py | 2 +- nominatim/api/core.py | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci-tests.yml b/.github/workflows/ci-tests.yml index e7ba35f6..93cd9119 100644 --- a/.github/workflows/ci-tests.yml +++ b/.github/workflows/ci-tests.yml @@ -109,8 +109,8 @@ jobs: - name: Install Python webservers run: pip3 install falcon sanic sanic-testing sanic-cors starlette - - name: Install latest pylint/mypy - run: pip3 install -U pylint mypy types-PyYAML types-jinja2 types-psycopg2 types-psutil types-requests types-ujson typing-extensions asgi_lifespan sqlalchemy2-stubs + - name: Install latest pylint + run: pip3 install -U pylint asgi_lifespan - name: PHP linting run: phpcs --report-width=120 . @@ -134,8 +134,8 @@ jobs: python3 -m behave -DREMOVE_TEMPLATE=1 -DBUILDDIR=$GITHUB_WORKSPACE/build --format=progress3 working-directory: Nominatim/test/bdd - - name: Install newer Python packages (for typechecking info) - run: pip3 install -U osmium uvicorn + - name: Install mypy and typechecking info + run: pip3 install -U mypy osmium uvicorn types-PyYAML types-jinja2 types-psycopg2 types-psutil types-requests types-ujson typing-extensions if: matrix.flavour != 'oldstuff' - name: Python static typechecking diff --git a/docs/develop/Development-Environment.md b/docs/develop/Development-Environment.md index fc5008c4..4bba30db 100644 --- a/docs/develop/Development-Environment.md +++ b/docs/develop/Development-Environment.md @@ -64,7 +64,7 @@ sudo apt install php-cgi phpunit php-codesniffer \ pip3 install --user behave mkdocs mkdocstrings pytest pylint \ mypy types-PyYAML types-jinja2 types-psycopg2 types-psutil \ - types-ujosn \ + types-ujosn types-requests typing-extensions\ sanic-testing httpx asgi-lifespan ``` diff --git a/nominatim/api/connection.py b/nominatim/api/connection.py index 1502ba01..b397f624 100644 --- a/nominatim/api/connection.py +++ b/nominatim/api/connection.py @@ -37,7 +37,7 @@ class SearchConnection: async def execute(self, sql: sa.sql.base.Executable, params: Union[Mapping[str, Any], Sequence[Mapping[str, Any]], None] = None - ) -> sa.engine.Result: + ) -> 'sa.engine.Result[Any]': """ Execute a 'execute()' query on the connection. """ return await self.connection.execute(sql, params) diff --git a/nominatim/api/core.py b/nominatim/api/core.py index ae5bb5d8..a1f0e48d 100644 --- a/nominatim/api/core.py +++ b/nominatim/api/core.py @@ -69,7 +69,7 @@ class NominatimAPIAsync: self.server_version = 0 if self.server_version >= 110000: - @sa.event.listens_for(engine.sync_engine, "connect") # type: ignore[misc] + @sa.event.listens_for(engine.sync_engine, "connect") def _on_connect(dbapi_con: Any, _: Any) -> None: cursor = dbapi_con.cursor() cursor.execute("SET jit_above_cost TO '-1'") -- 2.39.5