Рубрики
Без рубрики

Понимание наилучшей практики Python Tooling, сравнивая популярные шаблоны проекта

Целевая аудитория: промежуточные программисты Python. TL; DR: Используйте flake8, pteest и sphinx в твоей т. Помечено Python, DevOps, производительностью, тестированием.

Целевая аудитория: Промежуточные программисты Python.

TL; DR: Используйте flake8, pteest и sphinx в вашем текущем проекте Python. Также оцените предварительный коммит, черный и пилинт. Для вашего следующего проекта рассмотрите возможность добавления поэзии и зависимостей.

Мне всегда трудно иметь Сбалансированное мнение о лучших практиках Python Отказ Технический мир, ориентированный на гиппе, затрудняет фильтр сигнала от шума. Недавно рекламируемый инструмент часто звучит отлично на бумаге, но Это на самом деле делает меня более эффективным инженером? Или это всего лишь еще одна вещь, которую мне нужно присматривать, добавив больше сложности, чем значение?

У меня было расплывчатое представление о том, что я считал лучшими практикой, но в основном он был основан на анекдотальных доказательствах и случайных разговорах. Затем, за последние пару недель, я начал смотреть на все шаблоны проекта Python (I.e CookieTiters ) Я мог найти. Для меня, казалось чрезвычайно интересным увидеть Какие инструменты создатели этих шаблонов считаются достойными быть частью их лесов для каждого нового проекта Python.

Я сравнил 18 самых популярных (от 76 до 6,3 тыс. Звезды Github) шаблоны проекта с акцент на каких инструментах они одобрили. Результаты можно найти в этой электронной таблице:

Электронная таблица: популярные шаблоны Python Project и лучшая инструментария

В разделах ниже я подчеркиваю свой ключ.

Стандарты де-факто

Инструменты в этом разделе были включены в значительно более половины шаблонов, что означает, что они были приняты в качестве по умолчанию множеством проектов Python в дикой природе.

Flake8. : Я использовал Flake8 на некоторое время, но я не знал, насколько это доминирует. Я думал, что есть некоторая конкуренция, но подавляющее большинство шаблонов проектов полагаются на него. Неудивительно: удобство льгота целых кодовых базов в считанные секунды трудно спорить. Быть еще более передовым, рассмотрим Wemake-Python-Stureguide В качестве своего рода «flake8 на стероидах» даже может сделать другие инструменты (например, пилинт).

pteest & Coverage.py : Подавляющее большинство шаблонов полагаются на Pтойца, и тем самым противоречив использовать стандартную библиотеку Неизвестный Отказ Сияет ярче, когда сочетается с Tox , который около половины шаблонов включает в их установку.

Сфинкс : Для большинства шаблонов SPHINX – это инструмент GO-TO для генерации документации. К моему удивлению, Mkdocs только звания как отдаленные секунды.

Ну и что? Если вы не используете Flake8, pteest и sphinx В вашем нынешнем проекте Python рассмотрите возможность принятия их.

Доход

В этом разделе я собираю то, что я наблюдал в шаблонах как тенденции Отказ Это означает, что пока еще не поддерживается большинством шаблонов проектов, Большинство младших шаблонов поощряют использование следующих инструментов и конвенций.

pyproject.toml : PEP 518 предложил этот модернизированный способ указания требований по сборке, а большинство младших шаблонов приняли его.

поэзия : В то время как экосистема Python была до грубого начала в отношении сильного инструмента для управления зависимостями, я осторожно оптимистично оптимистично, что поэзия может стать NPM Python. Младшие (но все еще популярные) шаблоны проекта, кажется, согласны. Но имейте в виду, что если вы работаете над какой-то библиотекой, которую вы можете распространить через PYPI, вы все равно выбираете вместо этого setUptools. [Обновление: я получил отзыв после публикации, что это не кажется проблемой больше.]

Кроме того, будьте осторожны, если вы (или ваши зависимости) полагаются на кондейский Отказ В этом случае вы не захотите пользоваться поэзией, потому что в его текущей форме она связана с вами в PIP и VirtualenV.

Зависимость : Зависимость часто проверяет устаревшие зависимости и пытается помочь вам автоматически открывать PR. Я лично увидел, что это недавно добавило на гораздо больше проектов, и, кажется, отличное дополнение с большим количеством потенциальных угроз для потенциально смягчающих угроз безопасности, подталкивая инженеров, чтобы сохранить в настоящее время.

Ну и что? Держите глаза открытыми для Поэзия и зависимость Отказ Подумайте о принятии их для вашего следующего проекта.

