The Non-Destructive Configuration Steward for Python Projects.
Project description
ApexCodexPy
The Non-Destructive Configuration Steward for Python Projects.
ApexCodexPy is a CLI tool designed to enforce consistent linting and typing standards across multiple projects. Unlike standard runners, ApexCodexPy synchronizes your pyproject.toml with a "Gold Standard" configuration without destroying existing project-specific settings or comments.
🚀 Purpose
Modern Python development often suffers from "Config Drift"—where different projects slowly diverge in their ruff or mypy settings. ApexCodexPy solves this by:
Enforcing Standards
Overwriting critical linting rules with a centralized set of best practices.
Preserving Context
Using tomlkit to ensure that your handwritten comments and formatting remain intact.
Dry-Run Capability
Allowing developers to see exactly what would change before any modifications are written to disk.
📦 Installation & Integration
From PyPI
Since ApexCodexPy is available on PyPI, you can add it directly to your project using Poetry:
poetry add apexcodexpy --group dev
🛠 Usage
1. Synchronize Configuration
Align your pyproject.toml with the ApexCodexPy standards.
# Preview changes (Dry Run)
codex update --dry-run
# Apply changes
codex update
2. Run Linting & Formatting checks
Run the enforced toolchain (Ruff and Mypy) on your project.
# Standard run (verbose)
codex lint
# No output (suppress stdout/stderr)
codex lint --silent
3. Auto formating and fixing
Run the enforced toolchain (Ruff and Mypy) on your project.
# Standard run (verbose)
codex fix
# No output (suppress stdout/stderr)
codex fix --silent
🧩 Standards Enforced
ApexCodexPy currently enforces a strict ruff.lint.select list including:
| Name | Code |
|---|---|
| pyflakes | F |
| pycodestyle (Errors) | E |
| pycodestyle (Warnings) | W |
| isort | I |
| pep8-naming | N |
| pyupgrade | UP |
| flake8-bugbear | B |
| flake8-builtins | A |
| flake8-comprehensions | C4 |
| flake8-print | T20 |
| flake8-pytest-style | PT |
| flake8-raise | RSE |
| flake8-return | RET |
| flake8-simplify | SIM |
| flake8-unused-arguments | ARG |
It also enforces mypy.strict = true.
👨💻 For Developers: How it Works
Non-Destructive Merge
The core logic resides in a functional deep_merge. It takes the project's current TOML and the ApexCodexPy standards, returns a new configuration, and preserves all tomlkit item metadata (inline comments).
Architecture: Strategy Pattern
- Task Protocol: implementations run various tools and report their results.
- Device Protocol: used by reporter to output results.
- Reporter: standard output format.
- PyCodex: Class that ties everything together.
To add a new tool:
- Create a new Task implementation.
- Add the tool's standard config to get_standards().
- Register the task in PyCodex.
- Add CLI command using the above-mentioned PyCodex method.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file apexcodexpy-0.1.2.tar.gz.
File metadata
- Download URL: apexcodexpy-0.1.2.tar.gz
- Upload date:
- Size: 18.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.3.4 CPython/3.11.15 Linux/6.17.0-1010-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
22836544a2ffd1b4679046d2eebce2019c23594d247a4a8b27ac5bed6f8fd8e3
|
|
| MD5 |
ac648ba25988e6d9e14a2cc0d7a3231e
|
|
| BLAKE2b-256 |
19d11ba0be59a8e1c8b71f014449fe199c754f934e3df7c17ab278029cba1064
|
File details
Details for the file apexcodexpy-0.1.2-py3-none-any.whl.
File metadata
- Download URL: apexcodexpy-0.1.2-py3-none-any.whl
- Upload date:
- Size: 20.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.3.4 CPython/3.11.15 Linux/6.17.0-1010-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
38fe9400ad2b59e3b7a22b69fd3a025f044c0f2def67e2572b8bc84434a49641
|
|
| MD5 |
bd93d6786db89930360b496326981f30
|
|
| BLAKE2b-256 |
ee3219314ab2a0ac0a8a2a2facf3261cc17744495a4b1d3af9bf691f585f381a
|