An open API service indexing awesome lists of open source software.

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

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).