Skip to content

Commit 6fe9b2e

Browse files
refactor(docs): code analysis engine
stats: lines: "+41/-41 (net +0)" files: 6 complexity: "Stable complexity"
1 parent be393c7 commit 6fe9b2e

File tree

11 files changed

+59
-47
lines changed

11 files changed

+59
-47
lines changed

CHANGELOG.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
127127

128128
## [Unreleased]
129129

130+
## [3.0.25] - 2026-03-31
131+
132+
### Docs
133+
- Update project/context.md
134+
135+
### Other
136+
- Update project/analysis.toon.yaml
137+
- Update project/calls.mmd
138+
- Update project/compact_flow.mmd
139+
- Update project/index.html
140+
- Update project/project.toon.yaml
141+
130142
## [3.0.24] - 2026-03-31
131143

132144
### Docs

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
## AI Cost Tracking
55

6-
![PyPI](https://img.shields.io/badge/pypi-costs-blue) ![Version](https://img.shields.io/badge/version-3.0.24-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
6+
![PyPI](https://img.shields.io/badge/pypi-costs-blue) ![Version](https://img.shields.io/badge/version-3.0.25-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
77
![AI Cost](https://img.shields.io/badge/AI%20Cost-$7.50-orange) ![Human Time](https://img.shields.io/badge/Human%20Time-16.2h-blue) ![Model](https://img.shields.io/badge/Model-openrouter%2Fqwen%2Fqwen3--coder--next-lightgrey)
88

99
- 🤖 **LLM usage:** $7.5000 (52 commits)
@@ -15,7 +15,7 @@ Generated on 2026-03-31 using [openrouter/qwen/qwen3-coder-next](https://openrou
1515

1616

1717

18-
![version](https://img.shields.io/badge/version-3.0.24-blue) ![python](https://img.shields.io/badge/python-%3E%3D3.9-blue) ![docs](https://img.shields.io/badge/docs-auto--generated-blueviolet)
18+
![version](https://img.shields.io/badge/version-3.0.25-blue) ![python](https://img.shields.io/badge/python-%3E%3D3.9-blue) ![docs](https://img.shields.io/badge/docs-auto--generated-blueviolet)
1919

2020
> Auto-generate and sync project documentation from source code analysis.
2121
@@ -155,7 +155,7 @@ code2docs can update only specific sections of an existing README using markers:
155155
```markdown
156156
<!-- code2docs:start --># code2docs
157157

158-
![version](https://img.shields.io/badge/version-3.0.24-blue) ![python](https://img.shields.io/badge/python-%3E%3D3.9-blue) ![coverage](https://img.shields.io/badge/coverage-unknown-lightgrey) ![functions](https://img.shields.io/badge/functions-276-green)
158+
![version](https://img.shields.io/badge/version-3.0.25-blue) ![python](https://img.shields.io/badge/python-%3E%3D3.9-blue) ![coverage](https://img.shields.io/badge/coverage-unknown-lightgrey) ![functions](https://img.shields.io/badge/functions-276-green)
159159
> **276** functions | **57** classes | **51** files | CC̄ = 3.8
160160

161161
> Auto-generated project documentation from source code analysis.

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
3.0.24
1+
3.0.25

code2docs/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
README.md, API references, module docs, examples, and architecture diagrams.
66
"""
77

8-
__version__ = "3.0.24"
8+
__version__ = "3.0.25"
99
__author__ = "Tom Sapletta"
1010

1111
from .config import Code2DocsConfig

project/analysis.toon.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
# CC̄=4.4 | critical:12/298 | dups:0 | cycles:1
33

44
HEALTH[12]:
5-
🟡 CC _extract_project_metadata CC=29 (limit:15)
65
🟡 CC _render_first_usage CC=15 (limit:15)
76
🟡 CC _generate_intro CC=16 (limit:15)
87
🟡 CC parse_gitignore CC=15 (limit:15)
@@ -11,9 +10,10 @@ HEALTH[12]:
1110
🟡 CC _render_module_detail CC=25 (limit:15)
1211
🟡 CC _extract_description CC=17 (limit:15)
1312
🟡 CC _render_module_section CC=25 (limit:15)
13+
🟡 CC _extract_project_metadata CC=29 (limit:15)
1414
🟡 CC _generate_advanced CC=22 (limit:15)
15-
🟡 CC _generate_html CC=15 (limit:15)
1615
🟡 CC _render_code_style CC=16 (limit:15)
16+
🟡 CC _generate_html CC=15 (limit:15)
1717

1818
REFACTOR[2]:
1919
1. split 12 high-CC methods (CC>15)

project/calls.mmd

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3,31 +3,31 @@ flowchart LR
33
code2docs__analyzers__project_scanner__ProjectScanner__analyze["analyze"]
44
end
55
subgraph code2docs__cli
6+
code2docs__cli___run_check["_run_check"]
7+
code2docs__cli__diff["diff"]
8+
code2docs__cli___load_config["_load_config"]
9+
code2docs__cli__sync["sync"]
610
code2docs__cli__watch["watch"]
711
code2docs__cli___run_watch["_run_watch"]
8-
code2docs__cli__check["check"]
912
code2docs__cli___run_sync["_run_sync"]
10-
code2docs__cli__sync["sync"]
13+
code2docs__cli__check["check"]
1114
code2docs__cli___run_diff["_run_diff"]
12-
code2docs__cli__diff["diff"]
13-
code2docs__cli___run_check["_run_check"]
14-
code2docs__cli___load_config["_load_config"]
1515
end
1616
subgraph code2docs__config
1717
code2docs__config__Code2DocsConfig__from_yaml["from_yaml"]
1818
end
1919
subgraph code2docs__formatters
20-
code2docs__formatters__badges___make_badge["_make_badge"]
21-
code2docs__formatters__toc__extract_headings["extract_headings"]
2220
code2docs__formatters__toc__generate_toc["generate_toc"]
23-
code2docs__formatters__toc___slugify["_slugify"]
21+
code2docs__formatters__toc__extract_headings["extract_headings"]
2422
code2docs__formatters__badges__generate_badges["generate_badges"]
23+
code2docs__formatters__badges___make_badge["_make_badge"]
24+
code2docs__formatters__toc___slugify["_slugify"]
2525
end
2626
subgraph code2docs__generators
27-
code2docs__generators__readme_gen__ReadmeGenerator___build_context["_build_context"]
28-
code2docs__generators__readme_gen__generate_readme["generate_readme"]
29-
code2docs__generators__code2llm_gen__parse_gitignore["parse_gitignore"]
3027
code2docs__generators__code2llm_gen__Code2LlmGenerator___run_code2llm["_run_code2llm"]
28+
code2docs__generators__code2llm_gen__parse_gitignore["parse_gitignore"]
29+
code2docs__generators__readme_gen__generate_readme["generate_readme"]
30+
code2docs__generators__readme_gen__ReadmeGenerator___build_context["_build_context"]
3131
end
3232
subgraph code2docs__llm_helper
3333
code2docs__llm_helper___get_litellm["_get_litellm"]
@@ -40,11 +40,11 @@ flowchart LR
4040
examples__02_configuration__load_config_from_yaml["load_config_from_yaml"]
4141
end
4242
subgraph examples__03_programmatic_api
43-
examples__03_programmatic_api__generate_docs_if_needed["generate_docs_if_needed"]
44-
examples__03_programmatic_api__generate_full_documentation["generate_full_documentation"]
4543
examples__03_programmatic_api__custom_documentation_pipeline["custom_documentation_pipeline"]
4644
examples__03_programmatic_api__inspect_project_structure["inspect_project_structure"]
4745
examples__03_programmatic_api__generate_readme_simple["generate_readme_simple"]
46+
examples__03_programmatic_api__generate_full_documentation["generate_full_documentation"]
47+
examples__03_programmatic_api__generate_docs_if_needed["generate_docs_if_needed"]
4848
end
4949
subgraph examples__04_sync_and_watch
5050
examples__04_sync_and_watch__watch_and_auto_regenerate["watch_and_auto_regenerate"]
@@ -53,8 +53,8 @@ flowchart LR
5353
examples__05_custom_generators__generate_custom_report["generate_custom_report"]
5454
end
5555
subgraph examples__06_formatters
56-
examples__06_formatters__build_custom_readme["build_custom_readme"]
5756
examples__06_formatters__toc_examples["toc_examples"]
57+
examples__06_formatters__build_custom_readme["build_custom_readme"]
5858
examples__06_formatters__badge_examples["badge_examples"]
5959
end
6060
subgraph examples__07_web_frameworks
@@ -66,8 +66,8 @@ flowchart LR
6666
code2docs__formatters__badges__generate_badges --> code2docs__formatters__badges___make_badge
6767
code2docs__formatters__toc__generate_toc --> code2docs__formatters__toc__extract_headings
6868
code2docs__formatters__toc__extract_headings --> code2docs__formatters__toc___slugify
69-
code2docs__generators__readme_gen__ReadmeGenerator___build_context --> code2docs__formatters__badges__generate_badges
7069
code2docs__generators__code2llm_gen__Code2LlmGenerator___run_code2llm --> code2docs__generators__code2llm_gen__parse_gitignore
70+
code2docs__generators__readme_gen__ReadmeGenerator___build_context --> code2docs__formatters__badges__generate_badges
7171
code2docs__cli__sync --> code2docs__cli___load_config
7272
code2docs__cli__sync --> code2docs__cli___run_sync
7373
code2docs__cli__watch --> code2docs__cli___load_config
@@ -84,16 +84,16 @@ flowchart LR
8484
examples__06_formatters__toc_examples --> code2docs__formatters__toc__generate_toc
8585
examples__06_formatters__toc_examples --> code2docs__formatters__toc__extract_headings
8686
examples__06_formatters__build_custom_readme --> code2docs__formatters__toc__generate_toc
87-
examples__07_web_frameworks__detect_flask_endpoints --> code2docs__analyzers__project_scanner__ProjectScanner__analyze
88-
examples__07_web_frameworks__detect_fastapi_endpoints --> code2docs__analyzers__project_scanner__ProjectScanner__analyze
89-
examples__07_web_frameworks__generate_api_docs_from_endpoints --> code2docs__analyzers__project_scanner__ProjectScanner__analyze
90-
examples__07_web_frameworks__document_web_project --> code2docs__analyzers__project_scanner__ProjectScanner__analyze
91-
examples__07_web_frameworks__document_web_project --> examples__07_web_frameworks__generate_api_docs_from_endpoints
92-
examples__02_configuration__load_config_from_yaml --> code2docs__config__Code2DocsConfig__from_yaml
9387
examples__03_programmatic_api__generate_readme_simple --> code2docs__analyzers__project_scanner__ProjectScanner__analyze
9488
examples__03_programmatic_api__generate_readme_simple --> code2docs__generators__readme_gen__generate_readme
9589
examples__03_programmatic_api__generate_full_documentation --> code2docs__analyzers__project_scanner__ProjectScanner__analyze
9690
examples__03_programmatic_api__custom_documentation_pipeline --> code2docs__analyzers__project_scanner__ProjectScanner__analyze
9791
examples__03_programmatic_api__inspect_project_structure --> code2docs__analyzers__project_scanner__ProjectScanner__analyze
9892
examples__03_programmatic_api__generate_docs_if_needed --> code2docs__analyzers__project_scanner__ProjectScanner__analyze
93+
examples__02_configuration__load_config_from_yaml --> code2docs__config__Code2DocsConfig__from_yaml
94+
examples__07_web_frameworks__detect_flask_endpoints --> code2docs__analyzers__project_scanner__ProjectScanner__analyze
95+
examples__07_web_frameworks__detect_fastapi_endpoints --> code2docs__analyzers__project_scanner__ProjectScanner__analyze
96+
examples__07_web_frameworks__generate_api_docs_from_endpoints --> code2docs__analyzers__project_scanner__ProjectScanner__analyze
97+
examples__07_web_frameworks__document_web_project --> code2docs__analyzers__project_scanner__ProjectScanner__analyze
98+
examples__07_web_frameworks__document_web_project --> examples__07_web_frameworks__generate_api_docs_from_endpoints
9999
code2docs__llm_helper__LLMHelper__complete --> code2docs__llm_helper___get_litellm

project/compact_flow.mmd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,5 @@ flowchart TD
1919
code2docs__cli -->|1| code2docs__sync
2020
examples__04_sync_and_watch -->|1| code2docs__sync
2121
examples__05_custom_generators -->|1| code2docs__analyzers
22-
examples__02_configuration -->|1| code2docs__config
2322
examples__03_programmatic_api -->|1| code2docs__generators
23+
examples__02_configuration -->|1| code2docs__config

project/context.md

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -440,18 +440,6 @@ Filters out:
440440
> Parse an examples line.
441441
- **Output to**: info.examples.append
442442

443-
### code2docs.analyzers.endpoint_detector.EndpointDetector._parse_decorator
444-
> Try to parse a route decorator string.
445-
- **Output to**: self.FASTAPI_PATTERNS.search, self.FLASK_PATTERNS.search, Endpoint, Endpoint, None.upper
446-
447-
### examples.05_custom_generators.MetricsReportGenerator._format_stats_table
448-
> Format statistics as markdown table.
449-
- **Output to**: stats.items, None.join, lines.append
450-
451-
### examples.06_formatters.markdown_formatting_examples
452-
> Demonstrate markdown formatting utilities.
453-
- **Output to**: MarkdownFormatter, print, print, print, print
454-
455443
### code2docs.analyzers.dependency_scanner.DependencyScanner._parse_pyproject
456444
> Parse pyproject.toml for dependencies.
457445
- **Output to**: ProjectDependencies, data.get, project.get, project.get, project.get
@@ -484,6 +472,18 @@ Filters out:
484472
> Parse a dependency string like 'package>=1.0'.
485473
- **Output to**: re.match, DependencyInfo, dep_str.strip, DependencyInfo, dep_str.strip
486474

475+
### code2docs.analyzers.endpoint_detector.EndpointDetector._parse_decorator
476+
> Try to parse a route decorator string.
477+
- **Output to**: self.FASTAPI_PATTERNS.search, self.FLASK_PATTERNS.search, Endpoint, Endpoint, None.upper
478+
479+
### examples.05_custom_generators.MetricsReportGenerator._format_stats_table
480+
> Format statistics as markdown table.
481+
- **Output to**: stats.items, None.join, lines.append
482+
483+
### examples.06_formatters.markdown_formatting_examples
484+
> Demonstrate markdown formatting utilities.
485+
- **Output to**: MarkdownFormatter, print, print, print, print
486+
487487
## Behavioral Patterns
488488

489489
### recursion_analyze
@@ -539,7 +539,7 @@ Functions exposed as public API (no underscore prefix):
539539
- `code2docs.generators.org_readme_gen.OrgReadmeGenerator.generate` - 8 calls
540540
- `code2docs.cli.sync` - 8 calls
541541
- `examples.03_programmatic_api.custom_documentation_pipeline` - 8 calls
542-
- `code2docs.generators._registry_adapters.Code2LlmAdapter.run` - 7 calls
542+
- `code2docs.cli.watch` - 7 calls
543543

544544
## System Interactions
545545

project/index.html

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

project/project.toon.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@ Requires watchdog
4343
★ OrgReadmeGenerator._extract_description fan=20 // Extract short description from project (max 5 lines).
4444

4545
REFACTOR[15]:
46-
[1] H/L Split ReadmeGenerator._extract_project_metadata (CC=29 → target CC<10)
47-
[2] H/L Split ModuleDocsGenerator._render_module_detail (CC=25 → target CC<10)
48-
[3] H/L Split ApiReferenceGenerator._render_module_section (CC=25 → target CC<10)
46+
[1] H/L Split ModuleDocsGenerator._render_module_detail (CC=25 → target CC<10)
47+
[2] H/L Split ApiReferenceGenerator._render_module_section (CC=25 → target CC<10)
48+
[3] H/L Split ReadmeGenerator._extract_project_metadata (CC=29 → target CC<10)
4949
[4] M/L Split GettingStartedGenerator._render_first_usage (CC=15 → target CC<10)
5050
[5] M/L Split GettingStartedGenerator._generate_intro (CC=16 → target CC<10)
5151

0 commit comments

Comments
 (0)