Repository navigation
v0.1.0
v0.1.0 (2025-12-05)
This release is published under the Unlicense License.
Bug Fixes
-
Add C/C++ API reference to Next Steps section (
75eb1ca) -
Add context-aware uninstall instructions for CLI tools (
8c26de6) -
Add metavar to typer.Argument to avoid autorefs warnings (
1c60d0b) -
Add proper job dependencies to prevent releasing on failed tests/lint (
883510e)
Consolidate separate workflow files into single ci.yml with proper job dependencies. Release and pages deployment now require test and lint jobs to pass first.
Changes:
-
Create unified ci.yml workflow with all jobs
-
Add needs: [test, lint] dependency to release and pages jobs
-
Remove separate test.yml, lint.yml, release.yml, pages.yml files
-
Ensure release only runs after quality checks pass
-
Check for 'pages' stage instead of 'deploy' in GitLab CI (
9e59b88)
The pages.gitlab-ci.yml template uses stage: pages, so the stage check should look for 'pages' not 'deploy'. Also adds the call to _ensure_pages_stage() at the end of create_gitlab_ci().
Refactors:
-
Move function-level imports to top-level (PLC0415)
-
Extract helper functions to reduce complexity (PLR0911, PLR1702)
-
Replace magic 200 with http.HTTPStatus.OK (PLR2004)
-
Use specific exceptions instead of bare Exception (BLE001)
-
Add PLR0917 to ignore list for internal APIs
-
Complete test suite to 80% coverage and resolve all test failures (
b52c6ef) -
Fix GitHub Actions template rendering bug (remove unnecessary Jinja2 processing)
-
Add comprehensive validation system tests (DoxygenInstaller, SystemValidator)
-
Add build/serve function tests (mkdocs integration)
-
Add template rendering tests (34 tests covering all template functions)
-
Fix CLI test import conflicts with session-scoped module fixture
-
Achieve 81% test coverage (153 tests passing)
-
Fix pyproject.toml syntax error (extra comma in ruff ignore list)
All tests now pass and coverage exceeds 80% minimum requirement. Quality gates properly enforce test/coverage requirements in CI pipeline.
-
Correct broken doc references and semantic-release version (
b4ca105) -
mkdocs.yml: reference/python.md → generated/python-api.md
-
docs/index.md: reference/python.md → generated/python-api.md
-
ci.yml: python-semantic-release 9.0.0 → 9.21.1 (9.0.0 doesn't exist)
-
Enforce mkapidocs installation in target environment, remove uvx fallback, and improve subprocess handling. (
3c38b8b) -
Ensure deploy stage is injected into .gitlab-ci.yml (
ec7c52b) -
Prevent mkapidocs from adding file:// path to pyproject.toml (
45f4e54)
In dev mode, use 'uv pip install -e' to install mkapidocs in target project environment without modifying their pyproject.toml.
In installed mode, use 'uv add --dev mkapidocs' to add as a proper dependency with the package name (not a file path).
This prevents personal paths like file:///home/user/... from being committed to target projects.
- Remove build_command for PEP 723 standalone script architecture (
ff937f3)
BREAKING CHANGE: Distribution model changed from built packages to raw script
PEP 723 standalone scripts are designed to be distributed directly as single files, not packaged into wheels or sdists. The python-semantic-release build_command was attempting to run 'uv build' in a Docker environment that lacks uv, causing CI failures.
Changes: - Removed build_command from [tool.semantic_release] configuration - Updated GitHub Actions to upload mkapidocs script directly to releases - Script distribution aligns with PEP 723 specification design intent - Added documentation comments citing authoritative sources
Evidence: - PEP 723: Scripts "may live as a single file forever" without packaging https://peps.python.org/pep-0723/ - python-semantic-release docs: Docker action lacks build tools https://python-semantic-release.readthedocs.io/en/latest/configuration/automatic-releases/github-actions.html - Project CLAUDE.md: "No setup.py/setup.cfg: All metadata is in pyproject.toml for linting/testing only"
Users obtain the script via: - Direct download from GitHub releases - uvx python-docs-init (if published to PyPI in future) - git clone and execute locally
Resolves: Semantic release job failing with "uv: command not found"
-
Remove mkdocs-mcp plugin (requires Python 3.12+) (
f804952) -
Remove self-reference from dev dependencies (
d43b9ba) -
Resolve all ruff linting errors in test files (
5de168d) -
Convert lambda assignments to def functions (E731 - PEP 8 compliance)
-
Add missing parameter documentation for typer_app fixture (D417)
-
Remove unused imports (F401)
-
Add noqa: DOC201 for trivial wrapper return documentation
-
Fix docstring parameter mismatch (DOC102)
All 153 tests pass with 81% coverage maintained. Linting now passes cleanly with zero errors.
- Resolve CI linting and test failures (
5e4aea8)
Fix all ruff linting errors and adjust test workflow to handle projects without test suites.
Changes:
- Fix SIM108 errors: convert if-else blocks to ternary operators
- Fix S404/S603 errors: add noqa comments for legitimate subprocess usage
- Update CI workflow: allow test step to continue on error when no tests exist
Ruff validation now passes cleanly with all style issues resolved.
- Update all documentation references from python_docs_init to mkapidocs (
b80c009)
Updated all hardcoded module name references in documentation files:
- docs/generated/python-api.md: mkdocstrings directive
- docs/reference/python.md: mkdocstrings directive
- mkdocs.yml: site_name and site_url (GitHub Pages URL)
- docs/index.md: title, description (GitLab→GitHub), and installation instructions (pip→uvx/curl for PEP 723 script)
These hardcoded references were causing mkdocstrings to fail with ModuleNotFoundError during documentation builds.
- Update project name in pyproject.toml to match renamed script (
a2fa082)
The project was renamed from python-docs-init to mkapidocs, but pyproject.toml still had the old name. This caused mkdocstrings to fail importing 'python_docs_init' module during documentation build.
Updated project name to 'mkapidocs' to match the script filename.
-
Use actual CLI command names in install documentation (
7683abf) -
Add script_names property to PyprojectConfig to get CLI command names
-
Pass script_names to install template context
-
Update install_md_template.py to show actual CLI commands for --help
-
Fixes incorrect assumption that project_name equals CLI command name
-
Use correct uv commands in install documentation (
10f18bc) -
Replace incorrect
uv pip installwith context-aware install instructions -
Add
has_scriptsdetection from [project.scripts] in pyproject.toml -
Generate install-command.md with appropriate commands:
uv tool installfor packages with CLI scriptsuv addfor project dependenciesuv add --devfor development dependencies
-
Support private registry index option in all install commands
-
Simplify development install instructions to use
uv sync -
ci: Use uv sync and uv run pytest instead of broken commands (
74a3b29) -
Replace ./pytest.py with uv run pytest
-
Replace uv pip install -r pyproject.toml with uv sync
Build System
- Update project dependencies and configuration. (
424b3ef)
Chores
-
Initialize project from template (
65afaf2) -
Rename project from python-docs-init to mkapidocs (
4b52d78)
Rename the project and migrate repository to reflect new branding. This is a breaking change requiring users to update their commands and git remotes.
Changes:
- Rename main script: python-docs-init → mkapidocs
- Update git remote origin to git@github.com:Jamie-BitFlight/mkapidocs.git
- Replace pyright with basedpyright in dev dependencies
- Update pre-commit hooks to use basedpyright
- Add comprehensive CLAUDE.md with project architecture
- Add .pre-commit-hooks.yaml for pre-commit distribution
- Update all documentation references to use new project name
- Remove generated site/ directory from repository
BREAKING CHANGE: The executable is now named 'mkapidocs' instead of 'python-docs-init'. Users must update their scripts and commands to use the new name.
-
Trigger semantic release after orphaned tag cleanup (
0187713) -
Update Prettier pre-commit hook to v3.1.0. (
9db4e1d) -
Update project configuration. (
d2173ba)
Documentation
-
Add CLI Commands section to CLAUDE.md for LLM reference (
74467d9) -
Add comprehensive improvement documentation and Phase 1 implementation plan (
c0f381e)
Added documentation from documentation-expert and spec-planner agents.
Documentation Files Added
-
README_IMPROVEMENTS.md (250+ lines): - Quick reference guide for template improvements - Before/after comparisons - Key changes summary
-
TEMPLATE_IMPROVEMENTS.md (200+ lines): - Comprehensive explanation of template enhancements - Detailed section-by-section changes - Jinja2 syntax validation
-
TEMPLATE_CHANGES_SUMMARY.md (300+ lines): - Complete before/after code comparisons - Line-by-line change tracking - Rationale for each improvement
-
VALIDATION_REPORT.md (400+ lines): - Complete validation results - Quality assurance metrics - Testing methodology
-
IMPROVEMENTS_COMPLETE.md (350+ lines): - Executive summary - Metrics and achievements - Key code improvements
Implementation Plan (spec-planner)
File: .claude/plans/phase1-implementation-plan.md
Scope: Phase 1 - Core Validation (Week 1) - Timeline: 5 working days (40 hours) - Goal: Enable basic documentation validation with console reports
Key Deliverables: - 7 core tasks with time estimates - File structure specification (23 new files) - Dependency requirements (griffe, interrogate, beautifulsoup4, lxml) - Implementation order with dependency graph - Testing strategy (80% coverage minimum) - Risk assessment and mitigation
Tasks Planned: 1. Create validation module structure (4h) 2. Implement build validator (6h) 3. Implement Python API validator (8h) 4. Implement link checker (6h) 5. Add validate CLI command (4h) 6. Create Rich console reporter (6h) 7. Integration test on python_picotool (6h)
Metrics
-
Documentation Files: 5 (1,500+ lines) - Implementation Plan: 1 (comprehensive) - Total Content: 1,500+ lines of documentation - Plan Detail Level: Task breakdown with subtasks, estimates, acceptance criteria
-
Add troubleshooting for pre-commit check-yaml failure on mkdocs.yml. (
4d848ae) -
Replace all remaining pip install references with uv commands in templates (
b5cef02) -
Replace pip install with uv add for package installation - Replace pip install twine with uvx twine for tool installation - Update CI/CD to use official uv Docker image instead of pip install uv - Use uv pip commands for PyPI index queries - Standardize version checking to use importlib.metadata - Update post-release checklist to use uv add instead of pip install
Templates updated: - publishing.md.j2: 7 changes (pip -> uv/uvx, CI/CD image) - index.md.j2: 1 change (pip install -> uv add) - install.md.j2: Simplified to uv-only with all pip references removed - quick-start-guide.md.j2: All pip references replaced with uv - gitlab-ci.yml.j2: Updated to use uv Docker image and uvx
Acceptable exception: Line 88 in publishing.md.j2 retains pip install for local wheel testing in venv (standard pattern for verifying built distributions before publishing).
-
Update README.md and fix pyproject.toml for PEP 723 standalone script (
c237328) -
Restructure README with user-focused content only
-
Remove developer sections (development, project structure)
-
Simplify installation to 2 clear options (clone or download)
-
Replace placeholder git URLs with verified GitHub repository URLs
-
Add comprehensive usage examples with real paths
-
Document all commands: setup, build, serve
-
Add troubleshooting section
-
Fix pyproject.toml for standalone script structure
-
Remove build-system, hatch, and semantic-release config
-
Remove package distribution metadata (scripts, classifiers)
-
Add static version instead of dynamic
-
Move dev dependencies from optional-dependencies to dependency-groups
-
Update test paths from packages/ to root structure
-
Add proper coverage omit paths
-
Use uv-managed versions for all dev dependencies
Features
- Add CLI reference template and enhance navigation (
2182a0a)
Add CLI reference documentation: - Create cli.md.j2 template using mkdocs-typer2 syntax - Auto-generate CLI docs for projects using Typer - Update create_api_reference() to generate CLI reference when has_typer=True
Enhance navigation structure in mkdocs.yml.j2: - Add "Getting Started" section with Installation and Quick Start Guide - Add conditional CLI Reference link when has_typer=True - Add "Development" section with Contributing and Publishing
Fix git URL linking issues: - Convert SSH URLs to HTTPS format for proper MkDocs linking - Transform git@host:path/project.git to https://host/path/project - Prevents unrecognized relative link warnings
Tested on python_picotool: - CLI reference generated successfully - Navigation structure complete with all sections - Documentation builds cleanly with mkdocs build --strict - Git URLs properly converted to HTTPS format - Build time: 0.94 seconds, 0 errors, 0 warnings
-
Add extensive documentation templates and generation logic for various output formats and CI/CD workflows. (
fcc8be7) -
Add GitLab GraphQL API query for Pages URL detection (
a7620ae) -
Add query_gitlab_pages_url() to fetch Pages URL via GraphQL API
-
Support GITLAB_TOKEN and CI_JOB_TOKEN for authentication
-
Add --site-url CLI option (replaces deprecated --github-url-base)
-
Distinguish between "no Pages deployed" vs "API error" states
-
Add GitLabPagesResult dataclass for structured return types
-
Extract _detect_gitlab_site_url() to reduce function complexity
-
Update CLAUDE.md and README.md with new features
-
Add console.py module for shared Rich console
-
Remove obsolete tomlkit type stubs
-
Add 6 new tests for GitLab API query functionality
-
Add markdownlint configuration file with most rules disabled (
4e362af) -
Add supporting documentation templates and generation (
078e874)
Add comprehensive templates for supporting documentation: - install.md.j2: Installation guide with pip/uv instructions, dev setup - quick-start-guide.md.j2: Quick start guide with examples and troubleshooting - contributing.md.j2: Contribution guidelines with testing, commit standards - publishing.md.j2: Release and publishing process with version management
Implement create_supporting_docs() function: - Generates all four supporting documents from templates - Auto-detects git URL from repository remote - Extracts requires-python from pyproject.toml - Passes project metadata to templates (has_c_code, has_typer, site_url) - Creates docs in lowercase filenames as specified
Update setup_documentation(): - Add call to create_supporting_docs() after API reference generation - All supporting docs now generated automatically during setup
Tested on python_picotool: - All four documents created successfully - Template variables rendered correctly - Git URL detected: git@sourcery.assaabloy.net:aehgfw/tools/python_picotool.git - Python version extracted: >=3.11,<3.13
- Add test suite and enforce CI quality gates (
e7db8fc)
Add comprehensive test suite for mkapidocs script and fix GitHub Actions pipeline to properly enforce quality gates before releases.
Changes:
- Add pytest test suite with 39 tests (31% coverage)
- Add pytest-mock to dev dependencies
- Fix CI pipeline to fail on test/lint failures
- Remove continue-on-error from critical quality checks
- Fix ruff linting issues in test files
Test suite coverage:
- Feature detection functions (26 tests)
- Configuration functions (13 tests)
- CLI commands foundation (15 tests)
Quality gates:
-
Ruff linting must pass before release
-
Pytest tests must pass before release
-
Release/Pages jobs blocked if quality gates fail
-
Add validation framework and enhance documentation templates (
287ba2a) -
Add comprehensive VALIDATION_PLAN.md with 4-phase implementation roadmap
-
Update index.md.j2 template with links to all supporting docs (lowercase)
-
Add quick-start-guide.md, install.md, contributing.md, publishing.md links
-
Pass has_c_code, has_typer, license_name to create_index_page()
-
Fix mkdocs-typer2 plugin name in mkdocs.yml.j2 template
-
Add noqa comments for subprocess security warnings (S404, S607)
-
Fix TRY300 linting issue with proper else block
-
Remove mkdocs-mcp dependency (requires Python 3.12+)
Validation framework includes:
-
Pre/during/post/continuous validation stages
-
Python API, C API, CLI, build, and link validators
-
Console, JSON, JUnit, Markdown report formats
-
CLI commands: validate, generate-doc, watch, preview
-
CI/CD integration templates
-
Add VS Code settings to configure Python formatting and linting with Ruff. (
074f1c8) -
Implement core generation logic, templating system, and project configuration models, refactoring documentation generation and updating tests. (
ac347b0) -
Implement documentation automation with git remote auto-detection (
c8c9708) -
Implement Phase 1 documentation validation system (
3576653)
Add comprehensive validation framework with build and API coverage checks:
Core Infrastructure: - validators/base.py: ValidationResult, ValidationStatus, ValidationIssue types - reporters/base.py: Reporter protocol - validate.py: Orchestration with validate_documentation() and run_validation_with_report()
Validators Implemented: 1. BuildValidator (validators/build.py): - Runs mkdocs build --strict to catch build errors - 60-second timeout protection - Parses ERROR/WARNING from stderr - Extracts build time from output
- PythonAPIValidator (validators/python_api.py): - Uses interrogate to measure docstring coverage - Configurable minimum coverage threshold (default: 80%) - Auto-detects src/ and packages/ directories - 30-second timeout protection
Rich Console Reporter: - reporters/console.py: Beautiful terminal output with Rich - Validation summary table with status icons (✓/⚠/✗/○) - Detailed issue panels for failures - Overall summary with pass/warn/fail counts - Color-coded by severity (green/yellow/red)
CLI Integration: - Extended validate command (cli.py) - Added --min-api-coverage option (0-100%) - Exit code 1 on validation failure - Rich formatted progress and results
Configuration: - Added validation optional-dependencies (pyproject.toml): - griffe>=1.0.0 (Python API introspection) - interrogate>=1.7.0 (docstring coverage) - beautifulsoup4>=4.12.0 (HTML parsing for future link checking) - lxml>=5.0.0 (XML backend)
Fixes: - Fixed mkdocs.yml: typer2 → mkdocs-typer2 (correct plugin name) - Removed invalid mcp plugin from mkdocs.yml
Testing: ✓ Validated on python-docs-init repository ✓ Build validator passes (0.95s) ✓ API validator reports 0% coverage warning (expected - no docstrings yet) ✓ Total validation time: 1.05s
Usage: ```bash # Validate with defaults (80% API coverage) python_docs_init validate /path/to/repo
Custom coverage threshold python_docs_init validate /path/to/repo --min-api-coverage 90.0 ```
Implements TASK-002 through TASK-006 from .claude/plans/phase1-implementation-plan.md
-
Improve GitLab CI generation to ensure deploy stage and manage includes, add new tests, and remove ruamel type stubs. (
b36554f) -
Migrate from GitLab CI to GitHub Actions (
b1b4893)
Replace all GitLab CI workflows with GitHub Actions for CI/CD automation.
Changes:
- Add GitHub Actions workflows (test, lint, release, pages)
- Update mkapidocs script to generate GitHub Actions config
- Add semantic-release configuration to pyproject.toml
- Update all documentation to reference GitHub Actions/Pages
- Remove all GitLab CI files and .gitlab/ directory
Workflows:
- test.yml: Run pytest with coverage on Python 3.11
- lint.yml: Run ruff, mypy, basedpyright, bandit
- release.yml: Semantic versioning with python-semantic-release
- pages.yml: Deploy documentation to GitHub Pages
Refactoring
-
Add type stubs for tomlkit and ruamel.yaml, eliminate all pyright ignores (
45bee8e) -
Create typings/tomlkit/init.pyi with TOML spec v1.0.0 types
-
Create typings/ruamel/yaml/init.pyi for YAML class typing
-
Add TOML type aliases to models.py (TomlPrimitive, TomlArray, TomlValue, TomlTable)
-
Replace dict[str, Any] with proper TomlTable typing in PyprojectConfig
-
Add GitLabCIConfig dataclass with typed include field handling
-
Remove all pyright: ignore comments from packages/ (was 10+, now 0)
-
Fix tomlkit file mode from binary to text (IO[str] not IO[bytes])
-
Remove hatchling ignores (it has proper type stubs)
-
Replace PyYAML with ruamel.yaml in tests for consistency
-
Extract project_detection module to break circular dependency (
494506b) -
Create project_detection.py with read_pyproject, detect_c_code,
detect_typer_dependency functions extracted from generator.py -
Update validators.py to use top-level imports from project_detection
-
Remove local imports that violated PLC0415 linting rule
-
Update generator.py to import from project_detection module
-
Fix linting issues across cli.py, models.py, validators.py, version.py,
yaml_utils.py, builder.py (BLE001, PLC0415, PLC0206, S202, arg-type) -
Update test mock paths to match new import structure
This architectural change eliminates circular dependencies between validators.py and generator.py, enabling proper top-level imports.
- Fix critical bugs and improve template content quality (
cef6d71)
Applied fixes from code-refactorer-agent and documentation-expert agents to address security issues, code quality problems, and documentation gaps.
Generator.py Refactoring (code-refactorer-agent)
Critical Bugs Fixed:
-
Added subprocess timeouts (prevent hanging): - New helper: get_git_remote_url() with 5-second timeout - Prevents indefinite hangs on slow/broken git operations
-
Fixed regex patterns (handle real-world git URLs): - SSH: ^(?:ssh://)?git@([^:]+)(?::[0-9]+)?:/(?:.git)?$ - HTTPS: ^https://(?:[^@]+@)?([^/]+)/(.+?)(?:.git)?$ - Now handles: ssh:// protocol, optional ports, optional .git suffix
-
Eliminated code duplication: - Extracted get_git_remote_url() helper (used in 2 places) - Extracted convert_ssh_to_https() helper - DRY principle applied, improved maintainability
-
Added comprehensive type hints: - Import typing.Any - Changed all dict → dict[str, Any] - Better IDE support and type safety
-
Validated empty path segments: - Filter empty strings: [p for p in path.split("/") if p] - Handles trailing/leading slashes correctly
-
Removed unreachable code: - Cleaned up detect_gitlab_url_base() logic flow
Template Content Improvements (documentation-expert)
quick-start-guide.md.j2: - Eliminated 22 TODO markers (100% removal) - Added realistic Python import examples - Added practical CLI command examples - Provided 3 concrete task patterns (Basic Processing, Configuration, Error Handling) - Added 2 complete workflows with expected output - Added 2 actionable troubleshooting scenarios
install.md.j2: - Fixed verification command from --version (doesn't exist) to import check - Changed: python_picotool --version - To: python -c "import python_picotool; print(python_picotool.version)" - More robust, works for all packages
index.md.j2: - Added 7 professional feature bullets - Intelligent conditional features based on has_typer and has_c_code - Removed "TODO: Add feature list" placeholder
Testing Results
- ✅ generator.py imports successfully - ✅ setup_documentation() executes without errors - ✅ mkdocs build --strict passes (1.11 seconds, 0 errors) - ✅ Generated quick-start-guide.md: 22 → 0 TODOs - ✅ All templates render correctly with actual content
Impact
Before: 23 TODO placeholders in generated documentation After: 0 TODO placeholders, all replaced with useful content
Before: Subprocess calls could hang indefinitely After: 5-second timeout prevents hanging
Before: Git URL regex failed on valid URLs without .git suffix After: Handles all common git URL variants correctly
-
Improve Doxygen validation robustness, update file handling, and apply minor code formatting. (
b59f6da) -
Migrate markdown linting from markdownlint to markdownlint-cli2 by updating pre-commit configuration and config files. (
0443a6d) -
Migrate to standard package layout with multi-app Typer CLI support (
d7ffdfc)
BREAKING CHANGE: mkapidocs.py standalone script replaced with packages/mkapidocs/cli.py
Major changes:
-
Move from PEP 723 standalone script to packages/mkapidocs/ package structure
-
Add multi-app Typer CLI detection for projects with nested CLI subcommands
-
Fix mkdocs-typer2 integration by detecting target project environment
-
Add MKAPIDOCS_INTERNAL_CALL env var to prevent infinite recursion
-
Fix Jinja2 template trailing newlines with keep_trailing_newline=True
-
Configure pre-commit hooks for new package structure
-
Add comprehensive workflow documentation (WORKFLOW_ANALYSIS.md, etc.)
-
Add PEP 723 standalone test runner (run-pytest.py)
-
Add GitHub Pages and PyPI publishing workflows
-
Remove old package structure and add PEP 723 standalone script (
b797ca2) -
Delete packages/python_docs_init/ directory (old package structure)
-
Delete old documentation files (CLAUDE.md, validation docs, improvement docs)
-
Delete scripts/hatch_build.py (no longer needed for standalone script)
-
Add python-docs-init PEP 723 standalone executable script
-
Add built site/ directory for MkDocs documentation
This completes the transition from a traditional Python package to a PEP 723 standalone script distribution model.
- Rename setup.py to generator.py to avoid setuptools confusion (
98f911f)
Modern Python projects using pyproject.toml don't have setup.py files. The name "setup.py" is strongly associated with legacy setuptools configuration.
Changes:
- Rename packages/python_docs_init/setup.py → generator.py
- Update import in cli.py: python_docs_init.setup → python_docs_init.generator
- No functional changes, purely a naming clarification
The module contains documentation generation functions:
- setup_documentation() - main entry point
- create_mkdocs_config() - generates mkdocs.yml
- create_supporting_docs() - generates install.md, contributing.md, etc.
- create_api_reference() - generates API documentation pages
The name "generator.py" better reflects its purpose and avoids confusion with setuptools' setup.py convention.
-
Replace Any types with TomlTable in test fixtures (
ef4fbef) -
Use TomlTable type for pyproject.toml mock data in conftest.py
-
Use TomlTable type for mock_pyproject in test_validation_system.py
-
Remove all Any imports from test files
-
Codebase now has zero pyright ignores and zero Any types
-
Standardize to .py extension and add PyPI publishing support (
32c94f9) -
Rename mkapidocs to mkapidocs.py for standard Python conventions
-
Add [build-system] and [project.scripts] for PyPI publishing via hatchling
-
Update CI workflow to reference mkapidocs.py
-
Update pre-commit hook entry for mkapidocs-regen
-
Update CLAUDE.md with:
- Skill loading requirements (python3-development, mkdocs, hatchling, uv)
- All script references to use mkapidocs.py
-
Standard install-pep723-deps hook already in place (verified across repos)
This enables dual distribution:
- Direct execution: ./mkapidocs.py
- PyPI installation: uvx mkapidocs (after publishing)
Testing
-
Add has_scripts parameter to create_generated_content test calls (
3fcbf95) -
Update workflow command assertion to match PEP 723 self-execution pattern (
8193014)
The mkapidocs script is self-executing via PEP 723 shebang, so the workflow correctly uses ./mkapidocs instead of uvx mkapidocs.
Updated test to verify the correct behavior.