quantilica-cli 0.9.0__tar.gz → 0.9.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. {quantilica_cli-0.9.0 → quantilica_cli-0.9.1}/CHANGELOG.md +15 -0
  2. {quantilica_cli-0.9.0 → quantilica_cli-0.9.1}/PKG-INFO +1 -1
  3. {quantilica_cli-0.9.0 → quantilica_cli-0.9.1}/pyproject.toml +1 -1
  4. {quantilica_cli-0.9.0 → quantilica_cli-0.9.1}/src/quantilica/cli/sdk.py +3 -3
  5. quantilica_cli-0.9.1/tests/test_package_hygiene.py +29 -0
  6. {quantilica_cli-0.9.0 → quantilica_cli-0.9.1}/.githooks/pre-commit +0 -0
  7. {quantilica_cli-0.9.0 → quantilica_cli-0.9.1}/.githooks/pre-push +0 -0
  8. {quantilica_cli-0.9.0 → quantilica_cli-0.9.1}/.github/workflows/publish.yml +0 -0
  9. {quantilica_cli-0.9.0 → quantilica_cli-0.9.1}/.github/workflows/test.yml +0 -0
  10. {quantilica_cli-0.9.0 → quantilica_cli-0.9.1}/.gitignore +0 -0
  11. {quantilica_cli-0.9.0 → quantilica_cli-0.9.1}/LICENSE +0 -0
  12. {quantilica_cli-0.9.0 → quantilica_cli-0.9.1}/README.md +0 -0
  13. {quantilica_cli-0.9.0 → quantilica_cli-0.9.1}/src/quantilica/cli/__init__.py +0 -0
  14. {quantilica_cli-0.9.0 → quantilica_cli-0.9.1}/src/quantilica/cli/cli.py +0 -0
  15. {quantilica_cli-0.9.0 → quantilica_cli-0.9.1}/src/quantilica/cli/health.py +0 -0
  16. {quantilica_cli-0.9.0 → quantilica_cli-0.9.1}/src/quantilica/cli/manifests.py +0 -0
  17. {quantilica_cli-0.9.0 → quantilica_cli-0.9.1}/src/quantilica/cli/progress.py +0 -0
  18. {quantilica_cli-0.9.0 → quantilica_cli-0.9.1}/src/quantilica/cli/sources.py +0 -0
  19. {quantilica_cli-0.9.0 → quantilica_cli-0.9.1}/src/quantilica/cli/ui.py +0 -0
  20. {quantilica_cli-0.9.0 → quantilica_cli-0.9.1}/src/quantilica/py.typed +0 -0
  21. {quantilica_cli-0.9.0 → quantilica_cli-0.9.1}/tests/__init__.py +0 -0
  22. {quantilica_cli-0.9.0 → quantilica_cli-0.9.1}/tests/test_health.py +0 -0
  23. {quantilica_cli-0.9.0 → quantilica_cli-0.9.1}/tests/test_manifests.py +0 -0
  24. {quantilica_cli-0.9.0 → quantilica_cli-0.9.1}/tests/test_sdk.py +0 -0
  25. {quantilica_cli-0.9.0 → quantilica_cli-0.9.1}/tests/test_sdk_onda_a2.py +0 -0
  26. {quantilica_cli-0.9.0 → quantilica_cli-0.9.1}/tests/test_sources.py +0 -0
  27. {quantilica_cli-0.9.0 → quantilica_cli-0.9.1}/tests/test_ui.py +0 -0
@@ -5,6 +5,21 @@ Todas as mudanças notáveis deste projeto serão documentadas neste arquivo.
5
5
  O formato segue [Keep a Changelog](https://keepachangelog.com/pt-BR/1.1.0/),
6
6
  e este projeto adere ao [Semantic Versioning](https://semver.org/lang/pt-BR/).
7
7
 
8
+ ## [0.9.1] - 2026-10-04
9
+
10
+ Correção de escape inválido introduzido na v0.8.0 (Onda A.2 do SDK).
11
+
12
+ ### Corrigido
13
+ - `SyntaxWarning: invalid escape sequence '\['` nas mensagens de `convert`,
14
+ `archive` e `pipeline` do `FetcherApp` (`quantilica/cli/sdk.py`): as três
15
+ f-strings passaram a raw (`rf"..."`), preservando o texto enviado ao Rich
16
+ (`\[analysis]` escapado). O warning aparecia na saída de **todo**
17
+ `quantilica <fonte> --help` e hoje também é `SyntaxError` em Python ≥ 3.14.
18
+ - Novo teste de higiene (`tests/test_package_hygiene.py`) que compila todos os
19
+ módulos do pacote com `SyntaxWarning` convertido em erro, fechando a porta
20
+ para regressões da mesma classe (o ruff não cobre escapes inválidos com o
21
+ conjunto de regras `E,F,I,UP,B`).
22
+
8
23
  ## [0.9.0] - 2026-10-04
9
24
 
10
25
  Registra o `cvm-fetcher` como fonte instalável sob demanda, após a v0.1.0 do
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: quantilica-cli
3
- Version: 0.9.0
3
+ Version: 0.9.1
4
4
  Summary: Unified CLI for Quantilica open data fetchers
5
5
  Author-email: "Komesu, D.K." <daniel@dkko.me>
6
6
  License-Expression: MIT
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "quantilica-cli"
3
- version = "0.9.0"
3
+ version = "0.9.1"
4
4
  description = "Unified CLI for Quantilica open data fetchers"
5
5
  readme = "README.md"
6
6
  authors = [{ name = "Komesu, D.K.", email = "daniel@dkko.me" }]
@@ -360,7 +360,7 @@ class FetcherApp:
360
360
  except ImportError:
361
361
  console.print(
362
362
  f"[red]Erro:[/red] convert requer extras de análise: "
363
- f"pip install {self.name}\[analysis]"
363
+ rf"pip install {self.name}\[analysis]"
364
364
  )
365
365
  raise typer.Exit(1) from None
366
366
  console.print(
@@ -413,7 +413,7 @@ class FetcherApp:
413
413
  except ImportError:
414
414
  console.print(
415
415
  f"[red]Erro:[/red] archive requer extras de análise: "
416
- f"pip install {self.name}\[analysis]"
416
+ rf"pip install {self.name}\[analysis]"
417
417
  )
418
418
  raise typer.Exit(1) from None
419
419
  console.print(f"[green]✓[/green] Arquivo criado em [dim]{output}[/dim].")
@@ -512,7 +512,7 @@ class FetcherApp:
512
512
  except ImportError:
513
513
  console.print(
514
514
  f"[red]Erro:[/red] pipeline (conversão) requer extras de "
515
- f"análise: pip install {self.name}\[analysis]"
515
+ rf"análise: pip install {self.name}\[analysis]"
516
516
  )
517
517
  raise typer.Exit(1) from None
518
518
  console.print(
@@ -0,0 +1,29 @@
1
+ """Guardas de sanidade do pacote `quantilica.cli` (fontes, não testes de CLI)."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import warnings
6
+ from pathlib import Path
7
+
8
+ import quantilica.cli
9
+
10
+
11
+ def test_fontes_sem_invalid_escape_sequence() -> None:
12
+ """Nenhum módulo pode emitir ``SyntaxWarning`` na importação.
13
+
14
+ Um escape inválido em f-string (``"\\["`` fora de raw string) passa
15
+ silenciosamente pelo ruff e pelo import, mas polui a saída de **todo**
16
+ ``quantilica <fonte> --help`` com três linhas de warning — e vira
17
+ ``SyntaxError`` em uma versão futura do Python.
18
+ """
19
+ raiz = Path(quantilica.cli.__file__).parent
20
+ com_warning: list[str] = []
21
+ for caminho in sorted(raiz.rglob("*.py")):
22
+ fonte = caminho.read_text(encoding="utf-8")
23
+ with warnings.catch_warnings():
24
+ warnings.simplefilter("error", SyntaxWarning)
25
+ try:
26
+ compile(fonte, str(caminho), "exec")
27
+ except SyntaxWarning as exc: # pragma: no cover - só em regressão
28
+ com_warning.append(f"{caminho.name}: {exc.messages[0]}")
29
+ assert not com_warning, "SyntaxWarning ao compilar: " + "; ".join(com_warning)
File without changes
File without changes