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,