diff --git a/airflow/providers/amazon/aws/triggers/ecs.py b/airflow/providers/amazon/aws/triggers/ecs.py index e0c8212940095..8a24d6e63aa50 100644 --- a/airflow/providers/amazon/aws/triggers/ecs.py +++ b/airflow/providers/amazon/aws/triggers/ecs.py @@ -161,10 +161,11 @@ def serialize(self) -> tuple[str, dict[str, Any]]: ) async def run(self) -> AsyncIterator[TriggerEvent]: - # fmt: off - async with EcsHook(aws_conn_id=self.aws_conn_id, region_name=self.region).async_conn as ecs_client,\ - AwsLogsHook(aws_conn_id=self.aws_conn_id, region_name=self.region).async_conn as logs_client: - # fmt: on + async with EcsHook( + aws_conn_id=self.aws_conn_id, region_name=self.region + ).async_conn as ecs_client, AwsLogsHook( + aws_conn_id=self.aws_conn_id, region_name=self.region + ).async_conn as logs_client: waiter = ecs_client.get_waiter("tasks_stopped") logs_token = None while self.waiter_max_attempts: diff --git a/tests/providers/google/cloud/hooks/test_dataflow.py b/tests/providers/google/cloud/hooks/test_dataflow.py index ed441f06f1a86..0738f533f52a6 100644 --- a/tests/providers/google/cloud/hooks/test_dataflow.py +++ b/tests/providers/google/cloud/hooks/test_dataflow.py @@ -954,13 +954,11 @@ def test_start_template_dataflow_with_runtime_env(self, mock_conn, mock_dataflow dataflowjob_instance = mock_dataflowjob.return_value dataflowjob_instance.wait_for_done.return_value = None - # fmt: off - method = (mock_conn.return_value - .projects.return_value - .locations.return_value - .templates.return_value - .launch) - # fmt: on + + method = ( + mock_conn.return_value.projects.return_value.locations.return_value.templates.return_value.launch + ) + method.return_value.execute.return_value = {"job": {"id": TEST_JOB_ID}} self.dataflow_hook.start_template_dataflow( job_name=JOB_NAME, @@ -1003,13 +1001,11 @@ def test_start_template_dataflow_update_runtime_env(self, mock_conn, mock_datafl dataflowjob_instance = mock_dataflowjob.return_value dataflowjob_instance.wait_for_done.return_value = None - # fmt: off - method = (mock_conn.return_value - .projects.return_value - .locations.return_value - .templates.return_value - .launch) - # fmt: on + + method = ( + mock_conn.return_value.projects.return_value.locations.return_value.templates.return_value.launch + ) + method.return_value.execute.return_value = {"job": {"id": TEST_JOB_ID}} self.dataflow_hook.start_template_dataflow( job_name=JOB_NAME, @@ -1185,14 +1181,11 @@ def test_dataflow_job_init_without_job_id(self): mock_list = self.mock_dataflow.projects.return_value.locations.return_value.jobs.return_value.list (mock_list.return_value.execute.return_value) = {"jobs": [job]} - # fmt: off + ( - self.mock_dataflow.projects.return_value. - locations.return_value. - jobs.return_value. - list_next.return_value + self.mock_dataflow.projects.return_value.locations.return_value.jobs.return_value.list_next.return_value ) = None - # fmt: on + _DataflowJobsController( self.mock_dataflow, TEST_PROJECT, TEST_LOCATION, 10, UNIQUE_JOB_NAME ).get_jobs() @@ -1206,23 +1199,14 @@ def test_dataflow_job_wait_for_multiple_jobs(self): "type": DataflowJobType.JOB_TYPE_BATCH, "currentState": DataflowJobStatus.JOB_STATE_DONE, } - # fmt: off + ( - self.mock_dataflow.projects.return_value. - locations.return_value. - jobs.return_value. - list.return_value. - execute.return_value - ) = { - "jobs": [job, job] - } + self.mock_dataflow.projects.return_value.locations.return_value.jobs.return_value.list.return_value.execute.return_value + ) = {"jobs": [job, job]} ( - self.mock_dataflow.projects.return_value. - locations.return_value. - jobs.return_value. - list_next.return_value + self.mock_dataflow.projects.return_value.locations.return_value.jobs.return_value.list_next.return_value ) = None - # fmt: on + dataflow_job = _DataflowJobsController( dataflow=self.mock_dataflow, project_number=TEST_PROJECT, @@ -1235,13 +1219,13 @@ def test_dataflow_job_wait_for_multiple_jobs(self): ) dataflow_job.wait_for_done() - # fmt: off - self.mock_dataflow.projects.return_value.locations.return_value.jobs.return_value.\ - list.assert_called_once_with(location=TEST_LOCATION, projectId=TEST_PROJECT) + self.mock_dataflow.projects.return_value.locations.return_value.jobs.return_value.list.assert_called_once_with( + location=TEST_LOCATION, projectId=TEST_PROJECT + ) - self.mock_dataflow.projects.return_value.locations.return_value.jobs.return_value.list\ - .return_value.execute.assert_called_once_with(num_retries=20) - # fmt: on + self.mock_dataflow.projects.return_value.locations.return_value.jobs.return_value.list.return_value.execute.assert_called_once_with( + num_retries=20 + ) assert dataflow_job.get_jobs() == [job, job] @@ -1259,34 +1243,29 @@ def test_dataflow_job_wait_for_multiple_jobs(self): ], ) def test_dataflow_job_wait_for_multiple_jobs_and_one_in_terminal_state(self, state, exception_regex): - # fmt: off + ( - self.mock_dataflow.projects.return_value. - locations.return_value. - jobs.return_value. - list.return_value. - execute.return_value + self.mock_dataflow.projects.return_value.locations.return_value.jobs.return_value.list.return_value.execute.return_value ) = { "jobs": [ { - "id": "id-1", "name": "name-1", + "id": "id-1", + "name": "name-1", "type": DataflowJobType.JOB_TYPE_BATCH, - "currentState": DataflowJobStatus.JOB_STATE_DONE + "currentState": DataflowJobStatus.JOB_STATE_DONE, }, { - "id": "id-2", "name": "name-2", + "id": "id-2", + "name": "name-2", "type": DataflowJobType.JOB_TYPE_BATCH, - "currentState": state - } + "currentState": state, + }, ] } ( - self.mock_dataflow.projects.return_value. - locations.return_value. - jobs.return_value. - list_next.return_value + self.mock_dataflow.projects.return_value.locations.return_value.jobs.return_value.list_next.return_value ) = None - # fmt: on + dataflow_job = _DataflowJobsController( dataflow=self.mock_dataflow, project_number=TEST_PROJECT, @@ -1301,12 +1280,9 @@ def test_dataflow_job_wait_for_multiple_jobs_and_one_in_terminal_state(self, sta dataflow_job.wait_for_done() def test_dataflow_job_wait_for_multiple_jobs_and_streaming_jobs(self): - # fmt: off + mock_jobs_list = ( - self.mock_dataflow.projects.return_value. - locations.return_value. - jobs.return_value. - list + self.mock_dataflow.projects.return_value.locations.return_value.jobs.return_value.list ) mock_jobs_list.return_value.execute.return_value = { "jobs": [ @@ -1314,17 +1290,14 @@ def test_dataflow_job_wait_for_multiple_jobs_and_streaming_jobs(self): "id": "id-2", "name": "name-2", "currentState": DataflowJobStatus.JOB_STATE_RUNNING, - "type": DataflowJobType.JOB_TYPE_STREAMING + "type": DataflowJobType.JOB_TYPE_STREAMING, } ] } ( - self.mock_dataflow.projects.return_value. - locations.return_value. - jobs.return_value. - list_next.return_value + self.mock_dataflow.projects.return_value.locations.return_value.jobs.return_value.list_next.return_value ) = None - # fmt: on + dataflow_job = _DataflowJobsController( dataflow=self.mock_dataflow, project_number=TEST_PROJECT, @@ -1346,17 +1319,15 @@ def test_dataflow_job_wait_for_single_jobs(self): "type": DataflowJobType.JOB_TYPE_BATCH, "currentState": DataflowJobStatus.JOB_STATE_DONE, } - # fmt: off - self.mock_dataflow.projects.return_value.locations.return_value. \ - jobs.return_value.get.return_value.execute.return_value = job ( - self.mock_dataflow.projects.return_value. - locations.return_value. - jobs.return_value. - list_next.return_value + self.mock_dataflow.projects.return_value.locations.return_value.jobs.return_value.get.return_value.execute.return_value + ) = job + + ( + self.mock_dataflow.projects.return_value.locations.return_value.jobs.return_value.list_next.return_value ) = None - # fmt: on + dataflow_job = _DataflowJobsController( dataflow=self.mock_dataflow, project_number=TEST_PROJECT, @@ -1368,37 +1339,27 @@ def test_dataflow_job_wait_for_single_jobs(self): multiple_jobs=False, ) dataflow_job.wait_for_done() - # fmt: off - self.mock_dataflow.projects.return_value.locations.return_value. \ - jobs.return_value.get.assert_called_once_with( - jobId=TEST_JOB_ID, - location=TEST_LOCATION, - projectId=TEST_PROJECT - ) - self.mock_dataflow.projects.return_value.locations.return_value. \ - jobs.return_value.get.return_value.execute.assert_called_once_with(num_retries=20) - # fmt: on + self.mock_dataflow.projects.return_value.locations.return_value.jobs.return_value.get.assert_called_once_with( + jobId=TEST_JOB_ID, location=TEST_LOCATION, projectId=TEST_PROJECT + ) + + self.mock_dataflow.projects.return_value.locations.return_value.jobs.return_value.get.return_value.execute.assert_called_once_with( + num_retries=20 + ) + assert dataflow_job.get_jobs() == [job] def test_dataflow_job_is_job_running_with_no_job(self): - # fmt: off + mock_jobs_list = ( - self.mock_dataflow.projects.return_value. - locations.return_value. - jobs.return_value. - list + self.mock_dataflow.projects.return_value.locations.return_value.jobs.return_value.list ) - mock_jobs_list.return_value.execute.return_value = { - "jobs": [] - } + mock_jobs_list.return_value.execute.return_value = {"jobs": []} ( - self.mock_dataflow.projects.return_value. - locations.return_value. - jobs.return_value. - list_next.return_value + self.mock_dataflow.projects.return_value.locations.return_value.jobs.return_value.list_next.return_value ) = None - # fmt: on + dataflow_job = _DataflowJobsController( dataflow=self.mock_dataflow, project_number=TEST_PROJECT, @@ -1649,13 +1610,12 @@ def test_dataflow_job_cancel_or_drain_job(self, drain_pipeline, job_type, reques } get_method = self.mock_dataflow.projects.return_value.locations.return_value.jobs.return_value.get get_method.return_value.execute.return_value = job - # fmt: off - job_list_nest_method = (self.mock_dataflow - .projects.return_value. - locations.return_value. - jobs.return_value.list_next) + + job_list_nest_method = ( + self.mock_dataflow.projects.return_value.locations.return_value.jobs.return_value.list_next + ) job_list_nest_method.return_value = None - # fmt: on + dataflow_job = _DataflowJobsController( dataflow=self.mock_dataflow, project_number=TEST_PROJECT, @@ -1713,24 +1673,14 @@ def test_dataflow_job_cancel_job_no_running_jobs(self): mock_jobs.return_value.update.assert_not_called() def test_fetch_list_job_messages_responses(self): - # fmt: off + mock_list = ( - self.mock_dataflow - .projects.return_value - .locations.return_value - .jobs.return_value - .messages.return_value - .list + self.mock_dataflow.projects.return_value.locations.return_value.jobs.return_value.messages.return_value.list ) mock_list_next = ( - self.mock_dataflow. - projects.return_value. - locations.return_value. - jobs.return_value - .messages.return_value - .list_next - ) - # fmt: on + self.mock_dataflow.projects.return_value.locations.return_value.jobs.return_value.messages.return_value.list_next + ) + mock_list.return_value.execute.return_value = "response_1" mock_list_next.return_value = None @@ -1749,16 +1699,10 @@ def test_fetch_list_job_messages_responses(self): assert result == ["response_1"] def test_fetch_all_jobs_when_no_jobs_returned(self): - # fmt: off + ( - self.mock_dataflow - .projects.return_value - .locations.return_value - .jobs.return_value - .list.return_value - .execute.return_value + self.mock_dataflow.projects.return_value.locations.return_value.jobs.return_value.list.return_value.execute.return_value ) = {} - # fmt: on jobs_controller = _DataflowJobsController( dataflow=self.mock_dataflow, diff --git a/tests/providers/google/cloud/hooks/test_functions.py b/tests/providers/google/cloud/hooks/test_functions.py index 48465fabf73b9..98cef19d96b38 100644 --- a/tests/providers/google/cloud/hooks/test_functions.py +++ b/tests/providers/google/cloud/hooks/test_functions.py @@ -81,10 +81,11 @@ def test_create_new_function_overridden_project_id(self, wait_for_operation_to_c def test_upload_function_zip_overridden_project_id(self, get_conn, requests_put): mck, open_module = get_open_mock() with mock.patch(f"{open_module}.open", mck): - # fmt: off - generate_upload_url_method = get_conn.return_value.projects.return_value.locations. \ - return_value.functions.return_value.generateUploadUrl - # fmt: on + + generate_upload_url_method = ( + get_conn.return_value.projects.return_value.locations.return_value.functions.return_value.generateUploadUrl + ) + execute_method = generate_upload_url_method.return_value.execute execute_method.return_value = {"uploadUrl": "http://uploadHere"} requests_put.return_value = None @@ -222,10 +223,11 @@ def test_update_function(self, wait_for_operation_to_complete, get_conn): def test_upload_function_zip(self, get_conn, requests_put, mock_project_id): mck, open_module = get_open_mock() with mock.patch(f"{open_module}.open", mck): - # fmt: off - generate_upload_url_method = get_conn.return_value.projects.return_value.locations. \ - return_value.functions.return_value.generateUploadUrl - # fmt: on + + generate_upload_url_method = ( + get_conn.return_value.projects.return_value.locations.return_value.functions.return_value.generateUploadUrl + ) + execute_method = generate_upload_url_method.return_value.execute execute_method.return_value = {"uploadUrl": "http://uploadHere"} requests_put.return_value = None @@ -250,10 +252,11 @@ def test_upload_function_zip(self, get_conn, requests_put, mock_project_id): def test_upload_function_zip_overridden_project_id(self, get_conn, requests_put): mck, open_module = get_open_mock() with mock.patch(f"{open_module}.open", mck): - # fmt: off - generate_upload_url_method = get_conn.return_value.projects.return_value.locations. \ - return_value.functions.return_value.generateUploadUrl - # fmt: on + + generate_upload_url_method = ( + get_conn.return_value.projects.return_value.locations.return_value.functions.return_value.generateUploadUrl + ) + execute_method = generate_upload_url_method.return_value.execute execute_method.return_value = {"uploadUrl": "http://uploadHere"} requests_put.return_value = None @@ -274,10 +277,11 @@ def test_upload_function_zip_overridden_project_id(self, get_conn, requests_put) @mock.patch("airflow.providers.google.cloud.hooks.functions.CloudFunctionsHook.get_conn") def test_call_function(self, mock_get_conn): payload = {"executionId": "wh41ppcyoa6l", "result": "Hello World!"} - # fmt: off - call = mock_get_conn.return_value.projects.return_value. \ - locations.return_value.functions.return_value.call - # fmt: on + + call = ( + mock_get_conn.return_value.projects.return_value.locations.return_value.functions.return_value.call + ) + call.return_value.execute.return_value = payload function_id = "function1234" @@ -297,10 +301,11 @@ def test_call_function(self, mock_get_conn): @mock.patch("airflow.providers.google.cloud.hooks.functions.CloudFunctionsHook.get_conn") def test_call_function_error(self, mock_get_conn): payload = {"error": "Something very bad"} - # fmt: off - call = mock_get_conn.return_value.projects.return_value. \ - locations.return_value.functions.return_value.call - # fmt: on + + call = ( + mock_get_conn.return_value.projects.return_value.locations.return_value.functions.return_value.call + ) + call.return_value.execute.return_value = payload function_id = "function1234" diff --git a/tests/providers/google/cloud/hooks/test_gcs.py b/tests/providers/google/cloud/hooks/test_gcs.py index 4f1839fc42c02..41855cbc2f965 100644 --- a/tests/providers/google/cloud/hooks/test_gcs.py +++ b/tests/providers/google/cloud/hooks/test_gcs.py @@ -311,10 +311,11 @@ def test_is_older_than_with_false_cond(self, mock_service): test_object = "test_object" # Given - # fmt: off - mock_service.return_value.bucket.return_value.get_blob \ - .return_value.updated = timezone.utcnow() + timedelta(days=2) - # fmt: on + + mock_service.return_value.bucket.return_value.get_blob.return_value.updated = ( + timezone.utcnow() + timedelta(days=2) + ) + # When response = self.gcs_hook.is_older_than( bucket_name=test_bucket, object_name=test_object, seconds=86400 # 24hr diff --git a/tests/providers/google/cloud/hooks/test_mlengine.py b/tests/providers/google/cloud/hooks/test_mlengine.py index 2016e33cd5867..9e2c0124179d1 100644 --- a/tests/providers/google/cloud/hooks/test_mlengine.py +++ b/tests/providers/google/cloud/hooks/test_mlengine.py @@ -70,23 +70,12 @@ def test_create_version(self, mock_get_conn): operation_path = f"projects/{project_id}/operations/test-operation" model_path = f"projects/{project_id}/models/{model_name}" operation_done = {"name": operation_path, "done": True} - # fmt: off ( - mock_get_conn.return_value. - projects.return_value. - models.return_value. - versions.return_value. - create.return_value. - execute.return_value + mock_get_conn.return_value.projects.return_value.models.return_value.versions.return_value.create.return_value.execute.return_value ) = version ( - mock_get_conn.return_value. - projects.return_value. - operations.return_value. - get.return_value. - execute.return_value - ) = {'name': operation_path, 'done': True} - # fmt: on + mock_get_conn.return_value.projects.return_value.operations.return_value.get.return_value.execute.return_value + ) = {"name": operation_path, "done": True} create_version_response = self.hook.create_version( project_id=project_id, model_name=model_name, version_spec=deepcopy(version) ) @@ -119,29 +108,17 @@ def test_create_version_with_labels(self, mock_get_conn): operation_path = f"projects/{project_id}/operations/test-operation" model_path = f"projects/{project_id}/models/{model_name}" operation_done = {"name": operation_path, "done": True} - # fmt: off + ( - mock_get_conn.return_value. - projects.return_value. - models.return_value. - versions.return_value. - create.return_value. - execute.return_value + mock_get_conn.return_value.projects.return_value.models.return_value.versions.return_value.create.return_value.execute.return_value ) = version ( - mock_get_conn.return_value. - projects.return_value. - operations.return_value. - get.return_value. - execute.return_value - ) = {'name': operation_path, 'done': True} + mock_get_conn.return_value.projects.return_value.operations.return_value.get.return_value.execute.return_value + ) = {"name": operation_path, "done": True} create_version_response = self.hook.create_version( - project_id=project_id, - model_name=model_name, - version_spec=deepcopy(version) + project_id=project_id, model_name=model_name, version_spec=deepcopy(version) ) - # fmt: on assert create_version_response == operation_done @@ -166,16 +143,11 @@ def test_set_default_version(self, mock_get_conn): operation_path = f"projects/{project_id}/operations/test-operation" version_path = f"projects/{project_id}/models/{model_name}/versions/{version_name}" operation_done = {"name": operation_path, "done": True} - # fmt: off + ( - mock_get_conn.return_value. - projects.return_value. - models.return_value. - versions.return_value. - setDefault.return_value. - execute.return_value + mock_get_conn.return_value.projects.return_value.models.return_value.versions.return_value.setDefault.return_value.execute.return_value ) = operation_done - # fmt: on + set_default_version_response = self.hook.set_default_version( project_id=project_id, model_name=model_name, version_name=version_name ) @@ -206,17 +178,13 @@ def test_list_versions(self, mock_get_conn, mock_sleep): versions_mock = mock.Mock( **{"list.return_value": pages_requests[0], "list_next.side_effect": pages_requests[1:] + [None]} ) - # fmt: off + ( - mock_get_conn.return_value. - projects.return_value. - models.return_value. - versions.return_value + mock_get_conn.return_value.projects.return_value.models.return_value.versions.return_value ) = versions_mock - list_versions_response = self.hook.list_versions( - project_id=project_id, model_name=model_name) - # fmt: on + list_versions_response = self.hook.list_versions(project_id=project_id, model_name=model_name) + assert list_versions_response == version_names mock_get_conn.assert_has_calls( [ @@ -244,24 +212,15 @@ def test_delete_version(self, mock_get_conn): version = {"name": operation_path} operation_not_done = {"name": operation_path, "done": False} operation_done = {"name": operation_path, "done": True} - # fmt: off + ( - mock_get_conn.return_value. - projects.return_value. - operations.return_value. - get.return_value. - execute.side_effect + mock_get_conn.return_value.projects.return_value.operations.return_value.get.return_value.execute.side_effect ) = [operation_not_done, operation_done] ( - mock_get_conn.return_value. - projects.return_value. - models.return_value. - versions.return_value. - delete.return_value. - execute.return_value + mock_get_conn.return_value.projects.return_value.models.return_value.versions.return_value.delete.return_value.execute.return_value ) = version - # fmt: on + delete_version_response = self.hook.delete_version( project_id=project_id, model_name=model_name, version_name=version_name ) @@ -289,15 +248,11 @@ def test_create_model(self, mock_get_conn): "labels": {"airflow-version": hook._AIRFLOW_VERSION}, } project_path = f"projects/{project_id}" - # fmt: off + ( - mock_get_conn.return_value. - projects.return_value. - models.return_value. - create.return_value. - execute.return_value + mock_get_conn.return_value.projects.return_value.models.return_value.create.return_value.execute.return_value ) = model - # fmt: on + create_model_response = self.hook.create_model(project_id=project_id, model=deepcopy(model)) assert create_model_response == model @@ -320,13 +275,9 @@ def test_create_model_idempotency(self, mock_get_conn): "labels": {"airflow-version": hook._AIRFLOW_VERSION}, } project_path = f"projects/{project_id}" - # fmt: off + ( - mock_get_conn.return_value. - projects.return_value. - models.return_value. - create.return_value. - execute.side_effect + mock_get_conn.return_value.projects.return_value.models.return_value.create.return_value.execute.side_effect ) = [ HttpError( resp=httplib2.Response({"status": 409}), @@ -342,7 +293,7 @@ def test_create_model_idempotency(self, mock_get_conn): "fieldViolations": [ { "field": "model.name", - "description": "A model with the same name already exists." + "description": "A model with the same name already exists.", } ], } @@ -354,13 +305,9 @@ def test_create_model_idempotency(self, mock_get_conn): ] ( - mock_get_conn.return_value. - projects.return_value. - models.return_value. - get.return_value. - execute.return_value + mock_get_conn.return_value.projects.return_value.models.return_value.get.return_value.execute.return_value ) = deepcopy(model) - # fmt: on + create_model_response = self.hook.create_model(project_id=project_id, model=deepcopy(model)) assert create_model_response == model @@ -387,19 +334,13 @@ def test_create_model_with_labels(self, mock_get_conn): "labels": {"other-label": "test-value", "airflow-version": hook._AIRFLOW_VERSION}, } project_path = f"projects/{project_id}" - # fmt: off + ( - mock_get_conn.return_value. - projects.return_value. - models.return_value. - create.return_value. - execute.return_value + mock_get_conn.return_value.projects.return_value.models.return_value.create.return_value.execute.return_value ) = model - create_model_response = self.hook.create_model( - project_id=project_id, model=deepcopy(model) - ) - # fmt: on + create_model_response = self.hook.create_model(project_id=project_id, model=deepcopy(model)) + assert create_model_response == model mock_get_conn.assert_has_calls( [ @@ -414,15 +355,11 @@ def test_get_model(self, mock_get_conn): model_name = "test-model" model = {"model": model_name} model_path = f"projects/{project_id}/models/{model_name}" - # fmt: off + ( - mock_get_conn.return_value. - projects.return_value. - models.return_value. - get.return_value. - execute.return_value + mock_get_conn.return_value.projects.return_value.models.return_value.get.return_value.execute.return_value ) = model - # fmt: on + get_model_response = self.hook.get_model(project_id=project_id, model_name=model_name) assert get_model_response == model @@ -439,15 +376,11 @@ def test_delete_model(self, mock_get_conn): model_name = "test-model" model = {"model": model_name} model_path = f"projects/{project_id}/models/{model_name}" - # fmt: off + ( - mock_get_conn.return_value. - projects.return_value. - models.return_value. - delete.return_value. - execute.return_value + mock_get_conn.return_value.projects.return_value.models.return_value.delete.return_value.execute.return_value ) = model - # fmt: on + self.hook.delete_model(project_id=project_id, model_name=model_name) mock_get_conn.assert_has_calls( @@ -466,15 +399,11 @@ def test_delete_model_when_not_exists(self, mock_get_conn, mock_log): http_error = HttpError( resp=mock.MagicMock(status=404, reason="Model not found."), content=b"Model not found." ) - # fmt: off + ( - mock_get_conn.return_value. - projects.return_value. - models.return_value. - delete.return_value. - execute.side_effect + mock_get_conn.return_value.projects.return_value.models.return_value.delete.return_value.execute.side_effect ) = [http_error] - # fmt: on + self.hook.delete_model(project_id=project_id, model_name=model_name) mock_get_conn.assert_has_calls( @@ -501,30 +430,17 @@ def test_delete_model_with_contents(self, mock_get_conn, mock_sleep): } for i, version_name in enumerate(version_names) ] - # fmt: off + ( - mock_get_conn.return_value. - projects.return_value. - operations.return_value. - get.return_value. - execute.return_value + mock_get_conn.return_value.projects.return_value.operations.return_value.get.return_value.execute.return_value ) = operation_done ( - mock_get_conn.return_value. - projects.return_value. - models.return_value. - versions.return_value. - list.return_value. - execute.return_value + mock_get_conn.return_value.projects.return_value.models.return_value.versions.return_value.list.return_value.execute.return_value ) = {"versions": versions} ( - mock_get_conn.return_value. - projects.return_value. - models.return_value. - versions.return_value. - list_next.return_value + mock_get_conn.return_value.projects.return_value.models.return_value.versions.return_value.list_next.return_value ) = None - # fmt: on + self.hook.delete_model(project_id=project_id, model_name=model_name, delete_contents=True) mock_get_conn.assert_has_calls( @@ -570,22 +486,14 @@ def test_create_mlengine_job(self, mock_get_conn, mock_sleep): "jobId": job_id, "state": "QUEUED", } - # fmt: off + ( - mock_get_conn.return_value. - projects.return_value. - jobs.return_value. - create.return_value. - execute.return_value + mock_get_conn.return_value.projects.return_value.jobs.return_value.create.return_value.execute.return_value ) = job_queued ( - mock_get_conn.return_value. - projects.return_value. - jobs.return_value. - get.return_value. - execute.side_effect + mock_get_conn.return_value.projects.return_value.jobs.return_value.get.return_value.execute.side_effect ) = [job_queued, job_succeeded] - # fmt: on + create_job_response = self.hook.create_job(project_id=project_id, job=deepcopy(new_job)) assert create_job_response == job_succeeded @@ -620,26 +528,16 @@ def test_create_mlengine_job_with_labels(self, mock_get_conn, mock_sleep): "jobId": job_id, "state": "QUEUED", } - # fmt: off + ( - mock_get_conn.return_value. - projects.return_value. - jobs.return_value. - create.return_value. - execute.return_value + mock_get_conn.return_value.projects.return_value.jobs.return_value.create.return_value.execute.return_value ) = job_queued ( - mock_get_conn.return_value. - projects.return_value. - jobs.return_value. - get.return_value. - execute.side_effect + mock_get_conn.return_value.projects.return_value.jobs.return_value.get.return_value.execute.side_effect ) = [job_queued, job_succeeded] - create_job_response = self.hook.create_job( - project_id=project_id, job=deepcopy(new_job) - ) - # fmt: on + create_job_response = self.hook.create_job(project_id=project_id, job=deepcopy(new_job)) + assert create_job_response == job_succeeded mock_get_conn.assert_has_calls( [ @@ -662,22 +560,14 @@ def test_create_mlengine_job_reuse_existing_job_by_default(self, mock_get_conn): "state": "SUCCEEDED", } error_job_exists = HttpError(resp=mock.MagicMock(status=409), content=b"Job already exists") - # fmt: off + ( - mock_get_conn.return_value. - projects.return_value. - jobs.return_value. - create.return_value. - execute.side_effect + mock_get_conn.return_value.projects.return_value.jobs.return_value.create.return_value.execute.side_effect ) = error_job_exists ( - mock_get_conn.return_value. - projects.return_value. - jobs.return_value. - get.return_value. - execute.return_value + mock_get_conn.return_value.projects.return_value.jobs.return_value.get.return_value.execute.return_value ) = job_succeeded - # fmt: on + create_job_response = self.hook.create_job(project_id=project_id, job=job_succeeded) assert create_job_response == job_succeeded @@ -709,23 +599,13 @@ def test_create_mlengine_job_check_existing_job_failed(self, mock_get_conn): } error_job_exists = HttpError(resp=mock.MagicMock(status=409), content=b"Job already exists") - # fmt: off ( - mock_get_conn.return_value. - projects.return_value. - jobs.return_value. - create.return_value. - execute.side_effect + mock_get_conn.return_value.projects.return_value.jobs.return_value.create.return_value.execute.side_effect ) = error_job_exists ( - mock_get_conn.return_value. - projects.return_value. - jobs.return_value. - get.return_value. - execute.return_value + mock_get_conn.return_value.projects.return_value.jobs.return_value.get.return_value.execute.return_value ) = different_job - # fmt: on def check_input(existing_job): return existing_job.get("someInput") == my_job["someInput"] @@ -743,23 +623,14 @@ def test_create_mlengine_job_check_existing_job_success(self, mock_get_conn): "someInput": {"input": "someInput"}, } error_job_exists = HttpError(resp=mock.MagicMock(status=409), content=b"Job already exists") - # fmt: off + ( - mock_get_conn.return_value. - projects.return_value. - jobs.return_value. - create.return_value. - execute.side_effect + mock_get_conn.return_value.projects.return_value.jobs.return_value.create.return_value.execute.side_effect ) = error_job_exists ( - mock_get_conn.return_value. - projects.return_value. - jobs.return_value. - get.return_value. - execute.return_value + mock_get_conn.return_value.projects.return_value.jobs.return_value.get.return_value.execute.return_value ) = my_job - # fmt: on def check_input(existing_job): return existing_job.get("someInput") == my_job["someInput"] @@ -776,15 +647,11 @@ def test_cancel_mlengine_job(self, mock_get_conn): job_path = f"projects/{project_id}/jobs/{job_id}" job_cancelled = {} - # fmt: off + ( - mock_get_conn.return_value. - projects.return_value. - jobs.return_value. - cancel.return_value. - execute.return_value + mock_get_conn.return_value.projects.return_value.jobs.return_value.cancel.return_value.execute.return_value ) = job_cancelled - # fmt: on + cancel_job_response = self.hook.cancel_job(job_id=job_id, project_id=project_id) assert cancel_job_response == job_cancelled @@ -803,22 +670,14 @@ def test_cancel_mlengine_job_nonexistent_job(self, mock_get_conn): job_cancelled = {} error_job_does_not_exist = HttpError(resp=mock.MagicMock(status=404), content=b"Job does not exist") - # fmt: off + ( - mock_get_conn.return_value. - projects.return_value. - jobs.return_value. - cancel.return_value. - execute.side_effect + mock_get_conn.return_value.projects.return_value.jobs.return_value.cancel.return_value.execute.side_effect ) = error_job_does_not_exist ( - mock_get_conn.return_value. - projects.return_value. - jobs.return_value. - cancel.return_value. - execute.return_value + mock_get_conn.return_value.projects.return_value.jobs.return_value.cancel.return_value.execute.return_value ) = job_cancelled - # fmt: on + with pytest.raises(HttpError): self.hook.cancel_job(job_id=job_id, project_id=project_id) @@ -832,22 +691,14 @@ def test_cancel_mlengine_job_completed_job(self, mock_get_conn): error_job_already_completed = HttpError( resp=mock.MagicMock(status=400), content=b"Job already completed" ) - # fmt: off + ( - mock_get_conn.return_value. - projects.return_value. - jobs.return_value. - cancel.return_value. - execute.side_effect + mock_get_conn.return_value.projects.return_value.jobs.return_value.cancel.return_value.execute.side_effect ) = error_job_already_completed ( - mock_get_conn.return_value. - projects.return_value. - jobs.return_value. - cancel.return_value. - execute.return_value + mock_get_conn.return_value.projects.return_value.jobs.return_value.cancel.return_value.execute.return_value ) = job_cancelled - # fmt: on + cancel_job_response = self.hook.cancel_job(job_id=job_id, project_id=project_id) assert cancel_job_response == job_cancelled @@ -881,23 +732,14 @@ def test_create_version(self, mock_get_conn, mock_project_id): operation_path = f"projects/{GCP_PROJECT_ID_HOOK_UNIT_TEST}/operations/test-operation" model_path = f"projects/{GCP_PROJECT_ID_HOOK_UNIT_TEST}/models/{model_name}" operation_done = {"name": operation_path, "done": True} - # fmt: off + ( - mock_get_conn.return_value. - projects.return_value. - models.return_value. - versions.return_value. - create.return_value. - execute.return_value + mock_get_conn.return_value.projects.return_value.models.return_value.versions.return_value.create.return_value.execute.return_value ) = version ( - mock_get_conn.return_value. - projects.return_value. - operations.return_value. - get.return_value. - execute.return_value - ) = {'name': operation_path, 'done': True} - # fmt: on + mock_get_conn.return_value.projects.return_value.operations.return_value.get.return_value.execute.return_value + ) = {"name": operation_path, "done": True} + create_version_response = self.hook.create_version( model_name=model_name, version_spec=version, project_id=GCP_PROJECT_ID_HOOK_UNIT_TEST ) @@ -925,16 +767,11 @@ def test_set_default_version(self, mock_get_conn, mock_project_id): operation_path = f"projects/{GCP_PROJECT_ID_HOOK_UNIT_TEST}/operations/test-operation" version_path = f"projects/{GCP_PROJECT_ID_HOOK_UNIT_TEST}/models/{model_name}/versions/{version_name}" operation_done = {"name": operation_path, "done": True} - # fmt: off + ( - mock_get_conn.return_value. - projects.return_value. - models.return_value. - versions.return_value. - setDefault.return_value. - execute.return_value + mock_get_conn.return_value.projects.return_value.models.return_value.versions.return_value.setDefault.return_value.execute.return_value ) = operation_done - # fmt: on + set_default_version_response = self.hook.set_default_version( model_name=model_name, version_name=version_name, @@ -970,14 +807,11 @@ def test_list_versions(self, mock_get_conn, mock_sleep, mock_project_id): versions_mock = mock.Mock( **{"list.return_value": pages_requests[0], "list_next.side_effect": pages_requests[1:] + [None]} ) - # fmt: off + ( - mock_get_conn.return_value. - projects.return_value. - models.return_value. - versions.return_value + mock_get_conn.return_value.projects.return_value.models.return_value.versions.return_value ) = versions_mock - # fmt: on + list_versions_response = self.hook.list_versions( model_name=model_name, project_id=GCP_PROJECT_ID_HOOK_UNIT_TEST ) @@ -1008,30 +842,21 @@ def test_list_versions(self, mock_get_conn, mock_sleep, mock_project_id): def test_delete_version(self, mock_get_conn, mock_project_id): model_name = "test-model" version_name = "test-version" - # fmt: off - operation_path = f'projects/{GCP_PROJECT_ID_HOOK_UNIT_TEST}/operations/test-operation' - version_path = f'projects/{GCP_PROJECT_ID_HOOK_UNIT_TEST}/models/{model_name}/versions/{version_name}' - version = {'name': operation_path} - operation_not_done = {'name': operation_path, 'done': False} - operation_done = {'name': operation_path, 'done': True} + + operation_path = f"projects/{GCP_PROJECT_ID_HOOK_UNIT_TEST}/operations/test-operation" + version_path = f"projects/{GCP_PROJECT_ID_HOOK_UNIT_TEST}/models/{model_name}/versions/{version_name}" + version = {"name": operation_path} + operation_not_done = {"name": operation_path, "done": False} + operation_done = {"name": operation_path, "done": True} ( - mock_get_conn.return_value. - projects.return_value. - operations.return_value. - get.return_value. - execute.side_effect + mock_get_conn.return_value.projects.return_value.operations.return_value.get.return_value.execute.side_effect ) = [operation_not_done, operation_done] ( - mock_get_conn.return_value. - projects.return_value. - models.return_value. - versions.return_value. - delete.return_value. - execute.return_value + mock_get_conn.return_value.projects.return_value.models.return_value.versions.return_value.delete.return_value.execute.return_value ) = version - # fmt: on + delete_version_response = self.hook.delete_version( model_name=model_name, version_name=version_name, project_id=GCP_PROJECT_ID_HOOK_UNIT_TEST ) @@ -1059,15 +884,11 @@ def test_create_model(self, mock_get_conn, mock_project_id): "name": model_name, } project_path = f"projects/{GCP_PROJECT_ID_HOOK_UNIT_TEST}" - # fmt: off + ( - mock_get_conn.return_value. - projects.return_value. - models.return_value. - create.return_value. - execute.return_value + mock_get_conn.return_value.projects.return_value.models.return_value.create.return_value.execute.return_value ) = model - # fmt: on + create_model_response = self.hook.create_model(model=model, project_id=GCP_PROJECT_ID_HOOK_UNIT_TEST) assert create_model_response == model @@ -1088,15 +909,11 @@ def test_get_model(self, mock_get_conn, mock_project_id): model_name = "test-model" model = {"model": model_name} model_path = f"projects/{GCP_PROJECT_ID_HOOK_UNIT_TEST}/models/{model_name}" - # fmt: off + ( - mock_get_conn.return_value. - projects.return_value. - models.return_value. - get.return_value. - execute.return_value + mock_get_conn.return_value.projects.return_value.models.return_value.get.return_value.execute.return_value ) = model - # fmt: on + get_model_response = self.hook.get_model( model_name=model_name, project_id=GCP_PROJECT_ID_HOOK_UNIT_TEST ) @@ -1119,15 +936,11 @@ def test_delete_model(self, mock_get_conn, mock_project_id): model_name = "test-model" model = {"model": model_name} model_path = f"projects/{GCP_PROJECT_ID_HOOK_UNIT_TEST}/models/{model_name}" - # fmt: off + ( - mock_get_conn.return_value. - projects.return_value. - models.return_value. - delete.return_value. - execute.return_value + mock_get_conn.return_value.projects.return_value.models.return_value.delete.return_value.execute.return_value ) = model - # fmt: on + self.hook.delete_model(model_name=model_name, project_id=GCP_PROJECT_ID_HOOK_UNIT_TEST) mock_get_conn.assert_has_calls( @@ -1160,22 +973,14 @@ def test_create_mlengine_job(self, mock_get_conn, mock_sleep, mock_project_id): "jobId": job_id, "state": "QUEUED", } - # fmt: off + ( - mock_get_conn.return_value. - projects.return_value. - jobs.return_value. - create.return_value. - execute.return_value + mock_get_conn.return_value.projects.return_value.jobs.return_value.create.return_value.execute.return_value ) = job_queued ( - mock_get_conn.return_value. - projects.return_value. - jobs.return_value. - get.return_value. - execute.side_effect + mock_get_conn.return_value.projects.return_value.jobs.return_value.get.return_value.execute.side_effect ) = [job_queued, job_succeeded] - # fmt: on + create_job_response = self.hook.create_job(job=new_job, project_id=GCP_PROJECT_ID_HOOK_UNIT_TEST) assert create_job_response == job_succeeded @@ -1199,15 +1004,11 @@ def test_cancel_mlengine_job(self, mock_get_conn, mock_project_id): job_path = f"projects/{GCP_PROJECT_ID_HOOK_UNIT_TEST}/jobs/{job_id}" job_cancelled = {} - # fmt: off + ( - mock_get_conn.return_value. - projects.return_value. - jobs.return_value. - cancel.return_value. - execute.return_value + mock_get_conn.return_value.projects.return_value.jobs.return_value.cancel.return_value.execute.return_value ) = job_cancelled - # fmt: on + cancel_job_response = self.hook.cancel_job(job_id=job_id, project_id=GCP_PROJECT_ID_HOOK_UNIT_TEST) assert cancel_job_response == job_cancelled diff --git a/tests/providers/google/marketing_platform/hooks/test_analytics.py b/tests/providers/google/marketing_platform/hooks/test_analytics.py index 0f34f9dffdf15..9781d7dd5a44d 100644 --- a/tests/providers/google/marketing_platform/hooks/test_analytics.py +++ b/tests/providers/google/marketing_platform/hooks/test_analytics.py @@ -96,19 +96,16 @@ def test_get_ad_words_links_call(self, get_conn_mock): web_property_id=WEB_PROPERTY_ID, web_property_ad_words_link_id=WEB_PROPERTY_AD_WORDS_LINK_ID, ) - # fmt: off - get_conn_mock.return_value.management.return_value.webPropertyAdWordsLinks.\ - return_value.get.return_value.execute.assert_called_once_with( - num_retries=num_retries - ) - - get_conn_mock.return_value.management.return_value.webPropertyAdWordsLinks.\ - return_value.get.assert_called_once_with( - accountId=ACCOUNT_ID, - webPropertyId=WEB_PROPERTY_ID, - webPropertyAdWordsLinkId=WEB_PROPERTY_AD_WORDS_LINK_ID, - ) - # fmt: on + + get_conn_mock.return_value.management.return_value.webPropertyAdWordsLinks.return_value.get.return_value.execute.assert_called_once_with( + num_retries=num_retries + ) + + get_conn_mock.return_value.management.return_value.webPropertyAdWordsLinks.return_value.get.assert_called_once_with( + accountId=ACCOUNT_ID, + webPropertyId=WEB_PROPERTY_ID, + webPropertyAdWordsLinkId=WEB_PROPERTY_AD_WORDS_LINK_ID, + ) @mock.patch("airflow.providers.google.marketing_platform.hooks.analytics.GoogleAnalyticsHook.get_conn") def test_list_ad_words_links(self, get_conn_mock): @@ -144,15 +141,13 @@ def test_upload_data(self, media_mock, get_conn_mock): ) media_mock.assert_called_once_with(temp_name, mimetype="application/octet-stream", resumable=True) - # fmt: off - get_conn_mock.return_value.management.return_value.uploads.return_value.uploadData.\ - assert_called_once_with( - accountId=ACCOUNT_ID, - webPropertyId=WEB_PROPERTY_ID, - customDataSourceId=DATA_SOURCE, - media_body=media_mock.return_value, - ) - # fmt: on + + get_conn_mock.return_value.management.return_value.uploads.return_value.uploadData.assert_called_once_with( + accountId=ACCOUNT_ID, + webPropertyId=WEB_PROPERTY_ID, + customDataSourceId=DATA_SOURCE, + media_body=media_mock.return_value, + ) @mock.patch("airflow.providers.google.marketing_platform.hooks.analytics.GoogleAnalyticsHook.get_conn") def test_delete_upload_data(self, get_conn_mock): @@ -163,15 +158,13 @@ def test_delete_upload_data(self, get_conn_mock): custom_data_source_id=DATA_SOURCE, delete_request_body=body, ) - # fmt: off - get_conn_mock.return_value.management.return_value.uploads.return_value.deleteUploadData.\ - assert_called_once_with( - accountId=ACCOUNT_ID, - webPropertyId=WEB_PROPERTY_ID, - customDataSourceId=DATA_SOURCE, - body=body, - ) - # fmt: on + + get_conn_mock.return_value.management.return_value.uploads.return_value.deleteUploadData.assert_called_once_with( + accountId=ACCOUNT_ID, + webPropertyId=WEB_PROPERTY_ID, + customDataSourceId=DATA_SOURCE, + body=body, + ) @mock.patch("airflow.providers.google.marketing_platform.hooks.analytics.GoogleAnalyticsHook.get_conn") def test_list_upload(self, get_conn_mock): diff --git a/tests/providers/microsoft/azure/hooks/test_azure_cosmos.py b/tests/providers/microsoft/azure/hooks/test_azure_cosmos.py index aab2fd3ffa74c..ecaca3c0b96b3 100644 --- a/tests/providers/microsoft/azure/hooks/test_azure_cosmos.py +++ b/tests/providers/microsoft/azure/hooks/test_azure_cosmos.py @@ -107,16 +107,11 @@ def test_create_container_default(self, mock_cosmos): @mock.patch("airflow.providers.microsoft.azure.hooks.cosmos.CosmosClient") def test_upsert_document_default(self, mock_cosmos): test_id = str(uuid.uuid4()) - # fmt: off - (mock_cosmos - .return_value - .get_database_client - .return_value - .get_container_client - .return_value - .upsert_item - .return_value) = {'id': test_id} - # fmt: on + + ( + mock_cosmos.return_value.get_database_client.return_value.get_container_client.return_value.upsert_item.return_value + ) = {"id": test_id} + hook = AzureCosmosDBHook(azure_cosmos_conn_id="azure_cosmos_test_key_id") returned_item = hook.upsert_document({"id": test_id}) expected_calls = [ @@ -133,16 +128,11 @@ def test_upsert_document_default(self, mock_cosmos): @mock.patch("airflow.providers.microsoft.azure.hooks.cosmos.CosmosClient") def test_upsert_document(self, mock_cosmos): test_id = str(uuid.uuid4()) - # fmt: off - (mock_cosmos - .return_value - .get_database_client - .return_value - .get_container_client - .return_value - .upsert_item - .return_value) = {'id': test_id} - # fmt: on + + ( + mock_cosmos.return_value.get_database_client.return_value.get_container_client.return_value.upsert_item.return_value + ) = {"id": test_id} + hook = AzureCosmosDBHook(azure_cosmos_conn_id="azure_cosmos_test_key_id") returned_item = hook.upsert_document( {"data1": "somedata"},