Skip to content

chore: clean up dependencies #583

Description

@ajbozarth

Clean up and organize the dependencies, optional dependencies, and dependency groups to follow a clear pattern:

  1. dependencies - Core packages required at runtime (always installed)

    • Use for: Essential functionality everyone needs
  2. project.optional-dependencies - Optional feature groups users can choose

    • Use for: Optional backends, integrations, heavy dependencies
    • Install with: pip install package[feature]
  3. dependency-groups - Development workflow dependencies

    • Use for: Testing, linting, docs (dev-only, not in package distribution)
    • Install with: uv sync --group test
    • Key benefit: Cleaner separation, not included in published package metadata

Decision Guide

  • Runtime required → dependencies
  • Optional user feature → project.optional-dependencies
  • Development only → dependency-groups

The key insight: dependency-groups is the modern standard for development dependencies that shouldn't be part of your package's public API, while optional-dependencies is for user-facing optional features.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions