Показаны сообщения с ярлыком isort. Показать все сообщения
Показаны сообщения с ярлыком isort. Показать все сообщения

четверг, 26 июня 2025 г.

Black, isort, flake8, mypy, pyright, giga, gitlab,ci

Black, isort, flake8, mypy, pyright, giga, gitlab,ci

Процесс работы GitLab CI

Шаг 1: Отправка коммита

Когда ты отправляешь новый коммит в GitLab, GitLab CI автоматически запускает все этапы, описанные в файле .gitlab-ci.yml.

Шаг 2: Начало работы CI

GitLab CI считывает конфигурацию из .gitlab-ci.yml и начинает выполнение заданий последовательно по стадиям (stages).

Что делает GitLab CI:

Stage: before_script

  • Сначала выполняются общие предварительные операции:
    • Устанавливается Poetry.
    • Деактивируется создание виртуальных сред (так как мы работаем в контейнере).
    • Загружаются зависимости проекта через poetry install --no-root.

Stage: format

  • Этот этап отвечает за форматирование и очистку кода:
    • Black применяет форматирование кода.
    • Isort очищает и упорядочивает импорты.

Stage: type-check

  • Здесь осуществляется проверка аннотаций типов:
    • Mypy проверяет корректность аннотаций и сигнализирует о проблемах.
    • Pyright также осуществляет проверку аннотаций, работая параллельно с Mypy.

Stage: lint

  • Завершается процессом линта, проверяющим стиль и качество кода:
    • Flake8 ищет стилистические ошибки и выдает предупреждения.

Какие результаты можно ожидать:

  1. Лог выполнения:
    • Вся активность CI записывается в журнал.
    • Ты можешь посмотреть отчёт о результатах в панели CI/CD на странице проекта в GitLab.
  2. Уведомления об успехе или неудаче:
    • Если все этапы выполнены успешно, ты увидишь зелёный значок успеха возле последнего коммита.
    • Если какая-то проверка завершилась неудачей, напротив соответствующего этапа появится красный индикатор.
  3. Детализация ошибок:
    • Щёлкнув по этапу, ты можешь изучить детализированный лог ошибок или уведомлений,
    • полученных от каждой утилиты (например, Flake8, Mypy, Pyright).

Просмотр отчётов

После выполнения всех проверок CI на GitLab ты можешь увидеть результаты следующим образом:

  1. Зайди в страницу своего проекта в GitLab.
  2. Перейди в раздел CI/CD -> Pipeline.
  3. Среди последних Pipeline'ов найди последний коммит.
  4. Наведи мышью на каждую стадию и щёлкни по ссылке для просмотра журнала.

В журнале ты увидишь точные уведомления о любых нарушениях, возникающих при проверке,

будь то неправильное форматирование,

нарушение стандартов PEP8 или проблемы с аннотациями типов.

Пример отчёта:

Предположим, ты отправил код с неправильными отступами. Тогда в логе ты увидишь что-то подобное:

src/annotation_ci_proj/basic_any.py:4:1: E302 expected 2 blank lines, found 1

Или, если Mypy нашел проблему с типизацией:

src/annotation_ci_proj/some_module.py:10: error: Argument 1 to "some_function" has incompatible type "float"; expected "int"

Заключение:

Процесс GitLab CI выстроен таким образом,

чтобы обеспечивать высокое качество кода и своевременно реагировать на любые отклонения от стандартов и требований.

Благодаря такому подходу ты будешь получать своевременные уведомления о проблемах и сможете оперативно вносить исправления.

понедельник, 2 июня 2025 г.

isort, Giga, Python. Code Format, Tools

isort, Giga, Python. Code Format, Tools

https://giga.chat/link/gcsObBTGeV

isort — это специализированный инструмент для автоматического упорядочивания и группировки импортов в Python-коде.

Главная цель isort — поддерживать чистоту и организованность импорта, что крайне важно для больших проектов,

где правильное расположение импортов может облегчить чтение и сопровождение кода.

Зачем нужен isort?

  • Организация импорта: Разделяет импорт на категории (стандартные библиотеки, сторонние библиотеки,
  • внутренние модули), сортируя их в алфавитном порядке.
  • Устранение хаоса: Избавляется от повторяющихся импортов, неподключенных модулей и
  • неправильного расположения блоков импорта.
  • Соответствие стандарту: Соблюдение принципов PEP 8 и других рекомендованных стандартов.

Как работает isort?

Isort берёт существующий Python-файл и реорганизует блоки импорта в чётком и логичном порядке.

Процесс разделения включает:

  1. Импорты стандартных библиотек (stdlib).
  2. Сторонние библиотеки (external).
  3. Внутренние модули проекта (internal).

Каждую категорию можно дополнительно сортировать в алфавитном порядке.

Пример использования isort:

Исходный беспорядок:

from .models import User
import os
from django.db.models import Q
import sys
from ..utils import log_event
from collections import defaultdict

После применения isort:

import os
import sys
from collections import defaultdict

from django.db.models import Q

