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 3ceb3667f29b3f481b346de6df2dab467e2c60c3
Author: Jens Scheffler <[email protected]>
AuthorDate: Sat Nov 1 15:02:05 2025 +0100

    [v3-1-test] Enable ruff PLW1508 rule (#57653) (#57673)
    
    (cherry picked from commit c846f6f27fe97ebd00cc0a13cf7ee59f1020877b)
---
 .../api_fastapi/auth/managers/simple/simple_auth_manager.py  |  2 +-
 airflow-core/src/airflow/api_fastapi/core_api/app.py         |  2 +-
 dev/breeze/src/airflow_breeze/utils/publish_docs_to_s3.py    |  2 +-
 docker-tests/tests/docker_tests/test_prod_image.py           |  2 +-
 providers/amazon/tests/system/amazon/aws/example_bedrock.py  |  4 ++--
 .../providers/databricks/plugins/databricks_workflow.py      |  5 -----
 .../tests/system/databricks/example_databricks_workflow.py   |  2 +-
 .../edge3/src/airflow/providers/edge3/cli/api_client.py      | 12 +++++++++---
 .../example_cloud_storage_transfer_service_aws.py            |  2 +-
 .../system/microsoft/azure/example_azure_service_bus.py      |  2 +-
 .../tests/system/microsoft/azure/example_azure_synapse.py    |  6 +++---
 pyproject.toml                                               |  6 ++++++
 scripts/in_container/update_quarantined_test_status.py       |  4 ++--
 13 files changed, 29 insertions(+), 22 deletions(-)

diff --git 
a/airflow-core/src/airflow/api_fastapi/auth/managers/simple/simple_auth_manager.py
 
b/airflow-core/src/airflow/api_fastapi/auth/managers/simple/simple_auth_manager.py
index b3ce04a94b8..28e3c172f89 100644
--- 
a/airflow-core/src/airflow/api_fastapi/auth/managers/simple/simple_auth_manager.py
+++ 
b/airflow-core/src/airflow/api_fastapi/auth/managers/simple/simple_auth_manager.py
@@ -280,7 +280,7 @@ class 
SimpleAuthManager(BaseAuthManager[SimpleAuthManagerUser]):
         """
         from airflow.api_fastapi.auth.managers.simple.routes.login import 
login_router
 
-        dev_mode = os.environ.get("DEV_MODE", False) == "true"
+        dev_mode = os.environ.get("DEV_MODE", str(False)) == "true"
         directory = Path(__file__).parent.joinpath("ui", "dev" if dev_mode 
else "dist")
         directory.mkdir(exist_ok=True)
 
diff --git a/airflow-core/src/airflow/api_fastapi/core_api/app.py 
b/airflow-core/src/airflow/api_fastapi/core_api/app.py
index 5cb7c6570cd..cd34b28f3cb 100644
--- a/airflow-core/src/airflow/api_fastapi/core_api/app.py
+++ b/airflow-core/src/airflow/api_fastapi/core_api/app.py
@@ -47,7 +47,7 @@ def init_views(app: FastAPI) -> None:
     app.include_router(ui_router)
     app.include_router(public_router)
 
-    dev_mode = os.environ.get("DEV_MODE", False) == "true"
+    dev_mode = os.environ.get("DEV_MODE", str(False)) == "true"
 
     directory = Path(AIRFLOW_PATH) / ("airflow/ui/dev" if dev_mode else 
"airflow/ui/dist")
 
diff --git a/dev/breeze/src/airflow_breeze/utils/publish_docs_to_s3.py 
b/dev/breeze/src/airflow_breeze/utils/publish_docs_to_s3.py
index 26664ccbb1c..ef2459ff342 100644
--- a/dev/breeze/src/airflow_breeze/utils/publish_docs_to_s3.py
+++ b/dev/breeze/src/airflow_breeze/utils/publish_docs_to_s3.py
@@ -292,7 +292,7 @@ class S3DocsPublish:
                     "Quantity": 1,
                     "Items": ["/*"],
                 },
-                "CallerReference": str(int(os.environ.get("GITHUB_RUN_ID", 
0))),
+                "CallerReference": str(int(os.environ.get("GITHUB_RUN_ID", 
str(0)))),
             },
         )
         get_console().print(
diff --git a/docker-tests/tests/docker_tests/test_prod_image.py 
b/docker-tests/tests/docker_tests/test_prod_image.py
index 984ab7d0e90..69777c426ae 100644
--- a/docker-tests/tests/docker_tests/test_prod_image.py
+++ b/docker-tests/tests/docker_tests/test_prod_image.py
@@ -54,7 +54,7 @@ REGULAR_IMAGE_PROVIDERS = [
     if not provider_id.startswith("#")
 ]
 
-testing_slim_image = os.environ.get("TEST_SLIM_IMAGE", False)
+testing_slim_image = os.environ.get("TEST_SLIM_IMAGE", str(False)).lower() in 
("true", "1", "yes")
 
 
 class TestCommands:
diff --git a/providers/amazon/tests/system/amazon/aws/example_bedrock.py 
b/providers/amazon/tests/system/amazon/aws/example_bedrock.py
index 79311a27abd..54fa46dcca0 100644
--- a/providers/amazon/tests/system/amazon/aws/example_bedrock.py
+++ b/providers/amazon/tests/system/amazon/aws/example_bedrock.py
@@ -65,12 +65,12 @@ DAG_ID = "example_bedrock"
 # Creating a custom model takes nearly two hours. If SKIP_LONG_TASKS
 # is True then these tasks will be skipped. This way we can still have
 # the code snippets for docs, and we can manually run the full tests.
-SKIP_LONG_TASKS = environ.get("SKIP_LONG_SYSTEM_TEST_TASKS", default=True)
+SKIP_LONG_TASKS = environ.get("SKIP_LONG_SYSTEM_TEST_TASKS", str(True))
 
 # No-commitment Provisioned Throughput is currently restricted to external
 # customers only and will fail with a ServiceQuotaExceededException if run
 # on the AWS System Test stack.
-SKIP_PROVISION_THROUGHPUT = environ.get("SKIP_RESTRICTED_SYSTEM_TEST_TASKS", 
default=True)
+SKIP_PROVISION_THROUGHPUT = environ.get("SKIP_RESTRICTED_SYSTEM_TEST_TASKS", 
str(True))
 
 LLAMA_SHORT_MODEL_ID = "meta.llama3-8b-instruct-v1:0"
 TITAN_MODEL_ID = "amazon.titan-text-express-v1:0:8k"
diff --git 
a/providers/databricks/src/airflow/providers/databricks/plugins/databricks_workflow.py
 
b/providers/databricks/src/airflow/providers/databricks/plugins/databricks_workflow.py
index 3fd7bfb0daf..7670fb0c172 100644
--- 
a/providers/databricks/src/airflow/providers/databricks/plugins/databricks_workflow.py
+++ 
b/providers/databricks/src/airflow/providers/databricks/plugins/databricks_workflow.py
@@ -17,7 +17,6 @@
 
 from __future__ import annotations
 
-import os
 from typing import TYPE_CHECKING, Any
 from urllib.parse import unquote
 
@@ -48,10 +47,6 @@ if TYPE_CHECKING:
     from airflow.utils.context import Context
 
 
-REPAIR_WAIT_ATTEMPTS = os.getenv("DATABRICKS_REPAIR_WAIT_ATTEMPTS", 20)
-REPAIR_WAIT_DELAY = os.getenv("DATABRICKS_REPAIR_WAIT_DELAY", 0.5)
-
-
 def get_auth_decorator():
     if AIRFLOW_V_3_0_PLUS:
         from airflow.api_fastapi.auth.managers.models.resource_details import 
DagAccessEntity
diff --git 
a/providers/databricks/tests/system/databricks/example_databricks_workflow.py 
b/providers/databricks/tests/system/databricks/example_databricks_workflow.py
index 5921f109d08..39d7db6b6c7 100644
--- 
a/providers/databricks/tests/system/databricks/example_databricks_workflow.py
+++ 
b/providers/databricks/tests/system/databricks/example_databricks_workflow.py
@@ -30,7 +30,7 @@ from airflow.providers.databricks.operators.databricks import 
(
 from airflow.providers.databricks.operators.databricks_workflow import 
DatabricksWorkflowTaskGroup
 from airflow.utils.timezone import datetime
 
-EXECUTION_TIMEOUT = int(os.getenv("EXECUTION_TIMEOUT", 6))
+EXECUTION_TIMEOUT = int(os.getenv("EXECUTION_TIMEOUT", str(6)))
 
 DATABRICKS_CONN_ID = os.getenv("DATABRICKS_CONN_ID", "databricks_default")
 DATABRICKS_NOTIFICATION_EMAIL = os.getenv("DATABRICKS_NOTIFICATION_EMAIL", 
"[email protected]")
diff --git a/providers/edge3/src/airflow/providers/edge3/cli/api_client.py 
b/providers/edge3/src/airflow/providers/edge3/cli/api_client.py
index c9402ea4541..756e6e5132c 100644
--- a/providers/edge3/src/airflow/providers/edge3/cli/api_client.py
+++ b/providers/edge3/src/airflow/providers/edge3/cli/api_client.py
@@ -53,12 +53,18 @@ logger = logging.getLogger(__name__)
 # Note: Given defaults make attempts after 1, 3, 7, 15, 31seconds, 1:03, 2:07, 
3:37 and fails after 5:07min
 # So far there is no other config facility in Task SDK we use ENV for the 
moment
 # TODO: Consider these env variables jointly in task sdk together with 
task_sdk/src/airflow/sdk/api/client.py
-API_RETRIES = int(os.getenv("AIRFLOW__EDGE__API_RETRIES", 
os.getenv("AIRFLOW__WORKERS__API_RETRIES", 10)))
+API_RETRIES = int(
+    os.getenv("AIRFLOW__EDGE__API_RETRIES", 
os.getenv("AIRFLOW__WORKERS__API_RETRIES", str(10)))
+)
 API_RETRY_WAIT_MIN = float(
-    os.getenv("AIRFLOW__EDGE__API_RETRY_WAIT_MIN", 
os.getenv("AIRFLOW__WORKERS__API_RETRY_WAIT_MIN", 1.0))
+    os.getenv(
+        "AIRFLOW__EDGE__API_RETRY_WAIT_MIN", 
os.getenv("AIRFLOW__WORKERS__API_RETRY_WAIT_MIN", str(1.0))
+    )
 )
 API_RETRY_WAIT_MAX = float(
-    os.getenv("AIRFLOW__EDGE__API_RETRY_WAIT_MAX", 
os.getenv("AIRFLOW__WORKERS__API_RETRY_WAIT_MAX", 90.0))
+    os.getenv(
+        "AIRFLOW__EDGE__API_RETRY_WAIT_MAX", 
os.getenv("AIRFLOW__WORKERS__API_RETRY_WAIT_MAX", str(90.0))
+    )
 )
 
 
diff --git 
a/providers/google/tests/system/google/cloud/storage_transfer/example_cloud_storage_transfer_service_aws.py
 
b/providers/google/tests/system/google/cloud/storage_transfer/example_cloud_storage_transfer_service_aws.py
index 443acfd5081..b6c6277932f 100644
--- 
a/providers/google/tests/system/google/cloud/storage_transfer/example_cloud_storage_transfer_service_aws.py
+++ 
b/providers/google/tests/system/google/cloud/storage_transfer/example_cloud_storage_transfer_service_aws.py
@@ -79,7 +79,7 @@ EXAMPLE_BUCKET = "airflow-system-tests-resources"
 EXAMPLE_FILE = "storage-transfer/big_file.dat"
 BUCKET_SOURCE_AWS = f"bucket-aws-{DAG_ID}-{ENV_ID}".replace("_", "-")
 BUCKET_TARGET_GCS = f"bucket-gcs-{DAG_ID}-{ENV_ID}".replace("_", "-")
-WAIT_FOR_OPERATION_POKE_INTERVAL = 
int(os.environ.get("WAIT_FOR_OPERATION_POKE_INTERVAL", 5))
+WAIT_FOR_OPERATION_POKE_INTERVAL = 
int(os.environ.get("WAIT_FOR_OPERATION_POKE_INTERVAL", str(5)))
 
 GCP_DESCRIPTION = "description"
 GCP_TRANSFER_JOB_NAME = 
f"transferJobs/sampleJob-{DAG_ID}-{ENV_ID}".replace("-", "_")
diff --git 
a/providers/microsoft/azure/tests/system/microsoft/azure/example_azure_service_bus.py
 
b/providers/microsoft/azure/tests/system/microsoft/azure/example_azure_service_bus.py
index 091fdff3c2c..b6bd6c67d85 100644
--- 
a/providers/microsoft/azure/tests/system/microsoft/azure/example_azure_service_bus.py
+++ 
b/providers/microsoft/azure/tests/system/microsoft/azure/example_azure_service_bus.py
@@ -40,7 +40,7 @@ try:
 except ImportError:
     pytest.skip("Azure Service Bus not available", allow_module_level=True)
 
-EXECUTION_TIMEOUT = int(os.getenv("EXECUTION_TIMEOUT", 6))
+EXECUTION_TIMEOUT = int(os.getenv("EXECUTION_TIMEOUT", str(6)))
 
 CLIENT_ID = os.getenv("CLIENT_ID", "")
 QUEUE_NAME = "sb_mgmt_queue_test"
diff --git 
a/providers/microsoft/azure/tests/system/microsoft/azure/example_azure_synapse.py
 
b/providers/microsoft/azure/tests/system/microsoft/azure/example_azure_synapse.py
index 571cd5b46ff..1559734bec2 100644
--- 
a/providers/microsoft/azure/tests/system/microsoft/azure/example_azure_synapse.py
+++ 
b/providers/microsoft/azure/tests/system/microsoft/azure/example_azure_synapse.py
@@ -23,12 +23,12 @@ from airflow import DAG
 from airflow.providers.microsoft.azure.operators.synapse import 
AzureSynapseRunSparkBatchOperator
 
 AIRFLOW_HOME = os.getenv("AIRFLOW_HOME", "/usr/local/airflow")
-EXECUTION_TIMEOUT = int(os.getenv("EXECUTION_TIMEOUT", 6))
+EXECUTION_TIMEOUT = int(os.getenv("EXECUTION_TIMEOUT", str(6)))
 
 default_args = {
     "execution_timeout": timedelta(hours=EXECUTION_TIMEOUT),
-    "retries": int(os.getenv("DEFAULT_TASK_RETRIES", 2)),
-    "retry_delay": 
timedelta(seconds=int(os.getenv("DEFAULT_RETRY_DELAY_SECONDS", 60))),
+    "retries": int(os.getenv("DEFAULT_TASK_RETRIES", str(2))),
+    "retry_delay": 
timedelta(seconds=int(os.getenv("DEFAULT_RETRY_DELAY_SECONDS", str(60)))),
 }
 
 SPARK_JOB_PAYLOAD = {
diff --git a/pyproject.toml b/pyproject.toml
index 5f4c6d9bfbf..ab54f43e231 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -595,6 +595,12 @@ extend-select = [
     "PLW0245", # super call is missing parentheses
     "PLW0406", # Module {name} imports itself
     "PLW0602", # Using global for {name} but no assignment is done
+    "PLW0604", # global at module level is redundant
+    "PLW0642", # Reassigned {} variable in {method_type} method
+    "PLW0711", # Exception to catch is the result of a binary and operation
+    "PLW1501", # {mode} is not a valid mode for open
+    "PLW1507", # Shallow copy of os.environ via copy.copy(os.environ)
+    "PLW1508", # Invalid type for environment variable default; expected str 
or None
     # Per rule enables
     "RUF006", # Checks for asyncio dangling task
     "RUF015", # Checks for unnecessary iterable allocation for first element
diff --git a/scripts/in_container/update_quarantined_test_status.py 
b/scripts/in_container/update_quarantined_test_status.py
index 427abadf379..d983dbfc0d7 100755
--- a/scripts/in_container/update_quarantined_test_status.py
+++ b/scripts/in_container/update_quarantined_test_status.py
@@ -213,8 +213,8 @@ if __name__ == "__main__":
         raise RuntimeError("GitHub Repository must be defined!")
     user, repo = github_repository.split("/")
     print(f"User: {user}, Repo: {repo}")
-    issue_id = int(os.environ.get("ISSUE_ID", 0))
-    num_runs = int(os.environ.get("NUM_RUNS", 10))
+    issue_id = int(os.environ.get("ISSUE_ID", str(0)))
+    num_runs = int(os.environ.get("NUM_RUNS", str(10)))
 
     if issue_id == 0:
         raise RuntimeError("You need to define ISSUE_ID as environment 
variable")

Reply via email to