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

Набор инструментов для качества кода для проектов Python

Когда я начал все больше и больше переходить к работе с Python, я оглянулся на мир JS … Tagged с помощью Python, программирования, DevOps, Codequality.

Когда я начал все больше и больше переходить к работе с Python, я оглядывался на мир JS и подумал, что у них так много хороших инструментов для форматирования и личинки! Я оказался в диком мире программирования Python, где PEP8 Устанавливает стандарты, но следите за ними или нет, и то, как вы пишете свой код, в значительной степени зависит от вас. Это мое письмо к себе назад, чтобы поделиться некоторыми советами, которые у меня теперь есть в моем наборе инструментов для поддержания хорошего и чистого проекта Python.

Форматирование

Если вы хотите ускорить кодирование и полагаться на компьютер, чтобы выполнить полировку для вас, вы можете использовать форматер кода для автоматического прохождения и форматирования вашего кода. В мире Python, Черный является одним из самых используемых форматеров. Это можно сравнить с Красиво В мире JS – они оба являются самоуверенными форматами, то есть они делают для вас выбор. (Вам не нужно больше бороться с своим коллегой за то, чтобы использовать ли одиночные или двойные цитаты! Большой!)

Вот как Black отвечает на файл с Печать ("Привет") Анкет

$ pip install black
$ black my-sample.py
reformatted my-sample.py
All done! ✨ 🍰 ✨
1 file reformatted.

Лининг

Linting отличается от форматирования в том, что он не изменит код, на который он смотрит, но уведомит вас, если он не будет соблюдать указанные стандарты. Хороший вариант для сжигания в Python – Flake8 . Вот как Flake8 реагирует на то же содержимое файла, что и Black выше.

$ pip install flake8
$ flake8 my-sample.py
my-sample.py:1:14: E202 whitespace before ')'

В дополнение к этому из коробки, есть множество Flake8 Extensions Это может помочь вам, например, переключение с .format () Для использования F-стенков или проверки вашего именования следует рекомендациям PEP8. Например, добавление Flake8 длины Добавляет проверку длины линии к лининге.

$ pip install flake8-length
$ flake8 test.py
test.py:1:80: LN001 line is too long (169 > 79)

Если вам нравится сохранять свой импорт в такте, есть также правила для обеспечения конкретного порядка среди них. Один инструмент, который делает это Исорт . Изорт следует за заказом:

  1. абсолютный импорт
  2. Встроенные модули
  3. Сторонние библиотеки
  4. Импорт из того же проекта вы также можете интегрировать Isort в Flake8, используя Flake8-Asort плагин!

Проверка типа

Поддержка аннотаций типа была введена в Python 3.5, и есть инструменты для наблюдения за тем, чтобы набрать типирование в такте. Хорошим вариантом для проверки аннотаций вашего типа является использование mypy Анкет Учитывая образец файла, который выглядит так:

def return_hello(name: str) -> int:
    return f'Hello, {name}!'

Мы можем запустить Mypy и увидеть, что наши намеки на наш тип действительно отключены:

$ pip install mypy
$ mypy my-sample.py
my-sample.py:2: error: Incompatible return value type (got "str", expected "int")
Found 1 error in 1 file (checked 1 source file)

Некоторые другие хорошие альтернативы для проверки типов – Пирайт (который наблюдается в VSCODE через плагин Microsofts Pylance) и Pyre Анкет

Подключить это

Вы могли бы время от времени запускать эти инструменты в своем проекте, но у вас будет лучшее время, если вы сделаете их частью своей процедуры запроса на привлечение. Используя действия GitHub, вы можете настроить, например, Flake8 Action . В качестве альтернативы вы можете создать действие с нуля – здесь мы запускаем Isort с опцией только для проверки:

name: Check import order

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v1
    - name: Set up Python 3.9
      uses: actions/setup-python@v1
      with:
        python-version: 3.9
    - name: Install isort
      run: |
        python -m pip install --upgrade pip
        pip install isort
    - name: Check import order
      run: isort . -c -v

Последние мысли

Мне нравятся правила, поэтому, когда систематически может объединить свою кодовую базу, используя такие инструменты, просто делает мой день. Однако я также знаю много разработчиков, которые не чувствуют, что такая строгость является их джем – всегда следует обсуждать в команде, как и почему мы хотим установить стандарты кодовой базы.

Надеюсь, этот текст дал вам все идеи о том, какие инструменты есть и что вы могли бы выбрать в свой собственный инструментарий! Если вы знаете полезный инструмент, который я не упомянул – пожалуйста, дайте мне знать в комментариях! 😊

Оригинал: “https://dev.to/magdapoppins/write-better-python-with-some-help-5g1l”