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.
- laiss_docs-1.1.0/CHANGELOG.md +82 -0
- laiss_docs-1.1.0/LICENSE +21 -0
- laiss_docs-1.1.0/MANIFEST.in +22 -0
- laiss_docs-1.1.0/PKG-INFO +594 -0
- laiss_docs-1.1.0/README.md +558 -0
- laiss_docs-1.1.0/examples/anatomia-de-um-token.json +330 -0
- laiss_docs-1.1.0/examples/concerns-e-constraints-rails8.json +666 -0
- laiss_docs-1.1.0/examples/concorrencia-em-rails8.json +945 -0
- laiss_docs-1.1.0/examples/diagramas-e-anexos.json +182 -0
- laiss_docs-1.1.0/examples/estudo-tokenizacao.json +42 -0
- laiss_docs-1.1.0/examples/gerado-por-ia.json +195 -0
- laiss_docs-1.1.0/examples/manual-tecnico.json +32 -0
- laiss_docs-1.1.0/examples/ruby-avancado.json +1763 -0
- laiss_docs-1.1.0/examples/ruby-capitulo-1.json +282 -0
- laiss_docs-1.1.0/laiss_docs.egg-info/PKG-INFO +594 -0
- laiss_docs-1.1.0/laiss_docs.egg-info/SOURCES.txt +50 -0
- laiss_docs-1.1.0/laiss_docs.egg-info/dependency_links.txt +1 -0
- laiss_docs-1.1.0/laiss_docs.egg-info/entry_points.txt +2 -0
- laiss_docs-1.1.0/laiss_docs.egg-info/requires.txt +4 -0
- laiss_docs-1.1.0/laiss_docs.egg-info/top_level.txt +1 -0
- laiss_docs-1.1.0/laissdocs/__init__.py +7 -0
- laiss_docs-1.1.0/laissdocs/__main__.py +8 -0
- laiss_docs-1.1.0/laissdocs/ai.py +318 -0
- laiss_docs-1.1.0/laissdocs/assets/fonts/Inter-Bold.otf +0 -0
- laiss_docs-1.1.0/laissdocs/assets/fonts/Inter-BoldItalic.otf +0 -0
- laiss_docs-1.1.0/laissdocs/assets/fonts/Inter-Italic.otf +0 -0
- laiss_docs-1.1.0/laissdocs/assets/fonts/Inter-Regular.otf +0 -0
- laiss_docs-1.1.0/laissdocs/assets/fonts/JetBrainsMonoNerdFont-Bold.ttf +0 -0
- laiss_docs-1.1.0/laissdocs/assets/fonts/JetBrainsMonoNerdFont-Italic.ttf +0 -0
- laiss_docs-1.1.0/laissdocs/assets/fonts/JetBrainsMonoNerdFont-Regular.ttf +0 -0
- laiss_docs-1.1.0/laissdocs/assets/fonts/LICENSE.txt +11 -0
- laiss_docs-1.1.0/laissdocs/assets/mark.pdf +0 -0
- laiss_docs-1.1.0/laissdocs/build.py +520 -0
- laiss_docs-1.1.0/laissdocs/cli.py +1092 -0
- laiss_docs-1.1.0/laissdocs/config.py +453 -0
- laiss_docs-1.1.0/laissdocs/content.py +796 -0
- laiss_docs-1.1.0/laissdocs/diagrams.py +324 -0
- laiss_docs-1.1.0/laissdocs/document.py +551 -0
- laiss_docs-1.1.0/laissdocs/guide.py +196 -0
- laiss_docs-1.1.0/laissdocs/install.py +524 -0
- laiss_docs-1.1.0/laissdocs/locales.py +201 -0
- laiss_docs-1.1.0/laissdocs/mcp.py +771 -0
- laiss_docs-1.1.0/laissdocs/metrics.py +193 -0
- laiss_docs-1.1.0/laissdocs/paths.py +119 -0
- laiss_docs-1.1.0/laissdocs/py.typed +0 -0
- laiss_docs-1.1.0/laissdocs/tex/cover.tex +78 -0
- laiss_docs-1.1.0/laissdocs/tex/laissdoc.sty +517 -0
- laiss_docs-1.1.0/pyproject.toml +84 -0
- laiss_docs-1.1.0/setup.cfg +4 -0
- laiss_docs-1.1.0/tests/test_content.py +1056 -0
- laiss_docs-1.1.0/tests/test_install.py +370 -0
- 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.
|
laiss_docs-1.1.0/LICENSE
ADDED
|
@@ -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
|