code2docs 3.0.26__py3-none-any.whl → 3.0.27__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.
code2docs/__init__.py CHANGED
@@ -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.26'
8
+ __version__ = '3.0.27'
9
9
  __author__ = 'Tom Sapletta'
10
10
  __all__ = ['Code2DocsConfig', 'generate_readme', 'generate_docs', 'analyze_and_document']
11
11
 
@@ -1,11 +1,9 @@
1
1
  """Extract and analyze docstrings from source code."""
2
2
 
3
- import ast
4
3
  from dataclasses import dataclass, field
5
- from pathlib import Path
6
- from typing import Dict, List, Optional, Tuple
4
+ from typing import Dict, List, Optional
7
5
 
8
- from code2llm.api import AnalysisResult, FunctionInfo, ClassInfo
6
+ from code2llm.api import AnalysisResult
9
7
 
10
8
 
11
9
  @dataclass
@@ -1,10 +1,9 @@
1
1
  """Detect web framework endpoints (Flask, FastAPI, Django) from AST analysis."""
2
2
 
3
- import ast
4
3
  import re
5
4
  from dataclasses import dataclass, field
6
5
  from pathlib import Path
7
- from typing import Dict, List, Optional
6
+ from typing import List, Optional
8
7
 
9
8
  from code2llm.api import AnalysisResult, FunctionInfo
10
9
 
@@ -1,9 +1,8 @@
1
1
  """Wrapper around code2llm's ProjectAnalyzer for documentation purposes."""
2
2
 
3
- from pathlib import Path
4
3
  from typing import Optional
5
4
 
6
- from code2llm.api import Config, FAST_CONFIG, AnalysisResult, analyze
5
+ from code2llm.api import Config, AnalysisResult, analyze
7
6
 
8
7
  from ..config import Code2DocsConfig
9
8
 
code2docs/cli.py CHANGED
@@ -32,7 +32,7 @@ def main() -> None:
32
32
  @click.option('--output', '-o', default=None, help='Output directory for docs')
33
33
  @click.option('--verbose', '-v', is_flag=True, help='Verbose output')
34
34
  @click.option('--dry-run', is_flag=True, help='Show what would be generated without writing')
35
- @click.option('--llm', 'llm_model', default=None, help='Enable LLM-assisted generation (e.g. openai/gpt-4o-mini, ollama/llama3)')
35
+ @click.option('--llm', 'llm_model', default=None, help='Enable LLM-assisted generation (e.g. openai/gpt-5.4-mini, ollama/llama3)')
36
36
  @click.option('--org-name', default=None, help='Organization name for org-mode README generation')
37
37
  def generate(project_path, config_path, readme_only, sections, output, verbose, dry_run, llm_model, org_name) -> None:
38
38
  """Generate documentation (default command)."""
@@ -5,7 +5,6 @@ Shows how to use individual generators, sync, and formatters.
5
5
  Run: python examples/advanced_usage.py
6
6
  """
7
7
 
8
- from pathlib import Path
9
8
 
10
9
  # ==================================================
11
10
  # Using individual generators
@@ -5,10 +5,8 @@ Minimal working examples for the most common use cases.
5
5
  Run: python examples/quickstart.py
6
6
  """
7
7
 
8
- from pathlib import Path
9
8
 
10
9
  from code2docs import Code2DocsConfig
11
- from code2docs import analyze_and_document
12
10
  from code2docs import generate_docs
13
11
  from code2docs import generate_readme
14
12
 
@@ -1,6 +1,6 @@
1
1
  """Markdown formatting utilities."""
2
2
 
3
- from typing import Dict, List, Optional
3
+ from typing import List
4
4
 
5
5
 
6
6
  class MarkdownFormatter:
@@ -1,9 +1,9 @@
1
1
  """API changelog generator — diff function/class signatures between versions."""
2
2
 
3
3
  import json
4
- from dataclasses import dataclass, field
4
+ from dataclasses import dataclass
5
5
  from pathlib import Path
6
- from typing import Dict, List, Optional, Tuple
6
+ from typing import Dict, List, Optional
7
7
 
8
8
  from code2llm.api import AnalysisResult
9
9
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  from collections import defaultdict
4
4
  from pathlib import Path
5
- from typing import Dict, List, Optional
5
+ from typing import Dict, List
6
6
 
7
7
  from code2llm.api import AnalysisResult, FunctionInfo, ClassInfo, ModuleInfo
8
8
 
@@ -3,7 +3,7 @@
3
3
  from pathlib import Path
4
4
  from typing import Dict, List, Set
5
5
 
6
- from code2llm.api import AnalysisResult, ModuleInfo
6
+ from code2llm.api import AnalysisResult
7
7
 
