From 97ec4d6f672ffe28986355e922cb8220f259708e Mon Sep 17 00:00:00 2001 From: Stephen Shao Date: Thu, 11 Jun 2026 15:21:47 -0500 Subject: [PATCH 1/3] chore: consolidate all optional deps into default dependencies Move dev, kubernetes, and all optional dependency groups into the main dependencies list and remove [project.optional-dependencies]. Co-Authored-By: Claude Sonnet 4 --- pyproject.toml | 46 ++++++++++++---------------------------------- 1 file changed, 12 insertions(+), 34 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 5ec8f129..6c422ce1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -26,6 +26,18 @@ dependencies = [ "click>=8.0.0", "jinja2>=3.0.0", "pyyaml>=6.0", + "kubernetes>=28.0.0", + "pytest", + "pytest-cov", + "pytest-xdist", + "pytest-timeout", + "pytest-mock", + "pytest-asyncio", + "black>=21.0.0", + "flake8", + "mypy>=0.910", + "isort", + "pre-commit", ] classifiers = [ "Programming Language :: Python :: 3", @@ -40,40 +52,6 @@ madengine = "madengine.cli.app:cli_main" Homepage = "https://github.com/ROCm/madengine" Issues = "https://github.com/ROCm/madengine/issues" -[project.optional-dependencies] -dev = [ - "pytest", - "pytest-cov", - "pytest-xdist", - "pytest-timeout", - "pytest-mock", - "pytest-asyncio", - "black>=21.0.0", - "flake8", - "mypy>=0.910", - "isort", - "pre-commit", -] -# Optional dependencies for distributed deployments -# Note: SLURM requires no additional dependencies (uses CLI commands) -kubernetes = [ - "kubernetes>=28.0.0", -] -# Complete development environment (dev + kubernetes deployment) -all = [ - "kubernetes>=28.0.0", - "pytest", - "pytest-cov", - "pytest-xdist", - "pytest-timeout", - "pytest-mock", - "pytest-asyncio", - "black>=21.0.0", - "flake8", - "mypy>=0.910", - "isort", - "pre-commit", -] [tool.hatch.build.targets.wheel] # scripts/ is listed in .gitignore (to exclude external MAD project scripts/ dirs during dev). From 5a36f6970a48838c7bb9b0105fe441173c8df10a Mon Sep 17 00:00:00 2001 From: Stephen Shao Date: Thu, 11 Jun 2026 16:22:15 -0500 Subject: [PATCH 2/3] fix: update stale extras references and pin pytest lower bound Follow-up to the optional-deps consolidation: remove now-invalid madengine[dev]/[all]/[kubernetes] install commands from docs and runtime messages, and pin pytest>=7.0 to match minversion. Co-Authored-By: Claude Opus 4 --- CLAUDE.md | 8 +++----- README.md | 9 +++------ docs/contributing.md | 4 ++-- docs/installation.md | 20 +++++--------------- pyproject.toml | 2 +- src/madengine/deployment/factory.py | 4 ++-- src/madengine/deployment/kubernetes.py | 4 ++-- 7 files changed, 18 insertions(+), 33 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 085b8997..a0bc1f4e 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -5,11 +5,9 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co ## Development Setup ```bash -# Install in development mode with all dependencies -pip install -e ".[dev]" - -# Optional: install Kubernetes support -pip install -e ".[all]" +# Install in development mode (all dependencies, including Kubernetes +# support and dev tools, are included by default) +pip install -e . # Setup pre-commit hooks pre-commit install diff --git a/README.md b/README.md index ea3fbbb5..0d496d1e 100644 --- a/README.md +++ b/README.md @@ -552,15 +552,12 @@ See [CLI Reference](docs/cli-reference.md) for complete options. ## 📦 Installation ```bash -# Basic installation +# Install madengine (all dependencies, including Kubernetes support, are included) pip install git+https://github.com/ROCm/madengine.git -# With Kubernetes support -pip install "madengine[kubernetes] @ git+https://github.com/ROCm/madengine.git" - # Development installation git clone https://github.com/ROCm/madengine.git -cd madengine && pip install -e ".[dev]" +cd madengine && pip install -e . ``` See [Installation Guide](docs/installation.md) for detailed instructions. @@ -638,7 +635,7 @@ We welcome contributions! See [Contributing Guide](docs/contributing.md) for det git clone https://github.com/ROCm/madengine.git cd madengine python3 -m venv venv && source venv/bin/activate -pip install -e ".[dev]" +pip install -e . # Run all tests pytest diff --git a/docs/contributing.md b/docs/contributing.md index c6832178..5e53a300 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -19,8 +19,8 @@ cd madengine python3 -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate -# Install in development mode with all dependencies -pip install -e ".[dev]" +# Install in development mode (all dependencies are included) +pip install -e . # Setup pre-commit hooks (optional but recommended) pre-commit install diff --git a/docs/installation.md b/docs/installation.md index 6aa3e830..c8c9eb4c 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -14,14 +14,8 @@ Complete installation instructions for madengine. ### From GitHub ```bash -# Basic installation +# Install madengine (all dependencies, including Kubernetes support, are included) pip install git+https://github.com/ROCm/madengine.git - -# With Kubernetes support -pip install "madengine[kubernetes] @ git+https://github.com/ROCm/madengine.git" - -# With all optional dependencies -pip install "madengine[all] @ git+https://github.com/ROCm/madengine.git" ``` ### Development Installation @@ -35,20 +29,16 @@ cd madengine python3 -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate -# Install in editable mode with dev dependencies -pip install -e ".[dev]" +# Install in editable mode (dev dependencies are included) +pip install -e . # Setup pre-commit hooks (optional, for contributors) pre-commit install ``` -## Optional Dependencies +## Dependencies -| Extra | Install Command | Use Case | -|-------|----------------|----------| -| `kubernetes` | `pip install madengine[kubernetes]` | Kubernetes deployment support | -| `dev` | `pip install madengine[dev]` | Development tools (pytest, black, mypy, etc.) | -| `all` | `pip install madengine[all]` | All optional dependencies | +All dependencies — including Kubernetes deployment support and development tools (pytest, black, mypy, etc.) — are installed by default. There are no optional extras to select. **Note**: SLURM deployment requires no additional Python dependencies (uses CLI commands). diff --git a/pyproject.toml b/pyproject.toml index 6c422ce1..dd9c7566 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,7 +27,7 @@ dependencies = [ "jinja2>=3.0.0", "pyyaml>=6.0", "kubernetes>=28.0.0", - "pytest", + "pytest>=7.0", "pytest-cov", "pytest-xdist", "pytest-timeout", diff --git a/src/madengine/deployment/factory.py b/src/madengine/deployment/factory.py index dea54557..944a4022 100644 --- a/src/madengine/deployment/factory.py +++ b/src/madengine/deployment/factory.py @@ -91,8 +91,8 @@ def register_default_deployments(): import warnings warnings.warn( "Kubernetes deployment target is unavailable: the 'kubernetes' library is not " - "installed. Install it with: pip install madengine[kubernetes] " - "(or pip install madengine[all]).", + "installed. Reinstall madengine (pip install madengine) or install the " + "library directly with: pip install kubernetes.", UserWarning, stacklevel=2, ) diff --git a/src/madengine/deployment/kubernetes.py b/src/madengine/deployment/kubernetes.py index a96e6f9b..363962e6 100644 --- a/src/madengine/deployment/kubernetes.py +++ b/src/madengine/deployment/kubernetes.py @@ -132,8 +132,8 @@ def __init__(self, config: DeploymentConfig): if not KUBERNETES_AVAILABLE: raise ImportError( "Kubernetes Python library not installed.\n" - "Install with: pip install madengine[kubernetes]\n" - "Or: pip install kubernetes" + "Reinstall madengine (pip install madengine) or install the " + "library directly with: pip install kubernetes" ) if not YAML_AVAILABLE: From ab7ce52ba11745b6bc273e9103ca1e0a051825ae Mon Sep 17 00:00:00 2001 From: Stephen Shao Date: Thu, 11 Jun 2026 16:25:11 -0500 Subject: [PATCH 3/3] docs(changelog): add v2.1.1 entries for dep consolidation and pytest pin Co-Authored-By: Claude Opus 4 --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 510aba3b..61180a62 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [2.1.1] - 2026-06-02 +### Changed + +- **All dependencies are now included by default**: Kubernetes support (`kubernetes>=28.0.0`) and development tools (`pytest>=7.0`, `black`, `mypy`, `isort`, `pre-commit`, etc.) are bundled into the base `dependencies` list. The `[kubernetes]`, `[dev]`, and `[all]` extras have been removed — a plain `pip install madengine` or `pip install -e .` installs everything. All documentation and in-package install guidance has been updated accordingly. + +- **`pytest` lower bound pinned to `>=7.0`**: Aligns the dependency pin with `minversion = "7.0"` already declared in `[tool.pytest.ini_options]`, preventing accidental resolution of older pytest versions that cannot run this project's tests. + ### Fixed - **`tools/` build context path corrected**: `docker build` now resolves the shared tools directory as `./tools` (project root) instead of `./scripts/common/tools`. The previous path was stale — `scripts/common/tools` is a temporary directory populated at runtime by `madengine run`, so it was absent during standalone `madengine build` invocations, silently omitting the `--build-context tools=…` flag and breaking Dockerfiles that rely on it via `COPY --from=tools`.