Этот шаблон предоставляет готовую структуру для Python-проектов с предварительно настроенными инструментами разработки, CI и линтингом.
- Стандартизированная структура проекта
- Интеграция инструментов линтинга и форматирования
- Интеграция инструмента
pre-commit
- Интеграция инструмента
make
- Использование
uv
в качестве пакетного менеджера - Настройки тестирования с pytest
git clone https://github.com/DIMFLIX-OFFICIAL/PyTemplate.git
cd PyTemplate
Замените значения в файлах:
pyproject.toml
- имя проекта, версия, описание- Обновите
LICENSE
при необходимости
uvx pre-commit install
uvx detect-secrets scan > .secrets.baseline
- ruff - автоматическое форматирование
- Flake8 - проверка стиля кода
- isort - сортировка импортов
- 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-файлов | Удаление метаданных, минификация |
Основные команды:
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 # Лицензия проекта
- Создайте feature branch
- Добавьте тесты для новых функций (если есть)
- Запустите
make fmt
перед коммитом - Откройте Pull Request с описанием изменений
Проект распространяется под лицензией GNU GPL v3. Подробности см. в файле LICENSE.