diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 89478015..581583b3 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 @@ -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 diff --git a/CHANGELOG.md b/CHANGELOG.md index 1260cea5..fe7c8466 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 (#231). ### 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",