@@ -208,22 +208,37 @@ test-k8s = [
208208]
209209
210210# ---------------------------------------------------------------------------
211- # pip compatibility shims for [dependency-groups] (PEP 735)
211+ # pip compatibility shim for [dependency-groups] (PEP 735)
212212#
213213# pip does not yet support PEP 735 dependency-groups. The authoritative dev
214- # dependency lists live in [dependency-groups] below. These optional-deps
215- # mirror them so `pip install -e ".[dev]"` keeps working. When pip gains
216- # PEP 735 support these shims can be removed.
214+ # dependency list lives in [dependency-groups] below. This optional-dep keeps
215+ # `pip install -e ".[dev]"` working by combining two things:
216+ #
217+ # 1. orb-py[all] — the full runtime surface (providers, api, ui, monitoring,
218+ # sql, cli). pip resolves extras, so runtime deps need NOT be re-listed
219+ # here; referencing [all] avoids a hand-maintained mirror of them.
220+ # 2. The CI/dev TOOLCHAIN (ruff, pytest, mkdocs, bandit, …). These live only
221+ # in [dependency-groups] — which pip cannot read — so they must be mirrored
222+ # here until pip gains PEP 735 support.
223+ #
224+ # tests/unit/test_pyproject_dev_extra.py guards that this shim still covers the
225+ # whole dev dependency-group, so the toolchain mirror can't silently drift.
217226# ---------------------------------------------------------------------------
218- ci = [
219- # Code Quality Tools
227+ dev = [
228+ # Full runtime surface — including the UI, which [all-providers] omits.
229+ " orb-py[all]" ,
230+ # --- toolchain from dependency-groups.lint ---
220231 " ruff>=0.1.0" ,
221232 " pathspec>=0.11.0" ,
233+ # --- toolchain from dependency-groups.typecheck ---
222234 " pyright>=1.1.408,<2.0.0" ,
223- " bandit>=1.7.5,<2.0.0" ,
224- " bandit-sarif-formatter>=1.1.1,<2.0.0" ,
235+ " types-PyYAML>=6.0.12.12,<7.0.0" ,
236+ " types-python-dateutil>=2.8.19.14,<3.0.0" ,
237+ " kubernetes-stubs-elephant-fork>=36.0.2,<37.0.0" ,
238+ " tomli>=2.0.0,<3.0.0" ,
239+ # --- toolchain from dependency-groups.arch ---
225240 " import-linter>=2.0,<3.0.0" ,
226- # Testing Framework
241+ # --- toolchain from dependency-groups.test (runtime test deps not in [all]) ---
227242 " pytest>=7.4.3,<10.0.0" ,
228243 " pytest-cov>=4.1.0,<8.0.0" ,
229244 " pytest-env>=1.1.1,<2.0.0" ,
@@ -234,39 +249,18 @@ ci = [
234249 " pytest-html>=4.1.1,<5.0.0" ,
235250 " pytest-benchmark>=5.1.0,<6.0.0" ,
236251 " coverage>=7.3.2,<8.0.0" ,
237- # Test dependencies for API and template tests
238- " fastapi>=0.128.0" ,
239252 " httpx>=0.27.0" ,
240- " jinja2>=3.1.0" ,
241- # AWS Testing
242253 " moto[all]>=5.1.19,<6.0.0" ,
243254 " responses>=0.24.0,<1.0.0" ,
244255 " requests-mock>=1.11.0,<2.0.0" ,
245256 " joserfc>=1.6.1" ,
246257 " werkzeug>=3.1.6" ,
247258 " nltk>=3.9.3" ,
248- # k8s-legacy extra deps — required for tests/integration/k8s_legacy/
249- " kubernetes" ,
250259 " watchdog" ,
251260 " tenacity" ,
252261 " pg8000" ,
253- " uvicorn>=0.24.0" ,
254- " prometheus-client>=0.17.0" ,
255- " alembic>=1.13" ,
256- # Essential Type Stubs
257- " types-PyYAML>=6.0.12.12,<7.0.0" ,
258- " types-python-dateutil>=2.8.19.14,<3.0.0" ,
259- " kubernetes-stubs-elephant-fork>=36.0.2,<37.0.0" ,
260- # Build Tools
261- " tomli>=2.0.0,<3.0.0" ,
262- # Security Scanning
263- " safety>=3.7.0,<4.0.0" ,
264- " pip-audit>=2.6.1,<3.0.0" ,
265- " semgrep>=1.45.0,<2.0.0" ,
266- " cyclonedx-bom>=4.0.0,<8.0.0" ,
267- " peewee>=3.18.3" ,
268- " marshmallow>=4.1.2" ,
269- # Documentation
262+ " kmock>=0.7" ,
263+ # --- toolchain from dependency-groups.docs ---
270264 " mkdocs>=1.5.0,<2.0.0" ,
271265 " mkdocs-material>=9.1.0,<10.0.0" ,
272266 " mkdocstrings>=0.22.0,<2.0.0" ,
@@ -275,12 +269,21 @@ ci = [
275269 " mkdocs-literate-nav>=0.6.0,<1.0.0" ,
276270 " mkdocs-section-index>=0.3.0,<1.0.0" ,
277271 " mike>=1.1.0,<3.0.0" ,
278- # Build and Packaging
272+ # --- inlined from dependency-groups.security ---
273+ " bandit>=1.7.5,<2.0.0" ,
274+ " bandit-sarif-formatter>=1.1.1,<2.0.0" ,
275+ " safety>=3.7.0,<4.0.0" ,
276+ " pip-audit>=2.6.1,<3.0.0" ,
277+ " cyclonedx-bom>=4.0.0,<8.0.0" ,
278+ " peewee>=3.18.3" ,
279+ " marshmallow>=4.1.2" ,
280+ " lxml>=6.1.0" ,
281+ # semgrep is intentionally excluded from this shim (as in the security group):
282+ # workflows pin and install their own version to avoid version drift.
283+ # --- inlined from dependency-groups.build ---
279284 " build>=1.0.3,<2.0.0" ,
280285 " wheel>=0.41.3,<1.0.0" ,
281- ]
282- dev = [
283- " orb-py[ci,all-providers]" ,
286+ # --- dev-only tools (not in any CI group) ---
284287 " virtualenv>=20.26.6" ,
285288 " pre-commit>=3.5.0,<5.0.0" ,
286289 " bump2version>=1.0.1,<2.0.0" ,
@@ -304,7 +307,7 @@ dev = [
304307# The [project.optional-dependencies] ci/dev sections above are pip shims
305308# that mirror these lists for `pip install -e ".[dev]"` compatibility.
306309#
307- # Per-job groups (Phase 2 scoping ):
310+ # Per-job groups (each maps to one CI job ):
308311# lint — ruff + pathspec (lint-ruff, auto-format jobs)
309312# typecheck — pyright + type stubs (lint-pyright job)
310313# arch — import-linter (arch-validation job; pyyaml via project deps)
0 commit comments