Skip to content

Aviso de interrupção omite resume=True quando a entrada não é DataFrame - #301

Merged
bdcdo merged 4 commits into
mainfrom
fix/aviso-retomada-entrada-lista
Oct 29, 2026
Merged

bdcdo merged 4 commits into
mainfrom
fix/aviso-retomada-entrada-lista

Conversation

@bdcdo

@bdcdo bdcdo commented Oct 29, 2026

Copy link
Copy Markdown
Owner

Com checkpoint_path, o aviso de execução interrompida (ProviderAbortError, ProviderUsageLimitError) dizia "rode de novo com o mesmo checkpoint_path, ou com resume=True sobre esta saída" para qualquer entrada. Com entrada list ou dict, a saída não traz a coluna de texto, e resume=True sobre ela levanta ValueError, então a segunda via não funciona. O aviso sem checkpoint_path já fazia essa distinção.

O que muda: o aviso só oferece resume=True sobre a saída quando a entrada é DataFrame (pandas ou polars), com ou sem checkpoint_path. Para as demais entradas, com checkpoint_path, a mensagem manda só repetir a chamada com o mesmo arquivo. A condição "a saída traz o texto" passa a ser calculada uma vez e usada nos dois ramos.

Teste novo em tests/test_interrupcao.py fixa o texto inteiro da via de retomada, ancorado no fim da mensagem, nas seis combinações de entrada (list, dict, DataFrame) com e sem checkpoint_path. Na base, as duas combinações de list e dict com checkpoint_path reprovam.

docs/reference/exceptions.md e docs/en/reference/exceptions.md já descrevem o comportamento certo ("com entrada que não é DataFrame, como list, a saída não traz o texto, e só o mesmo checkpoint_path permite retomar"), e ficam como estão.

Closes #277

Com checkpoint_path, o aviso oferecia resume=True sobre a saída também
para entrada list e dict, cuja saída não traz o texto. A via do
resume=True só aparece quando a entrada é DataFrame, pandas ou polars,
como já acontecia no aviso sem checkpoint_path (#277).
@bdcdo

bdcdo commented Oct 29, 2026

Copy link
Copy Markdown
Owner Author

Bloco de evidência

Caso concreto na base (origin/main, ec332656)

Caso mínimo da issue, reduzido à frase de retomada do aviso, com checkpoint_path e batch_size=1, para entrada list e DataFrame (uv run --extra dev python caso.py):

list: Para retomar, rode de novo com o mesmo checkpoint_path, ou com resume=True sobre esta saída.
DataFrame: Para retomar, rode de novo com o mesmo checkpoint_path, ou com resume=True sobre esta saída.

O mesmo caso no ramo (bbbfbcb0)

list: Para retomar, rode de novo com o mesmo checkpoint_path.
DataFrame: Para retomar, rode de novo com o mesmo checkpoint_path, ou com resume=True sobre esta saída.

Casos cobertos

test_aviso_so_oferece_resume_sobre_a_saida_quando_ela_traz_o_texto, texto inteiro ancorado no fim da mensagem:

Entrada checkpoint_path Esperado ("Para retomar, ...") Base Ramo
list sim rode de novo com o mesmo checkpoint_path. reprova (oferece resume=True) passa
dict sim rode de novo com o mesmo checkpoint_path. reprova (oferece resume=True) passa
DataFrame sim rode de novo com o mesmo checkpoint_path, ou com resume=True sobre esta saída. passa passa
list não a entrada não é um DataFrame e a saída não traz o texto, então só um checkpoint_path permite retomar. passa passa
dict não idem passa passa
DataFrame não rode de novo com resume=True sobre esta saída. passa passa

Na base, com o teste novo: 2 failed, 4 passed.

Suíte

Comando: uv run --extra dev --extra all --extra search-all --extra polars --extra excel --extra codex pytest -q -p no:cacheprovider --cov=dataframeit --cov-branch --cov-report=term-missing

passados pulados falhas cobertura
base ec332656 2192 0 0 99,96% (codex.py 723-724)
ramo bbbfbcb0 2198 0 0 99,96% (codex.py 723-724)

As duas linhas descobertas são o except ImportError do import opcional do openai_codex, que não roda com o extra codex instalado; a combinação local de extras não reproduz a cobertura combinada dos jobs do CI, e o mesmo par aparece na base. As linhas tocadas estão cobertas. ruff format --check, ruff check, ty check, vulture e deptry src saem com 0 no ramo.

Risco: baixo, só o texto de um aviso; desfazer com o revert do squash.

SHA revisado: bbbfbcb

@bdcdo

bdcdo commented Oct 29, 2026

Copy link
Copy Markdown
Owner Author

Atualização do bloco de evidência

Passada do simplificador de diff sobre bbbfbcb0: um corte, só no comentário do teste novo em tests/test_interrupcao.py, que repetia o nome do teste e o comentário de core.py; sobrou a frase que explica a âncora $ na regex. Commit d5da258d, sem mudança de código.

Suíte depois do corte (mesmo comando do bloco anterior): 2198 passados, 0 pulados, 0 falhas, cobertura 99,96% com as mesmas codex.py 723-724 da base. ruff format --check e ruff check saem com 0. O resto do bloco anterior vale como está.

SHA revisado: d5da258

@bdcdo
bdcdo merged commit 365e603 into main Oct 29, 2026
13 checks passed
@bdcdo
bdcdo deleted the fix/aviso-retomada-entrada-lista branch October 29, 2026 21:05
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.

Aviso de interrupção com checkpoint_path sugere resume=True sobre a saída também para entrada list, onde isso não funciona

1 participant