laiss-docs 1.1.0__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.

Potentially problematic release.


This version of laiss-docs might be problematic. Click here for more details.

Files changed (52) hide show
  1. laiss_docs-1.1.0/CHANGELOG.md +82 -0
  2. laiss_docs-1.1.0/LICENSE +21 -0
  3. laiss_docs-1.1.0/MANIFEST.in +22 -0
  4. laiss_docs-1.1.0/PKG-INFO +594 -0
  5. laiss_docs-1.1.0/README.md +558 -0
  6. laiss_docs-1.1.0/examples/anatomia-de-um-token.json +330 -0
  7. laiss_docs-1.1.0/examples/concerns-e-constraints-rails8.json +666 -0
  8. laiss_docs-1.1.0/examples/concorrencia-em-rails8.json +945 -0
  9. laiss_docs-1.1.0/examples/diagramas-e-anexos.json +182 -0
  10. laiss_docs-1.1.0/examples/estudo-tokenizacao.json +42 -0
  11. laiss_docs-1.1.0/examples/gerado-por-ia.json +195 -0
  12. laiss_docs-1.1.0/examples/manual-tecnico.json +32 -0
  13. laiss_docs-1.1.0/examples/ruby-avancado.json +1763 -0
  14. laiss_docs-1.1.0/examples/ruby-capitulo-1.json +282 -0
  15. laiss_docs-1.1.0/laiss_docs.egg-info/PKG-INFO +594 -0
  16. laiss_docs-1.1.0/laiss_docs.egg-info/SOURCES.txt +50 -0
  17. laiss_docs-1.1.0/laiss_docs.egg-info/dependency_links.txt +1 -0
  18. laiss_docs-1.1.0/laiss_docs.egg-info/entry_points.txt +2 -0
  19. laiss_docs-1.1.0/laiss_docs.egg-info/requires.txt +4 -0
  20. laiss_docs-1.1.0/laiss_docs.egg-info/top_level.txt +1 -0
  21. laiss_docs-1.1.0/laissdocs/__init__.py +7 -0
  22. laiss_docs-1.1.0/laissdocs/__main__.py +8 -0
  23. laiss_docs-1.1.0/laissdocs/ai.py +318 -0
  24. laiss_docs-1.1.0/laissdocs/assets/fonts/Inter-Bold.otf +0 -0
  25. laiss_docs-1.1.0/laissdocs/assets/fonts/Inter-BoldItalic.otf +0 -0
  26. laiss_docs-1.1.0/laissdocs/assets/fonts/Inter-Italic.otf +0 -0
  27. laiss_docs-1.1.0/laissdocs/assets/fonts/Inter-Regular.otf +0 -0
  28. laiss_docs-1.1.0/laissdocs/assets/fonts/JetBrainsMonoNerdFont-Bold.ttf +0 -0
  29. laiss_docs-1.1.0/laissdocs/assets/fonts/JetBrainsMonoNerdFont-Italic.ttf +0 -0
  30. laiss_docs-1.1.0/laissdocs/assets/fonts/JetBrainsMonoNerdFont-Regular.ttf +0 -0
  31. laiss_docs-1.1.0/laissdocs/assets/fonts/LICENSE.txt +11 -0
  32. laiss_docs-1.1.0/laissdocs/assets/mark.pdf +0 -0
  33. laiss_docs-1.1.0/laissdocs/build.py +520 -0
  34. laiss_docs-1.1.0/laissdocs/cli.py +1092 -0
  35. laiss_docs-1.1.0/laissdocs/config.py +453 -0
  36. laiss_docs-1.1.0/laissdocs/content.py +796 -0
  37. laiss_docs-1.1.0/laissdocs/diagrams.py +324 -0
  38. laiss_docs-1.1.0/laissdocs/document.py +551 -0
  39. laiss_docs-1.1.0/laissdocs/guide.py +196 -0
  40. laiss_docs-1.1.0/laissdocs/install.py +524 -0
  41. laiss_docs-1.1.0/laissdocs/locales.py +201 -0
  42. laiss_docs-1.1.0/laissdocs/mcp.py +771 -0
  43. laiss_docs-1.1.0/laissdocs/metrics.py +193 -0
  44. laiss_docs-1.1.0/laissdocs/paths.py +119 -0
  45. laiss_docs-1.1.0/laissdocs/py.typed +0 -0
  46. laiss_docs-1.1.0/laissdocs/tex/cover.tex +78 -0
  47. laiss_docs-1.1.0/laissdocs/tex/laissdoc.sty +517 -0
  48. laiss_docs-1.1.0/pyproject.toml +84 -0
  49. laiss_docs-1.1.0/setup.cfg +4 -0
  50. laiss_docs-1.1.0/tests/test_content.py +1056 -0
  51. laiss_docs-1.1.0/tests/test_install.py +370 -0
  52. laiss_docs-1.1.0/tests/test_laissdocs.py +321 -0
