Osmý sraz
2026-03-26
Lektor:
Martin Zelený
Zápis:
Dagmar Vodáková
Na dnešním srazu jsme prošli otevřené Pull Requesty od Niny a Patricie. Po technické části jsme se přesunuli na Pyvo do Artbaru.
Pull Request #8 v repozitáři quiz_server od Niny byl úspěšně schválen a uzavřen.
Pull Request #2 v repozitáři quiz_common od Patricie zatím čeká na otestování.
PR #8 Admin sees connected and disconnected clients
Cílem tohoto PR bylo umožnit adminovi sledovat, kolik hráčů je aktuálně připojených, a zároveň mít přehled o jejich připojení a odpojení v reálném čase.
Samotné změny jsme si prošli už na minulém srazu, takže dnes jsme se zaměřili hlavně na drobné úpravy po code review a prakticky si ukázali celý proces uzavření Pull Requestu.
Shrnutí změn v kódu
- Byla přidána metoda
__len__do třídyPlayers, která vrací počet aktuálně připojených hráčů - Adminův websocket se ukládá do
app.state.admin, což umožňuje serveru komunikovat přímo s adminem
Postup uzavření PR krok za krokem
1. Úpravy podle review
Martin v minulém týdnu zapsal poznámky do changelogu, které Nina akceptovala a upravila kód.
2. Stažení a otestování větve
Martin si stáhl Nininu větev a ověřil funkčnost spuštěním kvízu.
3. Schválení PR
Protože vše fungovalo podle očekávání, Martin PR schválil (approve).
4. Merge změn
Nina provedla merge pomocí Squash and Merge, čímž se všech 5 commitů se sloučilo do jednoho. Po merge byla větev na GitHubu smazána, abychom měli uklizeno.
5. Uzavření issue
Uzavíráme Issue #7 Admin should see the number of clients na které byl PR navázaný.
6. Synchronizace lokálního repozitáře
Po merge je potřeba si aktualizovat a uklidit lokální prostředí.
-
git fetch --prunestáhne změny z remote repozitáře a odstraní reference na již smazané větve -
git branch -D nb_show_playerssmaže lokální větev nb_show_players i když není mergnutá lokálně
PR #2 Allow non-string types in Option.answer field and auto-convert to string
Patricie v tomto PR opravovala bug popsaný v Issue #2 Linux quiz YAML is not valid od Davida.
Protože se issue nachází v jiném repozitáři, není možné ho s PR přímo propojit. Řešením je přesunout issue do správného repozitáře quiz_common (transfer issue), aby odpovídalo místu, kde se problém skutečně řeší.
Patricie nám popsala změny, které v kódu provedla, vysvětlili jsme si, jak funguje nově přidaná validace a Martin nám ukázal, jak spouštět unit testy. Na závěr jsme narazili na to, že změny zatím nelze plnohodnotně otestovat v rámci celého projektu, takže PR zatím zůstává otevřený.
Změny v kódu
1. Přidána validace dat (Pydantic)
-
Metoda
convert_to_stringzajišťuje, že vstup je vždy string. -
Dekorátor
@field_validatorse spustí při nastavování hodnoty, kontroluje a případně upraví vstupní data. -
Poznámka
# noqa: FBT001potlačí konkrétní warning, v našem případě použití bool jako pozičního argumentu.
2. Přidány unit testy
unit test = malý rychlý test jedné funkce izolovaný od zbytku systému
Aby šly testy spouštět, je nutné nainstalovat knihovnu pytest.
uv add --dev pytestpřidá pytest mezi development dependencies
Aby pytest testy spustil, je důležité správné pojmenování. Soubory s testy test_xxx.py obsahují funkce test_xxx().
uv run pytestspustí testy
Proč zatím nelze PR mergnout
Aby bylo možné změny otestovat v praxi, knihovna quiz_common musí být zabalena jako balíček
nainstalovaný do repozitářů quiz_server a quiz_admin.
Bez toho ostatní části projektu nemají k novému kódu přístup a není možné ověřit integraci.
Další kroky
- zabalit quiz_common jako Python balíček
- nainstalovat ho do ostatních částí projektu
- otestovat integraci
- následně PR schválit a mergnout
Poznámka na závěr
Do quiz_client bude také potřeba přidat závislost na quiz_common, aby všechny části projektu používaly stejné modely a validace.