Skip to main content

librarykit

Жирное ядро экосистемы китов — переиспользуемый фундамент, на котором строятся тонкие надстройки (adapterkit, clikit) и любые доменные пакеты. Вся общая логика живёт здесь один раз, вместо копипасты по проектам: единая иерархия ошибок, config/paths-утили, политики повторов, HTTP-транспорт, авторизация, шифрованное хранилище сессий, antibot/браузер, пагинация, RPC/stream и оркестраторы онбординга/health.

librarykit   ← КОРЕНЬ: errors · config · retry · transport · auth · sessions ·
                        errmap · pagination · antibot · browser · rpc · stream ·
                        orchestration.  Зависит НИ ОТ ЧЕГО из китов.
   ▲
clikit       ← CLI-обёртка (поверх librarykit)
   ▲
adapterkit   ← SDK сетевых адаптеров (поверх librarykit + clikit)
   ▲
домен        ← конкретный продукт (поверх всех трёх)

Зависимости направлены только внутрь, к корню. librarykit не импортирует ни один другой кит и ничего не знает о потребителях.

Установка

uv add s-librarykit

Имя дистрибутива — s-librarykit, имя для импорта — librarykit.

Опциональные extra (тяжёлые зависимости ставятся по требованию):

uv add "s-librarykit[browser]"   # Playwright — warm/cold-login, snapshot сессий
uv add "s-librarykit[antibot]"   # curl-cffi — JA3-impersonate транспорт
uv add "s-librarykit[ws]"        # websockets — persistent stream-транспорт

Ядро (errors/config_util/retry/checkpoint/contract) почти-stdlib — единственная не-stdlib зависимость ядра platformdirs (нативные пути ОС для AppPaths). Сетевые модули тянут httpx/stamina, шифрование сессий — cryptography/keyring.

Состав

Слой Модуль Что даёт
Ошибки librarykit.errors единая иерархия CliError/ApiError + сетевые подклассы (AuthRequired/RateLimited/NotFound/ServerError/TransportError/Blocked) + множество RETRYABLE
Конфиг/пути librarykit.config_util deep_merge, interpolate_env, load_dotenv, slugify, normalize_account_id, atomic_write_text, chmod_600, AppPaths
Контракт librarykit.contract граничные Protocol (Transport/Auth/Refreshable/ErrorMapper/Paginator/SessionStoreProtocol/StreamTransport/Codec) + DTO/enum (SessionRef/Creds/PaginationMode/AuthMode/TransportKind)
Протоколы librarykit.protocols опциональные онбординг/health-контракты (LoginMode/OnboardingProtocol/HealthProtocol/HealthState/InteractiveFlow)
Повторы librarykit.retry RetryPolicy (header-driven: Retry-After/rate-limit) поверх stamina + SimpleRetryPolicy
Транспорт librarykit.transport HttpxTransport + HttpClient — единый choke-point HTTP-вызовов
Ошибки→исключения librarykit.errmap декларативная карта {status|code|body-predicate → ErrorSubclass} (build_error_map)
Пагинация librarykit.pagination CursorPaginator (offset/cursor/page) + tweepy-стиль обёртки
Авторизация librarykit.auth TokenAuth/CookieSessionAuth/OAuth2Auth/BrowserLoginAuth + dump/load/encrypt настроек
Сессии librarykit.sessions SessionStore — envelope-шифрованное файловое хранилище сессий (DEK под KEK), resolve_kek
Секреты librarykit.secret_store SecretStore — keyring + file-fallback
Antibot librarykit.antibot выбор транспорта Tier 0-4 (curl-cffi JA3 / реальный браузер по CDP)
Браузер librarykit.browser warm/cold-login, snapshot/restore storage-state
RPC librarykit.rpc RpcClient + codec-слой (JsonCodec/PrefixedJsonCodec) поверх HttpClient
Stream librarykit.stream persistent-транспорты (StubStreamTransport + WebSocketsStreamTransport)
Checkpoint librarykit.checkpoint Checkpoint (атомарный JSON-state), JsonlSink (forensic-лог), RunMetrics
Сущности librarykit.entities нейтральные data-классы (Session/SessionContext/HealthReport)
Оркестрация librarykit.orchestration OnboardingService, HealthMonitor, SessionLoader — переиспользуемые сценарии онбординга/health
Диагностика доступа librarykit.diagnosis ПОЧЕМУ не работает: Reason/Verdict + порядок разбора (REASON_ORDER), гео-блок сервиса (classify_geo), «лёг выход» vs авторизация (classify_failure), passive-разлогин по цепочке (classify_landing_chain), сведение улик (diagnose)

Топ-уровневый import librarykit ре-экспортирует публичный API (см. librarykit.__all__).

Быстрый старт

import librarykit as lk

# единая иерархия ошибок
try:
    ...
except lk.RateLimited as e:
    ...

# header-driven повторы + choke-point HTTP-клиент
client = lk.HttpClient(base_url="https://api.example.com", retry=lk.DEFAULT_RETRY)

# декларативная карта ответ → доменная ошибка
err_map = lk.build_error_map()

# envelope-шифрованное хранилище сессий
store = lk.SessionStore(root=..., kek=lk.resolve_kek())

Разработка

uv sync --extra dev
uv run --extra dev pytest -q
uv run --extra dev ruff check librarykit

Лицензия

MIT © 2026 Dmitry.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

s_librarykit-0.7.4.tar.gz (646.5 kB view details)

Uploaded Source

Built Distribution

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

s_librarykit-0.7.4-py3-none-any.whl (368.5 kB view details)

Uploaded Python 3

File details

Details for the file s_librarykit-0.7.4.tar.gz.

File metadata

  • Download URL: s_librarykit-0.7.4.tar.gz
  • Upload date:
  • Size: 646.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for s_librarykit-0.7.4.tar.gz
Algorithm Hash digest
SHA256 22d7cc24ae1e2eae5d2a66a843f6b5b950811ab054128eb91d9e70747f1c8bf1
MD5 790bfbad328a7efabd34ae5c7cf5609a
BLAKE2b-256 34ac095161cfcccec9ada3cb64f8a99bd24366b4e9944e2b24af8de93ddf1841

See more details on using hashes here.

File details

Details for the file s_librarykit-0.7.4-py3-none-any.whl.

File metadata

  • Download URL: s_librarykit-0.7.4-py3-none-any.whl
  • Upload date:
  • Size: 368.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for s_librarykit-0.7.4-py3-none-any.whl
Algorithm Hash digest
SHA256 920a29e04690ce3924dd5622af18ec9cb62dcac8ac4bd084efd10eef2c42df5e
MD5 be3cd683a977958c01d1555c3655a77d
BLAKE2b-256 8ffa3221a2fd3ec14f6bf58b25bfdf1ad9289425ff8aa2895992fd7aac669cad

See more details on using hashes here.

Release history Release notifications | RSS feed

0.7.34

2 files

0.7.33

2 files

0.7.32

2 files

0.7.31

2 files

0.7.30

2 files

0.7.28

2 files

0.7.27

2 files

0.7.26

2 files

0.7.25

2 files

0.7.24

2 files

0.7.21

2 files

0.7.20

2 files

0.7.19

2 files

0.7.18

2 files

0.7.17

2 files

0.7.16

2 files

0.7.15

2 files

0.7.14

2 files

0.7.13

2 files

0.7.12

2 files

0.7.11

2 files

0.7.10

2 files

0.7.9

2 files

0.7.8

2 files

0.7.7

2 files

0.7.6

2 files

0.7.5

2 files

This release

0.7.4 This release

2 files

0.7.3

2 files

0.7.2

2 files

0.7.1

2 files

0.7.0

2 files

0.5.6

2 files

0.5.5

2 files

0.5.4

2 files

0.5.3

2 files

0.5.2

2 files

0.5.1

2 files

0.5.0

2 files

0.3.1

2 files

0.3.0

2 files

0.2.0

2 files

0.1.23

2 files

0.1.22

2 files

0.1.21

2 files

0.1.20

2 files

0.1.19

2 files

0.1.18

2 files

0.1.17

2 files

0.1.16

2 files

0.1.15

2 files

0.1.14

2 files

0.1.13

2 files

0.1.12

2 files

0.1.11

2 files

0.1.10

2 files

0.1.9

2 files

0.1.8

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

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