Skip to content

chore(ci): tooling estricto (ruff + mypy + shellcheck + pre-commit) - #4

Merged
dadaz911 merged 2 commits into
masterfrom
chore/ci-tooling
Jun 4, 2026
Merged

chore(ci): tooling estricto (ruff + mypy + shellcheck + pre-commit)#4
dadaz911 merged 2 commits into
masterfrom
chore/ci-tooling

Conversation

@dadaz911

@dadaz911 dadaz911 commented Jun 4, 2026

Copy link
Copy Markdown
Owner

Qué

Introduce el CI que el flujo de trabajo asumía pero no existía (gh pr checks no reportaba nada), endurecido sobre todo el repo.

Componentes

  • .github/workflows/ci.yml — dos jobs en cada push/PR:
    • Python: ruff check + ruff format --check + mypy sobre los 15 .py.
    • Shell: bash -n + shellcheck sobre los 6 .sh.
    • Versiones fijadas (ruff==0.15.15, mypy==2.1.0) → CI y local idénticos.
  • pyproject.toml — config ruff (E,W,F,I,UP,B,C4,SIM; line-length 120) y mypy (ignore-missing-imports, usa runtime).
  • .pre-commit-config.yaml — ruff(+fix)/ruff-format/shellcheck/varios, mismas versiones (pipx install pre-commit && pre-commit install).

Refactor a verde (247 ruff + 34 mypy + 14 shellcheck → 0)

Hecho en commits separados y preservando comportamiento (varios son scripts de producción):

  • 4560d2b — solo mecánico: ruff format (divide one-liners) + autofixes seguros.
  • c94fb71 — manual: except:except Exception:, anotaciones de tipo, assert antes de usar handles de log globales, cd || exit 1 en runners, etc. Con # noqa justificado donde un "fix" cambiaría comportamiento (p. ej. SIM113 en el loop de subida: enumerate arranca en 0 y dispararía un save/log extra en la 1ª iteración).

token_refresher.py (corre en la Pi) quedó limpio solo con formato, sin edición manual.

Verificación

Gate completo en local con exit 0: ruff check . · ruff format --check . · mypy (15 archivos, 0 issues) · shellcheck -e SC1091 · bash -n · py_compile. Este PR debe ser el primero en pasar por los checks.

🤖 Generated with Claude Code

dadaz911 and others added 2 commits June 4, 2026 09:53
…format

Introduce el CI que el flujo de trabajo asumía pero no existía:
- .github/workflows/ci.yml: ruff check + ruff format --check + mypy (todos
  los .py) y bash -n + shellcheck (todos los .sh). Versiones fijadas
  (ruff==0.15.15) para que CI y pre-commit coincidan.
- pyproject.toml: config ruff (E,W,F,I,UP,B,C4,SIM; line-length 120) y mypy
  (ignore-missing-imports, pragmático).
- .pre-commit-config.yaml: ruff(+fix)/ruff-format/shellcheck/varios, mismas versiones.

Este commit aplica SOLO los cambios mecánicos y seguros (semánticos-neutros):
`ruff format` en los 15 .py (divide one-liners E701/E702) + autofixes seguros
(imports sin usar/ordenados, f-strings vacías). Verificado: los 15 compilan;
token_refresher.py (producción) corre idéntico. Los arreglos manuales restantes
(bare-except, mypy, shellcheck) van en commits aparte.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…serving)

Arreglos manuales tras el auto-format, todos neutros en runtime:
- ruff (67→0): E722 bare-except -> `except Exception:`; E501 partidas o
  `# noqa` en strings/URLs no partibles; SIM/C4 simplificaciones equivalentes;
  F841/B007 vars sin uso. `# noqa: SIM113` en el loop de subida (enumerate
  start=0 dispararía save/log en la 1ª iteración) y `# noqa: SIM115` en los
  handles de log globales (abiertos a propósito toda la corrida).
- mypy (34→0): anotaciones mínimas (`set[str]`, `Counter`, `Dict[str, Any]`,
  `TextIO | None`) + `assert ... is not None` antes de usar los log globales.
  `from __future__ import annotations` en los scripts anotados -> seguro en 3.8.
- shellcheck (14→0): SC2164 `cd || exit 1` en runners; SC2155/2162/2295/2034
  en upload_to_onedrive.sh. SC1091 excluido (upload.env es host-local).
- pyproject: quita `python_version` de mypy (usa runtime 3.13); ci fija mypy==2.1.0.

Verificado en local: ruff check + ruff format --check + mypy + shellcheck +
bash -n + py_compile, todos exit 0 sobre el repo completo. token_refresher.py
(producción) intacto salvo formato.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@dadaz911
dadaz911 merged commit 7b367e1 into master Jun 4, 2026
2 checks passed
@dadaz911
dadaz911 deleted the chore/ci-tooling branch June 4, 2026 15:12
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