docwright 0.1.0__tar.gz → 0.1.2__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 (40) hide show
  1. {docwright-0.1.0 → docwright-0.1.2}/PKG-INFO +22 -22
  2. {docwright-0.1.0 → docwright-0.1.2}/README.md +19 -19
  3. {docwright-0.1.0/ai_docgen → docwright-0.1.2/docwright}/cli.py +8 -8
  4. {docwright-0.1.0/ai_docgen → docwright-0.1.2/docwright}/engine.py +6 -6
  5. {docwright-0.1.0/ai_docgen → docwright-0.1.2/docwright}/outputs/direct.py +1 -1
  6. {docwright-0.1.0/ai_docgen → docwright-0.1.2/docwright}/outputs/factory.py +4 -4
  7. {docwright-0.1.0/ai_docgen → docwright-0.1.2/docwright}/outputs/pull_request.py +2 -2
  8. {docwright-0.1.0/ai_docgen → docwright-0.1.2/docwright}/providers/claude.py +1 -1
  9. {docwright-0.1.0/ai_docgen → docwright-0.1.2/docwright}/providers/factory.py +5 -5
  10. {docwright-0.1.0/ai_docgen → docwright-0.1.2/docwright}/providers/ollama.py +1 -1
  11. {docwright-0.1.0/ai_docgen → docwright-0.1.2/docwright}/providers/openai.py +1 -1
  12. {docwright-0.1.0/ai_docgen → docwright-0.1.2/docwright}/reporters/html.py +1 -1
  13. {docwright-0.1.0/ai_docgen → docwright-0.1.2/docwright}/reporters/terminal.py +1 -1
  14. {docwright-0.1.0 → docwright-0.1.2}/pyproject.toml +5 -5
  15. {docwright-0.1.0 → docwright-0.1.2}/LICENSE +0 -0
  16. {docwright-0.1.0/ai_docgen → docwright-0.1.2/docwright}/__init__.py +0 -0
  17. {docwright-0.1.0/ai_docgen → docwright-0.1.2/docwright}/analyzer.py +0 -0
  18. {docwright-0.1.0/ai_docgen → docwright-0.1.2/docwright}/built_in_templates/__init__.py +0 -0
  19. {docwright-0.1.0/ai_docgen → docwright-0.1.2/docwright}/built_in_templates/readme/__init__.py +0 -0
  20. {docwright-0.1.0/ai_docgen → docwright-0.1.2/docwright}/built_in_templates/readme/default.md.j2 +0 -0
  21. {docwright-0.1.0/ai_docgen → docwright-0.1.2/docwright}/built_in_templates/wiki/__init__.py +0 -0
  22. {docwright-0.1.0/ai_docgen → docwright-0.1.2/docwright}/built_in_templates/wiki/adr.md.j2 +0 -0
  23. {docwright-0.1.0/ai_docgen → docwright-0.1.2/docwright}/built_in_templates/wiki/api-contracts.md.j2 +0 -0
  24. {docwright-0.1.0/ai_docgen → docwright-0.1.2/docwright}/built_in_templates/wiki/architecture.md.j2 +0 -0
  25. {docwright-0.1.0/ai_docgen → docwright-0.1.2/docwright}/built_in_templates/wiki/data-model.md.j2 +0 -0
  26. {docwright-0.1.0/ai_docgen → docwright-0.1.2/docwright}/built_in_templates/wiki/db-schema.md.j2 +0 -0
  27. {docwright-0.1.0/ai_docgen → docwright-0.1.2/docwright}/built_in_templates/wiki/development-guide.md.j2 +0 -0
  28. {docwright-0.1.0/ai_docgen → docwright-0.1.2/docwright}/built_in_templates/wiki/integrations.md.j2 +0 -0
  29. {docwright-0.1.0/ai_docgen → docwright-0.1.2/docwright}/built_in_templates/wiki/operations.md.j2 +0 -0
  30. {docwright-0.1.0/ai_docgen → docwright-0.1.2/docwright}/built_in_templates/wiki/security.md.j2 +0 -0
  31. {docwright-0.1.0/ai_docgen → docwright-0.1.2/docwright}/built_in_templates/wiki/troubleshooting.md.j2 +0 -0
  32. {docwright-0.1.0/ai_docgen → docwright-0.1.2/docwright}/config.py +0 -0
  33. {docwright-0.1.0/ai_docgen → docwright-0.1.2/docwright}/outputs/__init__.py +0 -0
  34. {docwright-0.1.0/ai_docgen → docwright-0.1.2/docwright}/outputs/base.py +0 -0
  35. {docwright-0.1.0/ai_docgen → docwright-0.1.2/docwright}/providers/__init__.py +0 -0
  36. {docwright-0.1.0/ai_docgen → docwright-0.1.2/docwright}/providers/base.py +0 -0
  37. {docwright-0.1.0/ai_docgen → docwright-0.1.2/docwright}/registry.py +0 -0
  38. {docwright-0.1.0/ai_docgen → docwright-0.1.2/docwright}/renderer.py +0 -0
  39. {docwright-0.1.0/ai_docgen → docwright-0.1.2/docwright}/reporters/__init__.py +0 -0
  40. {docwright-0.1.0/ai_docgen → docwright-0.1.2/docwright}/scaffolder.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: docwright
