Conversation
Co-authored-by: robertatakenaka <505143+robertatakenaka@users.noreply.github.com>
Co-authored-by: robertatakenaka <505143+robertatakenaka@users.noreply.github.com>
Rossi-Luciano
left a comment
There was a problem hiding this comment.
Adicionar as validações criadas para <list> no orquestrador:
- packtools/sps/validation/xml_validations.py
- packtools/sps/validation/xml_validator.py
|
@copilot Adicionar as validações criadas para no orquestrador: packtools/sps/validation/xml_validations.py |
…_validator.py) Co-authored-by: robertatakenaka <505143+robertatakenaka@users.noreply.github.com>
Done in b07aba4. Added:
Done in b07aba4. The list validations are now integrated into both orchestrators following the same pattern as |
<list>
There was a problem hiding this comment.
Pull request overview
This PR implements validation rules for the <list> XML element per SPS 1.10 specification, covering 6 rules: @list-type presence/value, minimum list items, label absence in list-items, empty list-item detection, and title recommendation.
Changes:
- New model (
packtools/sps/models/list.py) and validation (packtools/sps/validation/list.py) modules for<list>element - Integration into the validation orchestrator (
xml_validations.py,xml_validator.py) and configurable rules (list_rules.json) - Test suite with 11 test cases covering valid/invalid scenarios
Reviewed changes
Copilot reviewed 6 out of 7 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| packtools/sps/models/list.py | Model for extracting list element data from XML |
| packtools/sps/validation/list.py | Six validation rules for <list> elements |
| packtools/sps/validation_rules/list_rules.json | Default rule configuration (error levels, allowed types) |
| packtools/sps/validation/xml_validations.py | validate_lists() function added to orchestrator |
| packtools/sps/validation/xml_validator.py | "list" group registered in validation pipeline |
| tests/sps/validation/test_list.py | 11 unit tests for list validation |
| .gitignore | Minor trailing slash fix |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| """ | ||
| title = self.data.get("title") | ||
| has_title = title is not None and title.strip() != "" | ||
| is_valid = True # This is just a recommendation, not a strict requirement |
O que esse PR faz?
Implementa validações completas para o elemento
<list>conforme especificação SPS 1.10, atingindo 70% de conformidade (7 de 10 regras). O sistema agora valida presença e valores do atributo@list-type, quantidade mínima de itens, e recomenda boas práticas de acessibilidade. As validações foram integradas ao orquestrador de validações do packtools.Regras implementadas:
@list-type(CRITICAL), valores permitidos (ERROR), mínimo 2<list-item>(ERROR), ausência de<label>(WARNING)<list-item>(WARNING), recomendação de<title>(INFO)Valores permitidos para
@list-type:order,bullet,alpha-lower,alpha-upper,roman-lower,roman-upper,simpleOnde a revisão poderia começar?
packtools/sps/validation/list.py- Lógica de validação (6 regras)packtools/sps/models/list.py- Modelo de extração de dadospacktools/sps/validation_rules/list_rules.json- Configuração de níveis de erropacktools/sps/validation/xml_validations.py- Funçãovalidate_lists()adicionada ao orquestradorpacktools/sps/validation/xml_validator.py- Grupo"list"adicionado ao pipeline de validaçãotests/sps/validation/test_list.py- Suite de testes (11 testes)Como este poderia ser testado manualmente?
Testando via orquestrador:
Execute os testes unitários:
python -m unittest tests.sps.validation.test_listAlgum cenário de contexto que queira dar?
Arquitetura: Segue padrão existente de
fig.pyetablewrap.py. O modeloArticleListsagrega listas de article, sub-articles translation e non-translation. Validações são independentes por lista, suportando aninhamento.Integração no orquestrador: A função
validate_lists()foi adicionada emxml_validations.pye o grupo"list"foi registrado emvalidate_xml_content()emxml_validator.py, seguindo o mesmo padrão defig,table-wrape demais elementos. As regras configuráveis foram extraídas parapacktools/sps/validation_rules/list_rules.json.Acessibilidade: A regra sobre
<label>é WARNING (não ERROR) porque o atributo@list-typegera marcadores automaticamente - mais acessível para screen readers.Listas aninhadas: Validadas independentemente. Uma lista
ordercontendo listabulletresulta em 2 conjuntos de validações.Quais são tickets relevantes?
TK #1090
Referências
packtools/sps/validation/fig.py,packtools/sps/models/tablewrap.pyOriginal prompt
This section details on the original issue you should resolve
<issue_title>Criar validações para o elemento </issue_title>
<issue_description>## Objetivo
Implementar validações para o elemento
<list>conforme a especificação SPS 1.10, aumentando a conformidade de X% para 70% (7 de 10 regras).Nota: Algumas validações para
<list>podem já estar parcialmente implementadas no repositório. Este Issue visa reavaliar, complementar e garantir cobertura completa das regras SPS 1.10.Contexto
O elemento
<list>identifica listas com dois ou mais itens no documento. Validações corretas garantem acessibilidade através do uso adequado do atributo@list-typeao invés de<label>, presença de elementos mínimos necessários, e uso correto de valores permitidos para tipos de lista.Conformidade atual: X de 10 regras implementadas (X%)
Meta após implementação: 7 de 10 regras (70%)
Documentação SPS
Referência oficial: https://docs.google.com/document/d/1GTv4Inc2LS_AXY-ToHT3HmO66UT0VAHWJNOIqzBNSgA/edit?tab=t.0#heading=h.list
Regras principais conforme SPS 1.10:
Atributo obrigatório:
@list-typeé obrigatório em todos os<list>Valores permitidos para
@list-type:order- Lista ordenada com números (1, 2, 3...)bullet- Lista desordenada com símbolos (•, -, etc.)alpha-lower- Lista ordenada alfabética minúscula (a, b, c...)alpha-upper- Lista ordenada alfabética maiúscula (A, B, C...)roman-lower- Lista ordenada romana minúscula (i, ii, iii...)roman-upper- Lista ordenada romana maiúscula (I, II, III...)simple- Lista simples sem prefixoEstrutura mínima:
<list>deve conter pelo menos dois<list-item>Elementos permitidos:
<title>(opcional, mas recomendado quando disponível)<list-item>(obrigatório, mínimo 2)Acessibilidade:
<label>dentro de<list-item>para rótulos@list-typegera automaticamente os prefixos/rótulos<label>é menos acessível e menos legível por máquinaListas aninhadas:
<list>dentro de<list-item>Regras a Implementar
P0 – Críticas (implementar obrigatoriamente)
@list-type@list-typeé obrigatório em<list>@list-type@list-typedeve estar na lista de valores permitidos<list-item><list>deve conter pelo menos dois<list-item><label>em<list-item><label>em<list-item>(o atributo@list-typegera rótulos automaticamente)P1 – Importantes (implementar se possível)
<list-item>tem conteúdo<list-item>deve conter pelo menos um elemento filho (tipicamente<p>)<title>quando apropriado<title>P2 – Futuras (fora do escopo deste Issue)
<list-item>contém<p>ao invés de texto diretoArquivos a Criar/Modificar
Avaliar existentes (podem ter validações parciais):
packtools/sps/models/list.pyou similar – Verificar se modelo existepacktools/sps/validation/list.py– Verificar validações existentespacktools/sps/validation/rules/list_rules.jsonou similar – Verificar configuraçãoCriar (se não existirem):
packtools/sps/models/list.py– Modelo de extração de dadospacktools/sps/validation/list.py– Validaçõespacktools/sps/validation/rules/list_rules.json– Configuração de níveis de errotests/sps/validation/test_list.py– Testes unitáriosReferenciar (implementações similares):
packtools/sps/validation/fig.py– Validação de atributos obrigatóriospacktools/sps/validation/utils.py– Funções auxiliares (build_response)Exemplos de XML
XML Válido (deve passar sem erros):