Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

apexcodexpy-0.3.2.tar.gz (21.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

apexcodexpy-0.3.2-py3-none-any.whl (24.9 kB view details)

Uploaded Python 3

File details

Details for the file apexcodexpy-0.3.2.tar.gz.

File metadata

  • Download URL: apexcodexpy-0.3.2.tar.gz
  • Upload date:
  • Size: 21.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.4.1 CPython/3.13.13 Linux/6.17.0-1015-azure

File hashes

Hashes for apexcodexpy-0.3.2.tar.gz
Algorithm Hash digest
SHA256 2a1a30e5a91935198cd8fe1ce5c0cc3f5847b3e0ff04fd8b7be18b14f2d2d7af
MD5 9f82c1beb9506c081e63cca9dfd480bf
BLAKE2b-256 a3de86c47a5638fac960154fc2e5d159837f4970bcb3f7ef8478d16293ad593c

See more details on using hashes here.

File details

Details for the file apexcodexpy-0.3.2-py3-none-any.whl.

File metadata

  • Download URL: apexcodexpy-0.3.2-py3-none-any.whl
  • Upload date:
  • Size: 24.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.4.1 CPython/3.13.13 Linux/6.17.0-1015-azure

File hashes

Hashes for apexcodexpy-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 d801cecccf12fa5b92167d7d9e653cb4e9a6c7f3f91cdb3f38d3fccd267dd441
MD5 9bb00b36e6230d2f4ea6b4cd0596031b
BLAKE2b-256 cc19cae9c1f6ec95727993fc87a000fe35ef8c8caf55dbac4331e843ad824948

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page