3
- Version: 0.1.0
3
+ Version: 0.1.2
4
4
  Summary: AI-powered documentation agent: auto-generates and maintains README & wiki on every commit
5
5
  License: MIT
6
6
  License-File: LICENSE
@@ -29,11 +29,11 @@ Requires-Dist: openai (>=1.30,<2.0)
29
29
  Requires-Dist: pydantic (>=2.0,<3.0)
30
30
  Requires-Dist: pyyaml (>=6.0,<7.0)
31
31
  Requires-Dist: rich (>=13.0,<14.0)
32
- Project-URL: Homepage, https://github.com/GotlibArtem/ai-docgen
33
- Project-URL: Repository, https://github.com/GotlibArtem/ai-docgen
32
+ Project-URL: Homepage, https://github.com/GotlibArtem/docwright
33
+ Project-URL: Repository, https://github.com/GotlibArtem/docwright
34
34
  Description-Content-Type: text/markdown
35
35
 
36
- # ai-docgen
36
+ # docwright
37
37
 
38
38
  AI-powered documentation agent that watches your commits and keeps README and wiki pages up to date automatically.
39
39
 
@@ -43,7 +43,7 @@ AI-powered documentation agent that watches your commits and keeps README and wi
43
43
  Developer commits / pushes
44
44
 
45
45
 
46
- CI runs ai-docgen
46
+ CI runs docwright
47
47
 
48
48
  ├─ First run?
49
49
  │ └─ Generates all docs from scratch via LLM
@@ -63,12 +63,12 @@ The agent only rewrites `<!-- AUTO:section -->` blocks. Anything you write manua
63
63
  Install into any repository:
64
64
 
65
65
  ```bash
66
- pip install ai-docgen
67
- ai-docgen install
66
+ pip install docwright
67
+ docwright install
68
68
  ```
69
69
 
70
70
  This asks two questions (AI provider, commit mode) and creates:
71
- - `.ai-docgen/ai-docgen.yml` — config
71
+ - `.docwright/docwright.yml` — config
72
72
  - `Makefile` targets: `make docs`, `make docs-sync`
73
73
  - CI workflow (GitHub Actions or GitLab CI)
74
74
 
@@ -84,16 +84,16 @@ After that, docs update automatically on every push.
84
84
 
85
85
  | Command | Description |
86
86
  |---------|-------------|
87
- | `ai-docgen install` | Bootstrap a repository (interactive or `--auto`) |
88
- | `ai-docgen init` | Generate all documents from scratch |
89
- | `ai-docgen run` | Update changed sections based on latest diff |
90
- | `ai-docgen sync` | Force re-sync all AUTO sections |
91
- | `ai-docgen dashboard` | Terminal table of all registered projects |
92
- | `ai-docgen report` | Generate static HTML status report |
87
+ | `docwright install` | Bootstrap a repository (interactive or `--auto`) |
88
+ | `docwright init` | Generate all documents from scratch |
89
+ | `docwright run` | Update changed sections based on latest diff |
90
+ | `docwright sync` | Force re-sync all AUTO sections |
91
+ | `docwright dashboard` | Terminal table of all registered projects |
92
+ | `docwright report` | Generate static HTML status report |
93
93
 
