diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e8d441d..7346003 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,6 +21,12 @@ jobs: steps: - name: Start MySQL run: sudo systemctl start mysql.service + - uses: actions/cache@v4 + with: + path: ~/.cache/pip + key: ${{ runner.os }}-pip-${{ hashFiles('**/poetry.lock') }} + restore-keys: | + ${{ runner.os }}-pip- - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: diff --git a/Makefile b/Makefile index e9b807c..9e97a17 100644 --- a/Makefile +++ b/Makefile @@ -22,6 +22,8 @@ style: deps _style _check: @black --check $(black_opts) $(checkfiles) || (echo "Please run 'make style' to auto-fix style issues" && false) @ruff check $(checkfiles) + @mypy $(checkfiles) + @bandit -r aerich check: deps _check test: deps diff --git a/aerich/ddl/__init__.py b/aerich/ddl/__init__.py index 4e062c7..cb57274 100644 --- a/aerich/ddl/__init__.py +++ b/aerich/ddl/__init__.py @@ -135,7 +135,7 @@ class BaseDDL: self.schema_generator._column_comment_generator( table=db_table, column=db_column, - comment=field_describe.get("description"), + comment=description, ) if description else "" diff --git a/aerich/inspectdb/postgres.py b/aerich/inspectdb/postgres.py index d4a7761..f77bc29 100644 --- a/aerich/inspectdb/postgres.py +++ b/aerich/inspectdb/postgres.py @@ -56,7 +56,7 @@ from information_schema.constraint_column_usage const right join information_schema.columns c using (column_name, table_catalog, table_schema, table_name) where c.table_catalog = $1 and c.table_name = $2 - and c.table_schema = $3""" + and c.table_schema = $3""" # nosec:B608 ret = await self.conn.execute_query_dict(sql, [self.database, table, self.schema]) for row in ret: columns.append( diff --git a/aerich/utils.py b/aerich/utils.py index 14664a0..6e4fb88 100644 --- a/aerich/utils.py +++ b/aerich/utils.py @@ -4,7 +4,7 @@ import re import sys from pathlib import Path from types import ModuleType -from typing import Dict, Optional +from typing import Dict, Optional, Union from click import BadOptionUsage, ClickException, Context from tortoise import BaseDBAsyncClient, Tortoise @@ -95,7 +95,7 @@ def is_default_function(string: str) -> Optional[re.Match]: return re.match(r"^$", str(string or "")) -def import_py_file(file: Path) -> ModuleType: +def import_py_file(file: Union[str, Path]) -> ModuleType: module_name, file_ext = os.path.splitext(os.path.split(file)[-1]) spec = importlib.util.spec_from_file_location(module_name, file) module = importlib.util.module_from_spec(spec) # type:ignore[arg-type] diff --git a/tests/test_migrate.py b/tests/test_migrate.py index 4614606..e7115d9 100644 --- a/tests/test_migrate.py +++ b/tests/test_migrate.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List, cast import pytest import tortoise @@ -792,13 +793,13 @@ old_models_describe = { def should_add_user_id_column_type_alter_sql() -> bool: + if tortoise.__version__ < "0.21": + return False # tortoise-orm>=0.21 changes IntField constraints # from {"ge": 1, "le": 2147483647} to {"ge": -2147483648,"le": 2147483647} - user_id_constraints = old_models_describe["models.Category"]["data_fields"][-1]["constraints"] - return ( - tortoise.__version__ >= "0.21" - and tortoise.fields.data.IntField.constraints != user_id_constraints - ) + data_fields = cast(List[dict], old_models_describe["models.Category"]["data_fields"]) + user_id_constraints = data_fields[-1]["constraints"] + return tortoise.fields.data.IntField.constraints != user_id_constraints def test_migrate(mocker: MockerFixture): @@ -825,6 +826,7 @@ def test_migrate(mocker: MockerFixture): if isinstance(Migrate.ddl, SqliteDDL): with pytest.raises(NotSupportError): Migrate.diff_models(old_models_describe, models_describe) + with pytest.raises(NotSupportError): Migrate.diff_models(models_describe, old_models_describe, False) else: Migrate.diff_models(old_models_describe, models_describe) diff --git a/tests/test_utils.py b/tests/test_utils.py index 654bc0d..9d640d2 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -1,6 +1,6 @@ from aerich.utils import import_py_file -def test_import_py_file(): +def test_import_py_file() -> None: m = import_py_file("aerich/utils.py") assert getattr(m, "import_py_file")