8
8
  from ..config import Code2DocsConfig
9
9
  from ..llm_helper import LLMHelper
@@ -1,7 +1,7 @@
1
1
  """Changelog generator from git log and API diff."""
2
2
 
3
3
  import subprocess
4
- from dataclasses import dataclass, field
4
+ from dataclasses import dataclass
5
5
  from pathlib import Path
6
6
  from typing import Dict, List, Optional
7
7
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  import subprocess
4
4
  from pathlib import Path
5
- from typing import List, Optional, Dict, Set
5
+ from typing import List, Optional, Dict
6
6
 
7
7
  from code2llm.api import AnalysisResult
8
8
 
@@ -1,7 +1,6 @@
1
1
  """Configuration documentation generator."""
2
2
 
3
3
  from dataclasses import fields, MISSING
4
- from typing import Any
5
4
 
6
5
  from code2llm.api import AnalysisResult
7
6
 
@@ -55,7 +54,7 @@ class ConfigDocsGenerator:
55
54
  "watch": "Enable file watcher for auto-resync",
56
55
  "ignore": "Glob patterns to ignore during sync",
57
56
  "enabled": "Enable LLM-assisted documentation generation",
58
- "model": "LLM model identifier (litellm format, e.g. `openai/gpt-4o-mini`, `ollama/llama3`)",
57
+ "model": "LLM model identifier (litellm format, e.g. `openai/gpt-5.4-mini`, `ollama/llama3`)",
59
58
  "api_key": "API key for the LLM provider (use `.env` or env var `CODE2DOCS_LLM_API_KEY`)",
60
59
  "api_base": "Custom API base URL (for self-hosted or proxy endpoints)",
61
60
  "max_tokens": "Maximum tokens per LLM call",
@@ -1,6 +1,6 @@
1
1
  """CONTRIBUTING.md generator from project tooling detection."""
2
2
 
3
- from typing import Dict, List
3
+ from typing import Dict
4
4
 
5
5
  from code2llm.api import AnalysisResult
6
6
 
@@ -4,7 +4,7 @@ import ast
4
4
  from pathlib import Path
5
5
  from typing import Dict, List, Set, Tuple
6
6
 
7
- from code2llm.api import AnalysisResult, ModuleInfo
7
+ from code2llm.api import AnalysisResult
8
8
 
9
9
  from ..config import Code2DocsConfig
10
10
 
@@ -1,12 +1,32 @@
1
1
 
2
-
3
2
  PORT_4 = 4
4
3
  CONSTANT_5 = 5
5
4
  CONSTANT_50 = 50
6
5
 
7
- PORT_4 = 4
8
- CONSTANT_5 = 5
9
- CONSTANT_50 = 50
6
+
7
+ PORT_4 = PORT_4
8
+ CONSTANT_5 = CONSTANT_5
9
+ CONSTANT_50 = CONSTANT_50
10
+
11
+
12
+ PORT_4 = PORT_4
13
+ CONSTANT_5 = CONSTANT_5
14
+ CONSTANT_50 = CONSTANT_50
15
+
16
+
17
+ PORT_4 = PORT_4
18
+ CONSTANT_5 = CONSTANT_5
19
+ CONSTANT_50 = CONSTANT_50
20
+
21
+
22
+
23
+ PORT_4 = PORT_4
24
+ CONSTANT_5 = CONSTANT_5
25
+ CONSTANT_50 = CONSTANT_50
26
+
27
+ PORT_4 = PORT_4
28
+ CONSTANT_5 = CONSTANT_5
29
+ CONSTANT_50 = CONSTANT_50
10
30
 
11
31
  """Auto-generate usage examples from public signatures and entry points."""
12
32
 
@@ -154,7 +174,7 @@ class ExamplesGenerator:
154
174
  source = self.config.source or "./"
155
175
  output = self.config.output or "./docs"
156
176
  if config_cls:
157
- lines.append('# ' + '=' * 50)
177
+ lines.append('# ' + '=' * CONSTANT_50)
158
178
  lines.append("# Example 1: Configuration")
159
179
  lines.append('# ' + '=' * CONSTANT_50)
160
180
  lines.append("")
@@ -168,7 +188,7 @@ class ExamplesGenerator:
168
188
 
169
189
  # --- Example 2: Quick generate ---
170
190
  lines.append("")
171
- lines.append('# ' + '=' * 50)
191
+ lines.append('# ' + '=' * CONSTANT_50)
172
192
  lines.append("# Example 2: Generate documentation")
173
193
  lines.append('# ' + '=' * CONSTANT_50)
174
194
  lines.append("")
@@ -195,7 +215,7 @@ class ExamplesGenerator:
195
215
  scanner_cls = self._find_class_by_name("ProjectScanner")
