https://github.com/dimflix/pytemplate
My template for a python projects
https://github.com/dimflix/pytemplate
gitignore makefile pre-commit project-template python ruff template uv
Last synced: 6 months ago
JSON representation
My template for a python projects
- Host: GitHub
- URL: https://github.com/dimflix/pytemplate
- Owner: DIMFLIX
- License: gpl-3.0
- Created: 2025-02-18T17:07:50.000Z (8 months ago)
- Default Branch: master
- Last Pushed: 2025-03-31T16:05:38.000Z (6 months ago)
- Last Synced: 2025-03-31T17:03:01.938Z (6 months ago)
- Topics: gitignore, makefile, pre-commit, project-template, python, ruff, template, uv
- Language: Makefile
- Homepage:
- Size: 34.2 KB
- Stars: 7
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# PyTemplate
Этот шаблон предоставляет готовую структуру для Python-проектов с предварительно настроенными инструментами разработки, CI и линтингом.## 📦 Основные возможности
- Стандартизированная структура проекта
- Интеграция инструментов линтинга и форматирования
- Интеграция инструмента `pre-commit`
- Интеграция инструмента `make`
- Использование `uv` в качестве пакетного менеджера
- Настройки тестирования с pytest## 🚀 Быстрый старт
### 1. Клонирование шаблона
```bash
git clone https://github.com/DIMFLIX-OFFICIAL/PyTemplate.git
cd PyTemplate
```### 2. Инициализация проекта
Замените значения в файлах:
- `pyproject.toml` - имя проекта, версия, описание
- Обновите `LICENSE` при необходимости### 3. Инициализация pre-commit
```bash
uvx pre-commit install
```### 4. Инициализация крючка detect-secrets
```bash
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` | Удаление неиспользуемых импортов и переменных | Автоматическое исправление |
| **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
Основные команды:
```bash
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](LICENSE).