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.
Metadata
Release files for apexcodexpy 0.8.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| apexcodexpy-0.8.2.tar.gz | 25.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| apexcodexpy-0.8.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 56.6 kB
Release files / apexcodexpy-0.8.2.tar.gz
| Download URL | apexcodexpy-0.8.2.tar.gz |
|---|---|
| Size | 25.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ea9046344ce775c141c86d59a5e353da28173a7e91ce841181b32ef47fd9a566
|
|
BLAKE2b-256 checksum How to use checksums |
9dfc748f7deb646f98a5f958f232c4c5b31cca97ee93ee42e753de2dcaeaebdb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.5.1 CPython/3.13.16 Linux/6.17.0-1022-azure
|
Release files / apexcodexpy-0.8.2-py3-none-any.whl
| Download URL | apexcodexpy-0.8.2-py3-none-any.whl |
|---|---|
| Size | 31.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
99c4a46329c0a0f7fbc03d68a5efdca9620253e66f3aaa77b2ca5a412e0558a2
|
|
BLAKE2b-256 checksum How to use checksums |
bc5576bf3a6e4330d0e018ecace079a1cd7869c52b66b3a14cb96ae87f0231c0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.5.1 CPython/3.13.16 Linux/6.17.0-1022-azure
|