понедельник, 2 июня 2025 г.

setup.cfg, Giga, Python. Code Format, Tools

setup.cfg, Giga, Python. Code Format, Tools

https://giga.chat/link/gcsObBTGeV

Файл setup.cfg используется в экосистеме Python для хранения конфигурационной информации, необходимой для сборки,

публикации и развертывания Python-проектов.

По сути, этот файл заменяет старый способ описания проектов с помощью скрипта setup.py и соответствует рекомендациям

PEP 517 и PEP 518, направленных на улучшение процессов упаковки и доставки ПО.

Зачем нужен setup.cfg?

Раньше большинство информации о проекте задавалось в виде исполняемого сценария setup.py, написанного на Python.

Такой подход имел ряд недостатков: легко допустить ошибку в синтаксисе Python,

было сложно проверить валидность конфигурации перед запуском,

да и сам сценарий мог оказаться достаточно большим и запутанным.

Использование setup.cfg решает эти проблемы,

предоставляя удобный декларативный способ задать ключевые аспекты проекта:

  • Имя и версия пакета.
  • Авторские права и лицензии.
  • Список включаемых файлов и директорий.
  • Настройки компилятора и линковщика.
  • Конфигурация тестов, документации и многое другое.

Типичная структура setup.cfg

Вот пример простого файла setup.cfg:

[metadata]
name = my_package
version = attr: version.__version__
author = John Doe
author_email = john.doe@example.com
url = http://example.com/my_package
classifiers =
    Programming Language :: Python :: 3
    License :: OSI Approved :: MIT License
    Operating System :: OS Independent

[options]
zip_safe = False
install_requires =
    requests >= 2.20
    beautifulsoup4

[options.packages.find]
where = .
exclude = tests*

[options.extras_require]
test =
    pytest
    coverage
doc =
    sphinx
    sphinx_rtd_theme

Этот файл описывает базовую информацию о пакете, устанавливает зависимости,

управляет настройками упаковки и добавляет опции для расширений (например, тестовые зависимости).

Чем отличается от setup.py?

  • setup.py требует знания Python и потенциально подвержен ошибкам программирования.
  • setup.cfg является простым текстом в INI-подобном формате, удобным для чтения и редактирования.
  • Обычно комбинация обоих файлов встречается редко, хотя возможен гибридный подход,
  • где важные настройки остаются в setup.py, а второстепенные — в setup.cfg.

Однако рекомендуется постепенно переходить на использование только setup.cfg и pyproject.toml,

поскольку они предлагают более стабильную и предсказуемую систему сборки и распределения пакетов.

Итоги

  • setup.cfg используется для декларативного задания всех необходимых деталей проекта.
  • Удобнее читать и поддерживать, чем setup.py.
  • Полностью поддерживается современными системами сборки, такими как setuptools, flit и hatch.

Теперь современные Python-проекты стремятся минимизировать сложность своего инструментария и

предпочитают хранить всю необходимую информацию о проекте именно в таком удобочитаемом и понятном формате.

Комментариев нет:

Отправить комментарий