Skip to content

DIMFLIX/PyTemplate

Repository files navigation

PyTemplate

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

📦 Основные возможности

  • Стандартизированная структура проекта
  • Интеграция инструментов линтинга и форматирования
  • Интеграция инструмента pre-commit
  • Интеграция инструмента make
  • Использование uv в качестве пакетного менеджера
  • Настройки тестирования с pytest

🚀 Быстрый старт

1. Клонирование шаблона

git clone https://github.com/DIMFLIX-OFFICIAL/PyTemplate.git
cd PyTemplate

2. Инициализация проекта

Замените значения в файлах:

  • pyproject.toml - имя проекта, версия, описание
  • Обновите LICENSE при необходимости

3. Инициализация pre-commit

uvx pre-commit install

4. Инициализация крючка detect-secrets

uvx detect-secrets scan > .secrets.baseline

🛠 Инструменты разработки

Линтинг и форматирование

  • ruff - автоматическое форматирование
  • Flake8 - проверка стиля кода
  • isort - сортировка импортов
  • pre-commit - набор утилит для исправления проекта

Немного о pre-commit

Репозиторий/Хук Назначение Конфигурация/Особенности
Bandit
bandit Поиск уязвимостей в Python-коде Конфигурация из pyproject.toml
pre-commit-hooks
trailing-whitespace Удаление пробелов в конце строк Автоматическое исправление
check-yaml Проверка синтаксиса YAML-файлов
check-merge-conflict Поиск конфликтов слияния (<<<<<<<)
detect-private-key Обнаружение приватных ключей в коде
debug-statements Проверка на отладочные вызовы (e.g., pdb.set_trace())
pyupgrade
pyupgrade Автоматическое обновление синтаксиса Python Целевая версия: 3.11+
ruff-pre-commit
ruff Линтинг + форматирование кода Автофикс, исключение migrations
autoflake
autoflake Удаление неиспользуемых импортов и переменных Автоматическое исправление
vulture
vulture Удаление "мёртвого кода"
check-jsonschema
check-github-workflows Валидация GitHub Actions workflow-файлов
check-dependabot Проверка конфигурации Dependabot
pygrep-hooks
python-use-type-annotations Проверка обязательных аннотаций типов
python-check-blanket-noqa Проверка неконкретных # noqa комментариев
detect-secrets
detect-secrets Поиск секретов (API-ключи, пароли) Базовый файл .secrets.baseline, исключение package.lock.json
pre-commit-images
optimize-png Оптимизация PNG-изображений Автоматическое сжатие
optimize-svg Оптимизация SVG-файлов Удаление метаданных, минификация

🔄 Работа с Makefile

Основные команды:

make help          # Показать все команды
make fmt           # Запуск pre-commit для всех файлов
make clean         # Очистить временные файлы

📂 Структура проекта

.
├── .vscode/            # Настройки для vscode
│   ├── extensions.json # Рекомендуемые расширения в vscode для проекта
│   └── settings.json   # Базовые настройки vscode
├── src/                # Исходный код проекта
│   ├── __init__.py
│   └── app.py
├── tests/              # Тесты
├── ruff.toml           # Конфиг ruff
├── .pre-commit-config.yaml # Настройки pre-commit
├── pyproject.toml      # Конфигурация проекта
├── Makefile            # Утилиты для разработки
├── .gitignore          # Игнорирование файлов/папок в системе git
├── README.md           # Документация проекта
└── LICENSE             # Лицензия проекта

🤝 Вклад в проект

  1. Создайте feature branch
  2. Добавьте тесты для новых функций (если есть)
  3. Запустите make fmt перед коммитом
  4. Откройте Pull Request с описанием изменений

📄 Лицензия

Проект распространяется под лицензией GNU GPL v3. Подробности см. в файле LICENSE.

Releases

No releases published

Packages

No packages published