94
94
  ## Configuration
95
95
 
96
- `.ai-docgen/ai-docgen.yml`:
96
+ `.docwright/docwright.yml`:
97
97
 
98
98
  ```yaml
99
99
  provider:
@@ -146,7 +146,7 @@ Built-in templates cover the full documentation surface:
146
146
  | `wiki/troubleshooting` | common_issues, diagnostics, known_limitations |
147
147
  | `wiki/adr` | recent_decisions, decision_index |
148
148
 
149
- Custom templates go in `.ai-docgen/templates/` inside your repository.
149
+ Custom templates go in `.docwright/templates/` inside your repository.
150
150
 
151
151
  ## AUTO / MANUAL Sections
152
152
 
@@ -154,23 +154,23 @@ Custom templates go in `.ai-docgen/templates/` inside your repository.
154
154
  # README
155
155
 
156
156
  <!-- AUTO:overview -->
157
- This section is managed by ai-docgen.
157
+ This section is managed by docwright.
158
158
  <!-- /AUTO:overview -->
159
159
 
160
160
  <!-- MANUAL -->
161
161
  ## Contributing
162
162
 
163
- Write whatever you want here — ai-docgen never touches MANUAL blocks.
163
+ Write whatever you want here — docwright never touches MANUAL blocks.
164
164
  <!-- /MANUAL -->
165
165
  ```
166
166
 
167
167
  ## Central Registry
168
168
 
169
- After `ai-docgen init`, the project is registered in a central `registry.yml`. View all projects:
169
+ After `docwright init`, the project is registered in a central `registry.yml`. View all projects:
170
170
 
171
171
  ```bash
172
- ai-docgen dashboard # terminal table
173
- ai-docgen report # HTML page at ai-docgen-report.html
172
+ docwright dashboard # terminal table
173
+ docwright report # HTML page at docwright-report.html
174
174
  ```
175
175
 
176
176
  ## Development
@@ -179,7 +179,7 @@ ai-docgen report # HTML page at ai-docgen-report.html
179
179
  poetry install
180
180
  poetry run pytest # 46 tests
181
181
  poetry run ruff check . # lint
182
- poetry run mypy ai_docgen # type check
182
+ poetry run mypy docwright # type check
183
183
  ```
184
184
 
185
185
  ## License
@@ -1,4 +1,4 @@
1
- # ai-docgen
1
+ # docwright
2
2
 
3
3
  AI-powered documentation agent that watches your commits and keeps README and wiki pages up to date automatically.
4
4
 
@@ -8,7 +8,7 @@ AI-powered documentation agent that watches your commits and keeps README and wi
8
8
  Developer commits / pushes
9
9
 
10
10
 
11
- CI runs ai-docgen
11
+ CI runs docwright
12
12
 
13
13
  ├─ First run?
14
14
  │ └─ Generates all docs from scratch via LLM
@@ -28,12 +28,12 @@ The agent only rewrites `<!-- AUTO:section -->` blocks. Anything you write manua
28
28
  Install into any repository:
29
29
 
30
30
  ```bash
