Mediumpackaging

Что такое pyproject.toml?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

pyproject.toml (PEP 518, 621) — современный конфигурационный файл Python-проекта, замена setup.py. Единый источник правды.

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[project]
name = "mypackage"
version = "1.0.0"
description = "My awesome package"
requires-python = ">=3.10"
dependencies = ["requests>=2.28", "click"]

[project.optional-dependencies]
dev = ["pytest", "mypy"]

[project.scripts]
myapp = "mypackage.cli:main"

[project.urls]
homepage = "https://github.com/me/mypackage"

[tool.pytest.ini_options]
testpaths = ["tests"]
  • [build-system] — какой build backend (setuptools, flit, hatchling, poetry-core);
  • [project] — метаданные: name, version, dependencies, classifiers;
  • [project.scripts] — entry points для CLI;
  • [tool.X] — конфиг для инструментов (pytest, black, mypy, ruff);
  • poetry, hatch, pdm — обёртки, упрощающие разработку.

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.