DP007: OptionalDepsWork

Overview

Property Value
ID DP007
Name OptionalDepsWork
Group dependencies
Severity WARNING

Description

Checks that optional dependencies are valid and can be resolved.

Invalid optional dependencies can cause:

  • Installation failures when users request extras
  • Confusing error messages during pip install
  • Broken functionality for optional features

What it checks

The check validates optional-dependencies in pyproject.toml:

# BAD - invalid package specifiers
[project.optional-dependencies]
dev = [
    "pytest>=",          # Invalid: incomplete version spec
    "invalid name",      # Invalid: spaces in package name
    ">=1.0",             # Invalid: missing package name
]

# GOOD - valid package specifiers
[project.optional-dependencies]
dev = [
    "pytest>=7.0.0",
    "mypy>=1.0.0",
    "ruff>=0.1.0",
]
test = [
    "pytest-cov>=4.0.0",
    "coverage[toml]>=7.0",
]

How to fix

Ensure all optional dependencies are valid package specifiers:

Example fix

[project.optional-dependencies]
dev = [
    "pytest>=7.0.0",
    "mypy>=1.0.0",
    "ruff>=0.1.0",
]
docs = [
    "sphinx>=6.0.0",
    "sphinx-rtd-theme>=1.0.0",
]

Verify installation works

# Test that extras can be installed
pip install -e ".[dev]"
pip install -e ".[docs]"
pip install -e ".[dev,docs]"

Common mistakes

  • Missing package name before version specifier
  • Invalid characters in package names
  • Typos in package names (check won’t catch these)
  • Incomplete version specifiers like >= without version

Configuration

Skip this check

[tool.pycmdcheck]
skip = ["DP007"]

CLI

pycmdcheck --skip DP007