Личные рекомендации

Анализ шаблонов проекта дал мне немного амбивалентного ответа на инструменты, перечисленные ниже. Тем не менее, я хотел бы использовать этот раздел для Лично одобряют их, потому что у них в прошлом обеспечивало большое значение для меня.

Предварительный коммит : Даже если у вас есть много дисциплины, не тратьте его на что-то вроде проверки на логов лгорам еще раз перед Git Commiting/pushing. Вместо этого сохраните свою дисциплину для хороших практик TDD и MOB-программирования.

Пилинт : Быть критиковать за то, что он слишком медленно и быть слишком бюрократическим для администрации, пилинт имеет (и все еще есть) делает меня лучшим инженером. Это дает мне конкретные указатели, где можно улучшить мой код и как лучше соблюдать Конвенцию. Это сама по себе много ценности, исходящего из бесплатного инструмента, что заставляет его стоит хлопот для меня.

Черный : «Бескомпромиссно» устраняет всю двусмысленность о том, где поставить белое пространство в Python Code, Black сохраняет наши команды от бесчисленных дискуссий с низким значений и дифференциров с низким значением, вызванным расходящими конфигурациями редактора. Для меня он смягчает один из моих личных негативов Python (то есть значительный пробел), чтобы быть неэффективным. Более того, в 2019 году черный переехал под фонд Python Software Software, который является сильным одобрением.

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

Мета и нижняя линия

Двенадцать из 18 шаблонов, которые я проанализировал, были построены с печенье . Некоторые из шаблонов небезопасности имеют некоторые интересные функции. Но учитывая статус CookieTutter Framework Thylating Framework, вы должны иметь вескую причину и привести сознательное решение, если вы хотите использовать один из шаблонов не закрепления.

Выберите шаблон, который соответствует вашему видению наиболее тесно. Если вам потребуется такая же настройка, настраиваемая на вершине данного шаблона часто, вилка и настроить его, захватившая вдохновение от более чем одного шаблона в моем списке. И если вы чувствуете авантюристые, Создайте свой собственный шаблон с нуля Отказ CookieCutter – это большая часть экосистемы Python и прямой jinja2 Шаблон делает создание своего ветра.

Бонус – Рекомендации шаблонов:

Django: Рядом с самыми популярными шаблонами Django считают также Wemake-django-шаблон Отказ Это дает очень хорошо продуманное впечатление.

Наука данных: Это большинство сценариев, вы бы хотели использовать Наука данных CookieCutter Однако вы также должны проверить Кедро Отказ Он расширяет науку Data CookieThter, чтобы включить способ создания стандартизированных конвейеров данных и имеет нагрузку/сохранение поддержки для данных и моделей. Эти функции могут сделать его идеальным подходящим для вашего следующего проекта.

Я также хотел бы покинуть шляпу к Шаблона Для его суперпольной документации, которая может содержать для вас некоторое значение, даже если вы в конечном итоге используете что-то еще.

Общее назначение: Это немного зависит от того, создаете ли вы библиотеку или приложение, но рядом с самыми популярными шаблонами, я бы лично дал Шаблон Python Jace хороший взгляд. Это одна из менее популярных шаблонов, но мне нравится, что он выходит из коробки с поэзией, изортизанным, черным, пилинцевым и миним. Высылки Является самым популярным шаблоном неучера и имеет много расширений (например, Django, Наука данных ). И это вытягивает номера версий из Git Via SetUpeools-SCM , что отлично. Кроме того, это один из немногих шаблонов, которые поддерживают Кондей.

Две шаблоны поставляются с действиями GitHub включены: первый – Python Best Practices CookieCutter Что также поставляется с большинством моих любимых инструментов. Другой – Чертеж/котельная для проектов Python Что я думаю, интересно, потому что нахождение общих проблем безопасности с Бандит Звуки многообещающие – и объединение всей конфигурации инструмента в одном setup.cfg блестящий

Наконец, проверить Wemake-Python-Package – Особенно, но не исключительно, если вам нравится их шаблон Django или, если вы заинтересованы в использовании, они супер заряжены Wemake-Python-Stureguide вместо Vanilla Flake8.

Участники/доказательницы: Мартин Хайнц, Матиас Мэвисьвич, Фридеманн Алттц, Андрей Марсик, Такахико Ито, Брендан Магиннис, Радован, Баст, Ариэль Рокем, Никита Соболев , Флориан Вильгельм , Yetunde Dada.

Оригинал: “https://dev.to/jonasrk/understanding-best-practice-python-tooling-by-comparing-popular-project-templates-2dnj”