Секция [project.optional-dependencies] описывает функции пакета, которым нужны дополнительные библиотеки. Пользователь подключает их через extra в квадратных скобках. Обычная установка остается легче.
Объявите extra
Ключ становится публичным именем возможности, а список преобразуется в метаданные Requires-Dist с условием extra, которое читают pip и другие совместимые установщики.
[project.optional-dependencies]
cli = ["rich>=14"]
Установите нужную возможность
Квадратные скобки выбирают один или несколько extras, после чего resolver добавляет их требования к обязательным зависимостям конкретной версии дистрибутива.
python -m pip install "sample-package[cli]"
Не храните здесь инструменты команды
pytest, линтер и генератор документации относятся к рабочей среде репозитория, если пользователю пакета они не нужны для включения заявленной функции во время выполнения.
Проверьте две чистые установки, базовую и с extra: импорт основного модуля должен работать без необъявленного пакета, который случайно остался в окружении разработчика.
Для внутренних инструментов используйте dependency-groups. Поля метаданных разобраны в руководстве Writing your pyproject.toml.