Development and CI
Локальная разработка
Установка зависимостей для разработки:
Полезные команды:
Инструменты
- Ruff для lint и format
- mypy в strict-режиме
- pytest для тестов
- deptry для dependency checks
- локальный каталог
stubs для нетипизированных внешних пакетов
Архитектура
Структура проекта:
src/yt_shorts_downloader/api.py: публичный API
src/yt_shorts_downloader/cli.py: CLI
src/yt_shorts_downloader/models: типизированные модели
src/yt_shorts_downloader/services: валидация session file
src/yt_shorts_downloader/core: yt-dlp integration, runtime detection, URL validation
stubs: локальные typing stubs
CI workflow
Основной Gitea Actions workflow запускает:
После успешного CI на push в main workflow пытается опубликовать пакет в Gitea Packages.
Публикация пакета
Версия пакета читается из [project].version в pyproject.toml.
Правила публикации:
- если текущей версии нет в Gitea Packages, она публикуется
- если текущая версия уже существует, upload пропускается
- старые версии остаются доступными в registry
Необходимые CI secrets:
PYPI_REPOSITORY_URL
PACKAGE_USERNAME
PACKAGE_TOKEN
Локальный пример публикации: