From aa3d4f9645e911d16df8f4f2c87917a551d94919 Mon Sep 17 00:00:00 2001 From: Bruno Oliveira Date: Tue, 13 Oct 2026 15:47:05 -0300 Subject: [PATCH 1/3] CI testa em Python 3.14 e o pacote declara suporte MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit As matrizes dos jobs unit e codex-provider ganham o 3.14, e o classifier correspondente entra no manifesto. O 3.15 fica de fora: o ormsgpack, que o langgraph-checkpoint exige, não publica wheel para ele, e a compilação do fonte falha porque o PyO3 0.27.2 só aceita até o 3.14. --- .github/workflows/tests.yml | 4 ++-- CHANGELOG.md | 1 + CONTRIBUTING.md | 2 +- pyproject.toml | 1 + 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 89478015..97d8f911 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -50,7 +50,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ['3.11', '3.13'] + python-version: ['3.11', '3.13', '3.14'] steps: - uses: actions/checkout@v7 @@ -140,7 +140,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ['3.11', '3.13'] + python-version: ['3.11', '3.13', '3.14'] steps: - uses: actions/checkout@v7 diff --git a/CHANGELOG.md b/CHANGELOG.md index 1260cea5..d20629b6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ e este projeto adere ao [Versionamento Semântico](https://semver.org/lang/pt-BR - As exceções `ProviderError`, `ProviderTransientError`, `ProviderOverloadedError`, `ProviderRejectedOutputError`, `ProviderConfigurationError` e `ProviderOutputError` e o `__version__` passam a ser exportados por `dataframeit`. - `ProviderAbortError` e a subclasse `ProviderUsageLimitError`, também exportadas, marcam a falha que impede qualquer linha seguinte. A execução para de despachar linhas, grava o checkpoint e avisa quantas ficaram sem status; a linha que recebeu o erro e as que faltam ficam pendentes para `resume=True`, e as colunas de controle ficam na saída enquanto houver linha pendente. Com `reprocess_columns`, a linha que ficou sem reprocessar mantém os valores anteriores e é marcada em `_error_details`, e as marcas vão ao checkpoint. - No provider `codex`, uma thread sem turno confere na abertura que o runtime resolveu o `model` pedido, e a divergência levanta `ProviderConfigurationError` antes da primeira linha; sem `model`, um aviso diz qual será usado. Um turno reroteado para outro modelo é interrompido e a linha falha. +- O pacote declara suporte a Python 3.14, e o CI roda os testes também nessa versão. ### Alterado diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a673b909..32a21724 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -23,7 +23,7 @@ Os testes não chamam nenhum provider de verdade e não precisam de chave de API 1. Abra uma issue antes de uma mudança grande, para combinar o desenho. 2. Crie uma branch a partir da `main` com o prefixo do tipo de mudança: `feature/`, `fix/`, `docs/` ou `refactor/`. 3. Escreva o teste junto com a mudança. Uma correção de bug vem com o teste que falhava antes dela. -4. Abra o PR contra a `main`. O CI roda lint, testes em Python 3.11 e 3.13, os testes com as versões mínimas das dependências e o build da documentação. +4. Abra o PR contra a `main`. O CI roda lint, testes em Python 3.11, 3.13 e 3.14, os testes com as versões mínimas das dependências e o build da documentação. ## Convenções diff --git a/pyproject.toml b/pyproject.toml index 165e9441..6452e3c3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -44,6 +44,7 @@ classifiers = [ "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", "Topic :: Scientific/Engineering :: Artificial Intelligence", "Topic :: Text Processing :: Linguistic", "Typing :: Typed", From 2e9750823f2445a0a9fc353cde24f7b1bfafa700 Mon Sep 17 00:00:00 2001 From: Bruno Oliveira Date: Tue, 13 Oct 2026 15:47:15 -0300 Subject: [PATCH 2/3] CHANGELOG cita o PR --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d20629b6..fe7c8466 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,7 +13,7 @@ e este projeto adere ao [Versionamento Semântico](https://semver.org/lang/pt-BR - As exceções `ProviderError`, `ProviderTransientError`, `ProviderOverloadedError`, `ProviderRejectedOutputError`, `ProviderConfigurationError` e `ProviderOutputError` e o `__version__` passam a ser exportados por `dataframeit`. - `ProviderAbortError` e a subclasse `ProviderUsageLimitError`, também exportadas, marcam a falha que impede qualquer linha seguinte. A execução para de despachar linhas, grava o checkpoint e avisa quantas ficaram sem status; a linha que recebeu o erro e as que faltam ficam pendentes para `resume=True`, e as colunas de controle ficam na saída enquanto houver linha pendente. Com `reprocess_columns`, a linha que ficou sem reprocessar mantém os valores anteriores e é marcada em `_error_details`, e as marcas vão ao checkpoint. - No provider `codex`, uma thread sem turno confere na abertura que o runtime resolveu o `model` pedido, e a divergência levanta `ProviderConfigurationError` antes da primeira linha; sem `model`, um aviso diz qual será usado. Um turno reroteado para outro modelo é interrompido e a linha falha. -- O pacote declara suporte a Python 3.14, e o CI roda os testes também nessa versão. +- O pacote declara suporte a Python 3.14, e o CI roda os testes também nessa versão (#231). ### Alterado From 17afac849c3f43a6f1f14fd929d81b14226fb9b9 Mon Sep 17 00:00:00 2001 From: Bruno Oliveira Date: Tue, 13 Oct 2026 16:06:11 -0300 Subject: [PATCH 3/3] =?UTF-8?q?Coment=C3=A1rio=20do=20job=20coverage=20des?= =?UTF-8?q?creve=20a=20matriz=20atual?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit O comentário dizia duas versões de Python. Passa a dizer que o limite de 100% vale para a soma das versões, e por quê: no 3.14 sozinho a cobertura de utils.py fica em 99%. --- .github/workflows/tests.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 97d8f911..581583b3 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -171,7 +171,10 @@ jobs: if-no-files-found: error # Cobertura de ramos de src/dataframeit somada dos jobs unit e codex-provider, - # nas duas versões de Python. O fail_under = 100 do pyproject.toml vale aqui. + # em todas as versões da matriz. O fail_under = 100 do pyproject.toml vale + # para a soma: a partir do 3.14, typing.Union e types.UnionType são o mesmo + # objeto, e os ramos de utils.py que os distinguem só rodam nas versões + # anteriores. coverage: needs: [unit, codex-provider] runs-on: ubuntu-latest