You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by hu...@apache.org on 2024/01/05 19:36:22 UTC

(airflow) branch main updated: Select ruff B006 to detect the usage of mutable values as argument default (#36626)

This is an automated email from the ASF dual-hosted git repository.

husseinawala pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new 365f206a32 Select ruff B006 to detect the usage of mutable values as argument default (#36626)
365f206a32 is described below

commit 365f206a32fe36de54dcb26eb204dd4a23709787
Author: Hussein Awala <hu...@awala.fr>
AuthorDate: Fri Jan 5 20:36:12 2024 +0100

    Select ruff B006 to detect the usage of mutable values as argument default (#36626)
---
 airflow/models/dag.py                                               | 2 +-
 airflow/providers/amazon/aws/operators/sagemaker.py                 | 4 ++--
 airflow/providers/amazon/aws/sensors/lambda_function.py             | 4 ++--
 airflow/providers/amazon/aws/transfers/redshift_to_s3.py            | 4 ++--
 airflow/providers/amazon/aws/transfers/s3_to_redshift.py            | 4 ++--
 pyproject.toml                                                      | 1 +
 tests/api_connexion/endpoints/test_mapped_task_instance_endpoint.py | 4 ++--
 tests/conftest.py                                                   | 4 ++--
 8 files changed, 14 insertions(+), 13 deletions(-)

diff --git a/airflow/models/dag.py b/airflow/models/dag.py
index d2d22d48c9..395898f367 100644
--- a/airflow/models/dag.py
+++ b/airflow/models/dag.py
@@ -2232,7 +2232,7 @@ class DAG(LoggingMixin):
         session: Session = NEW_SESSION,
         start_date: datetime | None = None,
         end_date: datetime | None = None,
-        dag_ids: list[str] = [],
+        dag_ids: list[str] | None = None,
     ) -> None:
         warnings.warn(
             "This method is deprecated and will be removed in a future version.",
diff --git a/airflow/providers/amazon/aws/operators/sagemaker.py b/airflow/providers/amazon/aws/operators/sagemaker.py
index 2eba21e734..e8f5f0880c 100644
--- a/airflow/providers/amazon/aws/operators/sagemaker.py
+++ b/airflow/providers/amazon/aws/operators/sagemaker.py
@@ -1591,7 +1591,7 @@ class SageMakerCreateNotebookOperator(BaseOperator):
         lifecycle_config_name: str | None = None,
         direct_internet_access: str | None = None,
         root_access: str | None = None,
-        create_instance_kwargs: dict[str, Any] = {},
+        create_instance_kwargs: dict[str, Any] | None = None,
         wait_for_completion: bool = True,
         aws_conn_id: str = "aws_default",
         **kwargs,
@@ -1607,7 +1607,7 @@ class SageMakerCreateNotebookOperator(BaseOperator):
         self.root_access = root_access
         self.wait_for_completion = wait_for_completion
         self.aws_conn_id = aws_conn_id
-        self.create_instance_kwargs = create_instance_kwargs
+        self.create_instance_kwargs = create_instance_kwargs or {}
 
         if self.create_instance_kwargs.get("tags") is not None:
             self.create_instance_kwargs["tags"] = format_tags(self.create_instance_kwargs["tags"])
diff --git a/airflow/providers/amazon/aws/sensors/lambda_function.py b/airflow/providers/amazon/aws/sensors/lambda_function.py
index 57a5973743..90ca399948 100644
--- a/airflow/providers/amazon/aws/sensors/lambda_function.py
+++ b/airflow/providers/amazon/aws/sensors/lambda_function.py
@@ -58,13 +58,13 @@ class LambdaFunctionStateSensor(AwsBaseSensor[LambdaHook]):
         *,
         function_name: str,
         qualifier: str | None = None,
-        target_states: list = ["Active"],
+        target_states: list | None = None,
         **kwargs: Any,
     ) -> None:
         super().__init__(**kwargs)
         self.function_name = function_name
         self.qualifier = qualifier
-        self.target_states = target_states
+        self.target_states = target_states or ["Active"]
 
     def poke(self, context: Context) -> bool:
         get_function_args = {
diff --git a/airflow/providers/amazon/aws/transfers/redshift_to_s3.py b/airflow/providers/amazon/aws/transfers/redshift_to_s3.py
index 6517e53f5e..877ddd0ae3 100644
--- a/airflow/providers/amazon/aws/transfers/redshift_to_s3.py
+++ b/airflow/providers/amazon/aws/transfers/redshift_to_s3.py
@@ -104,7 +104,7 @@ class RedshiftToS3Operator(BaseOperator):
         include_header: bool = False,
         parameters: Iterable | Mapping | None = None,
         table_as_file_name: bool = True,  # Set to True by default for not breaking current workflows
-        redshift_data_api_kwargs: dict = {},
+        redshift_data_api_kwargs: dict | None = None,
         **kwargs,
     ) -> None:
         super().__init__(**kwargs)
@@ -120,7 +120,7 @@ class RedshiftToS3Operator(BaseOperator):
         self.include_header = include_header
         self.parameters = parameters
         self.table_as_file_name = table_as_file_name
-        self.redshift_data_api_kwargs = redshift_data_api_kwargs
+        self.redshift_data_api_kwargs = redshift_data_api_kwargs or {}
 
         if select_query:
             self.select_query = select_query
diff --git a/airflow/providers/amazon/aws/transfers/s3_to_redshift.py b/airflow/providers/amazon/aws/transfers/s3_to_redshift.py
index 6bedb092b4..ada12c214b 100644
--- a/airflow/providers/amazon/aws/transfers/s3_to_redshift.py
+++ b/airflow/providers/amazon/aws/transfers/s3_to_redshift.py
@@ -96,7 +96,7 @@ class S3ToRedshiftOperator(BaseOperator):
         autocommit: bool = False,
         method: str = "APPEND",
         upsert_keys: list[str] | None = None,
-        redshift_data_api_kwargs: dict = {},
+        redshift_data_api_kwargs: dict | None = None,
         **kwargs,
     ) -> None:
         super().__init__(**kwargs)
@@ -112,7 +112,7 @@ class S3ToRedshiftOperator(BaseOperator):
         self.autocommit = autocommit
         self.method = method
         self.upsert_keys = upsert_keys
-        self.redshift_data_api_kwargs = redshift_data_api_kwargs
+        self.redshift_data_api_kwargs = redshift_data_api_kwargs or {}
 
         if self.redshift_data_api_kwargs:
             for arg in ["sql", "parameters"]:
diff --git a/pyproject.toml b/pyproject.toml
index e7db87a433..cab623dd1b 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -63,6 +63,7 @@ extend-select = [
     "TID251",  # Specific modules or module members that may not be imported or accessed
     "TID253",  # Ban certain modules from being imported at module level
     "ISC",  # Checks for implicit literal string concatenation (auto-fixable)
+    "B006", # Checks for uses of mutable objects as function argument defaults.
 ]
 extend-ignore = [
     "D203",
diff --git a/tests/api_connexion/endpoints/test_mapped_task_instance_endpoint.py b/tests/api_connexion/endpoints/test_mapped_task_instance_endpoint.py
index 9f6da68f0e..b7d88e347f 100644
--- a/tests/api_connexion/endpoints/test_mapped_task_instance_endpoint.py
+++ b/tests/api_connexion/endpoints/test_mapped_task_instance_endpoint.py
@@ -93,8 +93,8 @@ class TestMappedTaskInstanceEndpoint:
         clear_db_sla_miss()
         clear_rendered_ti_fields()
 
-    def create_dag_runs_with_mapped_tasks(self, dag_maker, session, dags={}):
-        for dag_id, dag in dags.items():
+    def create_dag_runs_with_mapped_tasks(self, dag_maker, session, dags=None):
+        for dag_id, dag in (dags or {}).items():
             count = dag["success"] + dag["running"]
             with dag_maker(session=session, dag_id=dag_id, start_date=DEFAULT_DATETIME_1):
                 task1 = BaseOperator(task_id="op1")
diff --git a/tests/conftest.py b/tests/conftest.py
index 9550b7d54b..4c4e022aa9 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -867,7 +867,7 @@ def create_dummy_dag(dag_maker):
         max_active_tis_per_dag=16,
         max_active_tis_per_dagrun=None,
         pool="default_pool",
-        executor_config={},
+        executor_config=None,
         trigger_rule="all_done",
         on_success_callback=None,
         on_execute_callback=None,
@@ -882,7 +882,7 @@ def create_dummy_dag(dag_maker):
                 task_id=task_id,
                 max_active_tis_per_dag=max_active_tis_per_dag,
                 max_active_tis_per_dagrun=max_active_tis_per_dagrun,
-                executor_config=executor_config,
+                executor_config=executor_config or {},
                 on_success_callback=on_success_callback,
                 on_execute_callback=on_execute_callback,
                 on_failure_callback=on_failure_callback,