diff --git a/src/migmose/parsing.py b/src/migmose/parsing.py index 814baa6..60e4adb 100644 --- a/src/migmose/parsing.py +++ b/src/migmose/parsing.py @@ -74,15 +74,26 @@ def get_latest_file(file_list: list[Path]) -> Path: Path: The path of the latest file. Returns None if no valid date is found. """ # Initialize variables to keep track of the latest file and date - latest_file: Path - latest_date: datetime | None = None - - for file_path in file_list: - date, path = _extract_date(file_path) - if latest_date is None or date > latest_date: - latest_file = path - latest_date = date - + if len(file_list) == 1: + logger.info("Using the only file: {}", file_list[0]) + return file_list[0] + try: + # Define the keywords to filter relevant files + keywords = ["konsolidiertelesefassungmitfehlerkorrekturen", "außerordentlicheveröffentlichung"] + + # Find the most recent file based on keywords and date suffixes + latest_file = max( + (path for path in file_list if any(keyword in path.name.lower() for keyword in keywords)), + key=lambda path: ( + int(path.stem.split("_")[-1]), # "gültig von" date + int(path.stem.split("_")[-2]), # "gültig bis" date + ), + ) + + except ValueError as e: + logger.error("Error processing file list: {}", e) + + logger.info("Using the latest file: {}", latest_file) # Return the path of the file with the latest date return latest_file diff --git "a/unittests/test_edi_energy_mirror_repo/edi_energy_de/FV2310/IFTSTAMIG-informatorischeLesefassung2.0e-Au\303\237erordentlicheVer\303\266ffentlichung_99991231_20231001.docx" "b/unittests/test_edi_energy_mirror_repo/edi_energy_de/FV2310/IFTSTAMIG-informatorischeLesefassung2.0e-Au\303\237erordentlicheVer\303\266ffentlichung_20240310_20231001.docx" similarity index 100% rename from "unittests/test_edi_energy_mirror_repo/edi_energy_de/FV2310/IFTSTAMIG-informatorischeLesefassung2.0e-Au\303\237erordentlicheVer\303\266ffentlichung_99991231_20231001.docx" rename to "unittests/test_edi_energy_mirror_repo/edi_energy_de/FV2310/IFTSTAMIG-informatorischeLesefassung2.0e-Au\303\237erordentlicheVer\303\266ffentlichung_20240310_20231001.docx" diff --git "a/unittests/test_edi_energy_mirror_repo/edi_energy_de/FV2310/IFTSTAMIG-informatorischeLesefassung2.0e-Au\303\237erordentlicheVer\303\266ffentlichung_20250403_20240311.docx" "b/unittests/test_edi_energy_mirror_repo/edi_energy_de/FV2310/IFTSTAMIG-informatorischeLesefassung2.0e-Au\303\237erordentlicheVer\303\266ffentlichung_20250403_20240311.docx" new file mode 100644 index 0000000..6100178 Binary files /dev/null and "b/unittests/test_edi_energy_mirror_repo/edi_energy_de/FV2310/IFTSTAMIG-informatorischeLesefassung2.0e-Au\303\237erordentlicheVer\303\266ffentlichung_20250403_20240311.docx" differ diff --git a/unittests/test_edi_energy_mirror_repo/edi_energy_de/FV2310/IFTSTAMIG-informatorischeLesefassung2.0emitFehlerkorrekturenStand11.03.2024_99991231_20240311.docx b/unittests/test_edi_energy_mirror_repo/edi_energy_de/FV2310/IFTSTAMIG-informatorischeLesefassung2.0eKonsolidierteLesefassungmitFehlerkorrekturenStand11.03.2024_20240725_20240311.docx similarity index 100% rename from unittests/test_edi_energy_mirror_repo/edi_energy_de/FV2310/IFTSTAMIG-informatorischeLesefassung2.0emitFehlerkorrekturenStand11.03.2024_99991231_20240311.docx rename to unittests/test_edi_energy_mirror_repo/edi_energy_de/FV2310/IFTSTAMIG-informatorischeLesefassung2.0eKonsolidierteLesefassungmitFehlerkorrekturenStand11.03.2024_20240725_20240311.docx diff --git a/unittests/test_edi_energy_mirror_repo/edi_energy_de/FV2310/IFTSTAMIG-informatorischeLesefassung2.0e_99991231_20231001.docx b/unittests/test_edi_energy_mirror_repo/edi_energy_de/FV2310/IFTSTAMIG-informatorischeLesefassung2.0e_20250403_20231001.docx similarity index 100% rename from unittests/test_edi_energy_mirror_repo/edi_energy_de/FV2310/IFTSTAMIG-informatorischeLesefassung2.0e_99991231_20231001.docx rename to unittests/test_edi_energy_mirror_repo/edi_energy_de/FV2310/IFTSTAMIG-informatorischeLesefassung2.0e_20250403_20231001.docx diff --git "a/unittests/test_edi_energy_mirror_repo/edi_energy_de/FV2310/IFTSTA_MIG_2_0e_info_au\303\237erordentliche_20230929.docx" "b/unittests/test_edi_energy_mirror_repo/edi_energy_de/FV2310/IFTSTA_MIG_2_0e_info_au\303\237erordentliche_20230929.docx" deleted file mode 100644 index aa3068b..0000000 Binary files "a/unittests/test_edi_energy_mirror_repo/edi_energy_de/FV2310/IFTSTA_MIG_2_0e_info_au\303\237erordentliche_20230929.docx" and /dev/null differ diff --git a/unittests/test_parsing.py b/unittests/test_parsing.py index 7ade225..38b66f0 100644 --- a/unittests/test_parsing.py +++ b/unittests/test_parsing.py @@ -57,7 +57,7 @@ def test_find_only_one_file_multiple_docx(self): assert ( file_dict[EdifactFormat.IFTSTA] == path_to_test_FV2310 - / "IFTSTAMIG-informatorischeLesefassung2.0emitFehlerkorrekturenStand11.03.2024_99991231_20240311.docx" + / "IFTSTAMIG-informatorischeLesefassung2.0e-AußerordentlicheVeröffentlichung_20250403_20240311.docx" ) def test_parse_raw_nachrichtenstrukturzeile(self):