Этот шаблон предоставляет готовую структуру для Python-проектов с предварительно настроенными инструментами разработки, CI и линтингом.
- Стандартизированная структура проекта
- Интеграция инструментов линтинга и форматирования
- Интеграция инструмента
pre-commit - Интеграция инструмента
make - Использование
uvв качестве пакетного менеджера - Настройки тестирования с pytest
git clone https://github.com/DIMFLIX-OFFICIAL/PyTemplate.git
cd PyTemplateЗамените значения в файлах:
pyproject.toml- имя проекта, версия, описание- Обновите
LICENSEпри необходимости
uvx pre-commit installuvx 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.