Skip to content

refactor: migrate Мирэа client to pymirea (PyPI)#10

Open
silverhans wants to merge 1 commit intomainfrom
refactor/pymirea-migration
Open

refactor: migrate Мирэа client to pymirea (PyPI)#10
silverhans wants to merge 1 commit intomainfrom
refactor/pymirea-migration

Conversation

@silverhans
Copy link
Copy Markdown
Owner

Summary

  • Заменяем in-tree копию Мирэа-клиента (~4.6K LoC) на зависимость pymirea>=0.1.2 с PyPI
  • backend/services/mirea_*.py + crypto.py + utils/upstreams.py + utils/circuit_breaker.py становятся тонкими re-export шимами к pymirea.<module>
  • Никаких изменений в consumer-коде — все from backend.services.mirea_X import ... продолжают работать
  • backend/main.py вызывает pymirea.configure(Config(...)) на старте

Motivation

Раньше: identical Мирэа-скрейпер жил в двух местах (versiti + Oplexx), дрейф ~2% был только в import-префиксах. Bug-fix требовал двух коммитов в двух репах.

Теперь: один канонический пакет на PyPI, обе кодовые базы через pip install. Scraper развивается в silverhans/pymirea.

Changes

Файл Было Стало
backend/services/mirea_api.py 415 LoC 5 LoC (shim)
backend/services/mirea_acs.py 666 LoC 5 LoC
backend/services/mirea_auth.py 889 LoC 5 LoC
backend/services/mirea_tokens.py 69 LoC 5 LoC
backend/services/mirea_grades.py 1858 LoC 5 LoC
backend/services/mirea_esports.py 465 LoC 5 LoC
backend/services/crypto.py 151 LoC 5 LoC
backend/utils/upstreams.py 37 LoC 3 LoC
backend/utils/circuit_breaker.py 124 LoC 3 LoC
backend/main.py +11 LoC pymirea.configure()
backend/requirements.txt +1 LoC pymirea>=0.1.2

−4665 LoC / +44 LoC

Test plan

  • pip install -r backend/requirements.txt в чистой venv проходит
  • python -m backend.main поднимается без ошибок
  • curl /api/health → 200
  • Вход Мирэа через scanner UI работает end-to-end (login + 2FA)
  • Расписание открывается
  • Посещаемость работает (mark + detail)

Follow-ups

  • Позже можно прописать явные from pymirea import ... в consumer-файлах и удалить шимы — косметика, не блокирующая

Related

Вместо in-tree копии Мирэа-клиента (~4.6K LoC дублирующих
silverhans/pymirea) подключаем pymirea как зависимость. Все
backend/services/mirea_*.py + backend/services/crypto.py +
backend/utils/upstreams.py + backend/utils/circuit_breaker.py
становятся тонкими re-export шимами к pymirea — никаких изменений
в consumer-коде (все 'from backend.services.mirea_X' продолжают
работать).

Backend/main.py вызывает pymirea.configure(Config(...)) на старте
с runtime-значениями versiti. Это критично для шимов — они
используют модульный proxy к settings через pymirea._settings.

Profit:
- -4.6K LoC дублирующего Мирэа-кода
- Bug-fix в скрейпере идёт в одно место (pymirea), обе кодовые
  базы получают его через 'pip upgrade pymirea'
- Публичный OSS-пакет продолжает жить независимо от versiti/oplexx

pymirea v0.1.2 уже на PyPI:
https://pypi.org/project/pymirea/0.1.2/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant