From 0eb1423588d511e3ce5cfb73a972a3fd25f0202d Mon Sep 17 00:00:00 2001 From: rmfranken Date: Mon, 16 Dec 2024 16:24:09 +0100 Subject: [PATCH] fix: DOI from dict, not flat value --- gimie/parsers/cff.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/gimie/parsers/cff.py b/gimie/parsers/cff.py index ef76ad2..7b8d935 100644 --- a/gimie/parsers/cff.py +++ b/gimie/parsers/cff.py @@ -145,9 +145,15 @@ def get_cff_doi(data: bytes) -> Optional[str]: except yaml.scanner.ScannerError: logger.warning("cannot read CITATION.cff, skipped.") return None - try: - doi_url = doi_to_url(cff["doi"]) + identifiers = cff.get("identifiers", []) + doi_identifier = next( + (id for id in identifiers if id.get("type") == "doi"), None + ) + if doi_identifier: + doi_url = doi_to_url(doi_identifier["value"]) + else: + raise KeyError("No DOI found in identifiers") # No doi in cff file except (KeyError, TypeError): logger.warning("CITATION.cff does not contain a 'doi' key.")