# πŸš€ Python Project Template ![Python](https://img.shields.io/badge/python-3.13-blue) ![Docker](https://img.shields.io/badge/docker-ready-blue) ![Pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen) ![License](https://img.shields.io/badge/license-MIT%20-green) Π£Π½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ шаблон для создания Python-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² с ΡƒΠΆΠ΅ настроСнной инфраструктурой Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, тСстирования ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π­Ρ‚ΠΎΡ‚ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ позволяСт Π½Π°Ρ‡Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ **Π·Π° нСсколько ΠΌΠΈΠ½ΡƒΡ‚**, Π½Π΅ тратя врСмя Π½Π° настройку инструмСнтов ΠΈ окруТСния. Π¨Π°Π±Π»ΠΎΠ½ Π·Π°Π΄Π°Ρ‘Ρ‚ Π΅Π΄ΠΈΠ½Ρ‹ΠΉ стандарт для Python-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ²: - одинаковая структура ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° - Π΅Π΄ΠΈΠ½Ρ‹Π΅ инструмСнты Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ - воспроизводимоС ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ - готовая инфраструктура для запуска ΠΈ дСплоя --- # πŸ“š Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ - [Быстрый старт](#-быстрый-старт) - [Π§Ρ‚ΠΎ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² шаблон](#-Ρ‡Ρ‚ΠΎ-Π²Ρ…ΠΎΠ΄ΠΈΡ‚-Π²-шаблон) - [Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°](#-структура-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°) - [Docker](#-docker) - [ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ качСства ΠΊΠΎΠ΄Π°](#-ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ-качСства-ΠΊΠΎΠ΄Π°) - [ВСстированиС](#-тСстированиС) - [ΠœΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…](#-ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ-Π±Π°Π·Ρ‹-Π΄Π°Π½Π½Ρ‹Ρ…) - [Локализация](#-локализация) - [Changelog](#-changelog) - [Workflow Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ](#-workflow-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ) - [Release процСсс](#-release-процСсс) - [Для ΠΊΠ°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚](#-для-ΠΊΠ°ΠΊΠΈΡ…-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ²-ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚) --- # ⚑ Быстрый старт ΠšΠ»ΠΎΠ½ΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ: ```bash git clone cd project ```` УстановитС зависимости: ```bash uv sync ``` ЗапуститС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅: ```bash python main.py ``` --- # 🐳 Docker Π‘ΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€: ```bash docker compose up --build ``` Docker-конфигурация Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚: * production-ready `Dockerfile` * multi-stage сборку * ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΎΠ±Ρ€Π°Π·Π° * запуск ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π±Π΅Π· root * healthcheck ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° --- # ✨ Π§Ρ‚ΠΎ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² шаблон Π’ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ ΡƒΠΆΠ΅ настроСны основныС инструмСнты Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. ## ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΡ * Docker * Docker Compose * оптимизированная сборка ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ## ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΊΠΎΠ΄Π° * Ruff β€” Π»ΠΈΠ½Ρ‚Π΅Ρ€ ΠΈ Π°Π²Ρ‚ΠΎΡ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ * mypy β€” статичСская типизация * bandit β€” Π°Π½Π°Π»ΠΈΠ· бСзопасности * detect-secrets β€” ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ сСкрСтов ## АвтоматичСскиС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ * pre-commit * ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ YAML ΠΈ JSON * ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ merge ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² * ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² --- # 🧹 ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ качСства ΠΊΠΎΠ΄Π° ΠŸΠ΅Ρ€Π΅Π΄ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ автоматичСски Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ: * Π»ΠΈΠ½Ρ‚ΠΈΠ½Π³ * ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ‚ΠΈΠΏΠΎΠ² * Π°Π½Π°Π»ΠΈΠ· бСзопасности * поиск сСкрСтов * Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ рСпозитория Установка pre-commit: ```bash pre-commit install ``` --- # πŸ§ͺ ВСстированиС Π’ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ **pytest**. ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ: * строгая конфигурация * ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° asyncio * ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ * ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄ ошибок ВСсты Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅: ``` tests/ ``` Запуск тСстов: ```bash pytest ``` --- # πŸ—„ ΠœΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π’ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ настроСн **Alembic**. Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для: * управлСния миграциями Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… * отслСТивания ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ схСмы * бСзопасного обновлСния структуры Π‘Π” --- # 🌍 Локализация НастроСн **Babel** для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΎΠ² ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π°Ρ†ΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π­Ρ‚ΠΎ позволяСт Π»Π΅Π³ΠΊΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ многоязычныС прилоТСния. --- # πŸ“œ Changelog Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ **git-cliff** для автоматичСской Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ `CHANGELOG`. Changelog формируСтся Π½Π° основС conventional commits. --- # πŸ“ Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° РСкомСндуСмая структура: ``` project/ β”‚ β”œ src/ β”‚ β”” app/ β”‚ β”” main.py β”‚ β”œ tests/ β”‚ β”œ migrations/ β”‚ β”œ Dockerfile β”œ docker-compose.yml β”‚ β”œ pyproject.toml β”œ pytest.ini β”‚ β”” README.md ``` --- # πŸ”§ Workflow Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ процСсс: 1. ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ ```bash git checkout -b feature/my-feature ``` 2. внСсти измСнСния 3. Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ```bash pre-commit run --all-files pytest ``` 4. ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚ ```bash git commit -m "feat: add new feature" ``` 5. ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ измСнСния ```bash git push ``` --- # πŸš€ Release процСсс Π Π΅Π»ΠΈΠ·Ρ‹ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ с использованиСм **conventional commits**. Π˜ΡΡ‚ΠΎΡ€ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ гСнСрируСтся автоматичСски: ```bash git cliff ``` --- # 🧩 Для ΠΊΠ°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ Π­Ρ‚ΠΎΡ‚ шаблон ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для: * backend сСрвисов * API * Telegram-Π±ΠΎΡ‚ΠΎΠ² * CLI инструмСнтов * микросСрвисов * Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… сСрвисов Он Π½Π΅ привязан ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΡƒ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Π°Ρ Π±Π°Π·Π° для Python-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. --- # 🎯 ЦСль шаблона Π­Ρ‚ΠΎΡ‚ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚: * ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ запуск Π½ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² * ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ структуру ΠΊΠΎΠ΄Π° * ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈ Π΄Π΅ΠΏΠ»ΠΎΠΉ * Π²Π½Π΅Π΄Ρ€ΠΈΡ‚ΡŒ Π΅Π΄ΠΈΠ½Ρ‹Π΅ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π½Ρ‹Π΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Π­Ρ‚ΠΎ **Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚ для Python-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ²**, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ избавляСт ΠΎΡ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰Π΅ΠΉΡΡ настройки инфраструктуры.