From c9303e03e64bb348f23a3b215458ddc5726b5f33 Mon Sep 17 00:00:00 2001 From: amc-corey-cox <69321580+amc-corey-cox@users.noreply.github.com> Date: Tue, 27 Jan 2026 13:00:21 -0600 Subject: [PATCH 1/2] Make output_prefix and output_postfix optional in map_data and Makefile Co-Authored-By: Claude Opus 4.5 --- pipeline.Makefile | 4 ++-- src/dm_bip/map_data/map_data.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pipeline.Makefile b/pipeline.Makefile index 8e33e4d..0f1b861 100644 --- a/pipeline.Makefile +++ b/pipeline.Makefile @@ -362,8 +362,8 @@ $(MAPPING_SUCCESS_SENTINEL): $(SCHEMA_FILE) $(VALIDATION_SUCCESS_SENTINEL) --data_dir $(DM_INPUT_DIR) \ --var_dir $(DM_TRANS_SPEC_DIR) \ --output_dir $(MAPPING_OUTPUT_DIR) \ - --output_prefix $(DM_MAPPING_PREFIX) \ - --output_postfix "$(DM_MAPPING_POSTFIX)" \ + $(if $(DM_MAPPING_PREFIX),--output_prefix $(DM_MAPPING_PREFIX)) \ + $(if $(DM_MAPPING_POSTFIX),--output_postfix "$(DM_MAPPING_POSTFIX)") \ --output_type $(DM_MAP_OUTPUT_TYPE) \ --chunk_size $(DM_MAP_CHUNK_SIZE) @echo "✓ Data mapping complete. Output written to $(MAPPING_OUTPUT_DIR)" diff --git a/src/dm_bip/map_data/map_data.py b/src/dm_bip/map_data/map_data.py index eb6aba3..f354029 100644 --- a/src/dm_bip/map_data/map_data.py +++ b/src/dm_bip/map_data/map_data.py @@ -207,11 +207,11 @@ def main( output_prefix: Annotated[ str, typer.Option(), - ], + ] = "", output_postfix: Annotated[ str, typer.Option(), - ], + ] = "", output_type: Annotated[ StreamFormat, typer.Option(), From 286b7dc38552d52a32386026e56aab0bae8db5b4 Mon Sep 17 00:00:00 2001 From: amc-corey-cox <69321580+amc-corey-cox@users.noreply.github.com> Date: Tue, 27 Jan 2026 13:13:14 -0600 Subject: [PATCH 2/2] Add tests for optional prefix/postfix combinations Co-Authored-By: Claude Opus 4.5 --- tests/unit/test_map_data.py | 57 +++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/tests/unit/test_map_data.py b/tests/unit/test_map_data.py index 5798b1b..2598b0b 100644 --- a/tests/unit/test_map_data.py +++ b/tests/unit/test_map_data.py @@ -486,6 +486,63 @@ def test_process_entities_creates_output_files(linkml_test_setup, temp_dir): assert first_record["id"] == "SUBJ001" +def test_process_entities_no_prefix_no_postfix(linkml_test_setup, temp_dir): + """Test that process_entities works with empty prefix and postfix.""" + entities = ["Person"] + process_entities( + entities=entities, + data_loader=linkml_test_setup["data_loader"], + var_dir=linkml_test_setup["spec_dir"], + source_schemaview=linkml_test_setup["source_sv"], + target_schemaview=linkml_test_setup["target_sv"], + output_dir=temp_dir, + output_prefix="", + output_postfix="", + output_type="jsonl", + chunk_size=10, + ) + output_file = Path(temp_dir) / "Person.jsonl" + assert output_file.exists() + + +def test_process_entities_prefix_only(linkml_test_setup, temp_dir): + """Test that process_entities works with only prefix set.""" + entities = ["Person"] + process_entities( + entities=entities, + data_loader=linkml_test_setup["data_loader"], + var_dir=linkml_test_setup["spec_dir"], + source_schemaview=linkml_test_setup["source_sv"], + target_schemaview=linkml_test_setup["target_sv"], + output_dir=temp_dir, + output_prefix="test", + output_postfix="", + output_type="jsonl", + chunk_size=10, + ) + output_file = Path(temp_dir) / "test-Person.jsonl" + assert output_file.exists() + + +def test_process_entities_postfix_only(linkml_test_setup, temp_dir): + """Test that process_entities works with only postfix set.""" + entities = ["Person"] + process_entities( + entities=entities, + data_loader=linkml_test_setup["data_loader"], + var_dir=linkml_test_setup["spec_dir"], + source_schemaview=linkml_test_setup["source_sv"], + target_schemaview=linkml_test_setup["target_sv"], + output_dir=temp_dir, + output_prefix="", + output_postfix="v1", + output_type="jsonl", + chunk_size=10, + ) + output_file = Path(temp_dir) / "Person-v1.jsonl" + assert output_file.exists() + + def test_process_entities_skips_missing_specs(linkml_test_setup, temp_dir): """Test that process_entities skips entities without spec files.""" # NonexistentEntity has no specs