Descrição do problema
FundingGroupValidation.validate_required_award_ids() (packtools/sps/validation/funding_group.py:34) marca
como inválido (valid = False) o caso em que um <award-group> contém apenas <funding-source>, sem
<award-id> (branch elif funding_sources:, linha ~66-70), exigindo indevidamente que <award-id> sempre
acompanhe <funding-source>.
O SPS 1.10, na seção "<funding-group>: Financiamento e Apoio", define a obrigatoriedade de forma
condicional:
"Quando houver uma ou mais instituições declaradas no texto, obrigatoriamente o uso de <funding-source>
deve ocorrer. Quando houver uma ou mais instituições declaradas no texto com número de contrato,
obrigatoriamente o uso de <award-id> deve ocorrer."
Ou seja, <award-id> só é obrigatório quando existe número de contrato mencionado; <award-group> contendo
apenas <funding-source> é uma estrutura válida (os próprios exemplos do SPS demonstram essa possibilidade).
Passos para reproduzir o problema
- Validar um XML com:
<funding-group>
<award-group>
<funding-source>Fundação de Amparo à Pesquisa do Estado de São Paulo (FAPESP)</funding-source>
</award-group>
</funding-group>
- Observar que a validação retorna inválido, pedindo para "marcar o contrato número com
<award-id>", mesmo
sem haver número de contrato a ser declarado.
Comportamento esperado
<award-group> contendo apenas <funding-source> (sem <award-id>) deve ser considerado válido.
- Manter a exigência de
<funding-source> quando houver <award-id> (a validação inversa, já implementada
no branch elif award_ids:, está correta).
Anexos
Trecho citado a partir do arquivo SPS 1.10_pt.pdf (versão 1.10, última atualização em 22/05/2025), seção
"<funding-group>: Financiamento e Apoio".
Ambiente utilizado
N/A (validação de XML via packtools.sps.validation.xml_validator)
Classificação (esforço / risco / relevância)
- Esforço: Baixo - inverter um único branch condicional (
elif funding_sources:).
- Risco: Baixo - mudança isolada e unidirecional (só reduz falsos positivos); a suíte
test_funding_group.py é grande e pode exigir ajuste pontual nas asserções que hoje esperam o comportamento
incorreto.
- Relevância: Alta - declarar apenas a instituição financiadora, sem número de contrato, é um caso comum
de financiamento.
Referências
Descrição do problema
FundingGroupValidation.validate_required_award_ids()(packtools/sps/validation/funding_group.py:34) marcacomo inválido (
valid = False) o caso em que um<award-group>contém apenas<funding-source>, sem<award-id>(branchelif funding_sources:, linha ~66-70), exigindo indevidamente que<award-id>sempreacompanhe
<funding-source>.O SPS 1.10, na seção "
<funding-group>: Financiamento e Apoio", define a obrigatoriedade de formacondicional:
Ou seja,
<award-id>só é obrigatório quando existe número de contrato mencionado;<award-group>contendoapenas
<funding-source>é uma estrutura válida (os próprios exemplos do SPS demonstram essa possibilidade).Passos para reproduzir o problema
<award-id>", mesmosem haver número de contrato a ser declarado.
Comportamento esperado
<award-group>contendo apenas<funding-source>(sem<award-id>) deve ser considerado válido.<funding-source>quando houver<award-id>(a validação inversa, já implementadano branch
elif award_ids:, está correta).Anexos
Trecho citado a partir do arquivo
SPS 1.10_pt.pdf(versão 1.10, última atualização em 22/05/2025), seção"
<funding-group>: Financiamento e Apoio".Ambiente utilizado
N/A (validação de XML via
packtools.sps.validation.xml_validator)Classificação (esforço / risco / relevância)
elif funding_sources:).test_funding_group.pyé grande e pode exigir ajuste pontual nas asserções que hoje esperam o comportamentoincorreto.
de financiamento.
Referências
packtools/sps/validation/funding_group.py(
FundingGroupValidation.validate_required_award_ids)