Улучшите свой стиль написания кода на Python с Ruff
Поднимите свой стиль написания кода на Python с помощью Ruff
Что такое Ruff
Ruff – это чрезвычайно быстрый Python-линтер и форматтер, написанный на Rust, который стремится заменить и улучшить существующие инструменты, такие как Flake8, Black и isort. Он обеспечивает 10-100 раз более быструю производительность при сохранении согласованности через более чем 700 встроенных правил и реализацию популярных плагинов.
- «Создание собственного чат-бота на базе React и ChatGPT API»
- Ваш пост VoAGI – почему не стоит злоупотреблять формированием списков в Python.
- Расширьте свои GPT с помощью C#
Ruff поддерживает современный Python совместимость с версией 3.12 и `pyproject.toml`. Он также предлагает поддержку автоматического исправления, кэширование и интеграцию с редактором. Ruff дружественен к монорепозиториям и используется в крупных проектах с открытым исходным кодом, таких как Pandas, FastAPI и других. Объединяя скорость, функциональность и удобство использования, Ruff интегрирует проверку кода, форматирование и автоматическое исправление в единый инструмент, который на несколько порядков быстрее существующих вариантов.
Начало работы с Ruff
Мы легко можем установить `ruff`, используя PIP.
pip install ruff
Чтобы проверить, насколько просто и быстро работает Ruff, мы можем использовать репозиторий DagHub kingabzpro/Yoga-Pose-Classification. Вы можете клонировать его или использовать свой собственный проект для форматирования.
Первым делом мы запустим линтер над нашим проектом. Вы также можете запустить линтер для отдельного файла, заменив “.” на расположение файла.
ruff check .
Ruff выявил 9 ошибок и 1 ошибку, которую можно исправить. Чтобы исправить ошибку, мы будем использовать флаг –fix.
ruff check --fix .
Как видите, он исправил 1 исправимую ошибку. Чтобы отформатировать проект, мы будем использовать команду `ruff format`.
$ ruff format .>>> 3 файлов отформатировано
Линтер и форматтер Ruff внесли множество изменений в код. Но зачем нам нужны эти инструменты? Ответ прост – они полезны для соблюдения стандартов и соглашений по кодированию. Таким образом, вы и ваша команда можете сосредоточиться на важных аспектах вашего кода. Более того, они помогают улучшить качество, поддерживаемость и безопасность нашего кода.
Синтаксическая и форматирование Jupyter Notebooks
Чтобы использовать Ruff для Jupyter Notebook в проекте, вам нужно создать файл `ruff.toml` и добавить следующий код:
extend-include = ["*.ipynb"]
Вы также можете сделать то же самое с файлом `pyproject.toml`.
После этого повторно выполните команды, чтобы увидеть, что они вносят изменения в файлы Jupyter notebook.
2 файла были отформатированы и у нас есть 2 файлы Notebook.
$ ruff format .>>> 2 файлов отформатировано, 3 файла осталось неизменными
Мы также исправили проблемы в этих файлах, запустив команду `check` снова.
$ ruff check --fix .>>> Найдено 51 ошибок (6 исправлено, осталось 45).
Конечный результат потрясающий. Он внес все необходимые изменения, не нарушив код.
Ruff Конфигурации
Настроить Ruff для Jupyter Notebooks легко, отредактировав файл `ruff.toml`, чтобы изменить настройки линтера и форматтера. Подробнее ознакомьтесь с документацией по настройке Ruff.
target-version = "py311"extend-include = ["*.ipynb"]line-length = 80[lint]extend-select = [ "UP", # pyupgrade "D", # pydocstyle][lint.pydocstyle]convention = "google"
GitHub Action & Pre-commit Hook
Разработчики и команды могут использовать Ruff в качестве pre-commit хука через `ruff-pre-commit`:
- repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. rev: v0.1.5 hooks: # Запуск линтера. - id: ruff args: [ --fix ] # Запуск форматтера. - id: ruff-format
Также его можно использовать в качестве GitHub Action через `ruff-action`:
name: Ruffon: [ push, pull_request ]jobs: ruff: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: chartboost/ruff-action@v1
Расширение Ruff для VSCode
Самым приятным аспектом Ruff является его расширение для VSCode. Оно упрощает форматирование и линтинг, устраняя необходимость в сторонних расширениях. Просто найдите Ruff на торговой площадке расширений, чтобы установить его.
Изображение с Ruff – Visual Studio Marketplace
Я настроил `setting.json` для автоматического форматирования при сохранении.
Заключение
Ruff обеспечивает быстрый линтинг и форматирование для более чистого и последовательного кода на Python. Благодаря более чем 700 встроенным правилам, реализованным на Rust для повышения производительности, Ruff черпает вдохновение из популярных инструментов, таких как Flake8, isort и pyupgrade, чтобы обеспечить всеобъемлющий набор лучших практик программирования. Составленный набор правил сосредоточен на выявлении ошибок и критических проблем стиля без чрезмерной придирчивости.
Совместимость с pre-commit хуками, GitHub Actions и редакторами, такими как VSCode, делает интеграцию Ruff в современные рабочие процессы на Python легкой. Благодаря невероятной скорости и тщательно разработанному набору правил, Ruff становится неотъемлемым инструментом для разработчиков Python, которые ценят быструю обратную связь, чистый код и плавное сотрудничество команды. Ruff устанавливает новый стандарт для линтинга и форматирования на Python, объединяя надежный функционал с быстрой производительностью.
****[Абид Али Аван](https://www.polywork.com/kingabzpro)**** (@1abidaliawan) – сертифицированный специалист по науке о данных, который обожает создавать модели машинного обучения. В настоящее время он фокусируется на создании контента и написании технических блогов о машинном обучении и технологиях обработки данных. Абид обладает степенью магистра в менеджменте технологий и степенью бакалавра в области телекоммуникационной инженерии. Его цель – создать продукт искусственного интеллекта, использующий графовую нейронную сеть, для студентов, борющихся с психическими заболеваниями.