@@ -0,0 +1,82 @@
1
+ # Registo de alterações
2
+
3
+ Formato baseado em [Keep a Changelog](https://keepachangelog.com/pt-PT/1.1.0/),
4
+ versionamento [semântico](https://semver.org/lang/pt/).
5
+
6
+ ## [1.1.0] — 2026-11-06
7
+
8
+ ### Acrescentado
9
+
10
+ - **`laiss-docs deps`**: descobre o que falta no sistema (LuaLaTeX, poppler,
11
+ Graphviz, mermaid-cli) e instala com o gestor da distribuição. Reconhece
12
+ Debian, Arch, Fedora, openSUSE, Alpine, macOS e NixOS. Tem `--dry-run`,
13
+ `--yes`, `--no-optional` e `--keep-going`.
14
+ - **Instalação automática na primeira utilização.** Quando falta alguma coisa
15
+ e há terminal, o `build` pergunta e instala. O resultado fica em
16
+ `~/.local/share/laiss-docs/.deps-ok`, com a versão, para não repetir a
17
+ verificação em cada compilação (poupa ~3 s por build). Apagar o ficheiro
18
+ força nova verificação.
19
+ - **`laissdocs/install.py`**, com a lógica separada do CLI: o plano é uma
20
+ função que descreve, e a execução é outra que corre. É o que torna o
21
+ `--dry-run` verdadeiro em vez de aproximado.
22
+ - **`python -m laissdocs`** funciona.
23
+ - **`install.py` reconhece o gestor de TeX da instalação activa**, não o
24
+ primeiro no `PATH`. Numa máquina com MiKTeX activo e um TinyTeX antigo,
25
+ instalar pelo `tlmgr` errado escrevia numa árvore que o `lualatex` não lê.
26
+ - **`build.missing_tex_files()`**: pergunta ao `kpsewhich` que ficheiros de
27
+ estilo faltam. 0,1 s contra os segundos de compilar uma sonda.
28
+
29
+ ### Alterado
30
+
31
+ - **Empacotamento para PyPI.** Metadados completos (readme, classificadores,
32
+ `requires-python`), `py.typed`, e a versão numa fonte só: o
33
+ `pyproject.toml` lê-a de `laissdocs/__init__.py`.
34
+ - **O `doctor` deixa de compilar uma sonda** quando há `kpsewhich`. A sonda
35
+ continua como recurso para máquinas sem ele.
36
+ - **A estrutura do repositório está documentada por camadas** no README:
37
+ design, conteúdo, estrutura, motor e interface.
38
+
39
+ ### Corrigido
40
+
41
+ - **`\caption` fora do `xltabular`.** Uma tabela com legenda abortava a
42
+ compilação com «\caption outside float», e o documento ficava sem PDF.
43
+ Nunca tinha aparecido porque nenhum exemplo usava legendas em tabelas.
44
+ - **Legenda de tabela duplicada.** O `\endhead` repete-se em cada página e
45
+ levava o `\caption` consigo: uma tabela que atravessava uma página mostrava
46
+ «Tabela 1» duas vezes. Passou para o `\endfirsthead`.
47
+ - **Títulos de secção órfãos.** `\needspace` no `titleformat`: um título
48
+ deixa de ficar sozinho no fundo da página.
49
+ - **`\lstinline` com barras invertidas.** Uma regex inline partia a
50
+ compilação com «Improper alphabetic constant», sem indicar o parágrafo.
51
+ Passa a usar `\codeb`.
52
+ - **`ensure_install` comparava só o tamanho dos ficheiros.** Uma edição ao
53
+ `.sty` que mantivesse os bytes nunca era copiada e o build revertia em
54
+ silêncio. Passa a comparar SHA-256.
55
+ - **`__pycache__` no wheel**: 4 KB por módulo de outra versão de Python,
56
+ excluídos.
57
+ - **Quatro nomes do `TEX_REQUIRED_PACKAGES` não são pacotes instaláveis.**
58
+ `tabularx`, `longtable` e `multicol` vivem dentro de `tools`, e `graphicx`
59
+ dentro de `graphics`. Pedi-los ao `tlmgr` responde «pacote desconhecido».
60
+ Agora instala-se só o que o `kpsewhich` diz que falta.
61
+
62
+ ### Notas
63
+
64
+ - **Sem dependências Python.** A biblioteca padrão chega: o cliente HTTP da
65
+ IA e o protocolo MCP são escritos à mão. A alternativa era arrastar
66
+ `requests` e o SDK do MCP para uma ferramenta que os usa uma vez.
67
+ - **As dependências de sistema não se declaram no `pyproject.toml`** porque o
68
+ pip só instala Python. Um pacote Python que corresse `sudo` na instalação
69
+ seria pior do que um comando explícito.
70
+
71
+ ## [1.0.0] — 2026-11-05
72
+
73
+ Primeira versão empacotada.
74
+
75
+ - Motor de blocos JSON: parágrafos, listas, definições, tabelas, caixas,
76
+ código, citações, figuras, gráficos e referências.
77
+ - Design em `laissdoc.sty`: Inter + JetBrains Mono, paleta, capa, colofão.
78
+ - Cinco idiomas com hifenização e datas próprias.
79
+ - Compilação com três passagens do LuaLaTeX e cinco verificações no PDF.
80
+ - CLI com quinze comandos, todos com `--json`.
81
+ - Servidor MCP com vinte e duas ferramentas, e um guia para agentes.
82
+ - Cliente de IA remota por endpoint compatível com OpenAI.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Laiss Labs
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,22 @@
1
+ # O que entra no sdist, para além do pacote e do que o pyproject declara.
2
+ #
3
+ # O wheel já leva as fontes e os estilos (package-data). Isto é só o arquivo
4
+ # fonte: o que alguém precisa para reconstruir o pacote, correr os testes, e
5
+ # ler o que mudou. Sem o CHANGELOG e os testes, o sdist é um arquivo que não
6
+ # se consegue auditar.
7
+
8
+ include README.md
9
+ include CHANGELOG.md
10
+ include LICENSE
11
+
12
+ # Os testes vão no sdist e não no wheel: quem instala não precisa deles, quem
13
+ # reconstrói precisa de os poder correr.
14
+ recursive-include tests *.py
15
+
16
+ # Os exemplos ensinam o formato do doc.json melhor do que qualquer prosa.
17
+ recursive-include examples *.json
18
+
19
+ # Sem isto, o sdist arrasta o que estiver na pasta no momento do build.
20
+ global-exclude __pycache__/*
21
+ global-exclude *.py[co]
22
+ global-exclude .DS_Store