superpowers-python-automation
Niezawodne automacje Pythona dla API REST – retries, timeout'y, paginacja i testy w jednym miejscu
Instalacja
Wybierz klienta i sklonuj repozytorium do odpowiedniego katalogu skilli.
Instalacja
O skillu
Skill do budowania solidnych skryptów i serwisów Pythona, które komunikują się z zewnętrznymi API. Zawiera gotowe wzorce dla httpx/requests, obsługę błędów sieciowych, retry'i z respektowaniem Retry-After, timeouty, paginację i strukturyzowane logowanie. Idealne do ETL, narzędzi synchronizacyjnych, webhook'ów i CLI'ów integrujących systemy zewnętrzne. Wszystko z testami pytest i typowaniem danych.
Jak używać
Zainstaluj skill w swoim projekcie Pythona i upewnij się, że masz dostęp do bibliotek httpx (lub requests) oraz pytest. Jeśli projekt jeszcze ich nie używa, dodaj je do requirements.txt.
Utwórz strukturę katalogów zgodnie z architekturą: client.py dla wrappera API (auth, retry'e, paginacja), models.py dla typowanych modeli danych (dataclasses lub pydantic), sync.py dla logiki orkestracji (pobierz → transformuj → zaktualizuj), main.py jako punkt wejścia CLI, oraz katalog tests/ na testy jednostkowe.
W client.py zaimplementuj centralizowaną funkcję do wysyłania żądań HTTP. Zawsze ustaw timeouty (connect i read osobno), nigdy nie loguj sekretów takich jak Authorization headers czy tokeny, a obsługuj retry'e dla błędów sieciowych, timeout'ów, 429 (Retry-After), oraz 500–599. Nie retry'uj błędów 400–499 chyba że operacja jest bezpieczna.
Obsługi paginację poprzez helper, który wspiera co najmniej jeden z wzorców: next URL w odpowiedzi, cursor token lub parametry page/limit. Dodaj hard stop – maksymalną liczbę stron lub rekordów, aby uniknąć nieskończonych pętli.
Napisz testy dla logiki transformacji i zachowania klienta API. Użyj pytest oraz respx do mockowania żądań httpx, aby upewnić się, że retry'e i timeouty działają poprawnie bez rzeczywistych połączeń sieciowych.
Jeśli projekt już używa innych narzędzi (inny HTTP client, inny logger, inne konwencje), postępuj zgodnie z istniejącymi standardami zamiast domyślnych wzorców – spójność z kodem istniejącym ważniejsza niż dogmatyczne stosowanie się do skill'u.