Skip to main content

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

s_clientkit-0.0.1.tar.gz (84.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

s_clientkit-0.0.1-py3-none-any.whl (34.0 kB view details)

Uploaded Python 3

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

Hashes for s_clientkit-0.0.1.tar.gz
Algorithm Hash digest
SHA256 af98134af0c121eac4d084a993d8265171a935c2e78423476e34b19aebbf1264
MD5 28576f4b693cc3b752c2fb8e2f515f93
BLAKE2b-256 a421c6457405b3fc62194a436c50f7473b2224de64d38cfa293c00b3c94a6643

See more details on using hashes here.

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

Hashes for s_clientkit-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f7cf7975fc36ebe1076723cb8247fcfa7cf17b46d4e5468ff3426826acd6538c
MD5 7d1ecf16ae89c9c4c614a9c87d228adc
BLAKE2b-256 944d52b8830684aaae0e5400492eb7cb6f1ea7735153c045a7adb944be53e711

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.0.1 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page