s-clientkit — кит-сборщик клиентов
Готовый клиент сервиса собирается по декларации, а не пишется заново.
clientkit <- СБОРЩИК (этот кит)
/ \
authkit-client browserkit <- доступ (кто ты) / чеканка (как войти)
\ /
netkit <- сеть (чем ходить)
|
corekit <- основание
Один вызов на оба мира
from clientkit import build_from_toml
white = build_from_toml("examples/white_service.toml", secrets=os.environ.get)
hidden = build_from_toml("examples/hidden_service.toml", session_store=store)
await white.call("me") # белый REST с api-ключом
await hidden.call("me") # скрытый API с сессией и лестницей деградации
Потребитель зовёт одинаково и по поверхности клиента не может отличить один от другого. Разница — в цене:
| белый | скрытый | |
|---|---|---|
| поднимает сессии/чеканку/антибот | нет | да |
запросов на call("me") |
ровно 1 | 1 (+чеканка, если доступа нет) |
| авторизация | заголовок (api_key / bearer / oauth с проактивным TTL) |
cookies живой сессии |
| смерть адреса | ошибка сервиса | следующий кандидат, без релиза |
Обе половины проверяются тестом tests/test_same_call_both_kinds.py — по
sys.modules свежего интерпретатора и по счётчику запросов, а не декларацией.
Декларация — данные
ServiceDecl (frozen dataclass) читается из TOML и валидируется при загрузке:
белый сервис с рецептом доступа или скрытый без чеканщика — опечатка, о которой
надо узнать при сборке, а не ночью в бою. Round-trip
decl_to_data ∘ decl_from_data проверяется тестом.
Смотри examples/white_service.toml и examples/hidden_service.toml.
Чего в ките нет
- своего HTTP — «чем ходить» приходит аргументом (
RequestPort), умолчание (netkit → httpx) резолвится лениво; - своего браузера — чеканка приходит через порт слоя доступа;
- своей таксономии отказов — диагноз ставит
corekit.diagnosis.access, та же функция, что у живой пробы и у реестра эндпоинтов.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file s_clientkit-0.0.1.tar.gz.
File metadata
- Download URL: s_clientkit-0.0.1.tar.gz
- Upload date:
- Size: 84.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
af98134af0c121eac4d084a993d8265171a935c2e78423476e34b19aebbf1264
|
|
| MD5 |
28576f4b693cc3b752c2fb8e2f515f93
|
|
| BLAKE2b-256 |
a421c6457405b3fc62194a436c50f7473b2224de64d38cfa293c00b3c94a6643
|
File details
Details for the file s_clientkit-0.0.1-py3-none-any.whl.
File metadata
- Download URL: s_clientkit-0.0.1-py3-none-any.whl
- Upload date:
- Size: 34.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f7cf7975fc36ebe1076723cb8247fcfa7cf17b46d4e5468ff3426826acd6538c
|
|
| MD5 |
7d1ecf16ae89c9c4c614a9c87d228adc
|
|
| BLAKE2b-256 |
944d52b8830684aaae0e5400492eb7cb6f1ea7735153c045a7adb944be53e711
|