ai-docs-gen 0.1.4__py3-none-any.whl → 0.1.8__py3-none-any.whl
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.
- ai_docs/generator.py +32 -0
- ai_docs/tokenizer.py +12 -2
- {ai_docs_gen-0.1.4.dist-info → ai_docs_gen-0.1.8.dist-info}/METADATA +32 -2
- {ai_docs_gen-0.1.4.dist-info → ai_docs_gen-0.1.8.dist-info}/RECORD +7 -7
- {ai_docs_gen-0.1.4.dist-info → ai_docs_gen-0.1.8.dist-info}/WHEEL +0 -0
- {ai_docs_gen-0.1.4.dist-info → ai_docs_gen-0.1.8.dist-info}/entry_points.txt +0 -0
- {ai_docs_gen-0.1.4.dist-info → ai_docs_gen-0.1.8.dist-info}/top_level.txt +0 -0
ai_docs/generator.py
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import json
|
|
2
2
|
from datetime import datetime
|
|
3
3
|
import os
|
|
4
|
+
import re
|
|
4
5
|
import shutil
|
|
5
6
|
import subprocess
|
|
6
7
|
from pathlib import Path
|
|
@@ -942,6 +943,7 @@ def generate_docs(
|
|
|
942
943
|
if not mkdocs_bin:
|
|
943
944
|
raise RuntimeError("mkdocs is not installed or not on PATH")
|
|
944
945
|
subprocess.check_call([mkdocs_bin, "build", "-f", "mkdocs.yml"], cwd=output_root)
|
|
946
|
+
_postprocess_mermaid_html(output_root / "ai_docs_site")
|
|
945
947
|
print("[ai-docs] mkdocs: done")
|
|
946
948
|
|
|
947
949
|
# Save cache
|
|
@@ -957,3 +959,33 @@ def generate_docs(
|
|
|
957
959
|
print("[ai-docs] errors summary:")
|
|
958
960
|
for item in errors:
|
|
959
961
|
print(f"[ai-docs] error: {item}")
|
|
962
|
+
|
|
963
|
+
|
|
964
|
+
def _postprocess_mermaid_html(site_dir: Path) -> None:
|
|
965
|
+
if not site_dir.exists():
|
|
966
|
+
return
|
|
967
|
+
|
|
968
|
+
mermaid_div_re = re.compile(r'(<div class="mermaid">)(.*?)(</div>)', re.DOTALL)
|
|
969
|
+
bracket_re = re.compile(r"\\[([^\\]]*)\\]")
|
|
970
|
+
|
|
971
|
+
for path in site_dir.rglob("*.html"):
|
|
972
|
+
text = path.read_text(encoding="utf-8")
|
|
973
|
+
if 'class="mermaid"' not in text:
|
|
974
|
+
continue
|
|
975
|
+
|
|
976
|
+
def _fix_mermaid(match: re.Match) -> str:
|
|
977
|
+
head, body, tail = match.groups()
|
|
978
|
+
body = body.replace(">", ">")
|
|
979
|
+
|
|
980
|
+
def _fix_brackets(bmatch: re.Match) -> str:
|
|
981
|
+
inner = bmatch.group(1).replace("(", " ").replace(")", "")
|
|
982
|
+
inner = re.sub(r"[ \\t]+", " ", inner)
|
|
983
|
+
return f"[{inner}]"
|
|
984
|
+
|
|
985
|
+
body = bracket_re.sub(_fix_brackets, body)
|
|
986
|
+
body = re.sub(r"[ \\t]+", " ", body)
|
|
987
|
+
return f"{head}{body}{tail}"
|
|
988
|
+
|
|
989
|
+
updated = mermaid_div_re.sub(_fix_mermaid, text)
|
|
990
|
+
if updated != text:
|
|
991
|
+
path.write_text(updated, encoding="utf-8")
|
ai_docs/tokenizer.py
CHANGED
|
@@ -3,11 +3,22 @@ from typing import List
|
|
|
3
3
|
import tiktoken
|
|
4
4
|
|
|
5
5
|
|
|
6
|
+
class _ByteEncoding:
|
|
7
|
+
def encode(self, text: str):
|
|
8
|
+
return list(text.encode("utf-8", errors="ignore"))
|
|
9
|
+
|
|
10
|
+
def decode(self, tokens):
|
|
11
|
+
return bytes(tokens).decode("utf-8", errors="ignore")
|
|
12
|
+
|
|
13
|
+
|
|
6
14
|
def get_encoding(model: str):
|
|
7
15
|
try:
|
|
8
16
|
return tiktoken.encoding_for_model(model)
|
|
9
17
|
except KeyError:
|
|
10
|
-
|
|
18
|
+
try:
|
|
19
|
+
return tiktoken.get_encoding("cl100k_base")
|
|
20
|
+
except Exception:
|
|
21
|
+
return _ByteEncoding()
|
|
11
22
|
|
|
12
23
|
|
|
13
24
|
def count_tokens(text: str, model: str) -> int:
|
|
@@ -23,4 +34,3 @@ def chunk_text(text: str, model: str, max_tokens: int) -> List[str]:
|
|
|
23
34
|
chunk = tokens[i:i + max_tokens]
|
|
24
35
|
chunks.append(enc.decode(chunk))
|
|
25
36
|
return chunks
|
|
26
|
-
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ai-docs-gen
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.8
|
|
4
4
|
Summary: CLI-инструмент для генерации технической документации по коду и конфигурациям
|
|
5
5
|
Requires-Python: >=3.8
|
|
6
6
|
Description-Content-Type: text/markdown
|
|
@@ -16,6 +16,8 @@ Requires-Dist: pymdown-extensions
|
|
|
16
16
|
|
|
17
17
|
# ai_docs — генератор технической документации
|
|
18
18
|
|
|
19
|
+
[English version](README_EN.md) | [Русская версия](README.md)
|
|
20
|
+
|
|
19
21
|
## Обзор
|
|
20
22
|
`ai_docs` — CLI‑инструмент для генерации технической документации по коду и конфигурациям.
|
|
21
23
|
Поддерживает локальные папки, локальные git‑проекты и удалённые git‑репозитории.
|
|
@@ -51,7 +53,7 @@ python3 -m venv .venv
|
|
|
51
53
|
pip install -e .
|
|
52
54
|
```
|
|
53
55
|
|
|
54
|
-
2) Настройка
|
|
56
|
+
2) Настройка переменных окружения (пример — `.env.example`):
|
|
55
57
|
```env
|
|
56
58
|
OPENAI_API_KEY=your_api_key_here
|
|
57
59
|
OPENAI_BASE_URL=https://api.openai.com/v1
|
|
@@ -63,6 +65,18 @@ AI_DOCS_THREADS=1
|
|
|
63
65
|
AI_DOCS_LOCAL_SITE=false
|
|
64
66
|
```
|
|
65
67
|
|
|
68
|
+
Если инструмент установлен как пакет, можно задать переменные окружения так:
|
|
69
|
+
```bash
|
|
70
|
+
export OPENAI_API_KEY="your_api_key_here"
|
|
71
|
+
export OPENAI_BASE_URL="https://api.openai.com/v1"
|
|
72
|
+
export OPENAI_MODEL="gpt-4o-mini"
|
|
73
|
+
export OPENAI_MAX_TOKENS="1200"
|
|
74
|
+
export OPENAI_CONTEXT_TOKENS="8192"
|
|
75
|
+
export OPENAI_TEMPERATURE="0.2"
|
|
76
|
+
export AI_DOCS_THREADS="1"
|
|
77
|
+
export AI_DOCS_LOCAL_SITE="false"
|
|
78
|
+
```
|
|
79
|
+
|
|
66
80
|
3) Генерация README и MkDocs:
|
|
67
81
|
```bash
|
|
68
82
|
python -m ai_docs --source .
|
|
@@ -78,6 +92,22 @@ python ai_docs --source .
|
|
|
78
92
|
ai-docs --source .
|
|
79
93
|
```
|
|
80
94
|
|
|
95
|
+
Примечание для Windows:
|
|
96
|
+
- Пути обрабатываются корректно, но внутри всегда нормализуются в формат с `/`.
|
|
97
|
+
- Если используете PowerShell, пример активации venv и переменных окружения:
|
|
98
|
+
```powershell
|
|
99
|
+
python -m venv .venv
|
|
100
|
+
.\\.venv\\Scripts\\Activate.ps1
|
|
101
|
+
$env:OPENAI_API_KEY="your_api_key_here"
|
|
102
|
+
$env:OPENAI_BASE_URL="https://api.openai.com/v1"
|
|
103
|
+
$env:OPENAI_MODEL="gpt-4o-mini"
|
|
104
|
+
$env:OPENAI_MAX_TOKENS="1200"
|
|
105
|
+
$env:OPENAI_CONTEXT_TOKENS="8192"
|
|
106
|
+
$env:OPENAI_TEMPERATURE="0.2"
|
|
107
|
+
$env:AI_DOCS_THREADS="1"
|
|
108
|
+
$env:AI_DOCS_LOCAL_SITE="false"
|
|
109
|
+
```
|
|
110
|
+
|
|
81
111
|
## Примеры использования
|
|
82
112
|
|
|
83
113
|
Локальная папка:
|
|
@@ -4,16 +4,16 @@ ai_docs/cache.py,sha256=Z3Mwg2QEYZNaC6bRyv6Py0FcFDV0d9KnyFiBf-EsyFE,1784
|
|
|
4
4
|
ai_docs/changes.py,sha256=tA6kf79XPiywqWBBfBaqf-upRyowyInsw-BFYOIUAmA,973
|
|
5
5
|
ai_docs/cli.py,sha256=XhZO6b49lYGqefITwu-R57-pN6t5esyARGlcMz7cXAA,3639
|
|
6
6
|
ai_docs/domain.py,sha256=HrbdDw_Qxe1gk7J4dzYN1MHbYXDGY3-Tyr5--LgSjzc,6253
|
|
7
|
-
ai_docs/generator.py,sha256=
|
|
7
|
+
ai_docs/generator.py,sha256=LECWo5Od62wCEHdTXg0qTzMKkP43Sb9TpqdWpdTSk-w,42261
|
|
8
8
|
ai_docs/llm.py,sha256=BCVcMM1X_B_LMEuyLBM6jFNz8jYONikM4pEJVhJ16c0,2633
|
|
9
9
|
ai_docs/mkdocs.py,sha256=Zh23S3T3gTou2TryfLSwDWzWTwDtLYf5kM5eTnLpGek,5243
|
|
10
10
|
ai_docs/scanner.py,sha256=M9K0S_Pb0490csiT4HW41mzD8UfkSb8X0suh6rob2f8,8885
|
|
11
11
|
ai_docs/summary.py,sha256=01cJer00yJnT7p7nKgvPy-H37A3PqHHVeA8RuzkwX8M,10357
|
|
12
|
-
ai_docs/tokenizer.py,sha256=
|
|
12
|
+
ai_docs/tokenizer.py,sha256=oXiE-1G_OiWYbzXmWH1CUSBOhxHaMPosGpCuFLMJTQU,899
|
|
13
13
|
ai_docs/utils.py,sha256=kJKgO2R8ZQa58MBUZK2oEr03wFvVkRaWZYruxxJigGo,993
|
|
14
14
|
ai_docs/assets/mermaid.min.js,sha256=LPe7bNxKbqlto9MkpER9gwDR2nA85fMTEWCGQsD4Ymk,2908475
|
|
15
|
-
ai_docs_gen-0.1.
|
|
16
|
-
ai_docs_gen-0.1.
|
|
17
|
-
ai_docs_gen-0.1.
|
|
18
|
-
ai_docs_gen-0.1.
|
|
19
|
-
ai_docs_gen-0.1.
|
|
15
|
+
ai_docs_gen-0.1.8.dist-info/METADATA,sha256=EKIPGUjtC5ReK17kckU9FWBBQNhzTSRsPQkQjgQvrWw,8925
|
|
16
|
+
ai_docs_gen-0.1.8.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
17
|
+
ai_docs_gen-0.1.8.dist-info/entry_points.txt,sha256=C5tKlnOjrwbPgVbOB_zA8WeFjk05DXsMhq2UgTw5BDk,45
|
|
18
|
+
ai_docs_gen-0.1.8.dist-info/top_level.txt,sha256=Uqf4JT1_bI7m3yV5gs5kuL5Nmws5E2XT3W9yajZck2c,8
|
|
19
|
+
ai_docs_gen-0.1.8.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|