Clone
2
Development and CI
CREATIVE_tg1 edited this page 2026-05-27 14:57:04 +00:00

Development and CI

Локальная разработка

Установка зависимостей для разработки:

uv sync --group dev

Полезные команды:

make format
make lint
make typecheck
make test
make ci-check
make build
make package-version

Инструменты

  • 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 запускает:

  • Ruff
  • mypy
  • deptry
  • pytest

После успешного CI на push в main workflow пытается опубликовать пакет в Gitea Packages.

Публикация пакета

Версия пакета читается из [project].version в pyproject.toml.

Правила публикации:

  • если текущей версии нет в Gitea Packages, она публикуется
  • если текущая версия уже существует, upload пропускается
  • старые версии остаются доступными в registry

Необходимые CI secrets:

  • PYPI_REPOSITORY_URL
  • PACKAGE_USERNAME
  • PACKAGE_TOKEN

Локальный пример публикации:

export PYPI_REPOSITORY_URL='https://gitea.example.com/api/packages/<owner>/pypi'
export PACKAGE_USERNAME='<username>'
export PACKAGE_TOKEN='<token>'

make package-version
make publish-gitea