Skip to content

Python mínimo sobe para 3.11 - #229

Merged
bdcdo merged 2 commits into
mainfrom
chore/piso-python-3.11
Oct 13, 2026
Merged

bdcdo merged 2 commits into
mainfrom
chore/piso-python-3.11

Conversation

@bdcdo

@bdcdo bdcdo commented Oct 13, 2026 •

Copy link
Copy Markdown
Owner

O pacote declarava requires-python = ">=3.10" e o CI testava em 3.10, versão que saiu de suporte em 01/10/2026 (status das versões). O numpy a partir da 2.3 e o pandas a partir da 3.0 exigem Python 3.11 ou mais, e quem instalava em 3.10 ficava preso a numpy 2.2 e pandas 2.3.

O que muda

  • requires-python, classifiers, alvo do ruff e .python-version passam a 3.11.
  • As matrizes dos jobs unit e codex-provider passam a ['3.11', '3.13'], e o job lowest-direct roda em 3.11.
  • O piso do pyarrow nos extras polars e all sobe de 10 para 10.0.1. A 10.0.0 não publica wheel para 3.11, e a compilação do fonte falha por falta de pkg_resources. Sem isso, o lowest-direct com todos os extras não instala. A 10.0.1 tem wheel até 3.11, e por isso o job fica nessa versão.
  • Com alvo 3.11, o ruff não acusa mais try/except em laço (PERF203), e o noqa de core.py perde esse código. assert_type vem de typing, e o repositório deixa de importar typing_extensions.
  • Badges dos READMEs e da documentação, CONTRIBUTING.md e CHANGELOG.md.

O número da versão não muda.

Verificação local, na árvore mesclada com a main

  • ruff format --check, ruff check, ty check, vulture e deptry src: saída 0.
  • Job unit em 3.11: 1184 passaram, 105 pulados.
  • Job codex-provider em 3.11: 1175 passaram, 135 pulados.
  • lowest-direct em 3.11 sem extras: 1048 passaram, 241 pulados (pandas 2.1.2, numpy 1.26.4, pydantic 2.12.0).
  • lowest-direct em 3.11 com todos os extras: 1183 passaram, 106 pulados (polars 1.0.0, pyarrow 10.0.1).

bdcdo added 2 commits October 13, 2026 15:06
O 3.10 saiu de suporte em outubro de 2026. O piso muda no manifesto, nos
classifiers, no alvo do ruff, no .python-version, nas matrizes do CI e
nos badges.

Com alvo 3.11, o ruff deixa de acusar try/except em laço (PERF203), e o
noqa correspondente sai. assert_type passa a vir de typing.

O job lowest-direct passa a rodar em 3.11. O pyarrow 10.0.0 não tem
wheel para 3.11 e a compilação do fonte falha, então o piso dele nos
extras polars e all sobe para 10.0.1.
O conflito em pyproject.toml fica com o piso novo do polars (1.0) e o
do pyarrow (10.0.1).

assert_type volta para dentro do bloco TYPE_CHECKING, de onde nada do
teste roda. O comentário do lowest-direct passa a dizer que o pyarrow
no piso não tem wheel para 3.12. A entrada do CHANGELOG perde a frase
sobre o pip e ganha a referência ao PR.
@bdcdo

bdcdo commented Oct 13, 2026

Copy link
Copy Markdown
Owner Author

Revisão independente

Um subagente novo revisou o diff no SHA 71a48c7, sem acesso ao raciocínio da implementação, e reproduziu os jobs localmente. Os achados dele foram conferidos na fonte antes de entrar aqui.

Corrigidos em 53e4886

  • Conflito com a main. O Campo do modelo que o Arrow não tipa sai como Object na saída polars #220 entrou depois da branch e subiu polars>=0.20 para polars>=1.0, na linha vizinha à do pyarrow. A main foi mesclada na branch, e os extras polars e all ficam com polars>=1.0 e pyarrow>=10.0.1.
  • Contagem errada no corpo do PR. A linha do extra codex dizia 1282 aprovados. O número veio de um ambiente local que ainda tinha os extras do job unit instalados. Em ambiente limpo e no CI são 1175 aprovados. O corpo foi refeito com os números da árvore mesclada.
  • Frase imprecisa sobre o numpy no corpo do PR. O numpy exige 3.11 a partir da 2.3, e a versão mais recente já exige 3.12. O corpo agora diz a partir de qual versão cada pacote exige 3.11.
  • assert_type importado em tempo de execução. O import voltou para dentro do bloco TYPE_CHECKING, onde o resto do teste já vive.
  • Comentário do lowest-direct incompleto. Com o piso novo, o pyarrow 10.0.1 só tem wheel até 3.11, então 3.11 é a única versão em que o conjunto com extras instala. O comentário passou a dizer isso.
  • Entrada do CHANGELOG. Saiu a frase sobre o comportamento do pip, que era nota de impacto, e entrou a referência ao PR.

Descartado

  • O prefixo chore/ da branch não está na lista do CONTRIBUTING.md. Há três branches chore/ no remoto, e a lista traz os tipos comuns sem fechar o conjunto.

Conferido sem achado

  • Nenhuma declaração atual de 3.10 fora do histórico do CHANGELOG: manifesto, classifiers, workflows, notebooks e documentação.
  • No CI do primeiro push, unit (3.11), codex-provider (3.11) e os dois lowest-direct rodaram em CPython 3.11.
  • O pyarrow 10.0.0 só tem wheels de cp37 a cp310, a instalação em 3.11 falha com ModuleNotFoundError: No module named 'pkg_resources', e não existe release entre a 10.0.0 e a 10.0.1.
  • Recolocar PERF203 no noqa com alvo py311 faz o ruff acusar diretiva sem uso; voltar o alvo a py310 sem ele faz o ruff acusar o try/except.
  • O teste de tipo continua com dente: trocar pd.DataFrame por pl.DataFrame no primeiro assert_type faz o ty check falhar.

Árvore mesclada com a main atual, em 3.11

Job Resultado
quality (5 comandos) saída 0 em todos
unit 1184 aprovados, 105 pulados
codex-provider 1175 aprovados, 135 pulados
lowest-direct sem extras 1048 aprovados, 241 pulados
lowest-direct com extras 1183 aprovados, 106 pulados

@bdcdo
bdcdo merged commit c0cc0ce into main Oct 13, 2026
10 checks passed
@bdcdo
bdcdo deleted the chore/piso-python-3.11 branch October 13, 2026 18:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant