code2docs 3.0.21__tar.gz → 3.0.23__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 (66) hide show
  1. {code2docs-3.0.21 → code2docs-3.0.23}/PKG-INFO +23 -6
  2. {code2docs-3.0.21 → code2docs-3.0.23}/README.md +19 -5
  3. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs/__init__.py +1 -1
  4. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs/generators/examples_gen.py +2 -1
  5. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs.egg-info/PKG-INFO +23 -6
  6. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs.egg-info/requires.txt +3 -0
  7. {code2docs-3.0.21 → code2docs-3.0.23}/pyproject.toml +33 -1
  8. {code2docs-3.0.21 → code2docs-3.0.23}/LICENSE +0 -0
  9. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs/__main__.py +0 -0
  10. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs/analyzers/__init__.py +0 -0
  11. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs/analyzers/dependency_scanner.py +0 -0
  12. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs/analyzers/docstring_extractor.py +0 -0
  13. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs/analyzers/endpoint_detector.py +0 -0
  14. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs/analyzers/project_scanner.py +0 -0
  15. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs/base.py +0 -0
  16. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs/cli.py +0 -0
  17. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs/config.py +0 -0
  18. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs/examples/advanced_usage.py +0 -0
  19. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs/examples/quickstart.py +0 -0
  20. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs/formatters/__init__.py +0 -0
  21. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs/formatters/badges.py +0 -0
  22. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs/formatters/markdown.py +0 -0
  23. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs/formatters/toc.py +0 -0
  24. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs/generators/__init__.py +0 -0
  25. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs/generators/_registry_adapters.py +0 -0
  26. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs/generators/_source_links.py +0 -0
  27. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs/generators/api_changelog_gen.py +0 -0
  28. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs/generators/api_reference_gen.py +0 -0
  29. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs/generators/architecture_gen.py +0 -0
  30. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs/generators/changelog_gen.py +0 -0
  31. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs/generators/code2llm_gen.py +0 -0
  32. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs/generators/config_docs_gen.py +0 -0
  33. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs/generators/contributing_gen.py +0 -0
  34. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs/generators/coverage_gen.py +0 -0
  35. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs/generators/depgraph_gen.py +0 -0
  36. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs/generators/getting_started_gen.py +0 -0
  37. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs/generators/mkdocs_gen.py +0 -0
  38. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs/generators/module_docs_gen.py +0 -0
  39. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs/generators/org_readme_gen.py +0 -0
  40. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs/generators/readme_gen.py +0 -0
  41. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs/llm_helper.py +0 -0
  42. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs/registry.py +0 -0
  43. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs/sync/__init__.py +0 -0
  44. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs/sync/differ.py +0 -0
  45. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs/sync/updater.py +0 -0
  46. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs/sync/watcher.py +0 -0
  47. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs/templates/api_module.md.j2 +0 -0
  48. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs/templates/architecture.md.j2 +0 -0
  49. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs/templates/example_usage.py.j2 +0 -0
  50. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs/templates/index.md.j2 +0 -0
  51. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs/templates/module_doc.md.j2 +0 -0
  52. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs/templates/readme.md.j2 +0 -0
  53. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs.egg-info/SOURCES.txt +0 -0
  54. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs.egg-info/dependency_links.txt +0 -0
  55. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs.egg-info/entry_points.txt +0 -0
  56. {code2docs-3.0.21 → code2docs-3.0.23}/code2docs.egg-info/top_level.txt +0 -0
  57. {code2docs-3.0.21 → code2docs-3.0.23}/setup.cfg +0 -0
  58. {code2docs-3.0.21 → code2docs-3.0.23}/tests/test_analyzers.py +0 -0
  59. {code2docs-3.0.21 → code2docs-3.0.23}/tests/test_cli.py +0 -0
  60. {code2docs-3.0.21 → code2docs-3.0.23}/tests/test_code2docs.py +0 -0
  61. {code2docs-3.0.21 → code2docs-3.0.23}/tests/test_config.py +0 -0
  62. {code2docs-3.0.21 → code2docs-3.0.23}/tests/test_formatters.py +0 -0
  63. {code2docs-3.0.21 → code2docs-3.0.23}/tests/test_generators.py +0 -0
  64. {code2docs-3.0.21 → code2docs-3.0.23}/tests/test_llm_helper.py +0 -0
  65. {code2docs-3.0.21 → code2docs-3.0.23}/tests/test_registry.py +0 -0
  66. {code2docs-3.0.21 → code2docs-3.0.23}/tests/test_sync.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code2docs