196
216
  if scanner_cls:
197
217
  lines.append("")
198
- lines.append('# ' + '=' * 50)
218
+ lines.append('# ' + '=' * CONSTANT_50)
199
219
  lines.append("# Example 3: Analyze a project programmatically")
200
220
  lines.append('# ' + '=' * CONSTANT_50)
201
221
  lines.append("")
@@ -231,13 +251,13 @@ class ExamplesGenerator:
231
251
  # --- Individual generators ---
232
252
  gen_classes = self._find_generator_classes()
233
253
  if gen_classes:
234
- lines.append('# ' + '=' * 50)
254
+ lines.append('# ' + '=' * CONSTANT_50)
235
255
  lines.append("# Using individual generators")
236
256
  lines.append('# ' + '=' * CONSTANT_50)
237
257
  lines.append("")
238
258
  lines.append(f"from {pkg} import Code2DocsConfig")
239
259
  lines.append(f"from {pkg}.analyzers.project_scanner import ProjectScanner")
240
- for cls in gen_classes[:4]:
260
+ for cls in gen_classes[:PORT_4]:
241
261
  mod = cls.module or pkg
242
262
  if not mod.startswith(pkg):
243
263
  mod = f"{pkg}.{mod}"
@@ -250,7 +270,7 @@ class ExamplesGenerator:
250
270
  lines.append('result = scanner.analyze(f"./{project_name_adv}") if project_name_adv != "." else scanner.analyze("./")')
251
271
  lines.append("")
252
272
 
253
- for i, cls in enumerate(gen_classes[:4], start=2):
273
+ for i, cls in enumerate(gen_classes[:PORT_4], start=2):
254
274
  gen_name = cls.name[0].lower() + cls.name[1:]
255
275
  gen_name = gen_name.replace("Generator", "_gen")
256
276
  lines.append(f"# Step {i}: Generate with {cls.name}")
@@ -280,7 +300,7 @@ class ExamplesGenerator:
280
300
  fmt_funcs = [f for f in fmt_funcs if f]
281
301
  if fmt_funcs:
282
302
  lines.append("")
283
- lines.append('# ' + '=' * 50)
303
+ lines.append('# ' + '=' * CONSTANT_50)
284
304
  lines.append("# Formatters")
285
305
  lines.append('# ' + '=' * CONSTANT_50)
286
306
  lines.append("")
@@ -315,7 +335,7 @@ class ExamplesGenerator:
315
335
  differ_cls = self._find_class_by_name("Differ")
316
336
  if differ_cls:
317
337
  lines.append("")
318
- lines.append('# ' + '=' * 50)
338
+ lines.append('# ' + '=' * CONSTANT_50)
319
339
  lines.append("# Sync — detect and apply changes")
320
340
  lines.append('# ' + '=' * CONSTANT_50)
321
341
  lines.append("")
@@ -406,7 +426,7 @@ class ExamplesGenerator:
406
426
  """Build a realistic argument string for a function call."""
407
427
  args = [a for a in func.args if a not in ("self", "cls")]
408
428
  parts = []
409
- for arg in args[:5]:
429
+ for arg in args[:CONSTANT_5]:
410
430
  val = self._get_example_value(arg)
411
431
  if not val or val == '"..."':
412
432
  # Try type hint
@@ -1,6 +1,6 @@
1
1
  """Getting Started guide generator."""
2
2
 
3
- from typing import List, Optional
3
+ from typing import List
4
4
 
5
5
  from code2llm.api import AnalysisResult
6
6
 
@@ -1,7 +1,7 @@
1
1
  """Organization README generator - generates overview of multiple projects."""
2
2
 
3
3
  from pathlib import Path
4
- from typing import Dict, List, Optional
4
+ from typing import Dict, Optional
5
5
 
6
6
  from code2llm.api import AnalysisResult
7
7
 
@@ -5,6 +5,34 @@ CONSTANT_15 = 15
5
5
  CONSTANT_20 = 20
6
6
  CONSTANT_30 = 30
7
7
 
8
+
9
+ CONSTANT_3 = CONSTANT_3
10
+ CONSTANT_5 = CONSTANT_5
11
+ CONSTANT_15 = CONSTANT_15
12
+ CONSTANT_20 = CONSTANT_20
13
+ CONSTANT_30 = CONSTANT_30
14
+
15
+
16
+ CONSTANT_3 = CONSTANT_3
17
+ CONSTANT_5 = CONSTANT_5
18
+ CONSTANT_15 = CONSTANT_15
19
+ CONSTANT_20 = CONSTANT_20
20
+ CONSTANT_30 = CONSTANT_30
21
+
22
+
23
+ CONSTANT_3 = CONSTANT_3
24
+ CONSTANT_5 = CONSTANT_5
25
+ CONSTANT_15 = CONSTANT_15
26
+ CONSTANT_20 = CONSTANT_20
27
+ CONSTANT_30 = CONSTANT_30
28
+
29
+
30
+ CONSTANT_3 = CONSTANT_3
31
+ CONSTANT_5 = CONSTANT_5
32
+ CONSTANT_15 = CONSTANT_15
33
+ CONSTANT_20 = CONSTANT_20
34
+ CONSTANT_30 = CONSTANT_30
35
+
8
36
  """README.md generator from AnalysisResult."""
9
37
  import re
10
38
  from pathlib import Path
@@ -90,7 +118,7 @@ class ReadmeGenerator:
90
118
  def _generate_description(self, project_name: str, entry_points: List[str]) -> str:
91
119
  """Generate project description: LLM if available, else package docstring."""
92
120
  if self.llm.available:
93
- modules_summary = ', '.join(sorted(self.result.modules.keys())[:15])
121
+ modules_summary = ', '.join(sorted(self.result.modules.keys())[:CONSTANT_15])
94
122
  eps_str = ', '.join(entry_points[:10])
95
123
  llm_desc = self.llm.generate_project_description(project_name, modules_summary, eps_str)
96
124
  if llm_desc:
@@ -143,7 +171,7 @@ class ReadmeGenerator:
143
171
  result = subprocess.run(['git', 'shortlog', '-sne', 'HEAD'], capture_output=True, text=True, cwd=self.result.project_path)
144
172
  if result.returncode == 0:
145
173
  contributors = []
146
- for line in result.stdout.strip().split('\n')[:5]:
174
+ for line in result.stdout.strip().split('\n')[:CONSTANT_5]:
147
175
  parts = line.split('\t')
148
176
  if len(parts) >= 2:
149
177
  contributors.append(parts[1])
@@ -257,7 +285,7 @@ class ReadmeGenerator:
257
285
  lang_map = {'python': 'python', 'javascript': 'javascript', 'typescript': 'typescript', 'rust': 'rust', 'go': 'go'}
258
286
  code_lang = lang_map.get(lang, lang)
259
287
  parts.append(f'```{code_lang}')
260
- parts.append(f"// Entry points: {', '.join(entry_points[:3])}")
288
+ parts.append(f"// Entry points: {', '.join(entry_points[:CONSTANT_3])}")
261
289
  parts.append('```\n')
262
290
  return '\n'.join(parts)
263
291
 
@@ -265,12 +293,12 @@ class ReadmeGenerator:
265
293
  def _build_api_section(_project_name: str, context: Dict) -> str:
266
294
  """Build API overview section with classes and functions."""
267
295
  parts = ['## API Overview\n']
268
- for name, cls in list(context.get('public_classes', {}).items())[:20]:
296
+ for name, cls in list(context.get('public_classes', {}).items())[:CONSTANT_20]:
269
297
  doc = f' — {cls.docstring.splitlines()[0]}' if cls.docstring else ''
270
298
  parts.append(f'- **`{cls.name}`**{doc}')
271
299
  parts.append('')
272
- for name, func in list(context.get('public_functions', {}).items())[:30]:
273
- args_str = ', '.join(func.args[:5])
300
+ for name, func in list(context.get('public_functions', {}).items())[:CONSTANT_30]:
301
+ args_str = ', '.join(func.args[:CONSTANT_5])
274
302
  ret = f' → {func.returns}' if func.returns else ''
275
303
  parts.append(f'- `{func.name}({args_str}){ret}`')
276
304
  parts.append('')
code2docs/sync/differ.py CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  import hashlib
4
4
  import json
5
- from dataclasses import dataclass, field
5
+ from dataclasses import dataclass
6
6
  from pathlib import Path
7
7
  from typing import Dict, List, Optional
8
8
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code2docs
3
- Version: 3.0.26
3
+ Version: 3.0.27
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
@@ -56,17 +56,17 @@ Dynamic: license-file
56
56
 
57
57
  ## AI Cost Tracking
58
58
 
59
- ![PyPI](https://img.shields.io/badge/pypi-costs-blue) ![Version](https://img.shields.io/badge/version-3.0.26-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
59
+ ![PyPI](https://img.shields.io/badge/pypi-costs-blue) ![Version](https://img.shields.io/badge/version-3.0.27-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
60
60
  ![AI Cost](https://img.shields.io/badge/AI%20Cost-$7.50-orange) ![Human Time](https://img.shields.io/badge/Human%20Time-18.6h-blue) ![Model](https://img.shields.io/badge/Model-openrouter%2Fqwen%2Fqwen3--coder--next-lightgrey)
61
61
 
62
- - 🤖 **LLM usage:** $7.5000 (58 commits)
62
+ - 🤖 **LLM usage:** $7.5000 (59 commits)
63
63
  - 👤 **Human dev:** ~$1857 (18.6h @ $100/h, 30min dedup)
64
64
 
65
- Generated on 2026-04-08 using [openrouter/qwen/qwen3-coder-next](https://openrouter.ai/qwen/qwen3-coder-next)
65
+ Generated on 2026-04-09 using [openrouter/qwen/qwen3-coder-next](https://openrouter.ai/qwen/qwen3-coder-next)
66
66
 
67
67
  ---
68
68
 
69
- ![version](https://img.shields.io/badge/version-3.0.26-blue) ![python](https://img.shields.io/badge/python-%3E%3D3.9-blue) ![docs](https://img.shields.io/badge/docs-auto--generated-blueviolet)
69
+ ![version](https://img.shields.io/badge/version-3.0.27-blue) ![python](https://img.shields.io/badge/python-%3E%3D3.9-blue) ![docs](https://img.shields.io/badge/docs-auto--generated-blueviolet)
70
70
 
71
71
  > Auto-generate and sync project documentation from source code analysis.
72
72
 
@@ -206,7 +206,7 @@ code2docs can update only specific sections of an existing README using markers:
206
206
  ```markdown
207
207
  <!-- code2docs:start --># code2docs
208
208
 
209
- ![version](https://img.shields.io/badge/version-3.0.26-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)
209
+ ![version](https://img.shields.io/badge/version-3.0.27-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)
210
210
  > **276** functions | **57** classes | **51** files | CC̄ = 3.8
211
211
 
212
212
  > Auto-generated project documentation from source code analysis.
@@ -0,0 +1,52 @@
1
+ code2docs/__init__.py,sha256=9YLgZ3RbumKtI5MelGG4TWrKI80sqYaejZEEumQ5HsE,901
2
+ code2docs/__main__.py,sha256=dGGkQIZVFDZXEXa9PWew7cBh7hBAYDWfJ9LeezMf2UI,116
3
+ code2docs/base.py,sha256=tQT0I9iAxpxtCNHFZL8kYdgCD-96ywOvDKD2Iiksgj4,1319
4
+ code2docs/cli.py,sha256=k1mhqb3ykeqpnSfolsZSn3lVPkR8wde9DQdKlON1w0o,11283
5
+ code2docs/config.py,sha256=OL7FMOMkJ_nw01NKYxd17oKVzqk_BkVKDKCVuMUeVyo,8858
6
+ code2docs/llm_helper.py,sha256=2Q_pnOBeei9EVU9HL_dWmqUpdkSzYNlMfIr5OOQcLws,6155
7
+ code2docs/registry.py,sha256=aD3pdTAF2VeTMVddoQdt6QCB9b15FQywLE0W8Uca0xk,1256
8
+ code2docs/analyzers/__init__.py,sha256=lIvbHr8JCuYTd8QJNsR7RANLFdlpIMJEsv-lMO7Avdc,370
9
+ code2docs/analyzers/dependency_scanner.py,sha256=BVbqR4iaIpWzazbBOjovuKdICJOP2YdMUQaWMdM9TTQ,10730
10
+ code2docs/analyzers/docstring_extractor.py,sha256=gu2NqvnkFu8Mii1lxCZk1jBKNPkCVj09iiapaRrgX_Y,5060
11
+ code2docs/analyzers/endpoint_detector.py,sha256=IlRY6vEw-uUy4CTN3AOEkM6IcohcMy0iZDOoQJxrrno,3827
12
+ code2docs/analyzers/project_scanner.py,sha256=Ru86nrT_SyMN8wYuQ2tu0lK1WM7Z4K9zUXOmpNNDJ6Q,1599
13
+ code2docs/examples/advanced_usage.py,sha256=sHyXrXV5p9t6B9OpZndPNrClBSSEzSmjlsvoMT7cp9k,2741
14
+ code2docs/examples/quickstart.py,sha256=VDJfpRtMFZOBZAGXLkJ65ELUncjF7YM0x2vIm3aZmrA,1301
15
+ code2docs/formatters/__init__.py,sha256=3-myGxFceSgOW3g1eQFUJO3tEDF03MbG-7WL1WEylk4,240
16
+ code2docs/formatters/badges.py,sha256=zd3Us9n1-ZVcQTR9GtskHrwaBqBWcKJ_5wL_swNaQT8,1737
17
+ code2docs/formatters/markdown.py,sha256=yfmicI9-T0WnyFoZRe4XrB2Wc847kNqK7q0VSeP8zVg,2278
18
+ code2docs/formatters/toc.py,sha256=EBynYUlgkk5W5_QqsRHWbIW2Cfpk3sJulk3FvURHK60,1770
19
+ code2docs/generators/__init__.py,sha256=U1p6nY6pLLTXF7wY2TgnQ017bXZf3vtJ2iTAWsk4ejA,1988
20
+ code2docs/generators/_registry_adapters.py,sha256=XBTGzt52a7EN5zOk3Edgf2LT99wFaxzjuc_UaNVF1EI,15429
21
+ code2docs/generators/_source_links.py,sha256=PqCZ2FDEt1metBsv11J9gT3ldOGGHS9Nsx0YyETw1p8,2763
22
+ code2docs/generators/api_changelog_gen.py,sha256=7g9kYc05y8p1uB_VkJ5ZzAMN_K2GDl79Cf9RyVgeE6o,7634
23
+ code2docs/generators/api_reference_gen.py,sha256=Z0fynsUb1lSjafZt9Mx5u5coQc9RNTfs-RPBo3b9NZw,7141
24
+ code2docs/generators/architecture_gen.py,sha256=4XPbG5hkzuUdjGGYef5EXmHWNzXx4A1I3gb3iyx_q-A,12474
25
+ code2docs/generators/changelog_gen.py,sha256=3GR9UgOTEi3shuYtVMZ3zRBDy4_rlJNW337rqtUmB7I,3992
26
+ code2docs/generators/code2llm_gen.py,sha256=zWfm2sAPd4WA4k0T8zxqblK86I-H5OzAzu26BxK88og,7136
27
+ code2docs/generators/config_docs_gen.py,sha256=KTq_FhceFXXVMqMSOuCB-71iMYqU6FwQn_ECm8z-69U,5403
28
+ code2docs/generators/contributing_gen.py,sha256=kI13WF--VRjNKLuDTc4tTd4i3Jw9hPDhEc4McT4DuAI,8435
29
+ code2docs/generators/coverage_gen.py,sha256=SV9h00SCg20feLnfDb0k0g-qFg9FyJQAUFso9TvtDlI,4286
30
+ code2docs/generators/depgraph_gen.py,sha256=n04TozkMbywK8JlU9SpnC9lpnPPCqOEGb_2P-oh72aA,5084
31
+ code2docs/generators/examples_gen.py,sha256=AcfHFD2dSumidZClYVkTraXxvb2I5f5XYU20BMpxflQ,18944
32
+ code2docs/generators/getting_started_gen.py,sha256=tc-sI9c1svuSO87qnByr5XYsXAj-LV-xjwWjh_tYO6Q,7159
33
+ code2docs/generators/mkdocs_gen.py,sha256=ciETCRUzb3V3kSGAslM5DStHJUQ1Ju-pTxC1Iv_duzo,3849
34
+ code2docs/generators/module_docs_gen.py,sha256=4txn0WmPRAraFreVwluz2by9ZpMmMhznhooiqtTbLnc,8324
35
+ code2docs/generators/org_readme_gen.py,sha256=BFpkDeli_5bWN9tDsBBwXSmKy8lD4zAjjL7sQtnxH94,8615
36
+ code2docs/generators/readme_gen.py,sha256=DstMFt2Cgn7OaZL-udZrBSbwmC1n34mqtmBc6LO0ys0,17264
37
+ code2docs/sync/__init__.py,sha256=MOTJYvJXPZF-4PS47lv-6bOc9J2ZoQGoIchp3vIuwrU,162
38
+ code2docs/sync/differ.py,sha256=3dtu95BiiTXaz8tU63Ot6_W9DAHdFoKVd3OIiFz7Qiw,4160
39
+ code2docs/sync/updater.py,sha256=ZuRcVtoubxwPnuuTn8s05h1xLoSNwzaNlm_XKAJdf94,1971
40
+ code2docs/sync/watcher.py,sha256=HvY4aK-WhCUrYEXoNFoQihBkith_JZHKwVKQV07CIJc,2392
41
+ code2docs/templates/api_module.md.j2,sha256=mn8rH6YRlo1JIr0m8I6JkEvkhDCMOszfl9CEwEEZLAI,1485
42
+ code2docs/templates/architecture.md.j2,sha256=kx_lECcC9FGHTEnhgPNVGIijDFXu5xFcm4wMHC85lNg,881
43
+ code2docs/templates/example_usage.py.j2,sha256=G0mF7iLtisnsh-PfPTMLgVoNSDw6J-MqPndzMTtcuJk,225
44
+ code2docs/templates/index.md.j2,sha256=pj56gwiLuXxV64xVYfzmtboMLyFKF-Kty01Ps0t37xM,653
45
+ code2docs/templates/module_doc.md.j2,sha256=oMcaDSSCbyMSjQtnal7garYr4dDbTcRAQobsjrYVYGo,1876
46
+ code2docs/templates/readme.md.j2,sha256=uOSK5eWQ63jRYOzdPVbiTIvXUombw3juJQzJuqzrcT4,8346
47
+ code2docs-3.0.27.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
48
+ code2docs-3.0.27.dist-info/METADATA,sha256=XVSPG25yAQQwHnmohDpXWheDIfjadpjc-RYgUgzdZ2s,39896
49
+ code2docs-3.0.27.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
50
+ code2docs-3.0.27.dist-info/entry_points.txt,sha256=ATamjPNo2CbTaAUN3LfK8qrnY3EQE9gE7lMDgPYhLdQ,49
51
+ code2docs-3.0.27.dist-info/top_level.txt,sha256=L-O2M4M-NSiphgcKSfXFsC-t6PqziMl8Ef6tsNR2DaM,10
52
+ code2docs-3.0.27.dist-info/RECORD,,
@@ -1,52 +0,0 @@
1
- code2docs/__init__.py,sha256=G05QelLVCYPk7EvEQ0yFT46L4wgcxb9jeiiRNG0yZI8,901
2
- code2docs/__main__.py,sha256=dGGkQIZVFDZXEXa9PWew7cBh7hBAYDWfJ9LeezMf2UI,116
3
- code2docs/base.py,sha256=tQT0I9iAxpxtCNHFZL8kYdgCD-96ywOvDKD2Iiksgj4,1319
4
- code2docs/cli.py,sha256=QAQSmltyAsQatfaplXfcxK9iqJgVK1azteU0GQvV4zY,11282
5
- code2docs/config.py,sha256=OL7FMOMkJ_nw01NKYxd17oKVzqk_BkVKDKCVuMUeVyo,8858
6
- code2docs/llm_helper.py,sha256=2Q_pnOBeei9EVU9HL_dWmqUpdkSzYNlMfIr5OOQcLws,6155
7
- code2docs/registry.py,sha256=aD3pdTAF2VeTMVddoQdt6QCB9b15FQywLE0W8Uca0xk,1256
8
- code2docs/analyzers/__init__.py,sha256=lIvbHr8JCuYTd8QJNsR7RANLFdlpIMJEsv-lMO7Avdc,370
9
- code2docs/analyzers/dependency_scanner.py,sha256=BVbqR4iaIpWzazbBOjovuKdICJOP2YdMUQaWMdM9TTQ,10730
10
- code2docs/analyzers/docstring_extractor.py,sha256=p12lHzIZSHEUh3N-JNpAxDZIDzc9Wul4RvCyfip7sHk,5128
11
- code2docs/analyzers/endpoint_detector.py,sha256=wbD0-923DE9yNNUnEUBLxcOW73xM5YRZ8R_bx4Kd-aE,3844
12
- code2docs/analyzers/project_scanner.py,sha256=TaqFRoOZQJqmT1A2uCmTTyIETnWEOyQbYl3EmmX28bg,1637
13
- code2docs/examples/advanced_usage.py,sha256=vy_yw6uuCZit0eXqQvXf7c3evk6yksIdVjXcPKCBuPs,2766
14
- code2docs/examples/quickstart.py,sha256=wSb2WLfDhtUBxZpdQox04QUfZCzI_dOC--GqDpKZB98,1369
15
- code2docs/formatters/__init__.py,sha256=3-myGxFceSgOW3g1eQFUJO3tEDF03MbG-7WL1WEylk4,240
16
- code2docs/formatters/badges.py,sha256=zd3Us9n1-ZVcQTR9GtskHrwaBqBWcKJ_5wL_swNaQT8,1737
17
- code2docs/formatters/markdown.py,sha256=umUvUyKVuvvT-SysWV6xgEQWpc-_UiR9Trf3hodUyBs,2294
18
- code2docs/formatters/toc.py,sha256=EBynYUlgkk5W5_QqsRHWbIW2Cfpk3sJulk3FvURHK60,1770
19
- code2docs/generators/__init__.py,sha256=U1p6nY6pLLTXF7wY2TgnQ017bXZf3vtJ2iTAWsk4ejA,1988
20
- code2docs/generators/_registry_adapters.py,sha256=XBTGzt52a7EN5zOk3Edgf2LT99wFaxzjuc_UaNVF1EI,15429
21
- code2docs/generators/_source_links.py,sha256=PqCZ2FDEt1metBsv11J9gT3ldOGGHS9Nsx0YyETw1p8,2763
22
- code2docs/generators/api_changelog_gen.py,sha256=B2a4L12jqtf9J9OB9Wm26S_CsJdJhwcK0Ze_ZcY_6So,7648
23
- code2docs/generators/api_reference_gen.py,sha256=E8kkVjAMzcBWKuukk_dHEkCCNzigrE_qJf5Y63DDpdo,7151
24
- code2docs/generators/architecture_gen.py,sha256=m3Dd-uoVdSEMPQ1IxNcthTP_aeSzOg3NQjazZpErGM8,12486
25
- code2docs/generators/changelog_gen.py,sha256=y35QC9hq6PiRSjVcZTkz5pqOWuoWcu3C6Jn6NKahnY8,3999
26
- code2docs/generators/code2llm_gen.py,sha256=xv6CZ1nnrqadm37mZhV58GIQrqt0aK8tgBiy_Xo85YU,7141
27
- code2docs/generators/config_docs_gen.py,sha256=zf8cPsxPMDHpoUDSh1pLz8Lpv1UDl1NsfipgtS7v18s,5425
28
- code2docs/generators/contributing_gen.py,sha256=7mFuSDWfGzsngEyVePu7qwLhW-0x38b75HMahA_3-II,8441
29
- code2docs/generators/coverage_gen.py,sha256=SV9h00SCg20feLnfDb0k0g-qFg9FyJQAUFso9TvtDlI,4286
30
- code2docs/generators/depgraph_gen.py,sha256=59jF_krbbtfA_filo8AfDrGzGpwGAzWMN6yl7Hp4eNc,5096
31
- code2docs/generators/examples_gen.py,sha256=koxhMdzCF3e_ZOVPSXQo-BFkklwiMaVKvDiFXdYjs4E,18576
32
- code2docs/generators/getting_started_gen.py,sha256=ztixV_OnQGgD9hJV68Jy_s_ATXyUss5g8AEvSGdPVrU,7169
33
- code2docs/generators/mkdocs_gen.py,sha256=ciETCRUzb3V3kSGAslM5DStHJUQ1Ju-pTxC1Iv_duzo,3849
34
- code2docs/generators/module_docs_gen.py,sha256=4txn0WmPRAraFreVwluz2by9ZpMmMhznhooiqtTbLnc,8324
35
- code2docs/generators/org_readme_gen.py,sha256=N6zrAeT_F23glI-vUo3NKLlFTMfu7R6pndo91INF834,8621
36
- code2docs/generators/readme_gen.py,sha256=wXxPP1cyE0yM004mectEhgrma4YcwzEBtF0wfFzcy_o,16698
37
- code2docs/sync/__init__.py,sha256=MOTJYvJXPZF-4PS47lv-6bOc9J2ZoQGoIchp3vIuwrU,162
38
- code2docs/sync/differ.py,sha256=XqYDhxTM53AOCsbNrB_R3KVawg-an9YqUjPmyKsBS0I,4167
39
- code2docs/sync/updater.py,sha256=ZuRcVtoubxwPnuuTn8s05h1xLoSNwzaNlm_XKAJdf94,1971
40
- code2docs/sync/watcher.py,sha256=HvY4aK-WhCUrYEXoNFoQihBkith_JZHKwVKQV07CIJc,2392
41
- code2docs/templates/api_module.md.j2,sha256=mn8rH6YRlo1JIr0m8I6JkEvkhDCMOszfl9CEwEEZLAI,1485
42
- code2docs/templates/architecture.md.j2,sha256=kx_lECcC9FGHTEnhgPNVGIijDFXu5xFcm4wMHC85lNg,881
43
- code2docs/templates/example_usage.py.j2,sha256=G0mF7iLtisnsh-PfPTMLgVoNSDw6J-MqPndzMTtcuJk,225
44
- code2docs/templates/index.md.j2,sha256=pj56gwiLuXxV64xVYfzmtboMLyFKF-Kty01Ps0t37xM,653
45
- code2docs/templates/module_doc.md.j2,sha256=oMcaDSSCbyMSjQtnal7garYr4dDbTcRAQobsjrYVYGo,1876
46
- code2docs/templates/readme.md.j2,sha256=uOSK5eWQ63jRYOzdPVbiTIvXUombw3juJQzJuqzrcT4,8346
47
- code2docs-3.0.26.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
48
- code2docs-3.0.26.dist-info/METADATA,sha256=7a9HcqInu_aRFBN7AXMyWTiUgSX8za1MT4CuYKo_Piw,39896
49
- code2docs-3.0.26.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
50
- code2docs-3.0.26.dist-info/entry_points.txt,sha256=ATamjPNo2CbTaAUN3LfK8qrnY3EQE9gE7lMDgPYhLdQ,49
51
- code2docs-3.0.26.dist-info/top_level.txt,sha256=L-O2M4M-NSiphgcKSfXFsC-t6PqziMl8Ef6tsNR2DaM,10
52
- code2docs-3.0.26.dist-info/RECORD,,