Skip to content

Pin setuptools in dev requirements for --require-hashes#1454

Open
Rodrigorm33 wants to merge 1 commit into
okfn-brasil:mainfrom
Rodrigorm33:fix/1431-setuptools-require-hashes
Open

Pin setuptools in dev requirements for --require-hashes#1454
Rodrigorm33 wants to merge 1 commit into
okfn-brasil:mainfrom
Rodrigorm33:fix/1431-setuptools-require-hashes

Conversation

@Rodrigorm33

@Rodrigorm33 Rodrigorm33 commented Jun 15, 2026

Copy link
Copy Markdown

O que isto resolve

Issue #1431: pip install --require-hashes -r data_collection/requirements-dev.txt
falha porque setuptools não está pinado com hash.

Causa

nodeenv (dependência transitiva via pre-commit) declara setuptools como
dependência de runtime. Em --require-hashes, toda dependência resolvida precisa
estar pinada com == e hash. Como setuptools não constava no arquivo, o pip
tentava resolvê-lo solto e abortava:

ERROR: In --require-hashes mode, all requirements must have their versions
pinned with ==. These do not:
    setuptools from .../setuptools-82.0.1-py3-none-any.whl

Correção

  • requirements-dev.in: adiciona setuptools<81. O .txt é gerado do .in
    (make compile), então o pino precisa existir na fonte para sobreviver a
    regenerações. O limite <81 mantém pkg_resources -- que o nodeenv importa
    e que foi removido no setuptools 82.0.0 -- disponível.
  • requirements-dev.txt: adiciona a entrada pinada com hash, na seção das
    dependências consideradas "unsafe", no formato do pip-compile --allow-unsafe
    (resolve para 80.10.2).

Verificação

  • Reprodução em venv limpo (Python 3.12, sem setuptools): antes do fix,
    pip install --dry-run --require-hashes aborta em setuptools; depois, resolve
    (Would install ... setuptools-80.10.2).
  • Arquivo completo sob --require-hashes: o pip passa do check de pinos e segue
    para o download, sem nenhum outro pacote ficar sem hash.
  • pre-commit run nos arquivos alterados: passa.
  • Os hashes vêm dos artefatos oficiais do PyPI (wheel + sdist), conferidos com
    pip hash e com a saída do pip-compile.

A checklist do template cobre PRs de raspadores; este PR é manutenção das
dependências de desenvolvimento, então os itens de spider/coleta não se aplicam.


Disclosure: este PR foi produzido com assistência de IA (Claude Opus 4.8) e revisado por um humano antes da abertura.

nodeenv (pulled in by pre-commit) declares setuptools as a runtime
dependency, but setuptools was not pinned in requirements-dev.txt. Under
pip install --require-hashes, every resolved dependency must be pinned
with == and a hash, so the install aborted on setuptools.

Add setuptools to requirements-dev.in (capped <81 to keep pkg_resources,
which nodeenv imports and which was removed in setuptools 82) and the
matching pinned, hashed entry to requirements-dev.txt, reproducing the
pip-compile --allow-unsafe output (resolves to 80.10.2).

Fixes okfn-brasil#1431

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: novo

Development

Successfully merging this pull request may close these issues.

2 participants