This is an automated email from the ASF dual-hosted git repository. ephraimanierobi pushed a commit to branch v3-1-test in repository https://gitbox.apache.org/repos/asf/airflow.git
commit 06fb5d15df89b1a65a78d8d27457670749ec7fc5 Author: Jens Scheffler <[email protected]> AuthorDate: Sat Nov 1 11:51:49 2025 +0100 [v3-1-test] Fix code formatting via ruff preview (#57641) (#57670) (cherry picked from commit 75bd6287123bbd078fd30a5f4bcdc9f60d4977f0) --- airflow-core/src/airflow/operators/__init__.py | 8 ++++---- airflow-core/src/airflow/plugins_manager.py | 1 - airflow-core/src/airflow/sensors/__init__.py | 6 +++--- .../src/airflow/ti_deps/deps/not_previously_skipped_dep.py | 2 +- airflow-core/src/airflow/utils/log/file_task_handler.py | 2 +- airflow-core/tests/unit/utils/test_log_handlers.py | 1 - dev/airflow-github | 2 -- devel-common/src/sphinx_exts/docs_build/fetch_inventories.py | 1 - .../src/airflow/providers/amazon/aws/hooks/batch_waiters.py | 1 - .../celery/tests/unit/celery/log_handlers/test_log_handlers.py | 1 - .../tests/unit/cncf/kubernetes/log_handlers/test_log_handlers.py | 1 - .../common/sql/src/airflow/providers/common/sql/hooks/sql.pyi | 6 +++--- providers/common/sql/tests/unit/common/sql/hooks/test_dbapi.py | 1 - providers/common/sql/tests/unit/common/sql/hooks/test_sql.py | 1 - .../databricks/tests/unit/databricks/hooks/test_databricks.py | 2 -- .../edge3/src/airflow/providers/edge3/worker_api/routes/worker.py | 2 +- .../google/src/airflow/providers/google/cloud/hooks/bigquery.py | 2 +- .../google/src/airflow/providers/google/cloud/hooks/mlengine.py | 2 +- .../airflow/providers/google/common/auth_backend/google_openid.py | 1 - .../src/airflow/providers/google/common/hooks/base_google.py | 1 - .../airflow/providers/google/common/utils/id_token_credentials.py | 3 +-- .../postgres/src/airflow/providers/postgres/hooks/postgres.py | 1 - providers/standard/tests/unit/standard/operators/test_python.py | 1 - scripts/ci/prek/significant_newsfragments_checker.py | 1 - task-sdk/src/airflow/sdk/definitions/asset/__init__.py | 4 ++-- task-sdk/src/airflow/sdk/definitions/decorators/condition.py | 4 ++-- task-sdk/tests/task_sdk/execution_time/test_supervisor.py | 6 +++--- 27 files changed, 23 insertions(+), 41 deletions(-) diff --git a/airflow-core/src/airflow/operators/__init__.py b/airflow-core/src/airflow/operators/__init__.py index 70d2da8f06b..84a526c134f 100644 --- a/airflow-core/src/airflow/operators/__init__.py +++ b/airflow-core/src/airflow/operators/__init__.py @@ -27,7 +27,7 @@ from __future__ import annotations from airflow.utils.deprecation_tools import add_deprecated_classes __deprecated_classes = { - "python":{ + "python": { "PythonOperator": "airflow.providers.standard.operators.python.PythonOperator", "BranchPythonOperator": "airflow.providers.standard.operators.python.BranchPythonOperator", "ShortCircuitOperator": "airflow.providers.standard.operators.python.ShortCircuitOperator", @@ -37,10 +37,10 @@ __deprecated_classes = { "BranchPythonVirtualenvOperator": "airflow.providers.standard.operators.python.BranchPythonVirtualenvOperator", "get_current_context": "airflow.sdk.get_current_context", }, - "bash":{ + "bash": { "BashOperator": "airflow.providers.standard.operators.bash.BashOperator", }, - "datetime":{ + "datetime": { "BranchDateTimeOperator": "airflow.providers.standard.operators.datetime.BranchDateTimeOperator", }, "generic_transfer": { @@ -64,7 +64,7 @@ __deprecated_classes = { "smooth": { "SmoothOperator": "airflow.providers.standard.operators.smooth.SmoothOperator", }, - "branch":{ + "branch": { "BranchMixIn": "airflow.providers.standard.operators.branch.BranchMixIn", "BaseBranchOperator": "airflow.providers.standard.operators.branch.BaseBranchOperator", } diff --git a/airflow-core/src/airflow/plugins_manager.py b/airflow-core/src/airflow/plugins_manager.py index 5a70dbcd8f0..6f74a8e958f 100644 --- a/airflow-core/src/airflow/plugins_manager.py +++ b/airflow-core/src/airflow/plugins_manager.py @@ -19,7 +19,6 @@ from __future__ import annotations -import importlib import importlib.machinery import importlib.util import inspect diff --git a/airflow-core/src/airflow/sensors/__init__.py b/airflow-core/src/airflow/sensors/__init__.py index db378f45503..366837c20fd 100644 --- a/airflow-core/src/airflow/sensors/__init__.py +++ b/airflow-core/src/airflow/sensors/__init__.py @@ -32,13 +32,13 @@ __deprecated_classes = { "PokeReturnValue": "airflow.sdk.bases.sensor.PokeReturnValue", "poke_mode_only": "airflow.sdk.bases.sensor.poke_mode_only", }, - "python":{ + "python": { "PythonSensor": "airflow.providers.standard.sensors.python.PythonSensor", }, - "bash":{ + "bash": { "BashSensor": "airflow.providers.standard.sensors.bash.BashSensor", }, - "date_time":{ + "date_time": { "DateTimeSensor": "airflow.providers.standard.sensors.date_time.DateTimeSensor", "DateTimeSensorAsync": "airflow.providers.standard.sensors.date_time.DateTimeSensorAsync", }, diff --git a/airflow-core/src/airflow/ti_deps/deps/not_previously_skipped_dep.py b/airflow-core/src/airflow/ti_deps/deps/not_previously_skipped_dep.py index 205cc5338b9..5238ca97d1c 100644 --- a/airflow-core/src/airflow/ti_deps/deps/not_previously_skipped_dep.py +++ b/airflow-core/src/airflow/ti_deps/deps/not_previously_skipped_dep.py @@ -20,7 +20,7 @@ from __future__ import annotations from airflow.models.taskinstance import PAST_DEPENDS_MET from airflow.ti_deps.deps.base_ti_dep import BaseTIDep -## The following constants are taken from the SkipMixin class in the standard provider +# The following constants are taken from the SkipMixin class in the standard provider # The key used by SkipMixin to store XCom data. XCOM_SKIPMIXIN_KEY = "skipmixin_key" diff --git a/airflow-core/src/airflow/utils/log/file_task_handler.py b/airflow-core/src/airflow/utils/log/file_task_handler.py index 9954688a41f..3b90d94afbc 100644 --- a/airflow-core/src/airflow/utils/log/file_task_handler.py +++ b/airflow-core/src/airflow/utils/log/file_task_handler.py @@ -177,7 +177,7 @@ def _fetch_logs_from_service(url: str, log_relative_path: str) -> Response: algorithm="HS512", # We must set an empty private key here as otherwise it can be automatically loaded by JWTGenerator # and secret_key and private_key cannot be set together - private_key=None, # type: ignore[arg-type] + private_key=None, # type: ignore[arg-type] issuer=None, valid_for=conf.getint("webserver", "log_request_clock_grace", fallback=30), audience="task-instance-logs", diff --git a/airflow-core/tests/unit/utils/test_log_handlers.py b/airflow-core/tests/unit/utils/test_log_handlers.py index 6d2caaa8a43..891e08d51f0 100644 --- a/airflow-core/tests/unit/utils/test_log_handlers.py +++ b/airflow-core/tests/unit/utils/test_log_handlers.py @@ -21,7 +21,6 @@ import heapq import io import itertools import logging -import logging.config import os import re from http import HTTPStatus diff --git a/dev/airflow-github b/dev/airflow-github index fbbc846b7be..5abeffb83f2 100755 --- a/dev/airflow-github +++ b/dev/airflow-github @@ -299,9 +299,7 @@ def cli(): " searching for few commits to find the cherry-picked commits", ) @click.option("--unmerged", "show_uncherrypicked_only", help="Show unmerged PRs only", is_flag=True) - @click.option("--show-commits", help="Show commit SHAs (default: on, off when --unmerged)", is_flag=True, default=None) - def compare(target_version, github_token, previous_version=None, show_uncherrypicked_only=False, show_commits=None): # Set smart defaults if show_commits is None: diff --git a/devel-common/src/sphinx_exts/docs_build/fetch_inventories.py b/devel-common/src/sphinx_exts/docs_build/fetch_inventories.py index ca2560662e6..ce472095b4a 100644 --- a/devel-common/src/sphinx_exts/docs_build/fetch_inventories.py +++ b/devel-common/src/sphinx_exts/docs_build/fetch_inventories.py @@ -16,7 +16,6 @@ # under the License. from __future__ import annotations -import concurrent import concurrent.futures import datetime import itertools diff --git a/providers/amazon/src/airflow/providers/amazon/aws/hooks/batch_waiters.py b/providers/amazon/src/airflow/providers/amazon/aws/hooks/batch_waiters.py index b2916d8afd8..a78e368bdd9 100644 --- a/providers/amazon/src/airflow/providers/amazon/aws/hooks/batch_waiters.py +++ b/providers/amazon/src/airflow/providers/amazon/aws/hooks/batch_waiters.py @@ -33,7 +33,6 @@ from copy import deepcopy from pathlib import Path from typing import TYPE_CHECKING, Any -import botocore.client import botocore.exceptions import botocore.waiter diff --git a/providers/celery/tests/unit/celery/log_handlers/test_log_handlers.py b/providers/celery/tests/unit/celery/log_handlers/test_log_handlers.py index 6a0ef98842f..8584217c664 100644 --- a/providers/celery/tests/unit/celery/log_handlers/test_log_handlers.py +++ b/providers/celery/tests/unit/celery/log_handlers/test_log_handlers.py @@ -18,7 +18,6 @@ from __future__ import annotations import logging -import logging.config from importlib import reload from unittest import mock diff --git a/providers/cncf/kubernetes/tests/unit/cncf/kubernetes/log_handlers/test_log_handlers.py b/providers/cncf/kubernetes/tests/unit/cncf/kubernetes/log_handlers/test_log_handlers.py index 7cddf3d04af..0f83f43d623 100644 --- a/providers/cncf/kubernetes/tests/unit/cncf/kubernetes/log_handlers/test_log_handlers.py +++ b/providers/cncf/kubernetes/tests/unit/cncf/kubernetes/log_handlers/test_log_handlers.py @@ -18,7 +18,6 @@ from __future__ import annotations import logging -import logging.config import re from importlib import reload from unittest import mock diff --git a/providers/common/sql/src/airflow/providers/common/sql/hooks/sql.pyi b/providers/common/sql/src/airflow/providers/common/sql/hooks/sql.pyi index e4a355abb9d..8bfdb4f43b1 100644 --- a/providers/common/sql/src/airflow/providers/common/sql/hooks/sql.pyi +++ b/providers/common/sql/src/airflow/providers/common/sql/hooks/sql.pyi @@ -109,7 +109,7 @@ class DbApiHook(BaseHook): ) -> PandasDataFrame: ... def get_pandas_df_by_chunks( self, sql, parameters: list | tuple | Mapping[str, Any] | None = None, *, chunksize: int, **kwargs - ) -> Generator[PandasDataFrame, None, None]: ... + ) -> Generator[PandasDataFrame]: ... def get_records( self, sql: str | list[str], parameters: Iterable | Mapping[str, Any] | None = None ) -> Any: ... @@ -143,7 +143,7 @@ class DbApiHook(BaseHook): chunksize: int, df_type: Literal["pandas"] = "pandas", **kwargs, - ) -> Generator[PandasDataFrame, None, None]: ... + ) -> Generator[PandasDataFrame]: ... @overload def get_df_by_chunks( self, @@ -153,7 +153,7 @@ class DbApiHook(BaseHook): chunksize: int, df_type: Literal["polars"], **kwargs, - ) -> Generator[PolarsDataFrame, None, None]: ... + ) -> Generator[PolarsDataFrame]: ... @staticmethod def strip_sql_string(sql: str) -> str: ... @staticmethod diff --git a/providers/common/sql/tests/unit/common/sql/hooks/test_dbapi.py b/providers/common/sql/tests/unit/common/sql/hooks/test_dbapi.py index b3fb7a476f0..c45dd883f9b 100644 --- a/providers/common/sql/tests/unit/common/sql/hooks/test_dbapi.py +++ b/providers/common/sql/tests/unit/common/sql/hooks/test_dbapi.py @@ -19,7 +19,6 @@ from __future__ import annotations import json import logging -import logging.config from unittest import mock import pytest diff --git a/providers/common/sql/tests/unit/common/sql/hooks/test_sql.py b/providers/common/sql/tests/unit/common/sql/hooks/test_sql.py index b9003103244..e6850976dd8 100644 --- a/providers/common/sql/tests/unit/common/sql/hooks/test_sql.py +++ b/providers/common/sql/tests/unit/common/sql/hooks/test_sql.py @@ -20,7 +20,6 @@ from __future__ import annotations import inspect import logging -import logging.config from unittest.mock import MagicMock import pandas as pd diff --git a/providers/databricks/tests/unit/databricks/hooks/test_databricks.py b/providers/databricks/tests/unit/databricks/hooks/test_databricks.py index fb57aacf835..92f9225edad 100644 --- a/providers/databricks/tests/unit/databricks/hooks/test_databricks.py +++ b/providers/databricks/tests/unit/databricks/hooks/test_databricks.py @@ -26,9 +26,7 @@ from unittest import mock from unittest.mock import AsyncMock import aiohttp -import aiohttp.client_exceptions import azure.identity -import azure.identity.aio import pytest import tenacity from azure.core.credentials import AccessToken diff --git a/providers/edge3/src/airflow/providers/edge3/worker_api/routes/worker.py b/providers/edge3/src/airflow/providers/edge3/worker_api/routes/worker.py index b24330733c8..8c180800e0b 100644 --- a/providers/edge3/src/airflow/providers/edge3/worker_api/routes/worker.py +++ b/providers/edge3/src/airflow/providers/edge3/worker_api/routes/worker.py @@ -213,7 +213,7 @@ def set_state( free_concurrency=int(body.sysinfo["free_concurrency"]), queues=worker.queues, ) - _assert_version(body.sysinfo) # Exception only after worker state is in the DB + _assert_version(body.sysinfo) # Exception only after worker state is in the DB return WorkerSetStateReturn( state=worker.state, queues=worker.queues, maintenance_comments=worker.maintenance_comment ) diff --git a/providers/google/src/airflow/providers/google/cloud/hooks/bigquery.py b/providers/google/src/airflow/providers/google/cloud/hooks/bigquery.py index 35d7579fd05..7b7a64b3aac 100644 --- a/providers/google/src/airflow/providers/google/cloud/hooks/bigquery.py +++ b/providers/google/src/airflow/providers/google/cloud/hooks/bigquery.py @@ -786,7 +786,7 @@ class BigQueryHook(GoogleBaseHook, DbApiHook): if return_iterator: # The iterator returned by list_datasets() is a HTTPIterator but annotated # as Iterator - return iterator # type: ignore + return iterator # type: ignore datasets_list = list(iterator) self.log.info("Datasets List: %s", len(datasets_list)) diff --git a/providers/google/src/airflow/providers/google/cloud/hooks/mlengine.py b/providers/google/src/airflow/providers/google/cloud/hooks/mlengine.py index b79d991227d..86893b4c735 100644 --- a/providers/google/src/airflow/providers/google/cloud/hooks/mlengine.py +++ b/providers/google/src/airflow/providers/google/cloud/hooks/mlengine.py @@ -588,7 +588,7 @@ class MLEngineAsyncHook(GoogleBaseAsyncHook): job = await self.get_job( project_id=project_id, job_id=job_id, - session=session, # type: ignore + session=session, # type: ignore ) job = await job.json(content_type=None) self.log.info("Retrieving json_response: %s", job) diff --git a/providers/google/src/airflow/providers/google/common/auth_backend/google_openid.py b/providers/google/src/airflow/providers/google/common/auth_backend/google_openid.py index a0af8390ca7..3bda9e677c5 100644 --- a/providers/google/src/airflow/providers/google/common/auth_backend/google_openid.py +++ b/providers/google/src/airflow/providers/google/common/auth_backend/google_openid.py @@ -24,7 +24,6 @@ from collections.abc import Callable from functools import wraps from typing import TypeVar, cast -import google import google.auth.transport.requests import google.oauth2.id_token diff --git a/providers/google/src/airflow/providers/google/common/hooks/base_google.py b/providers/google/src/airflow/providers/google/common/hooks/base_google.py index 957722659d6..ba8ec44a363 100644 --- a/providers/google/src/airflow/providers/google/common/hooks/base_google.py +++ b/providers/google/src/airflow/providers/google/common/hooks/base_google.py @@ -32,7 +32,6 @@ from subprocess import check_output from typing import TYPE_CHECKING, Any, TypeVar, cast import google.auth -import google.oauth2.service_account import google_auth_httplib2 import requests import tenacity diff --git a/providers/google/src/airflow/providers/google/common/utils/id_token_credentials.py b/providers/google/src/airflow/providers/google/common/utils/id_token_credentials.py index 3f73f5b4bdb..6a96589cb20 100644 --- a/providers/google/src/airflow/providers/google/common/utils/id_token_credentials.py +++ b/providers/google/src/airflow/providers/google/common/utils/id_token_credentials.py @@ -35,12 +35,11 @@ import json import os from typing import TYPE_CHECKING -import google.auth.transport from google.auth import credentials as google_auth_credentials, environment_vars, exceptions from google.oauth2 import credentials as oauth2_credentials, service_account if TYPE_CHECKING: - import google.oauth2 + import google.auth.transport # Valid types accepted for file-based credentials. # They are taken from "google.auth._default" and since they are all "protected" and the imports might diff --git a/providers/postgres/src/airflow/providers/postgres/hooks/postgres.py b/providers/postgres/src/airflow/providers/postgres/hooks/postgres.py index 7a3be0ff4e3..0120e78fd32 100644 --- a/providers/postgres/src/airflow/providers/postgres/hooks/postgres.py +++ b/providers/postgres/src/airflow/providers/postgres/hooks/postgres.py @@ -24,7 +24,6 @@ from copy import deepcopy from typing import TYPE_CHECKING, Any, Literal, Protocol, TypeAlias, cast, overload import psycopg2 -import psycopg2.extensions import psycopg2.extras from more_itertools import chunked from psycopg2.extras import DictCursor, NamedTupleCursor, RealDictCursor, execute_batch diff --git a/providers/standard/tests/unit/standard/operators/test_python.py b/providers/standard/tests/unit/standard/operators/test_python.py index e9af810fc71..7959045ed91 100644 --- a/providers/standard/tests/unit/standard/operators/test_python.py +++ b/providers/standard/tests/unit/standard/operators/test_python.py @@ -19,7 +19,6 @@ from __future__ import annotations import copy import logging -import logging.config import os import pickle import re diff --git a/scripts/ci/prek/significant_newsfragments_checker.py b/scripts/ci/prek/significant_newsfragments_checker.py index a25e9d59e27..61344862e31 100755 --- a/scripts/ci/prek/significant_newsfragments_checker.py +++ b/scripts/ci/prek/significant_newsfragments_checker.py @@ -32,7 +32,6 @@ import glob import re import docutils.nodes -import docutils.parsers.rst from docutils.core import publish_doctree from jinja2 import BaseLoader, Environment diff --git a/task-sdk/src/airflow/sdk/definitions/asset/__init__.py b/task-sdk/src/airflow/sdk/definitions/asset/__init__.py index 2603711d8b4..3597f016f8b 100644 --- a/task-sdk/src/airflow/sdk/definitions/asset/__init__.py +++ b/task-sdk/src/airflow/sdk/definitions/asset/__init__.py @@ -196,8 +196,8 @@ def _validate_identifier(instance, attribute, value): raise ValueError(f"{type(instance).__name__} {attribute.name} cannot exceed 1500 characters") if value.isspace(): raise ValueError(f"{type(instance).__name__} {attribute.name} cannot be just whitespace") - ## We use latin1_general_cs to store the name (and group, asset values etc) on MySQL. - ## relaxing this check for non mysql backend + # We use latin1_general_cs to store the name (and group, asset values etc.) on MySQL. + # relaxing this check for non mysql backend if SQL_ALCHEMY_CONN.startswith("mysql") and not value.isascii(): raise ValueError(f"{type(instance).__name__} {attribute.name} must only consist of ASCII characters") return value diff --git a/task-sdk/src/airflow/sdk/definitions/decorators/condition.py b/task-sdk/src/airflow/sdk/definitions/decorators/condition.py index 2808563ffcf..50503e0ddcd 100644 --- a/task-sdk/src/airflow/sdk/definitions/decorators/condition.py +++ b/task-sdk/src/airflow/sdk/definitions/decorators/condition.py @@ -30,8 +30,8 @@ if TYPE_CHECKING: from airflow.sdk.definitions.context import Context BoolConditionFunc: TypeAlias = Callable[[Context], bool] - MsgConditionFunc: TypeAlias = "Callable[[Context], tuple[bool, str | None]]" - AnyConditionFunc: TypeAlias = "BoolConditionFunc | MsgConditionFunc" + MsgConditionFunc: TypeAlias = Callable[[Context], tuple[bool, str | None]] + AnyConditionFunc: TypeAlias = BoolConditionFunc | MsgConditionFunc __all__ = ["run_if", "skip_if"] diff --git a/task-sdk/tests/task_sdk/execution_time/test_supervisor.py b/task-sdk/tests/task_sdk/execution_time/test_supervisor.py index 10b945d7fd5..d9032701cec 100644 --- a/task-sdk/tests/task_sdk/execution_time/test_supervisor.py +++ b/task-sdk/tests/task_sdk/execution_time/test_supervisor.py @@ -1204,7 +1204,7 @@ class TestWatchedSubprocessKill: def test_service_subprocess(self, watched_subprocess, mock_process, mocker): """Test `_service_subprocess` processes selector events and handles subprocess exit.""" - ## Given + # Given # Mock file objects and handlers mock_stdout = mocker.Mock() @@ -1224,10 +1224,10 @@ class TestWatchedSubprocessKill: # Mock to simulate process exited successfully mock_process.wait.return_value = 0 - ## Our actual test + # Our actual test watched_subprocess._service_subprocess(max_wait_time=1.0) - ## Validations! + # Validations! # Validate selector interactions watched_subprocess.selector.select.assert_called_once_with(timeout=1.0)