31
- pip install ai-docgen
32
- ai-docgen install
31
+ pip install docwright
32
+ docwright install
33
33
  ```
34
34
 
35
35
  This asks two questions (AI provider, commit mode) and creates:
36
- - `.ai-docgen/ai-docgen.yml` — config
36
+ - `.docwright/docwright.yml` — config
37
37
  - `Makefile` targets: `make docs`, `make docs-sync`
38
38
  - CI workflow (GitHub Actions or GitLab CI)
39
39
 
@@ -49,16 +49,16 @@ After that, docs update automatically on every push.
49
49
 
50
50
  | Command | Description |
51
51
  |---------|-------------|
52
- | `ai-docgen install` | Bootstrap a repository (interactive or `--auto`) |
53
- | `ai-docgen init` | Generate all documents from scratch |
54
- | `ai-docgen run` | Update changed sections based on latest diff |
55
- | `ai-docgen sync` | Force re-sync all AUTO sections |
56
- | `ai-docgen dashboard` | Terminal table of all registered projects |
57
- | `ai-docgen report` | Generate static HTML status report |
52
+ | `docwright install` | Bootstrap a repository (interactive or `--auto`) |
53
+ | `docwright init` | Generate all documents from scratch |
54
+ | `docwright run` | Update changed sections based on latest diff |
55
+ | `docwright sync` | Force re-sync all AUTO sections |
56
+ | `docwright dashboard` | Terminal table of all registered projects |
57
+ | `docwright report` | Generate static HTML status report |
58
58
 
59
59
  ## Configuration
60
60
 
61
- `.ai-docgen/ai-docgen.yml`:
61
+ `.docwright/docwright.yml`:
62
62
 
63
63
  ```yaml
64
64
  provider:
@@ -111,7 +111,7 @@ Built-in templates cover the full documentation surface:
111
111
  | `wiki/troubleshooting` | common_issues, diagnostics, known_limitations |
112
112
  | `wiki/adr` | recent_decisions, decision_index |
113
113
 
114
- Custom templates go in `.ai-docgen/templates/` inside your repository.
114
+ Custom templates go in `.docwright/templates/` inside your repository.
115
115
 
116
116
  ## AUTO / MANUAL Sections
117
117
 
@@ -119,23 +119,23 @@ Custom templates go in `.ai-docgen/templates/` inside your repository.
119
119
  # README
120
120
 
121
121
  <!-- AUTO:overview -->
122
- This section is managed by ai-docgen.
122
+ This section is managed by docwright.
123
123
  <!-- /AUTO:overview -->
124
124
 
125
125
  <!-- MANUAL -->
126
126
  ## Contributing
127
127
 
128
- Write whatever you want here — ai-docgen never touches MANUAL blocks.
128
+ Write whatever you want here — docwright never touches MANUAL blocks.
129
129
  <!-- /MANUAL -->
130
130
  ```
131
131
 
132
132
  ## Central Registry
133
133
 
134
- After `ai-docgen init`, the project is registered in a central `registry.yml`. View all projects:
134
+ After `docwright init`, the project is registered in a central `registry.yml`. View all projects:
135
135
 
136
136
  ```bash
137
- ai-docgen dashboard # terminal table
138
- ai-docgen report # HTML page at ai-docgen-report.html
137
+ docwright dashboard # terminal table
138
+ docwright report # HTML page at docwright-report.html
139
139
  ```
140
140
 
141
141
  ## Development
@@ -144,7 +144,7 @@ ai-docgen report # HTML page at ai-docgen-report.html
144
144
  poetry install
145
145
  poetry run pytest # 46 tests
146
146
  poetry run ruff check . # lint
147
- poetry run mypy ai_docgen # type check
147
+ poetry run mypy docwright # type check
148
148
  ```
149
149
 
150
150
  ## License
@@ -7,10 +7,10 @@ from pathlib import Path
7
7
 
8
8
  import click
9
9
 
10
- from ai_docgen.config import Config
11
- from ai_docgen.engine import DocsEngine
12
- from ai_docgen.outputs.factory import build_output
13
- from ai_docgen.providers.factory import build_provider
10
+ from docwright.config import Config
11
+ from docwright.engine import DocsEngine
12
+ from docwright.outputs.factory import build_output
13
+ from docwright.providers.factory import build_provider
14
14
 
15
15
 
16
16
  def get_repo_root() -> Path:
@@ -52,7 +52,7 @@ def run(dry_run: bool) -> None:
52
52
  if dry_run:
53
53
  config = Config.load(repo_root)
54
54
  triggers = config.triggers
55
- from ai_docgen.analyzer import DiffAnalyzer
55
+ from docwright.analyzer import DiffAnalyzer
56
56
 
