Descrição do problema
As funções validate_secs e validate_lists lançam TypeError: 'NoneType' object is not iterable quando processam, respectivamente, um elemento <sec> sem <title> e um elemento <list> sem o atributo list-type. Em vez de retornar um resultado de validação estruturado (com response: WARNING/ERROR/CRITICAL), a exceção é propagada e capturada pelo orquestrador de validação como uma exception, não como um issue.
Passos para reproduzir o problema
- Instale o packtools 4.16.5
- Crie um XML SPS mínimo contendo
<sec> sem <title>:
<?xml version="1.0" encoding="UTF-8"?>
<article xmlns:xlink="http://www.w3.org/1999/xlink"
article-type="research-article" xml:lang="pt" dtd-version="1.1">
<front>
<journal-meta>
<journal-id journal-id-type="nlm-ta">Rev Test</journal-id>
<journal-title-group>
<journal-title>Revista de Teste</journal-title>
<abbrev-journal-title abbrev-type="publisher">Rev. Teste</abbrev-journal-title>
</journal-title-group>
<issn pub-type="epub">1234-5678</issn>
<publisher><publisher-name>Publisher</publisher-name></publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.1234/test.2023.001</article-id>
<title-group><article-title>Test</article-title></title-group>
<pub-date publication-format="electronic" date-type="pub">
<year>2023</year><month>01</month><day>01</day>
</pub-date>
<volume>1</volume><elocation-id>e001</elocation-id>
</article-meta>
</front>
<body><sec><p>Texto sem título.</p></sec></body>
<back/>
</article>
- Execute a validação:
from lxml import etree
from packtools.sps.validation.xml_validations import validate_secs
xmltree = etree.fromstring(xml_bytes)
list(validate_secs(xmltree, {}))
- Observe o erro:
TypeError: 'NoneType' object is not iterable
Para reproduzir com validate_lists, substitua <sec> por <list> (sem list-type) na seção <body>.
Comportamento esperado
As funções validate_secs e validate_lists devem retornar um resultado de validação estruturado indicando o problema (ex: response: "ERROR", title: "missing title" para <sec>), sem lançar exceção. O tratamento de atributos ou filhos ausentes deve ser feito internamente com um fallback seguro (ex: verificar if title is None antes de iterar).
Screenshots ou vídeos
N/A
Anexos
XMLs mínimos de reprodução estão descritos na seção Passos para reproduzir acima.
Ambiente utilizado
- packtools 4.16.5
- Python 3.12.3
- Linux (Ubuntu 22.04)
Descrição do problema
As funções
validate_secsevalidate_listslançamTypeError: 'NoneType' object is not iterablequando processam, respectivamente, um elemento<sec>sem<title>e um elemento<list>sem o atributolist-type. Em vez de retornar um resultado de validação estruturado (comresponse: WARNING/ERROR/CRITICAL), a exceção é propagada e capturada pelo orquestrador de validação como uma exception, não como um issue.Passos para reproduzir o problema
<sec>sem<title>:TypeError: 'NoneType' object is not iterablePara reproduzir com
validate_lists, substitua<sec>por<list>(semlist-type) na seção<body>.Comportamento esperado
As funções
validate_secsevalidate_listsdevem retornar um resultado de validação estruturado indicando o problema (ex:response: "ERROR",title: "missing title"para<sec>), sem lançar exceção. O tratamento de atributos ou filhos ausentes deve ser feito internamente com um fallback seguro (ex: verificarif title is Noneantes de iterar).Screenshots ou vídeos
N/A
Anexos
XMLs mínimos de reprodução estão descritos na seção Passos para reproduzir acima.
Ambiente utilizado