From fd66cdd910de97c9799ea3abbf44103c1bdfdfa3 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 7 Jul 2025 21:09:30 +0000 Subject: [PATCH 1/2] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/astral-sh/ruff-pre-commit: v0.11.13 → v0.12.2](https://github.com/astral-sh/ruff-pre-commit/compare/v0.11.13...v0.12.2) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 1f9ef420fd..8f1d2d1263 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -78,7 +78,7 @@ repos: - "config/keycloak/realms/ol-local-realm.json" additional_dependencies: ["gibberish-detector"] - repo: https://github.com/astral-sh/ruff-pre-commit - rev: "v0.11.13" + rev: "v0.12.2" hooks: - id: ruff-format - id: ruff From 83aa20758e7c949d5a7137278ab28076913874d7 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 7 Jul 2025 21:19:57 +0000 Subject: [PATCH 2/2] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- ckeditor/serializers.py | 3 +-- learning_resources/content_summarizer.py | 6 +++--- learning_resources/etl/posthog.py | 21 ++++++++++----------- learning_resources/etl/utils_test.py | 2 +- learning_resources/etl/youtube.py | 9 ++++----- learning_resources/tasks.py | 11 +++++------ main/features.py | 9 ++++----- main/telemetry.py | 3 +-- news_events/etl/utils.py | 9 ++++----- widgets/serializers/widget_instance.py | 3 +-- 10 files changed, 34 insertions(+), 42 deletions(-) diff --git a/ckeditor/serializers.py b/ckeditor/serializers.py index 420f22bc16..8054a34222 100644 --- a/ckeditor/serializers.py +++ b/ckeditor/serializers.py @@ -1,6 +1,5 @@ import math from time import time -from typing import Optional import jwt from django.conf import settings @@ -12,7 +11,7 @@ class CKEditorSettingsSerializer(serializers.Serializer): token = serializers.SerializerMethodField() - def get_token(self, _value) -> Optional[str]: + def get_token(self, _value) -> str | None: """Get the JWT token""" if settings.CKEDITOR_SECRET_KEY and settings.CKEDITOR_ENVIRONMENT_ID: payload = { diff --git a/learning_resources/content_summarizer.py b/learning_resources/content_summarizer.py index 04952ab6ae..a79d4a63be 100644 --- a/learning_resources/content_summarizer.py +++ b/learning_resources/content_summarizer.py @@ -1,5 +1,5 @@ import logging -from typing import Annotated, Optional +from typing import Annotated from django.conf import settings from django.db import transaction @@ -67,8 +67,8 @@ def _can_process_content_file(self, content_file: ContentFile) -> bool: def get_unprocessed_content_file_ids( self, overwrite, - learning_resource_ids: Optional[list[int]] = None, - content_file_ids: Optional[list[int]] = None, + learning_resource_ids: list[int] | None = None, + content_file_ids: list[int] | None = None, ) -> list[int]: """ Get Ids of unprocessed content files with applied filters. diff --git a/learning_resources/etl/posthog.py b/learning_resources/etl/posthog.py index 1f0f633850..40799daa5d 100644 --- a/learning_resources/etl/posthog.py +++ b/learning_resources/etl/posthog.py @@ -6,7 +6,6 @@ from collections.abc import Generator from datetime import UTC, datetime from http import HTTPStatus -from typing import Optional from urllib.parse import urljoin import requests @@ -32,16 +31,16 @@ class PostHogEvent: event: str properties: str timestamp: datetime - distinct_id: Optional[str] = None - elements_chain: Optional[str] = None - created_at: Optional[datetime] = None - dollar_session_id: Optional[str] = None - dollar_window_id: Optional[str] = None - dollar_group_0: Optional[str] = None - dollar_group_1: Optional[str] = None - dollar_group_2: Optional[str] = None - dollar_group_3: Optional[str] = None - dollar_group_4: Optional[str] = None + distinct_id: str | None = None + elements_chain: str | None = None + created_at: datetime | None = None + dollar_session_id: str | None = None + dollar_window_id: str | None = None + dollar_group_0: str | None = None + dollar_group_1: str | None = None + dollar_group_2: str | None = None + dollar_group_3: str | None = None + dollar_group_4: str | None = None @dataclasses.dataclass diff --git a/learning_resources/etl/utils_test.py b/learning_resources/etl/utils_test.py index 31c38d4ad9..35911e60f0 100644 --- a/learning_resources/etl/utils_test.py +++ b/learning_resources/etl/utils_test.py @@ -63,7 +63,7 @@ def get_olx_test_docs(): ], cwd=temp, ) - check_call( # noqa: S603 + check_call( ["tar", "xf", "content-devops-0001.tar.gz"], # noqa: S607 cwd=temp, ) diff --git a/learning_resources/etl/youtube.py b/learning_resources/etl/youtube.py index 56ff8a358b..bf5bfe96fe 100644 --- a/learning_resources/etl/youtube.py +++ b/learning_resources/etl/youtube.py @@ -3,7 +3,6 @@ import logging from collections.abc import Generator from datetime import timedelta -from typing import Optional import googleapiclient.errors import requests @@ -351,7 +350,7 @@ def validate_channel_configs(channel_configs: dict) -> list[str]: return errors -def get_youtube_channel_configs(*, channel_ids: Optional[str] = None) -> list[dict]: +def get_youtube_channel_configs(*, channel_ids: str | None = None) -> list[dict]: """ Fetch youtube channel configs from github @@ -382,7 +381,7 @@ def get_youtube_channel_configs(*, channel_ids: Optional[str] = None) -> list[di return channel_configs -def extract(*, channel_ids: Optional[str] = None) -> Generator[tuple, None, None]: +def extract(*, channel_ids: str | None = None) -> Generator[tuple, None, None]: """ Return video data for all videos in channels' playlists @@ -496,8 +495,8 @@ def transform(extracted_channels: iter) -> Generator[dict, None, None]: def get_youtube_videos_for_transcripts_job( *, - created_after: Optional[str] = None, - created_minutes: Optional[str] = None, + created_after: str | None = None, + created_minutes: str | None = None, overwrite: bool = False, ) -> list[LearningResource]: """ diff --git a/learning_resources/tasks.py b/learning_resources/tasks.py index b8b854e5c2..32eb4f174b 100644 --- a/learning_resources/tasks.py +++ b/learning_resources/tasks.py @@ -4,7 +4,6 @@ import logging from datetime import UTC, datetime -from typing import Optional import boto3 import celery @@ -306,11 +305,11 @@ def get_ocw_courses( def get_ocw_data( # noqa: PLR0913 self, *, - force_overwrite: Optional[bool] = False, - course_url_substring: Optional[str] = None, - utc_start_timestamp: Optional[datetime] = None, - prefix: Optional[str] = None, - skip_content_files: Optional[bool] = settings.OCW_SKIP_CONTENT_FILES, + force_overwrite: bool | None = False, + course_url_substring: str | None = None, + utc_start_timestamp: datetime | None = None, + prefix: str | None = None, + skip_content_files: bool | None = settings.OCW_SKIP_CONTENT_FILES, ): """ Task to sync OCW Next course data with database diff --git a/main/features.py b/main/features.py index fdfdbb0058..cfe5e08d2f 100644 --- a/main/features.py +++ b/main/features.py @@ -5,7 +5,6 @@ import logging from enum import StrEnum from functools import wraps -from typing import Optional import posthog from django.conf import settings @@ -76,7 +75,7 @@ def generate_cache_key(key: str, unique_id: str, person_properties: dict) -> str ) -def get_all_feature_flags(opt_unique_id: Optional[str] = None): +def get_all_feature_flags(opt_unique_id: str | None = None): """ Get the set of all feature flags """ @@ -98,8 +97,8 @@ def get_all_feature_flags(opt_unique_id: Optional[str] = None): def is_enabled( name: str, - default: Optional[bool] = None, - opt_unique_id: Optional[str] = None, + default: bool | None = None, + opt_unique_id: str | None = None, ) -> bool: """ Return True if the feature flag is enabled @@ -149,7 +148,7 @@ def is_enabled( ) -def if_feature_enabled(name: str, default: Optional[bool] = None): +def if_feature_enabled(name: str, default: bool | None = None): """ Wrapper that results in a no-op if the given feature isn't enabled, and otherwise runs the wrapped function as normal. diff --git a/main/telemetry.py b/main/telemetry.py index 40c6c19272..7796e1806b 100644 --- a/main/telemetry.py +++ b/main/telemetry.py @@ -1,7 +1,6 @@ """OpenTelemetry initialization and configuration for Learn AI.""" import logging -from typing import Optional from django.conf import settings from opentelemetry import trace @@ -21,7 +20,7 @@ log = logging.getLogger(__name__) -def configure_opentelemetry() -> Optional[TracerProvider]: +def configure_opentelemetry() -> TracerProvider | None: """ Configure OpenTelemetry with appropriate instrumentations and exporters. Returns the tracer provider if configured, None otherwise. diff --git a/news_events/etl/utils.py b/news_events/etl/utils.py index c1ae5c5871..ba1f74c3c0 100644 --- a/news_events/etl/utils.py +++ b/news_events/etl/utils.py @@ -5,7 +5,6 @@ from dataclasses import dataclass from datetime import UTC, datetime from time import mktime, struct_time -from typing import Optional from zoneinfo import ZoneInfo import dateparser @@ -22,10 +21,10 @@ @dataclass class FormattedTime: - hour: Optional[str] - minute: Optional[str] - ampm: Optional[str] - tz: Optional[str] + hour: str | None + minute: str | None + ampm: str | None + tz: str | None def get_soup(url: str) -> Soup: diff --git a/widgets/serializers/widget_instance.py b/widgets/serializers/widget_instance.py index 8cc49dc2e3..612692659f 100644 --- a/widgets/serializers/widget_instance.py +++ b/widgets/serializers/widget_instance.py @@ -1,6 +1,5 @@ """WidgetInstnace serializer""" -from typing import Optional from rest_framework import serializers @@ -67,7 +66,7 @@ def get_configuration(self, instance) -> dict: """Returns the configuration to serialize""" # noqa: D401 return instance.configuration - def get_json(self, instance) -> Optional[dict]: # pylint: disable=unused-argument # noqa: ARG002 + def get_json(self, instance) -> dict | None: # pylint: disable=unused-argument # noqa: ARG002 """Renders the widget to json based on configuration""" # noqa: D401 return None