57
57
  analyzer = DiffAnalyzer(
58
58
  diff_text=diff_text,
@@ -85,7 +85,7 @@ def sync() -> None:
85
85
  @click.option("--output", "output_mode", default=None, type=click.Choice(["pr", "direct"]))
86
86
  def install(auto: bool, provider: str | None, output_mode: str | None) -> None:
87
87
  """Bootstrap this repo with ai-docgen configuration."""
88
- from ai_docgen.scaffolder import Scaffolder
88
+ from docwright.scaffolder import Scaffolder
89
89
 
90
90
  repo_root = get_repo_root()
91
91
  scaffolder = Scaffolder(repo_root=repo_root)
@@ -118,7 +118,7 @@ def install(auto: bool, provider: str | None, output_mode: str | None) -> None:
118
118
  @click.option("--registry", "registry_path", default=None, help="Path to registry.yml")
119
119
  def dashboard(registry_path: str | None) -> None:
120
120
  """Show status of all registered projects."""
121
- from ai_docgen.reporters.terminal import render_dashboard
121
+ from docwright.reporters.terminal import render_dashboard
122
122
 
123
123
  path = Path(registry_path) if registry_path else Path.cwd() / ".ai-docgen" / "registry.yml"
124
124
  render_dashboard(path)
@@ -129,7 +129,7 @@ def dashboard(registry_path: str | None) -> None:
129
129
  @click.option("--output", "output_file", default="ai-docgen-report.html", help="Output HTML file")
130
130
  def report(registry_path: str | None, output_file: str) -> None:
131
131
  """Generate a static HTML status report."""
132
- from ai_docgen.reporters.html import render_html_report
132
+ from docwright.reporters.html import render_html_report
133
133
 
134
134
  reg_path = Path(registry_path) if registry_path else Path.cwd() / ".ai-docgen" / "registry.yml"
135
135
  render_html_report(reg_path, Path(output_file))
@@ -3,12 +3,12 @@ from __future__ import annotations
3
3
  import subprocess
4
4
  from pathlib import Path
5
5
 
6
- from ai_docgen.analyzer import DiffAnalyzer
7
- from ai_docgen.config import Config
8
- from ai_docgen.outputs.base import Output
9
- from ai_docgen.providers.base import LLMProvider
10
- from ai_docgen.registry import DocumentEntry, ProjectEntry, Registry
11
- from ai_docgen.renderer import DocumentRenderer, TemplateLoader
6
+ from docwright.analyzer import DiffAnalyzer
7
+ from docwright.config import Config
8
+ from docwright.outputs.base import Output
9
+ from docwright.providers.base import LLMProvider
10
+ from docwright.registry import DocumentEntry, ProjectEntry, Registry
11
+ from docwright.renderer import DocumentRenderer, TemplateLoader
12
12
 
13
13
  SYSTEM_PROMPT = (
14
14
  "You are a technical documentation writer. You update specific sections of documentation "
@@ -2,7 +2,7 @@ from pathlib import Path
2
2
 
3
3
  from git import Repo
4
4
 
5
- from ai_docgen.outputs.base import Output
5
+ from docwright.outputs.base import Output
6
6
 
7
7
 
8
8
  class DirectOutput(Output):
@@ -1,9 +1,9 @@
1
1
  from pathlib import Path
2
2
 
3
- from ai_docgen.config import OutputConfig
4
- from ai_docgen.outputs.base import Output
5
- from ai_docgen.outputs.direct import DirectOutput
6
- from ai_docgen.outputs.pull_request import PullRequestOutput
3
+ from docwright.config import OutputConfig
4
+ from docwright.outputs.base import Output
5
+ from docwright.outputs.direct import DirectOutput
6
+ from docwright.outputs.pull_request import PullRequestOutput
7
7
 
8
8
 
9
9
  def build_output(config: OutputConfig, repo_root: Path) -> Output:
@@ -8,8 +8,8 @@ from pathlib import Path
8
8
 
9
9
  import httpx
10
10
 
11
- from ai_docgen.config import OutputConfig
12
- from ai_docgen.outputs.base import Output
11
+ from docwright.config import OutputConfig
12
+ from docwright.outputs.base import Output
13
13
 
14
14
 
15
15
  class PullRequestOutput(Output):
@@ -1,7 +1,7 @@
1
1
  from anthropic import AsyncAnthropic
2
2
  from anthropic.types import TextBlock
3
3
 
4
- from ai_docgen.providers.base import LLMProvider
4
+ from docwright.providers.base import LLMProvider
5
5
 
6
6
 
7
7
  class ClaudeProvider(LLMProvider):
@@ -1,10 +1,10 @@
1
1
  import os
2
2
 
3
- from ai_docgen.config import ProviderConfig
4
- from ai_docgen.providers.base import LLMProvider
5
- from ai_docgen.providers.claude import ClaudeProvider
6
- from ai_docgen.providers.ollama import OllamaProvider
7
- from ai_docgen.providers.openai import OpenAIProvider
3
+ from docwright.config import ProviderConfig
4
+ from docwright.providers.base import LLMProvider
5
+ from docwright.providers.claude import ClaudeProvider
6
+ from docwright.providers.ollama import OllamaProvider
7
+ from docwright.providers.openai import OpenAIProvider
8
8
 
9
9
 
10
10
  def build_provider(config: ProviderConfig) -> LLMProvider:
@@ -1,6 +1,6 @@
1
1
  import httpx
2
2
 
3
- from ai_docgen.providers.base import LLMProvider
3
+ from docwright.providers.base import LLMProvider
4
4
 
5
5
 
6
6
  class OllamaProvider(LLMProvider):
@@ -1,6 +1,6 @@
1
1
  from openai import AsyncOpenAI
2
2
 
3
- from ai_docgen.providers.base import LLMProvider
3
+ from docwright.providers.base import LLMProvider
4
4
 
5
5
 
6
6
  class OpenAIProvider(LLMProvider):
@@ -1,6 +1,6 @@
1
1
  from pathlib import Path
2
2
 
3
- from ai_docgen.registry import Registry
3
+ from docwright.registry import Registry
4
4
 
5
5
  HTML_TEMPLATE = """\
6
6
  <!DOCTYPE html>
@@ -3,7 +3,7 @@ from pathlib import Path
3
3
  from rich.console import Console
4
4
  from rich.table import Table
5
5
 
6
- from ai_docgen.registry import Registry
6
+ from docwright.registry import Registry
7
7
 
8
8
 
9
9
  def render_dashboard(registry_path: Path) -> None:
@@ -1,12 +1,12 @@
1
1
  [tool.poetry]
2
2
  name = "docwright"
3
- version = "0.1.0"
3
+ version = "0.1.2"
4
4
  description = "AI-powered documentation agent: auto-generates and maintains README & wiki on every commit"
5
5
  authors = ["Artem Gotlib <gotlib.artem.m@gmail.com>"]
6
6
  license = "MIT"
7
7
  readme = "README.md"
8
- homepage = "https://github.com/GotlibArtem/ai-docgen"
9
- repository = "https://github.com/GotlibArtem/ai-docgen"
8
+ homepage = "https://github.com/GotlibArtem/docwright"
9
+ repository = "https://github.com/GotlibArtem/docwright"
10
10
  keywords = ["documentation", "ai", "llm", "claude", "openai", "git", "automation"]
11
11
  classifiers = [
12
12
  "Development Status :: 3 - Alpha",
@@ -20,10 +20,10 @@ classifiers = [
20
20
  "Topic :: Software Development :: Documentation",
21
21
  "Topic :: Utilities",
22
22
  ]
23
- packages = [{include = "ai_docgen"}]
23
+ packages = [{include = "docwright"}]
24
24
 
25
25
  [tool.poetry.scripts]
26
- ai-docgen = "ai_docgen.cli:cli"
26
+ docwright = "docwright.cli:cli"
27
27
 
28
28
  [tool.poetry.dependencies]
29
29
  python = "^3.11"
File without changes