Moduły async są źródłem prawdy dla większości implementacji endpointów,
klientów, middleware i serwisów. Moduły sync wymienione w scripts/gen_sync.py
powstają automatycznie z tych źródeł async.
Wygenerowane pliki zaczynają się od:
# Generated by scripts/gen_sync.py from src/ksef2/_clients/async_auth.py.
# DO NOT EDIT BY HAND - edit the async source and run `just gen-sync`.Zmień wygenerowaną parę
-
Edytuj moduł źródłowy async.
$EDITOR src/ksef2/_clients/async_auth.pybash -
Wygeneruj odpowiadający moduł sync.
just gen-syncbashDla jednej pary użyj generatora bezpośrednio:
uv run python scripts/gen_sync.py --only src/ksef2/_clients/async_auth.pybash -
Sprawdź diff źródła async i wygenerowanego targetu sync.
git diff -- src/ksef2/_clients/async_auth.py src/ksef2/_clients/auth.pybash -
Uruchom check generacji przed PR.
just check-gen-syncbash
just release-check też uruchamia check-gen-sync, więc nieaktualne pliki
generated blokują release.
Sprawdź jedną parę
Użyj --only ze źródłem async albo targetem sync:
uv run python scripts/gen_sync.py --check --diff --only src/ksef2/_clients/auth.pyTo pomaga przy pracy nad jedną parą, gdy chcesz zobaczyć krótki diff.
Granice generatora
Nie każda para sync/async jest generowana. Część modułów jest celowo wspólna albo strukturalnie inna:
src/ksef2/_core/polling.pyzawiera wspólne helpery pollingu sync i async.src/ksef2/_core/response_errors.pyzawiera wspólne mapowanie błędów odpowiedzi.src/ksef2/_clients/base.pyisrc/ksef2/_clients/async_base.pyróżnią się własnością klienta bazowego i zarządzaniem zasobami.src/ksef2/_core/http.pyisrc/ksef2/_core/async_http.pyróżnią się własnością transportu i zamykaniem.
Lista par i wyjątków znajduje się w scripts/gen_sync.py. Aktualizuj ją, gdy
moduł staje się generated albo celowo divergent.
Co sprawdza release gate
just release-check uruchamia:
just lint
just format-check
just check-ksef-api-version
just check-gen-sync
just typecheck
just test
just test-runtime-checks
uv buildDla generacji sync oznacza to, że:
- wygenerowane targety zgadzają się z transformacją źródeł async;
- wygenerowane pliki nadal formatują się konfiguracją repo;
- publiczne powierzchnie sync i async są pilnowane przez testy parytetu;
- paczka buduje się z wygenerowanych plików zapisanych w repo.
