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.7.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.7.2.tar.gz | 24.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| apexcodexpy-0.7.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 55.2 kB
Release files / apexcodexpy-0.7.2.tar.gz
| Download URL | apexcodexpy-0.7.2.tar.gz |
|---|---|
| Size | 24.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d543981a686750c56e2bd60653ffdd60d0052ca52b1fe0978b8b6dda7be9232f
|
|
BLAKE2b-256 checksum How to use checksums |
28141aeba4d4b5ee6eab211115b1423b1f9f0550bb10b396e91f884e02ea3f3c
|
| 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.7.2-py3-none-any.whl
| Download URL | apexcodexpy-0.7.2-py3-none-any.whl |
|---|---|
| Size | 30.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
34dc2664e8f85fcec93b2b6d8ef5a1ccac729c696d92a96aad88284b1a807286
|
|
BLAKE2b-256 checksum How to use checksums |
4925fe09308f772c806becb0541bf8c9ce0abc9e3bcb49273fa3790aaef9ceed
|
| 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
|