Skip to content

Commit

Permalink
Fix linter issues
Browse files Browse the repository at this point in the history
  • Loading branch information
Marishka17 committed Jan 15, 2025
1 parent 88ef5a0 commit dc1f3bb
Show file tree
Hide file tree
Showing 7 changed files with 36 additions and 28 deletions.
9 changes: 6 additions & 3 deletions cvat/apps/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,14 @@
# SPDX-License-Identifier: MIT


from django.apps import apps, AppConfig
from collections.abc import Iterable

from django.apps import AppConfig, apps


def get_app_configs() -> Iterable[AppConfig]:
return [
app_config for app_config in apps.get_app_configs()
if app_config.name.startswith('cvat.apps.')
app_config
for app_config in apps.get_app_configs()
if app_config.name.startswith("cvat.apps.")
]
1 change: 0 additions & 1 deletion cvat/apps/redis_handler/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
# Copyright (C) 2025 CVAT.ai Corporation
#
# SPDX-License-Identifier: MIT

1 change: 0 additions & 1 deletion cvat/apps/redis_handler/management/commands/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
# Copyright (C) 2025 CVAT.ai Corporation
#
# SPDX-License-Identifier: MIT

16 changes: 12 additions & 4 deletions cvat/apps/redis_handler/management/commands/migrateredis.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
from django.core.management.base import BaseCommand, CommandError
from django.db import transaction

from cvat.apps.redis_handler.models import RedisMigration
from cvat.apps.redis_handler.migration_loader import MigrationLoader
from cvat.apps.redis_handler.models import RedisMigration


class Command(BaseCommand):
Expand All @@ -18,11 +18,19 @@ def handle(self, *args, **options) -> None:
for migration in loader:
try:
with transaction.atomic():
RedisMigration.objects.create(name=migration.name, app_label=migration.app_label)
RedisMigration.objects.create(
name=migration.name, app_label=migration.app_label
)
migration.run()
self.stdout.write(
self.style.SUCCESS(f"[{migration.app_label}] Successfully applied migration: {migration.name}")
self.style.SUCCESS(
f"[{migration.app_label}] Successfully applied migration: {migration.name}"
)
)
except Exception as ex:
self.stderr.write(self.style.ERROR(f"[{migration.app_label}] Failed to apply migration: {migration.name}"))
self.stderr.write(
self.style.ERROR(
f"[{migration.app_label}] Failed to apply migration: {migration.name}"
)
)
raise CommandError(str(ex))
29 changes: 14 additions & 15 deletions cvat/apps/redis_handler/migration_loader.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,16 @@
#
# SPDX-License-Identifier: MIT

import importlib
from pathlib import Path
from typing import Any, Generator, Mapping

from django.utils.module_loading import module_has_submodule

from cvat.apps import AppConfig
from cvat.apps import get_app_configs as get_cvat_app_configs
from cvat.apps.redis_handler.models import RedisMigration as DBRedisMigration
from cvat.apps.redis_handler.redis_migrations import BaseMigration as BaseRedisMigration
from pathlib import Path

from typing import Mapping, Generator, Any
import importlib

_MigrationsPerApp = dict[int, list[str]]

Expand All @@ -33,21 +33,20 @@ def _find_app_configs(self):
return [
app_config
for app_config in get_cvat_app_configs()
if module_has_submodule(app_config.module, MigrationLoader.REDIS_MIGRATIONS_DIR_NAME)
if module_has_submodule(
app_config.module, MigrationLoader.REDIS_MIGRATIONS_DIR_NAME
)
]

def _init_app_configs_mapping(self):
return {
app_config.label: app_config for app_config in self._app_configs
}
return {app_config.label: app_config for app_config in self._app_configs}

def __getitem__(self, label: str) -> AppConfig:
return self._app_configs_mapping[label]

def __iter__(self) -> Generator[AppConfig, Any, Any]:
yield from self._app_configs


def __init__(self) -> None:
self._initialized = False
self._app_configs = self.AppConfigs()
Expand All @@ -58,24 +57,24 @@ def __init__(self) -> None:
self._init_unapplied_migrations()

@property
def app_configs(self) -> 'AppConfigs':
def app_configs(self) -> "AppConfigs":
return self._app_configs

def _load_from_disk(self):
for app_config in self._app_configs:
migrations_dir = Path(app_config.path) / self.REDIS_MIGRATIONS_DIR_NAME
for migration_file in sorted(migrations_dir.glob("[0-9]*.py")):
migration_name = migration_file.stem
(self._disk_migrations_per_app.setdefault(app_config.label, [])).append(migration_name)
(self._disk_migrations_per_app.setdefault(app_config.label, [])).append(
migration_name
)

def _init_unapplied_migrations(self):
applied_migrations = DBRedisMigration.objects.all().values_list("name", "app_label")

for app_label, migration_names in self._disk_migrations_per_app.items():
app_config = self.app_configs[app_label]
app_applied_migrations = {
m[0] for m in applied_migrations if m[1] == app_config.label
}
app_applied_migrations = {m[0] for m in applied_migrations if m[1] == app_config.label}
app_unapplied_migrations = sorted(set(migration_names) - app_applied_migrations)
for migration_name in app_unapplied_migrations:
MigrationClass = self.get_migration_class(app_config.name, migration_name)
Expand All @@ -95,4 +94,4 @@ def get_migration_class(self, app_name: str, migration_name: str) -> BaseRedisMi

def __iter__(self):
assert self._initialized
yield from self._unapplied_migrations
yield from self._unapplied_migrations
1 change: 0 additions & 1 deletion cvat/apps/redis_handler/migrations/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
# Copyright (C) 2025 CVAT.ai Corporation
#
# SPDX-License-Identifier: MIT

7 changes: 4 additions & 3 deletions cvat/apps/redis_handler/models.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from django.db import models


class RedisMigration(models.Model):
app_label = models.CharField(max_length=128)
name = models.CharField(max_length=128)
Expand All @@ -8,7 +9,7 @@ class RedisMigration(models.Model):
class Meta:
constraints = [
models.UniqueConstraint(
name='migration_name_unique',
fields=('app_label', 'name'),
name="migration_name_unique",
fields=("app_label", "name"),
),
]
]

0 comments on commit dc1f3bb

Please sign in to comment.