chore: sincroniza bounds de setup.py/tox.ini com o que foi testado (fase 8, #1251) - #1287
Open
Rossi-Luciano wants to merge 1 commit into
Open
Conversation
…ase 8, scieloorg#1251) Fase 8, ultima da estrategia de atualizacao de dependencias: sincroniza os pisos soltos de setup.py e tox.ini com as versoes ja validadas nas fases 1-7, e corrige um bug real na descoberta de testes do tox.ini. ## setup.py INSTALL_REQUIRES atualizado para os pisos testados: aiohttp>=3.14.3, langcodes>=3.5.1, Pillow>=12.3.0 (antes sem NENHUM piso), requests >=2.34.2, python-docx>=1.2.0, tenacity>=8.5.0. TESTS_REQUIRE: python-magic>=0.4.27 (antes sem piso). lxml (fase 4, PR scieloorg#1283) e charset-normalizer em TESTS_REQUIRE (fase 5, PR scieloorg#1284) NAO foram tocados aqui de proposito -- ja tem PR proprio em andamento, evita conflito/duplicacao. ## tox.ini - Fator lxml492 mantido (tambem pertence ao scieloorg#1283). - charset-normalizer<3.0 -> charset-normalizer (sem cap), mesma correcao da fase 5 que faltou aplicar em tox.ini na epoca. - scielo_scholarly_data fixado em @v0.1.4, mesma correcao da fase 7 (PR scieloorg#1286) que faltou aplicar em tox.ini na epoca. ## Correcao real encontrada durante a investigacao (nao e sobre Pillow) Investigando a fundo antes de aplicar a mudanca, descobri que a premissa que eu vinha carregando desde a fase 1 -- "Pillow sem piso em setup.py e a causa raiz das falhas do tox" -- estava ERRADA. Comparando a lista completa de falhas do tox com o baseline do pytest, elas sao exatamente as mesmas 40 falhas pre-existentes (ja documentadas na scieloorg#1276), so contadas de forma diferente entre pytest e unittest. A causa real dos "23 failures + 19 errors" (42, nao 40) e um bug separado, sem relacao com nenhuma dependencia: "python -m unittest -vvv" sem argumentos faz descoberta ampla a partir da raiz do projeto e tenta importar packtools/sps/sps_versions/sps-1.9 e sps-1.10 (pacotes de dados de configuracao legitimos, com hifen no nome) como se fossem modulos de teste, gerando 2 ERROR espurios (unittest.loader._FailedTest / ModuleNotFoundError). Corrigido trocando o comando para "python -m unittest discover -s tests -t . -vvv", restringindo a descoberta ao diretorio tests/ (o que "python setup.py test" ja fazia antes, via test_suite='tests' em setup.py -- esse comportamento se perdeu na migracao mencionada no comentario ao lado do comando antigo). ## Validacao Rodei o tox completo (nao so unittest local) antes e depois da correcao do comando: - Antes: Ran 5975 tests, failures=23, errors=19 (incluindo os 2 ERROR espurios do sps-1). - Depois: Ran 5973 tests, failures=23, errors=17 -- exatamente 40 no total, identico ao baseline do pytest (40 failed, 5973 passed, 30 skipped). Zero ModuleNotFoundError para sps_versions.
Open
16 tasks
This was referenced Aug 17, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
O que esse PR faz?
Fase 8, última da estratégia de atualização de dependências definida na issue #1251: sincroniza os pisos soltos de
setup.pyetox.inicom as versões já validadas nas fases 1-7, e corrige um bug real na descoberta de testes dotox.ini.setup.pyINSTALL_REQUIRESatualizado para os pisos testados:aiohttp>=3.14.3,langcodes>=3.5.1,Pillow>=12.3.0(antes sem nenhum piso),requests>=2.34.2,python-docx>=1.2.0,tenacity>=8.5.0.TESTS_REQUIRE:python-magic>=0.4.27(antes sem piso).lxml(fase 4, #1283) echarset-normalizeremTESTS_REQUIRE(fase 5, #1284) não foram tocados aqui de propósito: já têm PR próprio em andamento, evita conflito/duplicação.tox.inilxml492mantido (também pertence ao fix(security): bump lxml para 6.1.1, corrige XXE de leitura de arquivo local (fase 4, #1251) #1283).charset-normalizer<3.0→charset-normalizer(sem cap), mesma correção da fase 5 que faltou aplicar emtox.inina época.scielo_scholarly_datafixado em@v0.1.4, mesma correção da fase 7 (chore: fixa scielo_scholarly_data na tag v0.1.4 (fase 7, #1251) #1286) que faltou aplicar emtox.inina época.Correção real encontrada durante a investigação (não é sobre
Pillow)Investigando a fundo antes de aplicar a mudança, descobri que a premissa que eu vinha carregando desde a fase 1, de que "
Pillowsem piso emsetup.pyé a causa raiz das falhas dotox", estava errada. Comparei a lista completa de falhas dotoxcom o baseline dopytest: são exatamente as mesmas 40 falhas pré-existentes (já documentadas na #1276), só contadas de forma diferente entrepytesteunittest.A causa real dos "23 failures + 19 errors" (42, não 40) é um bug separado, sem relação com nenhuma dependência:
python -m unittest -vvvsem argumentos faz descoberta ampla a partir da raiz do projeto e tenta importarpacktools/sps/sps_versions/sps-1.9esps-1.10(pacotes de dados de configuração legítimos, com hífen no nome) como se fossem módulos de teste, gerando 2ERRORespúrios (unittest.loader._FailedTest/ModuleNotFoundError).Corrigido trocando o comando para
python -m unittest discover -s tests -t . -vvv, restringindo a descoberta ao diretóriotests/(o quepython setup.py testjá fazia antes, viatest_suite='tests'emsetup.py; esse comportamento se perdeu na migração mencionada no comentário ao lado do comando antigo).Onde a revisão poderia começar?
tox.ini, o comentário explicando o fix do comandocommands=.setup.py, os pisos de versão atualizados.Como este poderia ser testado manualmente?
Antes desta correção:
Ran 5975 tests,failures=23, errors=19. Depois:Ran 5973 tests,failures=23, errors=17(40 no total), idêntico ao baseline dopytest(40 failed, 5973 passed, 30 skipped), sem nenhumModuleNotFoundErrorparasps_versions.Algum cenário de contexto que queira dar?
Independente das fases 1-7. Rodei o
toxcompleto (não sóunittestlocal) antes e depois da correção do comando para confirmar a mudança de comportamento real, não só uma amostra.Esse achado corrige uma suposição que repeti nos corpos dos PRs #1280 a #1284 (que o
toxmostrava mais falhas por causa doPillowsem piso). Não é verdade: otoxsempre mostrou exatamente as mesmas 40 falhas pré-existentes da #1276, só que contadas com granularidade diferente pelounittest. Peço desculpa pela imprecisão nos PRs anteriores; a causa real era este bug isolado de descoberta de testes, agora corrigido.Screenshots
N/A (mudança de configuração de build/teste, sem interface).
Quais são os tickets relevantes?
Parte de #1251 (fase 8, última da estratégia de atualização de dependências).
Referências
Estratégia priorizada descrita nos comentários de progresso da issue #1251.
Segurança da informação (NSI.04)
Este PR manipula dados sensíveis ou pessoais (LGPD)?
Este PR altera autenticação, autorização, controle de acesso ou gerenciamento de sessão?
Este PR introduz, atualiza ou remove dependências de terceiros?
Sim — as novas dependências foram verificadas no SBOM/Trivy sem vulnerabilidades críticas/altas em aberto?
Este repositório não usa Trivy/SBOM (é biblioteca, não serviço containerizado, conforme
SECURITY_ADHERENCE.mdseção 3). O gate real de dependências é o Snyk, que roda automaticamente neste PR. Este PR não muda nenhuma versão de dependência de fato instalada (só declara pisos emsetup.py/tox.inique já foram validados e verificados nas fases 1-7).Não
Este PR foi validado pelo pipeline de segurança (SonarQube / Trivy)?
SECURITY_ADHERENCE.mdseção 3). Os gates automáticos reais (Snyk e GitGuardian) rodam neste PR.Este PR concatena, monta ou executa comandos SQL, HTML ou JavaScript a partir de entrada externa?
Este PR expõe novos endpoints, telas ou serviços?
Algum segredo, senha, chave ou token está sendo adicionado ao código-fonte?