Repository navigation
Lint dos exemplos e dos notebooks com as regras de correção - #302
Conversation
A célula de configuração dos oito notebooks trocava o except sem tipo com pass, que engolia também o Ctrl+C e o secret ausente, por except ImportError fora do Colab e pelas três exceções que userdata.get levanta, com a mensagem impressa. Os imports seguem a ordem do isort, a f-string sem placeholder perde o f e o índice sem uso do iterrows vira _.
…rreção (#211) example/ruff.toml troca o select ALL por E, F, B, I, UP, S110 e BLE, sem as regras de estilo de biblioteca; per-file-ignores só tiram regras do ALL. O ruff usa a configuração mais próxima de cada arquivo, então a mesma invocação confere src/ e tests/ pelo pyproject.toml e example/ por esse arquivo. A formatação de example/ fica fora, porque o ruff format reescreveria 9 dos 10 arquivos e desfaria o alinhamento dos comentários.
Bloco de evidênciaBase (
|
| Caso | Esperado | Obtido |
|---|---|---|
except: sem tipo (E722) nos 8 notebooks |
0 no ramo | 0 (8 na base) |
try/except/pass (S110) nos 8 notebooks |
0 no ramo | 0 (8 na base) |
| imports fora de ordem (I001) | 0 | 0 (9 na base) |
| f-string sem placeholder (F541) | 0 | 0 (2 na base) |
| variável de laço sem uso (B007) | 0 | 0 (1 na base) |
ruff check src tests |
inalterado | passa na base e no ramo |
pre-commit dispara em example/ e lê .ipynb |
falha nos arquivos da base | falhou com 4 erros |
ruff format não toca example/ |
hook e CI excluem a pasta | hook Passed com --all-files; CI segue com src tests |
| notebooks continuam válidos | nbformat.validate passa |
passa nos 8 |
tests/test_exemplos.py |
passa | 46 passed |
| exceções do Colab existem | userdata define as três |
SecretNotFoundError, NotebookAccessError, TimeoutException em google/colab/userdata.py do googlecolab/colabtools |
Testes
Mesmo comando nos dois (--extra dev --extra all --extra search-all --extra polars --extra excel --extra codex, --cov-branch):
| passados | pulados | falhas | cobertura | |
|---|---|---|---|---|
| base | 2192 | 0 | 0 | 99,96% |
| ramo | 2192 | 0 | 0 | 99,96% |
As duas linhas descobertas, nos dois, são codex.py:723-724 (except ImportError: pass do openai_codex), que só roda sem o extra codex; o CI combina a cobertura de jobs com e sem ele. O ramo não toca src/ nem tests/. ruff format --check src tests, ty check, vulture e deptry src passam no ramo.
O commit 4e16e50, do simplificador de diff, só encurta um comentário do .pre-commit-config.yaml; depois dele, ruff check src tests example e os hooks ruff-check e ruff-format com --all-files passaram de novo.
Risco: alto por mexer no gate do CI; um lint novo que reprove PRs alheios em example/ se desfaz com o revert do squash.
SHA revisado: 4e16e50
O CI e o pre-commit conferiam só
src/etests/, e os exemplos emexample/(8 notebooks eexample_09_web_search.py), de onde se copia código, ficavam fora do lint. A célula que configura a chave nos oito notebooks usavaexcept:compass, que engole também o Ctrl+C e o secret ausente no Colab.O que muda
example/ruff.tomldá aos exemplos só as regras de correção:E,F,B,I,UP,S110eBLE, comextenddopyproject.tomlpara versão do Python e comprimento de linha. Ficam de fora as regras de estilo de biblioteca (T201,D,ANN,INP001,Q000e o resto doALL).ruff.tomldentro deexample/, e nãoper-file-ignoresnopyproject.toml, como a issue propunha:per-file-ignoressó tira regras doALL, e chegar a este conjunto por eles exigiria listar cada família que fica de fora, com toda família nova do ruff passando a valer nos exemplos sem ninguém escolher. Como o ruff usa a configuração mais próxima de cada arquivo, a mesma invocaçãoruff check src tests exampleconferesrc/etests/pelopyproject.tomleexample/pelo arquivo novo. O comentário no topo doruff.tomlregistra isso.ImportErrorfora do Colab e as três exceções quegoogle.colab.userdata.getlevanta (SecretNotFoundError,NotebookAccessError,TimeoutException, conferidas no código-fonte docolabtools), e imprimem a mensagem. Os imports seguem a ordem do isort, as duas f-strings sem placeholder perdem ofe o índice sem uso doiterrowsvira_.qualityrodaruff check src tests example; o pre-commit dispara também emexample/e o hookruff-checkcasa os notebooks pelo tipojupyter.example/fica fora do CI e do pre-commit: oruff formatreescreveria 9 dos 10 arquivos (298 linhas trocadas, 150 delas com aspas simples e 33 com o alinhamento dos comentários que explicam cada argumento e cada linha de dado).CONTRIBUTING.mdeCHANGELOG.md(emAlterado).O trabalho reaproveita, por cherry-pick conferido hunk a hunk, os commits de um branch local antigo que nunca virou PR; a parte dele que tocava documentação e os notebooks 04 e 08 já tinha entrado pelo #264.
Closes #211