Skip to main content

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)

Source distribution for apexcodexpy 0.8.2
File Size Uploaded
apexcodexpy-0.8.2.tar.gz 25.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for apexcodexpy 0.8.2
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

0.8.3

2 release files

This release

0.8.2 This release

2 release files

0.8.1

2 release files

0.7.4

2 release files

0.7.3

2 release files

0.7.2

2 release files

0.7.1

2 release files

0.6.6

2 release files

0.6.5

2 release files

0.6.4

2 release files

0.6.3

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.5.4

2 release files

0.5.3

2 release files

0.5.1

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.1.11

2 release files

0.1.10

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page