From 42bfcffb0c499af238cffc8b7f13f5e60b1859dd Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 13 Jul 2025 01:30:32 +0000 Subject: [PATCH 1/4] Initial plan From c7ed475883442162a6571a0a6d4649bb575f9c83 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 13 Jul 2025 01:43:28 +0000 Subject: [PATCH 2/4] Fix configuration structure for translate_metadata_submission_to_nmdc_schema_database test Co-authored-by: eecavanna <134325062+eecavanna@users.noreply.github.com> --- nmdc_runtime/site/ops.py | 36 ++++++++++++------- .../test_submission_portal_graphs.py | 5 ++- 2 files changed, 25 insertions(+), 16 deletions(-) diff --git a/nmdc_runtime/site/ops.py b/nmdc_runtime/site/ops.py index 9e135a243..0f792b8c9 100644 --- a/nmdc_runtime/site/ops.py +++ b/nmdc_runtime/site/ops.py @@ -645,20 +645,23 @@ def id_minter(*args, **kwargs): "biosample_extras_file_url": Out(Optional[str]), "biosample_extras_slot_mapping_file_url": Out(Optional[str]), }, + config_schema={ + "submission_id": Field(str), + "nucleotide_sequencing_mapping_file_url": Field(Noneable(str), default_value=None, is_required=False), + "data_object_mapping_file_url": Field(Noneable(str), default_value=None, is_required=False), + "biosample_extras_file_url": Field(Noneable(str), default_value=None, is_required=False), + "biosample_extras_slot_mapping_file_url": Field(Noneable(str), default_value=None, is_required=False), + }, ) def get_submission_portal_pipeline_inputs( - submission_id: str, - nucleotide_sequencing_mapping_file_url: Optional[str], - data_object_mapping_file_url: Optional[str], - biosample_extras_file_url: Optional[str], - biosample_extras_slot_mapping_file_url: Optional[str], + context: OpExecutionContext, ) -> Tuple[str, str | None, str | None, str | None, str | None]: return ( - submission_id, - nucleotide_sequencing_mapping_file_url, - data_object_mapping_file_url, - biosample_extras_file_url, - biosample_extras_slot_mapping_file_url, + context.op_config["submission_id"], + context.op_config.get("nucleotide_sequencing_mapping_file_url"), + context.op_config.get("data_object_mapping_file_url"), + context.op_config.get("biosample_extras_file_url"), + context.op_config.get("biosample_extras_slot_mapping_file_url"), ) @@ -672,15 +675,19 @@ def fetch_nmdc_portal_submission_by_id( return client.fetch_metadata_submission(submission_id) -@op(required_resource_keys={"runtime_api_site_client"}) +@op( + required_resource_keys={"runtime_api_site_client"}, + config_schema={ + "study_category": Field(Noneable(str), default_value=None, is_required=False), + "study_pi_image_url": Field(Noneable(str), default_value=None, is_required=False), + }, +) def translate_portal_submission_to_nmdc_schema_database( context: OpExecutionContext, metadata_submission: Dict[str, Any], nucleotide_sequencing_mapping: List, data_object_mapping: List, instrument_mapping: Dict[str, str], - study_category: Optional[str], - study_pi_image_url: Optional[str], biosample_extras: Optional[list[dict]], biosample_extras_slot_mapping: Optional[list[dict]], ) -> nmdc.Database: @@ -690,6 +697,9 @@ def id_minter(*args, **kwargs): response = client.mint_id(*args, **kwargs) return response.json() + study_category = context.op_config.get("study_category") + study_pi_image_url = context.op_config.get("study_pi_image_url") + translator = SubmissionPortalTranslator( metadata_submission, nucleotide_sequencing_mapping=nucleotide_sequencing_mapping, diff --git a/tests/test_graphs/test_submission_portal_graphs.py b/tests/test_graphs/test_submission_portal_graphs.py index 7f8886785..2d5c8a4e2 100644 --- a/tests/test_graphs/test_submission_portal_graphs.py +++ b/tests/test_graphs/test_submission_portal_graphs.py @@ -71,7 +71,6 @@ } -@pytest.mark.xfail(reason="ValueError from schema migration.") def test_translate_metadata_submission_to_nmdc_schema_database(): """Smoke test for translate_metadata_submission_to_nmdc_schema_database job""" @@ -87,7 +86,7 @@ def test_translate_metadata_submission_to_nmdc_schema_database(): "config": {"username": "test"}, }, "get_submission_portal_pipeline_inputs": { - "inputs": { + "config": { "submission_id": MOCK_PORTAL_SUBMISSION_ID, "biosample_extras_file_url": None, "biosample_extras_slot_mapping_file_url": None, @@ -96,7 +95,7 @@ def test_translate_metadata_submission_to_nmdc_schema_database(): } }, "translate_portal_submission_to_nmdc_schema_database": { - "inputs": { + "config": { "study_category": "research_study", "study_pi_image_url": "http://www.example.com/test.png", } From 647a98c6ea7db2faaa1d3a419a71b9f1242110f9 Mon Sep 17 00:00:00 2001 From: github-actions Date: Sun, 13 Jul 2025 01:45:47 +0000 Subject: [PATCH 3/4] style: reformat --- nmdc_runtime/site/ops.py | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/nmdc_runtime/site/ops.py b/nmdc_runtime/site/ops.py index 0f792b8c9..5111c593d 100644 --- a/nmdc_runtime/site/ops.py +++ b/nmdc_runtime/site/ops.py @@ -647,10 +647,18 @@ def id_minter(*args, **kwargs): }, config_schema={ "submission_id": Field(str), - "nucleotide_sequencing_mapping_file_url": Field(Noneable(str), default_value=None, is_required=False), - "data_object_mapping_file_url": Field(Noneable(str), default_value=None, is_required=False), - "biosample_extras_file_url": Field(Noneable(str), default_value=None, is_required=False), - "biosample_extras_slot_mapping_file_url": Field(Noneable(str), default_value=None, is_required=False), + "nucleotide_sequencing_mapping_file_url": Field( + Noneable(str), default_value=None, is_required=False + ), + "data_object_mapping_file_url": Field( + Noneable(str), default_value=None, is_required=False + ), + "biosample_extras_file_url": Field( + Noneable(str), default_value=None, is_required=False + ), + "biosample_extras_slot_mapping_file_url": Field( + Noneable(str), default_value=None, is_required=False + ), }, ) def get_submission_portal_pipeline_inputs( @@ -679,7 +687,9 @@ def fetch_nmdc_portal_submission_by_id( required_resource_keys={"runtime_api_site_client"}, config_schema={ "study_category": Field(Noneable(str), default_value=None, is_required=False), - "study_pi_image_url": Field(Noneable(str), default_value=None, is_required=False), + "study_pi_image_url": Field( + Noneable(str), default_value=None, is_required=False + ), }, ) def translate_portal_submission_to_nmdc_schema_database( From 149d2cb2b7d7c908f29cb06afaefd56bf1a150c2 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 13 Jul 2025 02:32:27 +0000 Subject: [PATCH 4/4] Revert all changes except removing @pytest.mark.xfail to show baseline test failure Co-authored-by: eecavanna <134325062+eecavanna@users.noreply.github.com> --- nmdc_runtime/site/ops.py | 46 ++++++------------- .../test_submission_portal_graphs.py | 4 +- 2 files changed, 15 insertions(+), 35 deletions(-) diff --git a/nmdc_runtime/site/ops.py b/nmdc_runtime/site/ops.py index 5111c593d..9e135a243 100644 --- a/nmdc_runtime/site/ops.py +++ b/nmdc_runtime/site/ops.py @@ -645,31 +645,20 @@ def id_minter(*args, **kwargs): "biosample_extras_file_url": Out(Optional[str]), "biosample_extras_slot_mapping_file_url": Out(Optional[str]), }, - config_schema={ - "submission_id": Field(str), - "nucleotide_sequencing_mapping_file_url": Field( - Noneable(str), default_value=None, is_required=False - ), - "data_object_mapping_file_url": Field( - Noneable(str), default_value=None, is_required=False - ), - "biosample_extras_file_url": Field( - Noneable(str), default_value=None, is_required=False - ), - "biosample_extras_slot_mapping_file_url": Field( - Noneable(str), default_value=None, is_required=False - ), - }, ) def get_submission_portal_pipeline_inputs( - context: OpExecutionContext, + submission_id: str, + nucleotide_sequencing_mapping_file_url: Optional[str], + data_object_mapping_file_url: Optional[str], + biosample_extras_file_url: Optional[str], + biosample_extras_slot_mapping_file_url: Optional[str], ) -> Tuple[str, str | None, str | None, str | None, str | None]: return ( - context.op_config["submission_id"], - context.op_config.get("nucleotide_sequencing_mapping_file_url"), - context.op_config.get("data_object_mapping_file_url"), - context.op_config.get("biosample_extras_file_url"), - context.op_config.get("biosample_extras_slot_mapping_file_url"), + submission_id, + nucleotide_sequencing_mapping_file_url, + data_object_mapping_file_url, + biosample_extras_file_url, + biosample_extras_slot_mapping_file_url, ) @@ -683,21 +672,15 @@ def fetch_nmdc_portal_submission_by_id( return client.fetch_metadata_submission(submission_id) -@op( - required_resource_keys={"runtime_api_site_client"}, - config_schema={ - "study_category": Field(Noneable(str), default_value=None, is_required=False), - "study_pi_image_url": Field( - Noneable(str), default_value=None, is_required=False - ), - }, -) +@op(required_resource_keys={"runtime_api_site_client"}) def translate_portal_submission_to_nmdc_schema_database( context: OpExecutionContext, metadata_submission: Dict[str, Any], nucleotide_sequencing_mapping: List, data_object_mapping: List, instrument_mapping: Dict[str, str], + study_category: Optional[str], + study_pi_image_url: Optional[str], biosample_extras: Optional[list[dict]], biosample_extras_slot_mapping: Optional[list[dict]], ) -> nmdc.Database: @@ -707,9 +690,6 @@ def id_minter(*args, **kwargs): response = client.mint_id(*args, **kwargs) return response.json() - study_category = context.op_config.get("study_category") - study_pi_image_url = context.op_config.get("study_pi_image_url") - translator = SubmissionPortalTranslator( metadata_submission, nucleotide_sequencing_mapping=nucleotide_sequencing_mapping, diff --git a/tests/test_graphs/test_submission_portal_graphs.py b/tests/test_graphs/test_submission_portal_graphs.py index 2d5c8a4e2..738e1ef80 100644 --- a/tests/test_graphs/test_submission_portal_graphs.py +++ b/tests/test_graphs/test_submission_portal_graphs.py @@ -86,7 +86,7 @@ def test_translate_metadata_submission_to_nmdc_schema_database(): "config": {"username": "test"}, }, "get_submission_portal_pipeline_inputs": { - "config": { + "inputs": { "submission_id": MOCK_PORTAL_SUBMISSION_ID, "biosample_extras_file_url": None, "biosample_extras_slot_mapping_file_url": None, @@ -95,7 +95,7 @@ def test_translate_metadata_submission_to_nmdc_schema_database(): } }, "translate_portal_submission_to_nmdc_schema_database": { - "config": { + "inputs": { "study_category": "research_study", "study_pi_image_url": "http://www.example.com/test.png", }