from .models import User
from ..utils import log_event

Функционал isort:

  • Автоматическое удаление избыточных импортов.
  • Поддержка множественных режимов сортировки (разделители, префикс, постфиксы).
  • Распределение на группы: разделяет импорты на стандартные, сторонние и внутренние.
  • Возможность сохранения текущего порядка (конфигурационно настраивается).

Инструкция по применению:

1. Установка:

pip install isort

2. Базовое использование:

Применить isort к файлу:

isort my_file.py

3. Конфиги:

Настроить isort можно через конфигурационный файл setup.cfg или .isort.cfg.

Пример минимальной конфигурации:

[settings]
force_single_line=True
lines_after_imports=2
known_first_party=my_app

4. Интеграция с редактором:

Большинство современных IDE поддерживают isort через плагины (VSCode, PyCharm и др.).

Редакторы могут автоматически форматировать импорт при каждом сохранении файла.

Почему isort удобен?

  • Минимизирует проблемы с расстановкой импортов вручную.
  • Сохраняет код аккуратным и организованным.
  • Автоматически исправляет мелкие ошибки и оптимизирует структуру кода.

Альтернатива:

Другим популярным инструментом для форматирования Python-кода является Black.

В отличие от isort, Black занимается общим форматированием, а не только сортировкой импортов.

Часто эти два инструмента комбинируются для достижения наилучшего результата.

Заключение:

Isort — отличное средство для приведения Python-кода в порядок,

которое идеально подойдёт для больших проектов, нуждающихся в эффективном контроле импорта.

Инструмент лёгок в освоении и применении, заметно повышает читабельность и облегчает поддержку кода.


Black, Autopep8, yapf, isort, Install, Tools

Black, Autopep8, yapf, isort, Install, Tools

# Установить black через conda-forge

conda install -c conda-forge black

# Установить autopep8 через conda-forge

conda install -c conda-forge autopep8

# Установить yapf через conda-forge

conda install -c conda-forge yapf

# Установить isort через conda-forge

conda install -c conda-forge isort

Isort, Giga, Python. Code Format, Tools

Isort, Giga, Python. Code Format, Tools

Isort

Isort помогает организовать импорт модулей в файлах,

соблюдая порядок и группировку импортируемых пакетов согласно установленным правилам.

Очень полезно для поддержания порядка в большом проекте.

Установка:

pip install isort

Применяется следующим образом:

isort my_script.py

Эти инструменты широко используются в индустрии разработки на Python и помогают значительно упростить

процесс поддержки чистоты и единообразия исходного кода.

воскресенье, 1 июня 2025 г.

isort, Giga

isort, Giga

https://giga.chat/link/gcsJhXtnzn Python, Project Structure

isort — это инструмент для автоматического упорядочивания и группировки импортов в Python-код.

Основная цель isort —

обеспечить консистентность и легкую читаемость кода путём правильной сортировки и группировки инструкций импорта.

Основные функции isort:

  • Классификация импортов:
  • разделение импортов на блоки по типу (стандартные библиотеки, внешние зависимости, внутренние модули проекта).
  • Сортировка:
  • автоматическое расположение импортов в алфавитном порядке внутри блоков.
  • Конвенции порядка:
  • сохранение естественного порядка следования импортов, рекомендованного сообществом Python-разработчиков.
  • Распределение по длине строки:
  • распределение длинных списков импортов на несколько строк, чтобы сохранить компактность и эстетичность.

Польза isort:

  • Уменьшается когнитивная нагрузка при чтении кода.
  • Повышается читаемость и поддержка больших проектов.
  • Нет необходимости вручную организовывать и перемещать инструкции импорта.
  • Снижается шанс пропустить ошибку или конфликт импорта.

Применение isort:

Установите isort через pip:

pip install isort

Примените его к вашему проекту:

isort .

isort автоматически реорганизует импортированные модули, выравнивая их в нужной последовательности.

Настройки isort:

Для тонкого контроля над поведением isort можно создать файл конфигурации pyproject.toml или .isort.cfg:

[tool.isort]
force_single_line=True
line_length=100
known_first_party=["my_project"]

Работа с блоками импортов:

isort делит импорт на четыре блока:

  1. Стандартные библиотеки (builtins).
  2. Сторонние зависимости (third-party libraries).
  3. Внутренние модули проекта (first-party modules).
  4. Локальные относительные импортные пути (local relative imports).

Советы по применению isort:

  • Подключите isort к вашей среде разработки (IDE или редактору) для автоматического форматирования при сохранении файла.
  • Используйте isort совместно с другими инструментами, такими как Black или Ruff,
  • для достижения полной автоматизации форматирования и проверки качества кода.
  • Устанавливайте правило автоформатирования в конвейере CI/CD,
  • чтобы предотвратить появление несогласованных импортеров в рабочем дереве.

Итоги:

isort — полезный инструмент для повышения качества и согласованности Python-кода.

Его применение экономит время и усилия,

снижая необходимость ручной коррекции импортов и улучшая общую управляемость проекта.