Summary
Replace [project.optional-dependencies] with [dependency-groups]
(PEP 735) for lint, test, and
dev in pyproject.toml.
Why
-
Semantic correctness – optional dependencies are for package
consumers. Lint/test/dev deps are internal and should not appear as
installable extras.
-
Cleaner package metadata – these groups won't leak into the
published wheel.
-
No self-references – the fragile kfp-components[lint] pattern
is replaced by native include-group composition.
-
uv best practice – uv
recommends
dependency groups for dev workflows.
-
Better defaults – uv sync includes the dev group
automatically; contributors no longer need --extra dev.
Summary
Replace
[project.optional-dependencies]with[dependency-groups](PEP 735) for
lint,test, anddevinpyproject.toml.Why
Semantic correctness – optional dependencies are for package
consumers. Lint/test/dev deps are internal and should not appear as
installable extras.
Cleaner package metadata – these groups won't leak into the
published wheel.
No self-references – the fragile
kfp-components[lint]patternis replaced by native
include-groupcomposition.uv best practice – uv
recommends
dependency groups for dev workflows.
Better defaults –
uv syncincludes thedevgroupautomatically; contributors no longer need
--extra dev.