Skip to content

Bug: pipeline_pubmed gera <ArticleIdList/> vazio quando a referência não possui IDs #1214

Description

@Rossi-Luciano

Descrição

Em packtools/sps/formats/pubmed.py, a função xml_pubmed_citations adiciona um elemento <ArticleIdList/> vazio para referências (<ref>) que não possuem IDs (PMID/PMCID/DOI), quando o esperado é não adicionar o elemento nesse caso.

Causa

def xml_pubmed_citations(xml_pubmed, xml_tree):
    ...
    for ref in refs:
        ref_el = ET.Element("Reference")
        citation = ET.Element("Citation")
        citation.text = ref.get("mixed_citation")
        ref_el.append(citation)
        ids = ref.get("citation_ids")
        if ids is not None:
            ref_el.append(add_element_citation_id(ids))
        xml.append(ref_el)

Quando a referência não possui IDs, ref.get("citation_ids") retorna {} (dict vazio), não None. Como a checagem é if ids is not None, o código entra no if e chama add_element_citation_id({}), que retorna um <ArticleIdList/> sem filhos — gerando <Reference><Citation>...</Citation><ArticleIdList/></Reference> em vez de <Reference><Citation>...</Citation></Reference>.

Como reproduzir

.venv/bin/python -m pytest tests/sps/formats/test_pubmed.py::PipelinePubmed::test_xml_pubmed_citations_without_article_list_id -q
AssertionError: '<Art[173 chars]ion><ArticleIdList/></Reference>...' != '<Art[173 chars]ion></Reference>...'

Sugestão de correção

Trocar if ids is not None: por if ids: (checagem de truthiness), para não criar <ArticleIdList> quando o dicionário de IDs estiver vazio.

Contexto

Identificado durante revisão/execução da suíte tests/sps/formats (conversor SciELO → PubMed).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions