pycodecommenter 2.1.0__tar.gz → 2.2.0__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.
- pycodecommenter-2.2.0/.github/workflows/docs.yml +66 -0
- {pycodecommenter-2.1.0 → pycodecommenter-2.2.0}/.github/workflows/publish.yml +32 -32
- {pycodecommenter-2.1.0 → pycodecommenter-2.2.0}/.gitignore +56 -56
- pycodecommenter-2.2.0/.well-known/ai-plugin.json +23 -0
- pycodecommenter-2.2.0/CHANGELOG.md +63 -0
- pycodecommenter-2.2.0/CITATION.cff +32 -0
- {pycodecommenter-2.1.0 → pycodecommenter-2.2.0}/CONTRIBUTING.md +29 -29
- {pycodecommenter-2.1.0 → pycodecommenter-2.2.0}/Future Work/Future Release WorkPlan.txt +14 -14
- pycodecommenter-2.2.0/Future Work/Vulnerabilties.md +301 -0
- {pycodecommenter-2.1.0 → pycodecommenter-2.2.0}/Future Work/v2.1.0 /342/200/224 Remaining Items (dry-run, backup, config loader, test rewrite).txt" +142 -142
- {pycodecommenter-2.1.0 → pycodecommenter-2.2.0}/Future Work/v2.2.0 /342/200/224 Accuracy & Output.txt" +125 -125
- {pycodecommenter-2.1.0 → pycodecommenter-2.2.0}/Future Work/v3.0.0 /342/200/224 Safe, Configurable, Extensible.txt" +131 -131
- {pycodecommenter-2.1.0 → pycodecommenter-2.2.0}/Future Work/v3.1.0 /342/200/224 Integrations.txt" +139 -138
- {pycodecommenter-2.1.0 → pycodecommenter-2.2.0}/LICENSE +21 -21
- pycodecommenter-2.2.0/PKG-INFO +405 -0
- {pycodecommenter-2.1.0 → pycodecommenter-2.2.0}/PyCodeCommenter/__init__.py +28 -27
- {pycodecommenter-2.1.0 → pycodecommenter-2.2.0}/PyCodeCommenter/cli.py +130 -101
- {pycodecommenter-2.1.0 → pycodecommenter-2.2.0}/PyCodeCommenter/commenter.py +486 -477
- {pycodecommenter-2.1.0 → pycodecommenter-2.2.0}/PyCodeCommenter/coverage.py +124 -124
- {pycodecommenter-2.1.0 → pycodecommenter-2.2.0}/PyCodeCommenter/docstring_parser.py +121 -121
- {pycodecommenter-2.1.0 → pycodecommenter-2.2.0}/PyCodeCommenter/parameter_descriptions.py +76 -76
- {pycodecommenter-2.1.0 → pycodecommenter-2.2.0}/PyCodeCommenter/templates.py +95 -95
- {pycodecommenter-2.1.0 → pycodecommenter-2.2.0}/PyCodeCommenter/type_analyzer.py +203 -203
- {pycodecommenter-2.1.0 → pycodecommenter-2.2.0}/PyCodeCommenter/validator.py +663 -563
- pycodecommenter-2.2.0/README.md +365 -0
- pycodecommenter-2.2.0/docs/assets/.gitkeep +12 -0
- pycodecommenter-2.2.0/docs/changelog.md +76 -0
- pycodecommenter-2.2.0/docs/cli-reference.md +270 -0
- pycodecommenter-2.2.0/docs/configuration.md +124 -0
- pycodecommenter-2.2.0/docs/contributing.md +114 -0
- pycodecommenter-2.2.0/docs/docstring-styles.md +148 -0
- pycodecommenter-2.2.0/docs/faq.md +249 -0
- pycodecommenter-2.2.0/docs/getting-started.md +120 -0
- pycodecommenter-2.2.0/docs/index.md +185 -0
- pycodecommenter-2.2.0/docs/javascripts/custom.js +61 -0
- pycodecommenter-2.2.0/docs/python-api.md +626 -0
- pycodecommenter-2.2.0/docs/recipes.md +294 -0
- pycodecommenter-2.2.0/docs/robots.txt +20 -0
- pycodecommenter-2.2.0/docs/stylesheets/extra.css +157 -0
- pycodecommenter-2.2.0/docs/validation-checks.md +491 -0
- {pycodecommenter-2.1.0 → pycodecommenter-2.2.0}/examples/basic_usage.py +35 -35
- {pycodecommenter-2.1.0 → pycodecommenter-2.2.0}/examples/ci_integration.py +29 -29
- {pycodecommenter-2.1.0 → pycodecommenter-2.2.0}/examples/coverage_example.py +18 -18
- {pycodecommenter-2.1.0 → pycodecommenter-2.2.0}/examples/validation_example.py +26 -26
- pycodecommenter-2.2.0/llms.txt +71 -0
- pycodecommenter-2.2.0/mkdocs.yml +90 -0
- pycodecommenter-2.2.0/pycodecommenter.egg-info/PKG-INFO +405 -0
- {pycodecommenter-2.1.0 → pycodecommenter-2.2.0}/pycodecommenter.egg-info/SOURCES.txt +24 -1
- {pycodecommenter-2.1.0 → pycodecommenter-2.2.0}/pyproject.toml +78 -49
- pycodecommenter-2.2.0/scratch/test_mixed_returns.py +31 -0
- pycodecommenter-2.2.0/scratch/test_unicode.py +13 -0
- {pycodecommenter-2.1.0 → pycodecommenter-2.2.0}/test_backwards_compatibility.py +38 -38
- {pycodecommenter-2.1.0 → pycodecommenter-2.2.0}/test_basic_validation.py +1 -1
- {pycodecommenter-2.1.0 → pycodecommenter-2.2.0}/test_coverage.py +30 -30
- {pycodecommenter-2.1.0 → pycodecommenter-2.2.0}/test_edge_cases.py +1 -1
- {pycodecommenter-2.1.0 → pycodecommenter-2.2.0}/test_modern.py +37 -37
- {pycodecommenter-2.1.0 → pycodecommenter-2.2.0}/test_type_analyzer.py +1 -0
- pycodecommenter-2.2.0/test_validation.py +373 -0
- pycodecommenter-2.1.0/CHANGELOG.md +0 -40
- pycodecommenter-2.1.0/PKG-INFO +0 -322
- pycodecommenter-2.1.0/README.md +0 -289
- pycodecommenter-2.1.0/pycodecommenter.egg-info/PKG-INFO +0 -322
- pycodecommenter-2.1.0/test_validation.py +0 -170
- {pycodecommenter-2.1.0 → pycodecommenter-2.2.0}/PyCodeCommenter/config.py +0 -0
- {pycodecommenter-2.1.0 → pycodecommenter-2.2.0}/PyCodeCommenter/inference.py +0 -0
- {pycodecommenter-2.1.0 → pycodecommenter-2.2.0}/conftest.py +0 -0
- {pycodecommenter-2.1.0 → pycodecommenter-2.2.0}/main.py +0 -0
- {pycodecommenter-2.1.0 → pycodecommenter-2.2.0}/pycodecommenter.egg-info/dependency_links.txt +0 -0
- {pycodecommenter-2.1.0 → pycodecommenter-2.2.0}/pycodecommenter.egg-info/entry_points.txt +0 -0
- {pycodecommenter-2.1.0 → pycodecommenter-2.2.0}/pycodecommenter.egg-info/requires.txt +0 -0
- {pycodecommenter-2.1.0 → pycodecommenter-2.2.0}/pycodecommenter.egg-info/top_level.txt +0 -0
- {pycodecommenter-2.1.0 → pycodecommenter-2.2.0}/scratch/test_infer.py +0 -0
- {pycodecommenter-2.1.0 → pycodecommenter-2.2.0}/setup.cfg +0 -0
- {pycodecommenter-2.1.0 → pycodecommenter-2.2.0}/test_integration.py +0 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# .github/workflows/docs.yml
|
|
2
|
+
# Builds and deploys the MkDocs documentation site to GitHub Pages.
|
|
3
|
+
#
|
|
4
|
+
# Trigger: any push to `main` that touches docs/ or this workflow file.
|
|
5
|
+
# Manual trigger: workflow_dispatch (run from the Actions tab at any time).
|
|
6
|
+
#
|
|
7
|
+
# REQUIRED ONE-TIME SETUP:
|
|
8
|
+
# GitHub repo → Settings → Pages → Source → select "GitHub Actions"
|
|
9
|
+
# Without that change the deploy job runs but the site never goes live.
|
|
10
|
+
|
|
11
|
+
name: Deploy Documentation
|
|
12
|
+
|
|
13
|
+
on:
|
|
14
|
+
push:
|
|
15
|
+
branches:
|
|
16
|
+
- main
|
|
17
|
+
paths:
|
|
18
|
+
- 'docs/**'
|
|
19
|
+
- 'mkdocs.yml'
|
|
20
|
+
- '.github/workflows/docs.yml'
|
|
21
|
+
workflow_dispatch:
|
|
22
|
+
|
|
23
|
+
permissions:
|
|
24
|
+
contents: read
|
|
25
|
+
pages: write
|
|
26
|
+
id-token: write
|
|
27
|
+
|
|
28
|
+
concurrency:
|
|
29
|
+
group: "pages"
|
|
30
|
+
cancel-in-progress: false
|
|
31
|
+
|
|
32
|
+
jobs:
|
|
33
|
+
build:
|
|
34
|
+
name: Build Documentation Site
|
|
35
|
+
runs-on: ubuntu-latest
|
|
36
|
+
steps:
|
|
37
|
+
- name: Checkout repository
|
|
38
|
+
uses: actions/checkout@v4
|
|
39
|
+
|
|
40
|
+
- name: Set up Python
|
|
41
|
+
uses: actions/setup-python@v5
|
|
42
|
+
with:
|
|
43
|
+
python-version: '3.x'
|
|
44
|
+
|
|
45
|
+
- name: Install MkDocs and theme
|
|
46
|
+
run: pip install mkdocs mkdocs-material
|
|
47
|
+
|
|
48
|
+
- name: Build site
|
|
49
|
+
run: mkdocs build --strict --site-dir _site
|
|
50
|
+
|
|
51
|
+
- name: Upload Pages artifact
|
|
52
|
+
uses: actions/upload-pages-artifact@v3
|
|
53
|
+
with:
|
|
54
|
+
path: _site
|
|
55
|
+
|
|
56
|
+
deploy:
|
|
57
|
+
name: Deploy to GitHub Pages
|
|
58
|
+
needs: build
|
|
59
|
+
runs-on: ubuntu-latest
|
|
60
|
+
environment:
|
|
61
|
+
name: github-pages
|
|
62
|
+
url: ${{ steps.deployment.outputs.page_url }}
|
|
63
|
+
steps:
|
|
64
|
+
- name: Deploy to GitHub Pages
|
|
65
|
+
id: deployment
|
|
66
|
+
uses: actions/deploy-pages@v4
|
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
name: Publish to PyPI
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
release:
|
|
5
|
-
types: [published]
|
|
6
|
-
|
|
7
|
-
jobs:
|
|
8
|
-
pypi-publish:
|
|
9
|
-
name: Upload release to PyPI
|
|
10
|
-
runs-on: ubuntu-latest
|
|
11
|
-
environment:
|
|
12
|
-
name: pypi
|
|
13
|
-
url: https://pypi.org/p/pycodecommenter
|
|
14
|
-
permissions:
|
|
15
|
-
id-token: write # IMPORTANT: this permission is mandatory for trusted publishing
|
|
16
|
-
steps:
|
|
17
|
-
- uses: actions/checkout@v4
|
|
18
|
-
|
|
19
|
-
- name: Set up Python
|
|
20
|
-
uses: actions/setup-python@v5
|
|
21
|
-
with:
|
|
22
|
-
python-version: '3.x'
|
|
23
|
-
|
|
24
|
-
- name: Install dependencies
|
|
25
|
-
run: |
|
|
26
|
-
python -m pip install --upgrade pip
|
|
27
|
-
pip install build
|
|
28
|
-
|
|
29
|
-
- name: Build package
|
|
30
|
-
run: python -m build
|
|
31
|
-
|
|
32
|
-
- name: Publish package distributions to PyPI
|
|
1
|
+
name: Publish to PyPI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types: [published]
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
pypi-publish:
|
|
9
|
+
name: Upload release to PyPI
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
environment:
|
|
12
|
+
name: pypi
|
|
13
|
+
url: https://pypi.org/p/pycodecommenter
|
|
14
|
+
permissions:
|
|
15
|
+
id-token: write # IMPORTANT: this permission is mandatory for trusted publishing
|
|
16
|
+
steps:
|
|
17
|
+
- uses: actions/checkout@v4
|
|
18
|
+
|
|
19
|
+
- name: Set up Python
|
|
20
|
+
uses: actions/setup-python@v5
|
|
21
|
+
with:
|
|
22
|
+
python-version: '3.x'
|
|
23
|
+
|
|
24
|
+
- name: Install dependencies
|
|
25
|
+
run: |
|
|
26
|
+
python -m pip install --upgrade pip
|
|
27
|
+
pip install build
|
|
28
|
+
|
|
29
|
+
- name: Build package
|
|
30
|
+
run: python -m build
|
|
31
|
+
|
|
32
|
+
- name: Publish package distributions to PyPI
|
|
33
33
|
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -1,56 +1,56 @@
|
|
|
1
|
-
# Python
|
|
2
|
-
__pycache__/
|
|
3
|
-
*.py[cod]
|
|
4
|
-
*$py.class
|
|
5
|
-
*.so
|
|
6
|
-
.Python
|
|
7
|
-
build/
|
|
8
|
-
develop-eggs/
|
|
9
|
-
dist/
|
|
10
|
-
downloads/
|
|
11
|
-
eggs/
|
|
12
|
-
.eggs/
|
|
13
|
-
lib/
|
|
14
|
-
lib64/
|
|
15
|
-
parts/
|
|
16
|
-
sdist/
|
|
17
|
-
var/
|
|
18
|
-
wheels/
|
|
19
|
-
share/python-wheels/
|
|
20
|
-
*.egg-info/
|
|
21
|
-
.installed.cfg
|
|
22
|
-
*.egg
|
|
23
|
-
MANIFEST
|
|
24
|
-
|
|
25
|
-
# Environments
|
|
26
|
-
.env
|
|
27
|
-
.venv
|
|
28
|
-
env/
|
|
29
|
-
venv/
|
|
30
|
-
ENV/
|
|
31
|
-
env.bak/
|
|
32
|
-
venv.bak/
|
|
33
|
-
|
|
34
|
-
# Pytest
|
|
35
|
-
.pytest_cache/
|
|
36
|
-
.coverage
|
|
37
|
-
htmlcov/
|
|
38
|
-
|
|
39
|
-
# Local/Temp Files for PyCodeCommenter
|
|
40
|
-
env_info.txt
|
|
41
|
-
out.txt
|
|
42
|
-
output.txt
|
|
43
|
-
modern_output.txt
|
|
44
|
-
modern_results.txt
|
|
45
|
-
test_output.txt
|
|
46
|
-
reproduction.py
|
|
47
|
-
test_cst.txt
|
|
48
|
-
main_output.txt
|
|
49
|
-
out_*.txt
|
|
50
|
-
verify_*.py
|
|
51
|
-
verify_*.txt
|
|
52
|
-
error.txt
|
|
53
|
-
version_info.txt
|
|
54
|
-
|
|
55
|
-
# VS Code
|
|
56
|
-
.vscode/
|
|
1
|
+
# Python
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
*.so
|
|
6
|
+
.Python
|
|
7
|
+
build/
|
|
8
|
+
develop-eggs/
|
|
9
|
+
dist/
|
|
10
|
+
downloads/
|
|
11
|
+
eggs/
|
|
12
|
+
.eggs/
|
|
13
|
+
lib/
|
|
14
|
+
lib64/
|
|
15
|
+
parts/
|
|
16
|
+
sdist/
|
|
17
|
+
var/
|
|
18
|
+
wheels/
|
|
19
|
+
share/python-wheels/
|
|
20
|
+
*.egg-info/
|
|
21
|
+
.installed.cfg
|
|
22
|
+
*.egg
|
|
23
|
+
MANIFEST
|
|
24
|
+
|
|
25
|
+
# Environments
|
|
26
|
+
.env
|
|
27
|
+
.venv
|
|
28
|
+
env/
|
|
29
|
+
venv/
|
|
30
|
+
ENV/
|
|
31
|
+
env.bak/
|
|
32
|
+
venv.bak/
|
|
33
|
+
|
|
34
|
+
# Pytest
|
|
35
|
+
.pytest_cache/
|
|
36
|
+
.coverage
|
|
37
|
+
htmlcov/
|
|
38
|
+
|
|
39
|
+
# Local/Temp Files for PyCodeCommenter
|
|
40
|
+
env_info.txt
|
|
41
|
+
out.txt
|
|
42
|
+
output.txt
|
|
43
|
+
modern_output.txt
|
|
44
|
+
modern_results.txt
|
|
45
|
+
test_output.txt
|
|
46
|
+
reproduction.py
|
|
47
|
+
test_cst.txt
|
|
48
|
+
main_output.txt
|
|
49
|
+
out_*.txt
|
|
50
|
+
verify_*.py
|
|
51
|
+
verify_*.txt
|
|
52
|
+
error.txt
|
|
53
|
+
version_info.txt
|
|
54
|
+
|
|
55
|
+
# VS Code
|
|
56
|
+
.vscode/
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": "v1",
|
|
3
|
+
"name_for_human": "PyCodeCommenter",
|
|
4
|
+
"name_for_model": "pycodecommenter",
|
|
5
|
+
"description_for_human": "Python docstring generator and validator. Generates Google-style docstrings from AST, validates them against real function signatures, and measures documentation coverage.",
|
|
6
|
+
"description_for_model": "PyCodeCommenter is a deterministic, AST-based Python tool. It can: (1) generate Google-style docstrings for undocumented Python functions and classes from their AST, (2) validate existing docstrings against real function signatures across six check categories, (3) measure documentation coverage per file or project, and (4) export structured JSON reports. It requires no AI, no network access, and no API keys. Install with 'pip install pycodecommenter'. Main classes: PyCodeCommenter (generation), DocstringValidator (validation), CoverageAnalyzer (coverage).",
|
|
7
|
+
"auth": {
|
|
8
|
+
"type": "none"
|
|
9
|
+
},
|
|
10
|
+
"api": {
|
|
11
|
+
"type": "none"
|
|
12
|
+
},
|
|
13
|
+
"logo_url": "https://amosquety.github.io/PyCodeCommenter/assets/logo.png",
|
|
14
|
+
"contact_email": "amosnabasa4@gmail.com",
|
|
15
|
+
"legal_info_url": "https://github.com/AmosQuety/PyCodeCommenter/blob/main/LICENSE",
|
|
16
|
+
"homepage": "https://amosquety.github.io/PyCodeCommenter/",
|
|
17
|
+
"repository": "https://github.com/AmosQuety/PyCodeCommenter",
|
|
18
|
+
"pypi": "https://pypi.org/project/pycodecommenter/",
|
|
19
|
+
"install_command": "pip install pycodecommenter",
|
|
20
|
+
"version": "2.2.0",
|
|
21
|
+
"license": "MIT",
|
|
22
|
+
"author": "Nabasa Amos (Amos Quety)"
|
|
23
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to PyCodeCommenter will be documented in this file.
|
|
4
|
+
Format follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
|
5
|
+
|
|
6
|
+
## [2.2.0] - 2026-07-12
|
|
7
|
+
|
|
8
|
+
### Added
|
|
9
|
+
- **Decorator-aware validation** — `@property` setter and deleter variants no longer produce false-positive
|
|
10
|
+
"missing Returns section" warnings. `@classmethod` (`cls`) and `@staticmethod` were verified already correct.
|
|
11
|
+
- **`--output-format json`** flag on both `validate` and `coverage` subcommands. Prints machine-readable
|
|
12
|
+
JSON to stdout; text output is completely unchanged.
|
|
13
|
+
- **`ValidationReport.to_dict()`** updated to spec-compliant shape: `stats.total`, `stats.info`,
|
|
14
|
+
`stats.coverage_percentage`; issues now include `line` (integer), `severity` (uppercase), `check`, `message`.
|
|
15
|
+
- **`_has_raises_section()` helper** in `validator.py` — recognises `Raises:` (Google), `Raises\n`
|
|
16
|
+
(bare header), and `:raises ` (Sphinx, trailing space prevents false matches).
|
|
17
|
+
- **`llms.txt`** file at repo root — AI agent and LLM crawler discovery file.
|
|
18
|
+
- **SEO/AEO optimisation** — keyword-rich README, PyPI classifiers/keywords, per-page meta tags on all
|
|
19
|
+
doc pages, JSON-LD `SoftwareApplication` schema on docs homepage.
|
|
20
|
+
|
|
21
|
+
### Changed
|
|
22
|
+
- `test_validation.py` rewritten from script-style to proper pytest (17 tests, all pass).
|
|
23
|
+
- `pyproject.toml` keywords expanded to 20 terms; classifiers expanded with `Code Generators`,
|
|
24
|
+
`Libraries :: Python Modules`, `Environment :: Console`, `Operating System :: OS Independent`.
|
|
25
|
+
- `mkdocs.yml` enriched with `site_author`, explicit `language: en`, `navigation.indexes`,
|
|
26
|
+
`search.share`, `toc.follow`, and `meta` markdown extension for per-page SEO tags.
|
|
27
|
+
|
|
28
|
+
## [2.0.0] - 2026-01-25
|
|
29
|
+
|
|
30
|
+
### Major Release - Complete Rewrite
|
|
31
|
+
|
|
32
|
+
#### Added
|
|
33
|
+
- **Comprehensive Validation System** - 6 types of documentation checks
|
|
34
|
+
- **Coverage Analysis** - Project-wide documentation metrics
|
|
35
|
+
- **Modern Type Support** - PEP 604 unions, PEP 585 generics
|
|
36
|
+
- **Async Function Support** - Full support for `async def`
|
|
37
|
+
- **Multiple Export Formats** - JSON, Markdown, console output
|
|
38
|
+
- **Smart Docstring Parsing** - Preserves existing documentation
|
|
39
|
+
- **Structured AST Traversal** - NodeVisitor pattern for reliability
|
|
40
|
+
- **Professional Reporting** - Actionable error messages with suggestions
|
|
41
|
+
- **CI/CD Ready** - Easy integration with pipelines
|
|
42
|
+
|
|
43
|
+
#### Changed
|
|
44
|
+
- Replaced basic type inference with comprehensive `TypeAnalyzer`
|
|
45
|
+
- Improved docstring generation with better templates
|
|
46
|
+
- Enhanced error handling with proper logging
|
|
47
|
+
- Better handling of edge cases and malformed code
|
|
48
|
+
|
|
49
|
+
#### Fixed
|
|
50
|
+
- Duplicate `_infer_type` methods consolidated
|
|
51
|
+
- Brittle patching logic made robust
|
|
52
|
+
- Import resolution issues
|
|
53
|
+
- Unicode/encoding handling
|
|
54
|
+
|
|
55
|
+
#### Breaking Changes
|
|
56
|
+
- Minimum Python version: 3.8+
|
|
57
|
+
- Some internal APIs changed (public API remains compatible)
|
|
58
|
+
|
|
59
|
+
## [1.0.0] - Earlier Version
|
|
60
|
+
|
|
61
|
+
- Basic docstring generation
|
|
62
|
+
- Template-based descriptions
|
|
63
|
+
- File and string input support
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
cff-version: 1.2.0
|
|
2
|
+
message: "If you use PyCodeCommenter in your research or project, please cite it using this metadata."
|
|
3
|
+
type: software
|
|
4
|
+
title: PyCodeCommenter
|
|
5
|
+
abstract: >
|
|
6
|
+
PyCodeCommenter is an open-source Python tool for automatically generating
|
|
7
|
+
Google-style docstrings from Python AST, validating existing docstrings
|
|
8
|
+
against real function signatures, and measuring documentation coverage.
|
|
9
|
+
It is deterministic, rule-based, and requires no AI or network access.
|
|
10
|
+
authors:
|
|
11
|
+
- family-names: Amos
|
|
12
|
+
given-names: Nabasa
|
|
13
|
+
alias: Amos Quety
|
|
14
|
+
email: amosnabasa4@gmail.com
|
|
15
|
+
website: https://nabasa-amos.netlify.app
|
|
16
|
+
orcid: ""
|
|
17
|
+
version: 2.2.0
|
|
18
|
+
date-released: "2026-07-12"
|
|
19
|
+
license: MIT
|
|
20
|
+
repository-code: https://github.com/AmosQuety/PyCodeCommenter
|
|
21
|
+
url: https://amosquety.github.io/PyCodeCommenter/
|
|
22
|
+
keywords:
|
|
23
|
+
- python
|
|
24
|
+
- docstring
|
|
25
|
+
- documentation
|
|
26
|
+
- validation
|
|
27
|
+
- coverage
|
|
28
|
+
- google-style
|
|
29
|
+
- ast
|
|
30
|
+
- developer-tools
|
|
31
|
+
- ci-cd
|
|
32
|
+
- static-analysis
|
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
# Contributing to PyCodeCommenter
|
|
2
|
-
|
|
3
|
-
First off, thank you for considering contributing to PyCodeCommenter! It's people like you who make it a great tool for everyone.
|
|
4
|
-
|
|
5
|
-
## How Can I Contribute?
|
|
6
|
-
|
|
7
|
-
### Reporting Bugs
|
|
8
|
-
* Check the [Issues](https://github.com/AmosQuety/PyCodeCommenter/issues) to see if it has already been reported.
|
|
9
|
-
* If not, open a new issue. Include a clear title, a description of the problem, and steps to reproduce (like a small code snippet).
|
|
10
|
-
|
|
11
|
-
### Proposing Enhancements
|
|
12
|
-
* Open an issue to discuss your idea before starting work.
|
|
13
|
-
* Explain why this feature would be useful and how it should work.
|
|
14
|
-
|
|
15
|
-
### Pull Requests
|
|
16
|
-
1. Fork the repo and create your branch from `main`.
|
|
17
|
-
2. Follow the existing code style.
|
|
18
|
-
3. Add tests if you're adding new functionality.
|
|
19
|
-
4. Ensure all tests pass.
|
|
20
|
-
5. Update documentation (including `README.md`) if necessary.
|
|
21
|
-
6. Open a Pull Request with a clear description of your changes.
|
|
22
|
-
|
|
23
|
-
## Code Style
|
|
24
|
-
* Use [black](https://github.com/psf/black) for formatting.
|
|
25
|
-
* Follow Google-style docstrings (since that's what we generate!).
|
|
26
|
-
* Maintain Python 3.8+ compatibility.
|
|
27
|
-
|
|
28
|
-
## Need Help?
|
|
29
|
-
Feel free to open a discussion or an issue if you have any questions!
|
|
1
|
+
# Contributing to PyCodeCommenter
|
|
2
|
+
|
|
3
|
+
First off, thank you for considering contributing to PyCodeCommenter! It's people like you who make it a great tool for everyone.
|
|
4
|
+
|
|
5
|
+
## How Can I Contribute?
|
|
6
|
+
|
|
7
|
+
### Reporting Bugs
|
|
8
|
+
* Check the [Issues](https://github.com/AmosQuety/PyCodeCommenter/issues) to see if it has already been reported.
|
|
9
|
+
* If not, open a new issue. Include a clear title, a description of the problem, and steps to reproduce (like a small code snippet).
|
|
10
|
+
|
|
11
|
+
### Proposing Enhancements
|
|
12
|
+
* Open an issue to discuss your idea before starting work.
|
|
13
|
+
* Explain why this feature would be useful and how it should work.
|
|
14
|
+
|
|
15
|
+
### Pull Requests
|
|
16
|
+
1. Fork the repo and create your branch from `main`.
|
|
17
|
+
2. Follow the existing code style.
|
|
18
|
+
3. Add tests if you're adding new functionality.
|
|
19
|
+
4. Ensure all tests pass.
|
|
20
|
+
5. Update documentation (including `README.md`) if necessary.
|
|
21
|
+
6. Open a Pull Request with a clear description of your changes.
|
|
22
|
+
|
|
23
|
+
## Code Style
|
|
24
|
+
* Use [black](https://github.com/psf/black) for formatting.
|
|
25
|
+
* Follow Google-style docstrings (since that's what we generate!).
|
|
26
|
+
* Maintain Python 3.8+ compatibility.
|
|
27
|
+
|
|
28
|
+
## Need Help?
|
|
29
|
+
Feel free to open a discussion or an issue if you have any questions!
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
v2.1.0 — Safety & Trust · Jun 10 → Jun 30
|
|
2
|
-
This is the "stop scaring users" release. All four items are independent so you can ship them in any order.
|
|
3
|
-
--dry-run and --backup first — they're the most urgent. Dry-run prints a unified diff to stdout. Backup simply does shutil.copy(path, path + ".bak") before any in-place write. Maybe 2 days each.
|
|
4
|
-
Config loader next. Add a config.py module that walks up the directory tree looking for .pycodecommenter.yaml and loads it with ruamel.yaml. Wire the values to the existing hard-coded defaults. A week's work max.
|
|
5
|
-
Smarter parameter inference is also v2.1 — see the dedicated audit prompt below.
|
|
6
|
-
Test rewrite is ongoing across all phases but the baseline pass (assertions on critical paths) should land here.
|
|
7
|
-
|
|
8
|
-
v2.2.0 — Accuracy & Output · Jul 1 → Aug 15
|
|
9
|
-
This is the "be correct and be composable" release. Decorator awareness cleans up the false-positive noise. JSON output unlocks every downstream integration — make it a flag on both validate and coverage. The Sphinx :raises: fix is a targeted one-liner in validator.py.
|
|
10
|
-
|
|
11
|
-
v3.0.0 — Safe, Configurable, Extensible · Aug 16 → Nov 1
|
|
12
|
-
The big one. The merge algorithm is the hardest item in the entire roadmap — budget 3–4 weeks for it alone. The approach: parse the existing docstring into sections, generate fresh sections, then do a section-by-section merge where any section with human content that doesn't match the auto-generated template is preserved. Multi-style support travels alongside — once the generator is style-aware, NumPy and Sphinx become config flags.
|
|
13
|
-
|
|
14
|
-
v3.1.0 — Integrations · Nov 2, 2026 → Mar 1, 2027
|
|
1
|
+
v2.1.0 — Safety & Trust · Jun 10 → Jun 30
|
|
2
|
+
This is the "stop scaring users" release. All four items are independent so you can ship them in any order.
|
|
3
|
+
--dry-run and --backup first — they're the most urgent. Dry-run prints a unified diff to stdout. Backup simply does shutil.copy(path, path + ".bak") before any in-place write. Maybe 2 days each.
|
|
4
|
+
Config loader next. Add a config.py module that walks up the directory tree looking for .pycodecommenter.yaml and loads it with ruamel.yaml. Wire the values to the existing hard-coded defaults. A week's work max.
|
|
5
|
+
Smarter parameter inference is also v2.1 — see the dedicated audit prompt below.
|
|
6
|
+
Test rewrite is ongoing across all phases but the baseline pass (assertions on critical paths) should land here.
|
|
7
|
+
|
|
8
|
+
v2.2.0 — Accuracy & Output · Jul 1 → Aug 15
|
|
9
|
+
This is the "be correct and be composable" release. Decorator awareness cleans up the false-positive noise. JSON output unlocks every downstream integration — make it a flag on both validate and coverage. The Sphinx :raises: fix is a targeted one-liner in validator.py.
|
|
10
|
+
|
|
11
|
+
v3.0.0 — Safe, Configurable, Extensible · Aug 16 → Nov 1
|
|
12
|
+
The big one. The merge algorithm is the hardest item in the entire roadmap — budget 3–4 weeks for it alone. The approach: parse the existing docstring into sections, generate fresh sections, then do a section-by-section merge where any section with human content that doesn't match the auto-generated template is preserved. Multi-style support travels alongside — once the generator is style-aware, NumPy and Sphinx become config flags.
|
|
13
|
+
|
|
14
|
+
v3.1.0 — Integrations · Nov 2, 2026 → Mar 1, 2027
|
|
15
15
|
VS Code extension, GitHub Action for PR automation, SARIF output. These all depend on the v3.0 foundation being solid. Don't start them until merge and JSON output are stable.
|