diff --git a/openedx_learning/apps/authoring/components/api.py b/openedx_learning/apps/authoring/components/api.py index 48a45af4e..b1bfe63c1 100644 --- a/openedx_learning/apps/authoring/components/api.py +++ b/openedx_learning/apps/authoring/components/api.py @@ -468,7 +468,7 @@ def _get_component_version_info_headers(component_version: ComponentVersion) -> "X-Open-edX-Component-Uuid": component.uuid, # Component Version "X-Open-edX-Component-Version-Uuid": component_version.uuid, - "X-Open-edX-Component-Version-Num": component_version.version_num, + "X-Open-edX-Component-Version-Num": str(component_version.version_num), # Learning Package "X-Open-edX-Learning-Package-Key": learning_package.key, "X-Open-edX-Learning-Package-Uuid": learning_package.uuid, diff --git a/openedx_learning/apps/authoring/components/apps.py b/openedx_learning/apps/authoring/components/apps.py index a225d9aed..07c84c046 100644 --- a/openedx_learning/apps/authoring/components/apps.py +++ b/openedx_learning/apps/authoring/components/apps.py @@ -14,7 +14,7 @@ class ComponentsConfig(AppConfig): default_auto_field = "django.db.models.BigAutoField" label = "oel_components" - def ready(self): + def ready(self) -> None: """ Register Component and ComponentVersion. """ diff --git a/openedx_learning/apps/authoring/components/models.py b/openedx_learning/apps/authoring/components/models.py index b0225fc9a..08c4fb722 100644 --- a/openedx_learning/apps/authoring/components/models.py +++ b/openedx_learning/apps/authoring/components/models.py @@ -72,7 +72,7 @@ class ComponentType(models.Model): ), ] - def __str__(self): + def __str__(self) -> str: return f"{self.namespace}:{self.name}" @@ -190,7 +190,7 @@ class Meta: verbose_name = "Component" verbose_name_plural = "Components" - def __str__(self): + def __str__(self) -> str: return f"{self.component_type.namespace}:{self.component_type.name}:{self.local_key}" diff --git a/openedx_learning/apps/authoring/contents/models.py b/openedx_learning/apps/authoring/contents/models.py index 6c9f9593e..c087c122f 100644 --- a/openedx_learning/apps/authoring/contents/models.py +++ b/openedx_learning/apps/authoring/contents/models.py @@ -121,7 +121,7 @@ class Meta: ), ] - def __str__(self): + def __str__(self) -> str: base = f"{self.type}/{self.sub_type}" if self.suffix: return f"{base}+{self.suffix}" diff --git a/openedx_learning/apps/authoring/publishing/model_mixins.py b/openedx_learning/apps/authoring/publishing/model_mixins.py index 85ef6c96a..f94aa1b61 100644 --- a/openedx_learning/apps/authoring/publishing/model_mixins.py +++ b/openedx_learning/apps/authoring/publishing/model_mixins.py @@ -3,6 +3,7 @@ """ from __future__ import annotations +from datetime import datetime from functools import cached_property from django.core.exceptions import ImproperlyConfigured @@ -49,15 +50,15 @@ def versioning(self): return self.VersioningHelper(self) @property - def uuid(self): + def uuid(self) -> str: return self.publishable_entity.uuid @property - def key(self): + def key(self) -> str: return self.publishable_entity.key @property - def created(self): + def created(self) -> datetime: return self.publishable_entity.created @property @@ -311,19 +312,19 @@ def get_queryset(self) -> QuerySet: ) @property - def uuid(self): + def uuid(self) -> str: return self.publishable_entity_version.uuid @property - def title(self): + def title(self) -> str: return self.publishable_entity_version.title @property - def created(self): + def created(self) -> datetime: return self.publishable_entity_version.created @property - def version_num(self): + def version_num(self) -> int: return self.publishable_entity_version.version_num class Meta: diff --git a/openedx_learning/apps/authoring/publishing/models.py b/openedx_learning/apps/authoring/publishing/models.py index d62ba012f..c8b1c34fb 100644 --- a/openedx_learning/apps/authoring/publishing/models.py +++ b/openedx_learning/apps/authoring/publishing/models.py @@ -34,7 +34,7 @@ ] -class LearningPackage(models.Model): # type: ignore[django-manager-missing] +class LearningPackage(models.Model): """ Top level container for a grouping of authored content. diff --git a/openedx_learning/contrib/media_server/apps.py b/openedx_learning/contrib/media_server/apps.py index 77ac37b34..04706c755 100644 --- a/openedx_learning/contrib/media_server/apps.py +++ b/openedx_learning/contrib/media_server/apps.py @@ -15,7 +15,7 @@ class MediaServerConfig(AppConfig): verbose_name = "Learning Core: Media Server" default_auto_field = "django.db.models.BigAutoField" - def ready(self): + def ready(self) -> None: if not settings.DEBUG: # Until we get proper security and support for running this app # under a separate domain, just don't allow it to be run in diff --git a/openedx_learning/lib/validators.py b/openedx_learning/lib/validators.py index a59cfd1ad..6a9b47665 100644 --- a/openedx_learning/lib/validators.py +++ b/openedx_learning/lib/validators.py @@ -7,7 +7,7 @@ from django.utils.translation import gettext_lazy as _ -def validate_utc_datetime(dt: datetime): +def validate_utc_datetime(dt: datetime) -> None: if dt.tzinfo != timezone.utc: raise ValidationError( _("The timezone for %(datetime)s is not UTC."), diff --git a/openedx_tagging/core/tagging/api.py b/openedx_tagging/core/tagging/api.py index 8c03c7407..a3e1af69d 100644 --- a/openedx_tagging/core/tagging/api.py +++ b/openedx_tagging/core/tagging/api.py @@ -191,9 +191,9 @@ def get_object_tags( ) if not include_deleted: # Exclude if the whole taxonomy was deleted - base_qs = base_qs.exclude(taxonomy_id=None) # type: ignore + base_qs = base_qs.exclude(taxonomy=None) # Exclude if just the tag is deleted - base_qs = base_qs.exclude(tag_id=None, taxonomy__allow_free_text=False) # type: ignore + base_qs = base_qs.exclude(tag=None, taxonomy__allow_free_text=False) tags = ( base_qs # Preload related objects, including data for the "get_lineage" method on ObjectTag/Tag: diff --git a/openedx_tagging/core/tagging/rest_api/v1/permissions.py b/openedx_tagging/core/tagging/rest_api/v1/permissions.py index 5c2f6d723..3b389966f 100644 --- a/openedx_tagging/core/tagging/rest_api/v1/permissions.py +++ b/openedx_tagging/core/tagging/rest_api/v1/permissions.py @@ -1,7 +1,7 @@ """ Tagging permissions """ -import rules # type: ignore[import] +import rules from rest_framework.permissions import DjangoObjectPermissions from ...models import Tag, Taxonomy diff --git a/openedx_tagging/core/tagging/rules.py b/openedx_tagging/core/tagging/rules.py index 02aac1a77..c3a9039bc 100644 --- a/openedx_tagging/core/tagging/rules.py +++ b/openedx_tagging/core/tagging/rules.py @@ -6,8 +6,7 @@ from typing import Callable, Union import django.contrib.auth.models -# typing support in rules depends on https://github.com/dfunckt/django-rules/pull/177 -import rules # type: ignore[import] +import rules from attrs import define from .models import Tag, Taxonomy diff --git a/tests/openedx_learning/apps/authoring/collections/test_api.py b/tests/openedx_learning/apps/authoring/collections/test_api.py index 179869a34..a6eb4ffd0 100644 --- a/tests/openedx_learning/apps/authoring/collections/test_api.py +++ b/tests/openedx_learning/apps/authoring/collections/test_api.py @@ -4,6 +4,7 @@ from datetime import datetime, timezone from django.contrib.auth import get_user_model +from django.contrib.auth.models import User as UserType # pylint: disable=imported-auth-user from django.core.exceptions import ObjectDoesNotExist, ValidationError from freezegun import freeze_time @@ -213,7 +214,7 @@ class CollectionEntitiesTestCase(CollectionsTestCase): """ published_component: Component draft_component: Component - user: User # type: ignore [valid-type] + user: UserType html_type: ComponentType problem_type: ComponentType diff --git a/tests/openedx_learning/apps/authoring/components/test_api.py b/tests/openedx_learning/apps/authoring/components/test_api.py index 279a0335c..46ad540cf 100644 --- a/tests/openedx_learning/apps/authoring/components/test_api.py +++ b/tests/openedx_learning/apps/authoring/components/test_api.py @@ -4,6 +4,7 @@ from datetime import datetime, timezone from django.contrib.auth import get_user_model +from django.contrib.auth.models import User as UserType # pylint: disable=imported-auth-user from django.core.exceptions import ObjectDoesNotExist, ValidationError from freezegun import freeze_time @@ -541,7 +542,7 @@ class SetCollectionsTestCase(ComponentTestCase): collection2: Collection collection3: Collection published_problem: Component - user: User # type: ignore [valid-type] + user: UserType @classmethod def setUpTestData(cls) -> None: diff --git a/tests/openedx_tagging/core/tagging/test_views.py b/tests/openedx_tagging/core/tagging/test_views.py index 936ba0a3e..feda50d06 100644 --- a/tests/openedx_tagging/core/tagging/test_views.py +++ b/tests/openedx_tagging/core/tagging/test_views.py @@ -7,8 +7,7 @@ from urllib.parse import parse_qs, quote_plus, urlparse import ddt # type: ignore[import] -# typing support in rules depends on https://github.com/dfunckt/django-rules/pull/177 -import rules # type: ignore[import] +import rules from django.contrib.auth import get_user_model from django.core.files.uploadedfile import SimpleUploadedFile from rest_framework import status