pyproject.toml, Giga, Python. Code Format, Tools
https://giga.chat/link/gcsObBTGeV
Файл pyproject.toml стал де-факто стандартом в мире Python благодаря поддержке его в спецификациях PEP 518 и PEP 517.
Изначально созданный для упрощения и автоматизации процесса сборки Python-приложений,
теперь он активно применяется для задания большинства аспектов управления проектом, включая сборку, тестирование,
документацию и даже публикации пакетов.
Основные секции и возможности pyproject.toml
1. [build-system]
Задает общие инструкции по сборке проекта. Включает список обязательных зависимостей для инструментов сборки и backend,
используемый для сборки (обычно это setuptools.build_meta).
Например:
[build-system] requires = ["setuptools>=42", "wheel"] build-backend = "setuptools.build_meta"
2. [tool.<name>]
Эта секция предназначена для конфигурирования сторонних инструментов, поддерживающих TOML-конфигурацию.
Она чрезвычайно полезна для различных задач:
- Poetry: Конфигурирует проект для менеджера зависимостей и упаковки poetry.
[tool.poetry] name = "awesome-proj" version = "0.1.0" description = "An awesome project" authors = ["John Doe <john@doe.org>"] license = "MIT"
Hatch: Использовать Hatch для управления жизненным циклом проекта.[tool.hatch.build] versions = ["standard"] targets = { wheel = {} }
Flake8, Black, isort: Хранят конфигурационные параметры для инструментов проверки качества кода и форматирования.[tool.black] line-length = 88 target-version = ['py37', 'py38']
3. [project]
Эта секция появилась позже и была введена в рамках PEP 621,
предназначенного для замены устаревших методов задания метаданных проекта
(таких как setup.py или старые версии setup.cfg).
Здесь хранится информация о самом проекте, такая как название, версия, авторство, лицензия
и многое другое:
[project] name = "cool-package" version = "0.1.0" description = "This is a cool package!" authors = [ { name="Alice", email="alice@example.com" }, { name="Bob", email="bob@example.com" } ] license = { file = "LICENSE" } classifiers = [ "Programming Language :: Python", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent" ] dependencies = [ "requests >= 2.25.0", "beautifulsoup4 >= 4.9.0" ] optional-dependencies = { dev = ["pytest", "mypy"], doc = ["Sphinx", "sphinx-autodoc-typehints"] }
4. Другие полезные поля
Помимо вышеперечисленных секций, pyproject.toml поддерживает также дополнительную функциональность:
- Определение динамических значений (например, извлечение версии из модуля);
- Управление окружением и системой сборки (например, настройки тестирования, покрытия, документации);
- Дополнительная поддержка любых инструментов, соответствующих спецификации TOML (через секцию
[tool.*]).
Почему pyproject.toml популярен?
- Декларативность:
- Информации больше не требуется писать вручную в
setup.py(Python-код), - а просто записывать её в обычный TOML-файл.
- Стандартизация:
- Спецификация рекомендована самим сообществом Python и
- внедряется всеми ведущими инструментами сборки и управления зависимостями.
- Унификация:
- Поддержка широкого спектра инструментов (Poetry, Flit, Hatch, Setuptools и других) делает его универсальным решением.
Таким образом,
файл pyproject.toml сейчас считается одним из ключевых компонентов любой современной системы сборки Python-программ
и используется практически повсеместно для предоставления информации о проекте,
управлении зависимостями и конфигурировании сборки.
Комментариев нет:
Отправить комментарий