Comments 9
Навскидку добавлю.
pyenv — менеджер интерпретаторов и виртуальных окружений.
Hatch — относительно новая система сборки под крылом PyPA, но поддерживает все соответствующие PEP. Перешёл на неё с Poetry и не жалею.
Кстати, я заметил, что многие отказываются от систем сборки якобы из-за того, что придётся пользоваться новыми утилитами, а изучать их не хочется. Это не так. Можно перенести все зависимости в pyproject.toml (setup.py для простого перечисления зависимостей не нужен и не рекомендуется), указать систему сборки, отличную от setuptools и не пользоваться ничем кроме pip. Даже колёса можно собирать с помощью pip wheel (хотя лучше python3 -m build).
Из полезных особенностей, которых нет в setuptools — динамические версии из коробки (может сам читать версию из указанного файла), умеет создавать окружение для разработки, умеет запускать команды для матрицы версий (tox становится не нужен).
Hatch пока сам не умеет фиксировать зависимости (автор ждёт, когда такой функционал появится в pip), но можно пользоваться pip-tools. pip-compile отлично понимает зависимости в pyproject.toml.
pyright — тайпчекер. Мне он нравится больше mypy тем, что он быстры и просто работает из коробки без какой-либо настройки и телодвижений. Сам он написан не на Python (, но есть пакет, который можно поставить через pip. Он сам подтянет всё, что нужно. Из-за его скорости, его вполне можно добавить в pre-commit.
py-spy — профайлер. Киллер-фича — способность подключиться к уже запущенному процессу и показывать, какие именно функции сейчас работают. Как top/htop в линукс.
memray — профилировщик памяти.
Если ещё что-то вспомню, то напишу. :)
Пара дополнений про упомянутые в статье пакеты.
К сожалению, ruff пока трудно назвать заменой flake8, так как сила последнего в плагинах, но штука классная.
У rich классная визуализация исключений.
Что на счёт PDM?
Спасибо за статью и ваш труд, как раз недавно начал заниматься пет-проектами, чтобы навык не терять, а теперь ещё и причешу их немного :)
Black - сам использую, рекомендую
там только надо его поднастроить (например по умолчанию у него длина строки 80, что ИМХО коротковать нынче :) )
Навскидку добавлю.
pyenv — менеджер интерпретаторов и виртуальных окружений.
Hatch — относительно новая система сборки под крылом PyPA, но поддерживает все соответствующие PEP. Перешёл на неё с Poetry и не жалею.
Кстати, я заметил, что многие отказываются от систем сборки якобы из-за того, что придётся пользоваться новыми утилитами, а изучать их не хочется. Это не так. Можно перенести все зависимости в pyproject.toml (setup.py для простого перечисления зависимостей не нужен и не рекомендуется), указать систему сборки, отличную от setuptools и не пользоваться ничем кроме pip. Даже колёса можно собирать с помощью pip wheel (хотя лучше python3 -m build).
Из полезных особенностей, которых нет в setuptools — динамические версии из коробки (может сам читать версию из указанного файла), умеет создавать окружение для разработки, умеет запускать команды для матрицы версий (tox становится не нужен).
Hatch пока сам не умеет фиксировать зависимости (автор ждёт, когда такой функционал появится в pip), но можно пользоваться pip-tools. pip-compile отлично понимает зависимости в pyproject.toml.
pyright — тайпчекер. Мне он нравится больше mypy тем, что он быстры и просто работает из коробки без какой-либо настройки и телодвижений. Сам он написан не на Python (, но есть пакет, который можно поставить через pip. Он сам подтянет всё, что нужно. Из-за его скорости, его вполне можно добавить в pre-commit.
py-spy — профайлер. Киллер-фича — способность подключиться к уже запущенному процессу и показывать, какие именно функции сейчас работают. Как top/htop в линукс.
memray — профилировщик памяти.
Если ещё что-то вспомню, то напишу. :)
Пара дополнений про упомянутые в статье пакеты.
К сожалению, ruff пока трудно назвать заменой flake8, так как сила последнего в плагинах, но штука классная.
У rich классная визуализация исключений.
Из полезных особенностей, которых нет в setuptools — динамические версии из коробки (может сам читать версию из указанного файла)
setuptools тоже умеет читать версию из файла
Да, действительно. Я ошибся. Можно указать, откуда брать версию, в tool.setuptools.dynamic
.
Любопытно, что я видел это в документации, но забыл. Видимо, проекты, в которых в setup.py регуляркой достают версию из файла, создали стойкую ассоциацию, что setuptools самостоятельно это сделать не может. :)
К сожалению, ruff пока трудно назвать заменой flake8, так как сила последнего в плагинах, но штука классная.
Кстати, тут я неправ. Я смотрел на ruff когда он только появился, и мне стоило глянуть ещё раз, когда я писал свой комментарий. Он развивается с удивительной скоростью. Я уже заменил flake8 на ruff в паре проектов и очень доволен.
Познавательно, спасибо.
Лучшие open-source инструменты для Python проектов