3
- Version: 3.0.21
3
+ Version: 3.0.23
4
4
  Summary: Auto-generate and sync project documentation from source code analysis
5
5
  Author-email: Tom Sapletta <tom@sapletta.com>
6
6
  License-Expression: Apache-2.0
@@ -44,13 +44,31 @@ Requires-Dist: ruff>=0.1; extra == "dev"
44
44
  Requires-Dist: mypy>=1.0; extra == "dev"
45
45
  Requires-Dist: build>=1.0; extra == "dev"
46
46
  Requires-Dist: twine>=5.0; extra == "dev"
47
+ Requires-Dist: goal>=2.1.0; extra == "dev"
48
+ Requires-Dist: costs>=0.1.20; extra == "dev"
49
+ Requires-Dist: pfix>=0.1.60; extra == "dev"
47
50
  Provides-Extra: all
48
51
  Requires-Dist: code2docs[git,llm,mkdocs,watch]; extra == "all"
49
52
  Dynamic: license-file
50
53
 
51
54
  # code2docs
52
55
 
53
- ![version](https://img.shields.io/badge/version-3.0.21-blue) ![python](https://img.shields.io/badge/python-%3E%3D3.9-blue) ![docs](https://img.shields.io/badge/docs-auto--generated-blueviolet)
56
+
57
+ ## AI Cost Tracking
58
+
59
+ ![PyPI](https://img.shields.io/badge/pypi-costs-blue) ![Version](https://img.shields.io/badge/version-3.0.23-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
60
+ ![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)
61
+
62
+ - 🤖 **LLM usage:** $7.5000 (52 commits)
63
+ - 👤 **Human dev:** ~$1621 (16.2h @ $100/h, 30min dedup)
64
+
65
+ Generated on 2026-03-31 using [openrouter/qwen/qwen3-coder-next](https://openrouter.ai/qwen/qwen3-coder-next)
66
+
67
+ ---
68
+
69
+
70
+
71
+ ![version](https://img.shields.io/badge/version-3.0.23-blue) ![python](https://img.shields.io/badge/python-%3E%3D3.9-blue) ![docs](https://img.shields.io/badge/docs-auto--generated-blueviolet)
54
72
 
55
73
  > Auto-generate and sync project documentation from source code analysis.
56
74
 
@@ -190,7 +208,7 @@ code2docs can update only specific sections of an existing README using markers:
190
208
  ```markdown
191
209
  <!-- code2docs:start --># code2docs
192
210
 
193
- ![version](https://img.shields.io/badge/version-3.0.21-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)
211
+ ![version](https://img.shields.io/badge/version-3.0.23-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)
194
212
  > **276** functions | **57** classes | **51** files | CC̄ = 3.8
195
213
 
196
214
  > Auto-generated project documentation from source code analysis.
@@ -823,8 +841,7 @@ code2docs/
823
841
 
824
842
  ## License
825
843
 
826
- Apache License 2.0 - see [LICENSE](LICENSE) for details.
827
-
844
+ Licensed under Apache-2.0.
828
845
  ## Author
829
846
 
830
- Created by **Tom Sapletta** - [tom@sapletta.com](mailto:tom@sapletta.com)
847
+ Tom Sapletta
@@ -1,6 +1,21 @@
1
1
  # code2docs
2
2
 
3
- ![version](https://img.shields.io/badge/version-3.0.21-blue) ![python](https://img.shields.io/badge/python-%3E%3D3.9-blue) ![docs](https://img.shields.io/badge/docs-auto--generated-blueviolet)
3
+
4
+ ## AI Cost Tracking
5
+
6
+ ![PyPI](https://img.shields.io/badge/pypi-costs-blue) ![Version](https://img.shields.io/badge/version-3.0.23-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
7
+ ![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)
8
+
9
+ - 🤖 **LLM usage:** $7.5000 (52 commits)
10
+ - 👤 **Human dev:** ~$1621 (16.2h @ $100/h, 30min dedup)
11
+
12
+ Generated on 2026-03-31 using [openrouter/qwen/qwen3-coder-next](https://openrouter.ai/qwen/qwen3-coder-next)
13
+
14
+ ---
15
+
16
+
17
+
18
+ ![version](https://img.shields.io/badge/version-3.0.23-blue) ![python](https://img.shields.io/badge/python-%3E%3D3.9-blue) ![docs](https://img.shields.io/badge/docs-auto--generated-blueviolet)
4
19
 
5
20
  > Auto-generate and sync project documentation from source code analysis.
6
21
 
@@ -140,7 +155,7 @@ code2docs can update only specific sections of an existing README using markers:
140
155
  ```markdown
141
156
  <!-- code2docs:start --># code2docs
142
157
 
143
- ![version](https://img.shields.io/badge/version-3.0.21-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.23-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)
144
159
  > **276** functions | **57** classes | **51** files | CC̄ = 3.8
145
160
 
146
161
  > Auto-generated project documentation from source code analysis.
@@ -773,8 +788,7 @@ code2docs/
773
788
 
774
789
  ## License
775
790
 
776
- Apache License 2.0 - see [LICENSE](LICENSE) for details.
777
-
791
+ Licensed under Apache-2.0.
778
792
  ## Author
779
793
 
780
- Created by **Tom Sapletta** - [tom@sapletta.com](mailto:tom@sapletta.com)
794
+ Tom Sapletta
@@ -5,7 +5,7 @@ Uses code2llm's AnalysisResult to produce human-readable documentation:
5
5
  README.md, API references, module docs, examples, and architecture diagrams.
6
6
  """
7
7
 
8
- __version__ = "3.0.21"
8
+ __version__ = "3.0.23"
9
9
  __author__ = "Tom Sapletta"
10
10
 
11
11
  from .config import Code2DocsConfig
@@ -233,8 +233,9 @@ class ExamplesGenerator:
233
233
  lines.append("")
234
234
  lines.append("# Step 1: Analyze the project")
235
235
  lines.append("config = Code2DocsConfig(project_name=\"my-project\")")
236
+ lines.append("project_name_adv = config.project_name")
236
237
  lines.append("scanner = ProjectScanner(config)")
237
- lines.append('result = scanner.analyze(f"./${project_name_adv}") if project_name_adv != "." else result = scanner.analyze("./")')
238
+ lines.append('result = scanner.analyze(f"./{project_name_adv}") if project_name_adv != "." else scanner.analyze("./")')
238
239
  lines.append("")
239
240
 
240
241
  for i, cls in enumerate(gen_classes[:4], start=2):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code2docs
3
- Version: 3.0.21
3
+ Version: 3.0.23
4
4
  Summary: Auto-generate and sync project documentation from source code analysis
5
5
  Author-email: Tom Sapletta <tom@sapletta.com>
6
6
  License-Expression: Apache-2.0
@@ -44,13 +44,31 @@ Requires-Dist: ruff>=0.1; extra == "dev"
44
44
  Requires-Dist: mypy>=1.0; extra == "dev"
45
45
  Requires-Dist: build>=1.0; extra == "dev"
46
46
  Requires-Dist: twine>=5.0; extra == "dev"
47
+ Requires-Dist: goal>=2.1.0; extra == "dev"
48
+ Requires-Dist: costs>=0.1.20; extra == "dev"
49
+ Requires-Dist: pfix>=0.1.60; extra == "dev"
47
50
  Provides-Extra: all
48
51
  Requires-Dist: code2docs[git,llm,mkdocs,watch]; extra == "all"
49
52
  Dynamic: license-file
50
53
 
51
54
  # code2docs
52
55
 
53
- ![version](https://img.shields.io/badge/version-3.0.21-blue) ![python](https://img.shields.io/badge/python-%3E%3D3.9-blue) ![docs](https://img.shields.io/badge/docs-auto--generated-blueviolet)
56
+
57
+ ## AI Cost Tracking
58
+
59
+ ![PyPI](https://img.shields.io/badge/pypi-costs-blue) ![Version](https://img.shields.io/badge/version-3.0.23-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
60
+ ![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)
61
+
62
+ - 🤖 **LLM usage:** $7.5000 (52 commits)
63
+ - 👤 **Human dev:** ~$1621 (16.2h @ $100/h, 30min dedup)
64
+
65
+ Generated on 2026-03-31 using [openrouter/qwen/qwen3-coder-next](https://openrouter.ai/qwen/qwen3-coder-next)
66
+
67
+ ---
68
+
69
+
70
+
71
+ ![version](https://img.shields.io/badge/version-3.0.23-blue) ![python](https://img.shields.io/badge/python-%3E%3D3.9-blue) ![docs](https://img.shields.io/badge/docs-auto--generated-blueviolet)
54
72
 
55
73
  > Auto-generate and sync project documentation from source code analysis.
56
74
 
@@ -190,7 +208,7 @@ code2docs can update only specific sections of an existing README using markers:
190
208
  ```markdown
191
209
  <!-- code2docs:start --># code2docs
192
210
 
193
- ![version](https://img.shields.io/badge/version-3.0.21-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)
211
+ ![version](https://img.shields.io/badge/version-3.0.23-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)
194
212
  > **276** functions | **57** classes | **51** files | CC̄ = 3.8
195
213
 
196
214
  > Auto-generated project documentation from source code analysis.
@@ -823,8 +841,7 @@ code2docs/
823
841
 
824
842
  ## License
825
843
 
826
- Apache License 2.0 - see [LICENSE](LICENSE) for details.
827
-
844
+ Licensed under Apache-2.0.
828
845
  ## Author
829
846
 
830
- Created by **Tom Sapletta** - [tom@sapletta.com](mailto:tom@sapletta.com)
847
+ Tom Sapletta
@@ -15,6 +15,9 @@ ruff>=0.1
15
15
  mypy>=1.0
16
16
  build>=1.0
17
17
  twine>=5.0
18
+ goal>=2.1.0
19
+ costs>=0.1.20
20
+ pfix>=0.1.60
18
21
 
19
22
  [git]
20
23
  gitpython>=3.1
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "code2docs"
7
- version = "3.0.21"
7
+ version = "3.0.23"
8
8
  description = "Auto-generate and sync project documentation from source code analysis"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -54,6 +54,9 @@ dev = [
54
54
  "mypy>=1.0",
55
55
  "build>=1.0",
56
56
  "twine>=5.0",
57
+ "goal>=2.1.0",
58
+ "costs>=0.1.20",
59
+ "pfix>=0.1.60",
57
60
  ]
58
61
  all = ["code2docs[llm,git,watch,mkdocs]"]
59
62
 
@@ -86,3 +89,32 @@ include = ["code2docs*"]
86
89
 
87
90
  [tool.setuptools.package-data]
88
91
  code2docs = ["templates/*.j2"]
92
+
93
+ [tool.pfix]
94
+ # Self-healing Python configuration
95
+ model = "openrouter/qwen/qwen3-coder-next"
96
+ auto_apply = true
97
+ auto_install_deps = true
98
+ auto_restart = false
99
+ max_retries = 3
100
+ create_backups = false
101
+ git_auto_commit = false
102
+
103
+ [tool.pfix.runtime_todo]
104
+ enabled = true
105
+ todo_file = "TODO.md"
106
+ min_severity = "low"
107
+ deduplicate = true
108
+
109
+ [tool.costs]
110
+ # AI Cost tracking configuration
111
+ badge = true
112
+ update_readme = true
113
+ readme_path = "README.md"
114
+ default_model = "openrouter/qwen/qwen3-coder-next"
115
+ analysis_mode = "byok"
116
+ full_history = true
117
+ max_commits = 500
118
+
119
+ # Cost thresholds for badge colors (USD)
120
+ badge_color_thresholds = { low = 1.0, medium = 5.0, high = 10.0, critical = 50.0 }
File without changes
File without changes
File without changes
File without changes
File without changes