tigrbl-kernel 0.4.1.dev6__tar.gz → 0.4.2.dev3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {tigrbl_kernel-0.4.1.dev6 → tigrbl_kernel-0.4.2.dev3}/PKG-INFO +46 -99
- tigrbl_kernel-0.4.2.dev3/README.md +72 -0
- {tigrbl_kernel-0.4.1.dev6 → tigrbl_kernel-0.4.2.dev3}/pyproject.toml +1 -1
- {tigrbl_kernel-0.4.1.dev6 → tigrbl_kernel-0.4.2.dev3}/tigrbl_kernel/_build.py +5 -0
- tigrbl_kernel-0.4.2.dev3/tigrbl_kernel/contract_classification.py +186 -0
- tigrbl_kernel-0.4.2.dev3/tigrbl_kernel/protocol_bindings.py +265 -0
- {tigrbl_kernel-0.4.1.dev6 → tigrbl_kernel-0.4.2.dev3}/tigrbl_kernel/subevent_taxonomy.py +14 -5
- tigrbl_kernel-0.4.2.dev3/tigrbl_kernel/webtransport_events.py +224 -0
- tigrbl_kernel-0.4.1.dev6/README.md +0 -125
- tigrbl_kernel-0.4.1.dev6/tigrbl_kernel/protocol_bindings.py +0 -135
- tigrbl_kernel-0.4.1.dev6/tigrbl_kernel/webtransport_events.py +0 -51
- {tigrbl_kernel-0.4.1.dev6 → tigrbl_kernel-0.4.2.dev3}/LICENSE +0 -0
- {tigrbl_kernel-0.4.1.dev6 → tigrbl_kernel-0.4.2.dev3}/tigrbl_kernel/__init__.py +0 -0
- {tigrbl_kernel-0.4.1.dev6 → tigrbl_kernel-0.4.2.dev3}/tigrbl_kernel/_compile.py +0 -0
- {tigrbl_kernel-0.4.1.dev6 → tigrbl_kernel-0.4.2.dev3}/tigrbl_kernel/atoms.py +0 -0
- {tigrbl_kernel-0.4.1.dev6 → tigrbl_kernel-0.4.2.dev3}/tigrbl_kernel/cache.py +0 -0
- {tigrbl_kernel-0.4.1.dev6 → tigrbl_kernel-0.4.2.dev3}/tigrbl_kernel/callbacks.py +0 -0
- {tigrbl_kernel-0.4.1.dev6 → tigrbl_kernel-0.4.2.dev3}/tigrbl_kernel/core.py +0 -0
- {tigrbl_kernel-0.4.1.dev6 → tigrbl_kernel-0.4.2.dev3}/tigrbl_kernel/eventkey.py +0 -0
- {tigrbl_kernel-0.4.1.dev6 → tigrbl_kernel-0.4.2.dev3}/tigrbl_kernel/eventkey_hooks.py +0 -0
- {tigrbl_kernel-0.4.1.dev6 → tigrbl_kernel-0.4.2.dev3}/tigrbl_kernel/events.py +0 -0
- {tigrbl_kernel-0.4.1.dev6 → tigrbl_kernel-0.4.2.dev3}/tigrbl_kernel/helpers.py +0 -0
- {tigrbl_kernel-0.4.1.dev6 → tigrbl_kernel-0.4.2.dev3}/tigrbl_kernel/hook_types.py +0 -0
- {tigrbl_kernel-0.4.1.dev6 → tigrbl_kernel-0.4.2.dev3}/tigrbl_kernel/labels.py +0 -0
- {tigrbl_kernel-0.4.1.dev6 → tigrbl_kernel-0.4.2.dev3}/tigrbl_kernel/lifecycle_matrix.py +0 -0
- {tigrbl_kernel-0.4.1.dev6 → tigrbl_kernel-0.4.2.dev3}/tigrbl_kernel/loop_modes.py +0 -0
- {tigrbl_kernel-0.4.1.dev6 → tigrbl_kernel-0.4.2.dev3}/tigrbl_kernel/loop_regions.py +0 -0
- {tigrbl_kernel-0.4.1.dev6 → tigrbl_kernel-0.4.2.dev3}/tigrbl_kernel/measure.py +0 -0
- {tigrbl_kernel-0.4.1.dev6 → tigrbl_kernel-0.4.2.dev3}/tigrbl_kernel/models.py +0 -0
- {tigrbl_kernel-0.4.1.dev6 → tigrbl_kernel-0.4.2.dev3}/tigrbl_kernel/opchannel_capabilities.py +0 -0
- {tigrbl_kernel-0.4.1.dev6 → tigrbl_kernel-0.4.2.dev3}/tigrbl_kernel/opview_compiler.py +0 -0
- {tigrbl_kernel-0.4.1.dev6 → tigrbl_kernel-0.4.2.dev3}/tigrbl_kernel/ordering.py +0 -0
- {tigrbl_kernel-0.4.1.dev6 → tigrbl_kernel-0.4.2.dev3}/tigrbl_kernel/payload.py +0 -0
- {tigrbl_kernel-0.4.1.dev6 → tigrbl_kernel-0.4.2.dev3}/tigrbl_kernel/protocol_chains/__init__.py +0 -0
- {tigrbl_kernel-0.4.1.dev6 → tigrbl_kernel-0.4.2.dev3}/tigrbl_kernel/protocol_chains/http_stream.py +0 -0
- {tigrbl_kernel-0.4.1.dev6 → tigrbl_kernel-0.4.2.dev3}/tigrbl_kernel/protocol_chains/http_unary.py +0 -0
- {tigrbl_kernel-0.4.1.dev6 → tigrbl_kernel-0.4.2.dev3}/tigrbl_kernel/protocol_chains/lifespan.py +0 -0
- {tigrbl_kernel-0.4.1.dev6 → tigrbl_kernel-0.4.2.dev3}/tigrbl_kernel/protocol_chains/sse.py +0 -0
- {tigrbl_kernel-0.4.1.dev6 → tigrbl_kernel-0.4.2.dev3}/tigrbl_kernel/protocol_chains/static_files.py +0 -0
- {tigrbl_kernel-0.4.1.dev6 → tigrbl_kernel-0.4.2.dev3}/tigrbl_kernel/protocol_chains/websocket.py +0 -0
- {tigrbl_kernel-0.4.1.dev6 → tigrbl_kernel-0.4.2.dev3}/tigrbl_kernel/protocol_completion.py +0 -0
- {tigrbl_kernel-0.4.1.dev6 → tigrbl_kernel-0.4.2.dev3}/tigrbl_kernel/protocol_fusion.py +0 -0
- {tigrbl_kernel-0.4.1.dev6 → tigrbl_kernel-0.4.2.dev3}/tigrbl_kernel/protocol_legality_matrix.py +0 -0
- {tigrbl_kernel-0.4.1.dev6 → tigrbl_kernel-0.4.2.dev3}/tigrbl_kernel/protocol_phase_tree.py +0 -0
- {tigrbl_kernel-0.4.1.dev6 → tigrbl_kernel-0.4.2.dev3}/tigrbl_kernel/rust_compile.py +0 -0
- {tigrbl_kernel-0.4.1.dev6 → tigrbl_kernel-0.4.2.dev3}/tigrbl_kernel/rust_plan.py +0 -0
- {tigrbl_kernel-0.4.1.dev6 → tigrbl_kernel-0.4.2.dev3}/tigrbl_kernel/rust_spec.py +0 -0
- {tigrbl_kernel-0.4.1.dev6 → tigrbl_kernel-0.4.2.dev3}/tigrbl_kernel/segment_fusion.py +0 -0
- {tigrbl_kernel-0.4.1.dev6 → tigrbl_kernel-0.4.2.dev3}/tigrbl_kernel/subevent_handlers.py +0 -0
- {tigrbl_kernel-0.4.1.dev6 → tigrbl_kernel-0.4.2.dev3}/tigrbl_kernel/trace.py +0 -0
- {tigrbl_kernel-0.4.1.dev6 → tigrbl_kernel-0.4.2.dev3}/tigrbl_kernel/transaction_units.py +0 -0
- {tigrbl_kernel-0.4.1.dev6 → tigrbl_kernel-0.4.2.dev3}/tigrbl_kernel/transport_atoms.py +0 -0
- {tigrbl_kernel-0.4.1.dev6 → tigrbl_kernel-0.4.2.dev3}/tigrbl_kernel/transport_events.py +0 -0
- {tigrbl_kernel-0.4.1.dev6 → tigrbl_kernel-0.4.2.dev3}/tigrbl_kernel/types.py +0 -0
- {tigrbl_kernel-0.4.1.dev6 → tigrbl_kernel-0.4.2.dev3}/tigrbl_kernel/utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: tigrbl-kernel
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.2.dev3
|
|
4
4
|
Summary: Kernel orchestration for composing Tigrbl runtime plans, bindings, operation dispatch, and optimized ASGI execution.
|
|
5
5
|
License: Apache License
|
|
6
6
|
Version 2.0, January 2004
|
|
@@ -234,112 +234,62 @@ Project-URL: Organization, https://github.com/tigrbl
|
|
|
234
234
|
Project-URL: Repository, https://github.com/tigrbl/tigrbl/tree/master/pkgs/core/tigrbl_kernel
|
|
235
235
|
Description-Content-Type: text/markdown
|
|
236
236
|
|
|
237
|
-
|
|
237
|
+
<div align="center">
|
|
238
|
+
<h1>tigrbl-kernel</h1>
|
|
239
|
+
<img src="https://raw.githubusercontent.com/swarmauri/swarmauri-sdk/master/assets/tigrbl_full_logo.png" alt="Tigrbl logo" width="140"/>
|
|
240
|
+
<p><strong>Kernel orchestration for composing Tigrbl runtime plans, bindings, operation dispatch, and optimized ASGI execution.</strong></p>
|
|
241
|
+
<a href="https://pypi.org/project/tigrbl-kernel/"><img src="https://img.shields.io/pypi/v/tigrbl-kernel?label=PyPI" alt="PyPI version for tigrbl-kernel"/></a>
|
|
242
|
+
<a href="https://pypi.org/project/tigrbl-kernel/"><img src="https://static.pepy.tech/badge/tigrbl-kernel" alt="Downloads for tigrbl-kernel"/></a>
|
|
243
|
+
<a href="https://github.com/tigrbl/tigrbl/blob/master/pkgs/core/tigrbl_kernel/README.md"><img src="https://hits.sh/github.com/tigrbl/tigrbl/blob/master/pkgs/core/tigrbl_kernel/README.md.svg?label=hits" alt="Repository hits for tigrbl-kernel README"/></a>
|
|
244
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/license-Apache%202.0-525252" alt="Apache 2.0 license"/></a>
|
|
245
|
+
<a href="pyproject.toml"><img src="https://img.shields.io/badge/python-3.10%20to%203.15-3776ab" alt="Python requirement for tigrbl-kernel"/></a>
|
|
246
|
+
<a href="https://github.com/tigrbl/tigrbl/blob/master/docs/README.md"><img src="https://img.shields.io/badge/workspace-core-1f6feb" alt="Workspace group for tigrbl-kernel"/></a>
|
|
247
|
+
</div>
|
|
238
248
|
|
|
239
|
-
|
|
240
|
-
<a href="https://pepy.tech/project/tigrbl-kernel">
|
|
241
|
-
<img src="https://static.pepy.tech/badge/tigrbl-kernel" alt="Pepy downloads for tigrbl-kernel"/></a>
|
|
242
|
-
<a href="https://hits.sh/github.com/tigrbl/tigrbl/tree/master/pkgs/core/tigrbl_kernel/">
|
|
243
|
-
<img src="https://hits.sh/github.com/tigrbl/tigrbl/tree/master/pkgs/core/tigrbl_kernel.svg" alt="Repository views for tigrbl-kernel"/></a>
|
|
244
|
-
<a href="https://pypi.org/project/tigrbl-kernel/">
|
|
245
|
-
<img src="https://img.shields.io/badge/python-3.10--3.14-blue" alt="Python 3.10 through 3.14"/></a>
|
|
246
|
-
<a href="https://pypi.org/project/tigrbl-kernel/">
|
|
247
|
-
<img src="https://img.shields.io/pypi/l/tigrbl-kernel" alt="PyPI license metadata for tigrbl-kernel"/></a>
|
|
248
|
-
<a href="https://pypi.org/project/tigrbl-kernel/">
|
|
249
|
-
<img src="https://img.shields.io/pypi/v/tigrbl-kernel?label=tigrbl-kernel&color=green" alt="PyPI version for tigrbl-kernel"/></a>
|
|
250
|
-
</p>
|
|
251
|
-
|
|
252
|
-
---
|
|
253
|
-
|
|
254
|
-
<h1 align="center">Tigrbl kernel</h1>
|
|
255
|
-
|
|
256
|
-
**Install and inspect `tigrbl-kernel`: [download `tigrbl-kernel` from PyPI](https://pypi.org/project/tigrbl-kernel/) or [open the package source](https://github.com/tigrbl/tigrbl/tree/master/pkgs/core/tigrbl_kernel).**
|
|
257
|
-
|
|
258
|
-
tigrbl-kernel is a kernel orchestration package for kernel orchestration for composing Tigrbl runtime plans, bindings, and operation dispatch.
|
|
259
|
-
|
|
260
|
-
`tigrbl-kernel` is part of the Tigrbl package graph. It documents package-resident classes, concepts, extension points, and execution responsibilities while cross-linking to the facade, core specs, canonical mapping, runtime phases, concrete objects, operation packages, engine plugins, OpenAPI/OpenRPC documentation surfaces, and PyPI distributions that complete the system.
|
|
261
|
-
|
|
262
|
-
## Package ownership
|
|
263
|
-
|
|
264
|
-
- `tigrbl-kernel` documents the concepts implemented in `pkgs/core/tigrbl_kernel` and links to the Tigrbl packages that provide neighboring authoring, canon, runtime, operation, and engine behavior.
|
|
265
|
-
- Use this README as the package-local explanation for the objects that live here; use governed docs for release state, certification, and evidence.
|
|
249
|
+
## Install
|
|
266
250
|
|
|
267
|
-
|
|
251
|
+
```bash
|
|
252
|
+
uv add tigrbl-kernel
|
|
253
|
+
```
|
|
268
254
|
|
|
269
|
-
|
|
255
|
+
```bash
|
|
256
|
+
pip install tigrbl-kernel
|
|
257
|
+
```
|
|
270
258
|
|
|
271
|
-
|
|
272
|
-
- [`tigrbl`](https://pypi.org/project/tigrbl/) - Schema-first ASGI API framework for REST, JSON-RPC, OpenAPI, OpenRPC, SQLAlchemy models, typed validation, lifecycle hooks, and engine plugins.
|
|
273
|
-
- [`tigrbl-atoms`](https://pypi.org/project/tigrbl-atoms/) - Runtime atom utilities for Tigrbl planning, dispatch, transport ingress, egress, and high-throughput ASGI execution pipelines.
|
|
274
|
-
- [`tigrbl-base`](https://pypi.org/project/tigrbl-base/) - Abstract base interfaces for Tigrbl APIs, engines, providers, sessions, transports, and reusable runtime components.
|
|
275
|
-
- [`tigrbl-canon`](https://pypi.org/project/tigrbl-canon/) - Canonical mapping, routing, symbol resolution, and naming utilities for Tigrbl framework packages and generated API surfaces.
|
|
276
|
-
- [`tigrbl_client`](https://pypi.org/project/tigrbl_client/) - Typed Python client helpers for calling Tigrbl REST, JSON-RPC, OpenAPI, and generated schema-first API surfaces.
|
|
277
|
-
- [`tigrbl-concrete`](https://pypi.org/project/tigrbl-concrete/) - Concrete Tigrbl implementations for reusable framework behavior, sessions, routes, responses, and base abstraction adapters.
|
|
278
|
-
- [`tigrbl-core`](https://pypi.org/project/tigrbl-core/) - Core Tigrbl framework specifications, decorators, schemas, hooks, operations, and primitives for schema-first APIs.
|
|
279
|
-
- [`tigrbl-kernel`](https://pypi.org/project/tigrbl-kernel/) (this package) - Kernel orchestration for composing Tigrbl runtime plans, bindings, operation dispatch, and optimized ASGI execution.
|
|
280
|
-
- [`tigrbl-ops-olap`](https://pypi.org/project/tigrbl-ops-olap/) - Analytical OLAP operation boundaries for Tigrbl workloads, query-oriented APIs, and engine integrations.
|
|
281
|
-
- [`tigrbl-ops-oltp`](https://pypi.org/project/tigrbl-ops-oltp/) - Transactional OLTP operation handlers for Tigrbl CRUD, bulk, REST, JSON-RPC, and database-backed workloads.
|
|
282
|
-
- [`tigrbl-ops-realtime`](https://pypi.org/project/tigrbl-ops-realtime/) - Realtime, streaming, datagram, websocket, and event operation handlers for Tigrbl ASGI runtimes.
|
|
283
|
-
- [`tigrbl-orm`](https://pypi.org/project/tigrbl-orm/) - SQLAlchemy ORM tables, mixins, columns, model helpers, and persistence primitives for Tigrbl applications.
|
|
284
|
-
- [`tigrbl-runtime`](https://pypi.org/project/tigrbl-runtime/) - Runtime pipeline helpers and execution bridge surfaces for Tigrbl ASGI applications, transports, and operation dispatch.
|
|
285
|
-
- [`tigrbl_spec`](https://pypi.org/project/tigrbl_spec/) - Shared Tigrbl interfaces, protocol definitions, compatibility targets, and specification artifacts for framework integration.
|
|
286
|
-
- [`tigrbl_tests`](https://pypi.org/project/tigrbl_tests/) - Reusable Tigrbl pytest fixtures, conformance assertions, integration helpers, and package test utilities.
|
|
287
|
-
- [`tigrbl-typing`](https://pypi.org/project/tigrbl-typing/) - Typing protocols, aliases, generics, and shared type helpers for Tigrbl framework packages and extensions.
|
|
259
|
+
## What It Owns
|
|
288
260
|
|
|
289
|
-
|
|
290
|
-
- [`tigrbl_engine_bigquery`](https://pypi.org/project/tigrbl_engine_bigquery/) - BigQuery engine plugin for Google BigQuery warehouse sessions, analytics workloads, and Tigrbl engine registration.
|
|
291
|
-
- [`tigrbl_engine_clickhouse`](https://pypi.org/project/tigrbl_engine_clickhouse/) - ClickHouse engine plugin for analytical database sessions, warehouse workloads, and Tigrbl engine registration.
|
|
292
|
-
- [`tigrbl_engine_csv`](https://pypi.org/project/tigrbl_engine_csv/) - CSV engine plugin for file-backed tables, pandas DataFrames, and lightweight Tigrbl data workflows.
|
|
293
|
-
- [`tigrbl_engine_dataframe`](https://pypi.org/project/tigrbl_engine_dataframe/) - DataFrame engine plugin for transactional pandas sessions and in-process Tigrbl analytics workloads.
|
|
294
|
-
- [`tigrbl_engine_duckdb`](https://pypi.org/project/tigrbl_engine_duckdb/) - DuckDB engine plugin for embedded analytical database sessions, OLAP workloads, and Tigrbl engine registration.
|
|
295
|
-
- [`tigrbl_engine_inmemcache`](https://pypi.org/project/tigrbl_engine_inmemcache/) - In-memory cache engine plugin for process-local TTL, LRU, and fast Tigrbl cache workflows.
|
|
296
|
-
- [`tigrbl_engine_inmemory`](https://pypi.org/project/tigrbl_engine_inmemory/) - In-memory database engine plugin for process-local transactional storage, copy-on-write snapshots, and Tigrbl testing.
|
|
297
|
-
- [`tigrbl_engine_membloom`](https://pypi.org/project/tigrbl_engine_membloom/) - In-memory Bloom filter engine plugin for membership checks, rotating TTL windows, and Tigrbl API workflows.
|
|
298
|
-
- [`tigrbl_engine_memdedupe`](https://pypi.org/project/tigrbl_engine_memdedupe/) - In-memory dedupe engine plugin for idempotency tracking, duplicate suppression, and Tigrbl workflow coordination.
|
|
299
|
-
- [`tigrbl_engine_memkv`](https://pypi.org/project/tigrbl_engine_memkv/) - In-memory key-value engine plugin for process-local KV storage, cache workflows, and lightweight Tigrbl services.
|
|
300
|
-
- [`tigrbl_engine_memlru`](https://pypi.org/project/tigrbl_engine_memlru/) - In-memory LRU engine plugin for least-recently-used cache behavior and process-local Tigrbl data workflows.
|
|
301
|
-
- [`tigrbl_engine_mempubsub`](https://pypi.org/project/tigrbl_engine_mempubsub/) - In-memory pub/sub engine plugin for process-local publish-subscribe channels, events, and Tigrbl realtime workflows.
|
|
302
|
-
- [`tigrbl_engine_memqueue`](https://pypi.org/project/tigrbl_engine_memqueue/) - In-memory queue engine plugin for process-local tasks, message workflows, and Tigrbl runtime coordination.
|
|
303
|
-
- [`tigrbl_engine_memrate`](https://pypi.org/project/tigrbl_engine_memrate/) - In-memory rate-limit engine plugin for API quotas, counters, windows, and Tigrbl governance workflows.
|
|
304
|
-
- [`tigrbl_engine_numpy`](https://pypi.org/project/tigrbl_engine_numpy/) - NumPy engine plugin for array-to-table helpers, analytical workflows, and Tigrbl data integration.
|
|
305
|
-
- [`tigrbl_engine_pandas`](https://pypi.org/project/tigrbl_engine_pandas/) - Pandas engine plugin for transactional DataFrame sessions, tabular workflows, and Tigrbl data integration.
|
|
306
|
-
- [`tigrbl_engine_pgsqli_wal`](https://pypi.org/project/tigrbl_engine_pgsqli_wal/) - PostgreSQL and SQLite WAL engine plugin for transactional Tigrbl workflows and database-backed engine registration.
|
|
307
|
-
- [`tigrbl_engine_postgres`](https://pypi.org/project/tigrbl_engine_postgres/) - PostgreSQL engine plugin for SQLAlchemy sessions, async database workflows, and Tigrbl application persistence.
|
|
308
|
-
- [`tigrbl_engine_pyspark`](https://pypi.org/project/tigrbl_engine_pyspark/) - PySpark engine plugin for distributed DataFrame integration, analytics workloads, and Tigrbl data workflows.
|
|
309
|
-
- [`tigrbl_engine_redis`](https://pypi.org/project/tigrbl_engine_redis/) - Redis engine plugin for cache, data structures, and Tigrbl engine workflows backed by Redis.
|
|
310
|
-
- [`tigrbl_engine_rediscachethrough`](https://pypi.org/project/tigrbl_engine_rediscachethrough/) - Redis cache-through engine plugin for Redis, PostgreSQL, and Tigrbl data-access acceleration workflows.
|
|
311
|
-
- [`tigrbl_engine_snowflake`](https://pypi.org/project/tigrbl_engine_snowflake/) - Snowflake engine plugin for warehouse sessions, analytical workloads, and Tigrbl engine registration.
|
|
312
|
-
- [`tigrbl_engine_sqlite`](https://pypi.org/project/tigrbl_engine_sqlite/) - SQLite engine plugin for SQLAlchemy sessions, local transactional storage, and Tigrbl application persistence.
|
|
313
|
-
- [`tigrbl_engine_xlsx`](https://pypi.org/project/tigrbl_engine_xlsx/) - XLSX engine plugin for Excel workbook-backed tables, worksheet data access, and Tigrbl tabular workflows.
|
|
261
|
+
`tigrbl-kernel` owns the kernel boundary inside the split Python workspace. Key implementation roots include `tigrbl_kernel` with `_build, _compile, atoms, cache, callbacks, core`.
|
|
314
262
|
|
|
315
|
-
|
|
316
|
-
- [`tigrbl_acme_ca`](https://pypi.org/project/tigrbl_acme_ca/) - ACME v2 certificate authority app for Tigrbl tables, certificate automation, TLS workflows, and API surfaces.
|
|
317
|
-
- [`tigrbl_spiffe`](https://pypi.org/project/tigrbl_spiffe/) - SPIFFE and SPIRE identity app for Tigrbl with workload identity tables, UDS transport, and HTTP API surfaces.
|
|
263
|
+
## Use It When
|
|
318
264
|
|
|
319
|
-
|
|
265
|
+
Use `tigrbl-kernel` when you want this subsystem directly as a package boundary instead of consuming it only through the top-level `tigrbl` facade.
|
|
320
266
|
|
|
321
|
-
##
|
|
267
|
+
## Public Surface
|
|
322
268
|
|
|
323
|
-
|
|
324
|
-
pip install tigrbl-kernel
|
|
325
|
-
```
|
|
269
|
+
- `tigrbl_kernel` exposes `import_module, Any, Dict, List, Mapping, build_rust_kernel, build_rust_parity_snapshot, normalize_rust_spec`.
|
|
326
270
|
|
|
327
|
-
##
|
|
271
|
+
## Internal Layout
|
|
328
272
|
|
|
329
|
-
|
|
273
|
+
- Workspace path: `pkgs/core/tigrbl_kernel`.
|
|
274
|
+
- Package class: `core framework package`.
|
|
275
|
+
- Python requirement: `>=3.10,<3.15`.
|
|
276
|
+
- `tigrbl_kernel` modules: `_build, _compile, atoms, cache, callbacks, core, eventkey, eventkey_hooks, events, helpers`.
|
|
330
277
|
|
|
331
|
-
|
|
278
|
+
## Dependency Surface
|
|
332
279
|
|
|
333
|
-
|
|
280
|
+
- Workspace package dependencies: [`tigrbl-typing`](https://pypi.org/project/tigrbl-typing/), [`tigrbl-atoms`](https://pypi.org/project/tigrbl-atoms/), [`tigrbl-core`](https://pypi.org/project/tigrbl-core/).
|
|
281
|
+
- External runtime dependencies: none declared.
|
|
282
|
+
- Optional extras: none declared.
|
|
334
283
|
|
|
335
|
-
##
|
|
284
|
+
## Related Packages
|
|
336
285
|
|
|
337
|
-
|
|
338
|
-
|
|
286
|
+
- [`tigrbl`](https://pypi.org/project/tigrbl/)
|
|
287
|
+
- [`tigrbl-typing`](https://pypi.org/project/tigrbl-typing/)
|
|
288
|
+
- [`tigrbl-atoms`](https://pypi.org/project/tigrbl-atoms/)
|
|
289
|
+
- [`tigrbl-core`](https://pypi.org/project/tigrbl-core/)
|
|
339
290
|
|
|
340
|
-
## Canonical
|
|
291
|
+
## Canonical Repository Docs
|
|
341
292
|
|
|
342
|
-
- `README.md`
|
|
343
293
|
- `docs/README.md`
|
|
344
294
|
- `docs/conformance/CURRENT_TARGET.md`
|
|
345
295
|
- `docs/conformance/CURRENT_STATE.md`
|
|
@@ -348,15 +298,12 @@ It is not the authoritative location for repository governance, current target s
|
|
|
348
298
|
- `docs/developer/PACKAGE_CATALOG.md`
|
|
349
299
|
- `docs/developer/PACKAGE_LAYOUT.md`
|
|
350
300
|
|
|
351
|
-
## Package
|
|
301
|
+
## Package-local Boundary
|
|
302
|
+
|
|
303
|
+
This file is a package-local distribution entry point.
|
|
304
|
+
Use this page for package installation and boundary orientation. Repository governance, conformance state, target status, and release evidence remain governed from `docs/` and `.ssot/`.
|
|
352
305
|
|
|
353
|
-
|
|
354
|
-
- organization: `https://github.com/tigrbl`
|
|
355
|
-
- social: `https://discord.gg/K4YTAPapjR`
|
|
356
|
-
- package path: `https://github.com/tigrbl/tigrbl/tree/master/pkgs/core/tigrbl_kernel`
|
|
357
|
-
- workspace path: `pkgs/core/tigrbl_kernel`
|
|
358
|
-
- workspace class: core Python package
|
|
359
|
-
- implementation layout: `tigrbl_kernel/`
|
|
306
|
+
## License
|
|
360
307
|
|
|
361
|
-
|
|
308
|
+
Licensed under the Apache License, Version 2.0. See `LICENSE` and the official [Apache 2.0 license text](https://www.apache.org/licenses/LICENSE-2.0).
|
|
362
309
|
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
<h1>tigrbl-kernel</h1>
|
|
3
|
+
<img src="https://raw.githubusercontent.com/swarmauri/swarmauri-sdk/master/assets/tigrbl_full_logo.png" alt="Tigrbl logo" width="140"/>
|
|
4
|
+
<p><strong>Kernel orchestration for composing Tigrbl runtime plans, bindings, operation dispatch, and optimized ASGI execution.</strong></p>
|
|
5
|
+
<a href="https://pypi.org/project/tigrbl-kernel/"><img src="https://img.shields.io/pypi/v/tigrbl-kernel?label=PyPI" alt="PyPI version for tigrbl-kernel"/></a>
|
|
6
|
+
<a href="https://pypi.org/project/tigrbl-kernel/"><img src="https://static.pepy.tech/badge/tigrbl-kernel" alt="Downloads for tigrbl-kernel"/></a>
|
|
7
|
+
<a href="https://github.com/tigrbl/tigrbl/blob/master/pkgs/core/tigrbl_kernel/README.md"><img src="https://hits.sh/github.com/tigrbl/tigrbl/blob/master/pkgs/core/tigrbl_kernel/README.md.svg?label=hits" alt="Repository hits for tigrbl-kernel README"/></a>
|
|
8
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/license-Apache%202.0-525252" alt="Apache 2.0 license"/></a>
|
|
9
|
+
<a href="pyproject.toml"><img src="https://img.shields.io/badge/python-3.10%20to%203.15-3776ab" alt="Python requirement for tigrbl-kernel"/></a>
|
|
10
|
+
<a href="https://github.com/tigrbl/tigrbl/blob/master/docs/README.md"><img src="https://img.shields.io/badge/workspace-core-1f6feb" alt="Workspace group for tigrbl-kernel"/></a>
|
|
11
|
+
</div>
|
|
12
|
+
|
|
13
|
+
## Install
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
uv add tigrbl-kernel
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
pip install tigrbl-kernel
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## What It Owns
|
|
24
|
+
|
|
25
|
+
`tigrbl-kernel` owns the kernel boundary inside the split Python workspace. Key implementation roots include `tigrbl_kernel` with `_build, _compile, atoms, cache, callbacks, core`.
|
|
26
|
+
|
|
27
|
+
## Use It When
|
|
28
|
+
|
|
29
|
+
Use `tigrbl-kernel` when you want this subsystem directly as a package boundary instead of consuming it only through the top-level `tigrbl` facade.
|
|
30
|
+
|
|
31
|
+
## Public Surface
|
|
32
|
+
|
|
33
|
+
- `tigrbl_kernel` exposes `import_module, Any, Dict, List, Mapping, build_rust_kernel, build_rust_parity_snapshot, normalize_rust_spec`.
|
|
34
|
+
|
|
35
|
+
## Internal Layout
|
|
36
|
+
|
|
37
|
+
- Workspace path: `pkgs/core/tigrbl_kernel`.
|
|
38
|
+
- Package class: `core framework package`.
|
|
39
|
+
- Python requirement: `>=3.10,<3.15`.
|
|
40
|
+
- `tigrbl_kernel` modules: `_build, _compile, atoms, cache, callbacks, core, eventkey, eventkey_hooks, events, helpers`.
|
|
41
|
+
|
|
42
|
+
## Dependency Surface
|
|
43
|
+
|
|
44
|
+
- Workspace package dependencies: [`tigrbl-typing`](https://pypi.org/project/tigrbl-typing/), [`tigrbl-atoms`](https://pypi.org/project/tigrbl-atoms/), [`tigrbl-core`](https://pypi.org/project/tigrbl-core/).
|
|
45
|
+
- External runtime dependencies: none declared.
|
|
46
|
+
- Optional extras: none declared.
|
|
47
|
+
|
|
48
|
+
## Related Packages
|
|
49
|
+
|
|
50
|
+
- [`tigrbl`](https://pypi.org/project/tigrbl/)
|
|
51
|
+
- [`tigrbl-typing`](https://pypi.org/project/tigrbl-typing/)
|
|
52
|
+
- [`tigrbl-atoms`](https://pypi.org/project/tigrbl-atoms/)
|
|
53
|
+
- [`tigrbl-core`](https://pypi.org/project/tigrbl-core/)
|
|
54
|
+
|
|
55
|
+
## Canonical Repository Docs
|
|
56
|
+
|
|
57
|
+
- `docs/README.md`
|
|
58
|
+
- `docs/conformance/CURRENT_TARGET.md`
|
|
59
|
+
- `docs/conformance/CURRENT_STATE.md`
|
|
60
|
+
- `docs/conformance/NEXT_STEPS.md`
|
|
61
|
+
- `docs/governance/DOC_POINTERS.md`
|
|
62
|
+
- `docs/developer/PACKAGE_CATALOG.md`
|
|
63
|
+
- `docs/developer/PACKAGE_LAYOUT.md`
|
|
64
|
+
|
|
65
|
+
## Package-local Boundary
|
|
66
|
+
|
|
67
|
+
This file is a package-local distribution entry point.
|
|
68
|
+
Use this page for package installation and boundary orientation. Repository governance, conformance state, target status, and release evidence remain governed from `docs/` and `.ssot/`.
|
|
69
|
+
|
|
70
|
+
## License
|
|
71
|
+
|
|
72
|
+
Licensed under the Apache License, Version 2.0. See `LICENSE` and the official [Apache 2.0 license text](https://www.apache.org/licenses/LICENSE-2.0).
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "tigrbl-kernel"
|
|
3
|
-
version = "0.4.
|
|
3
|
+
version = "0.4.2.dev3"
|
|
4
4
|
description = "Kernel orchestration for composing Tigrbl runtime plans, bindings, operation dispatch, and optimized ASGI execution."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = { file = "LICENSE" }
|
|
@@ -597,6 +597,11 @@ def _program_has_exact_http_like_no_input_binding(
|
|
|
597
597
|
|
|
598
598
|
|
|
599
599
|
def _step_has_route_binding(step: StepFn) -> bool:
|
|
600
|
+
for candidate in (step, getattr(step, "__tigrbl_direct_run", None)):
|
|
601
|
+
endpoint = getattr(candidate, "__tigrbl_websocket_endpoint__", None)
|
|
602
|
+
path = getattr(candidate, "__tigrbl_websocket_path__", None)
|
|
603
|
+
if callable(endpoint) and isinstance(path, str) and path:
|
|
604
|
+
return True
|
|
600
605
|
closure = getattr(step, "__closure__", None)
|
|
601
606
|
if not closure:
|
|
602
607
|
return False
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from dataclasses import dataclass
|
|
4
|
+
from typing import Any
|
|
5
|
+
|
|
6
|
+
from tigrbl_core._spec.binding_spec import normalize_exchange
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
CONTRACT_CHANNELS: tuple[str, ...] = ("receive", "send")
|
|
10
|
+
CONTRACT_SCOPE_TYPES: tuple[str, ...] = ("http", "websocket", "webtransport")
|
|
11
|
+
CONTRACT_DIRECTIONS: tuple[str, ...] = (
|
|
12
|
+
"client_to_server",
|
|
13
|
+
"server_to_client",
|
|
14
|
+
"app_to_server",
|
|
15
|
+
"server_to_app",
|
|
16
|
+
"system",
|
|
17
|
+
)
|
|
18
|
+
CONTRACT_FAMILIES: tuple[str, ...] = (
|
|
19
|
+
"request",
|
|
20
|
+
"session",
|
|
21
|
+
"message",
|
|
22
|
+
"stream",
|
|
23
|
+
"datagram",
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
CONTRACT_BINDING_ALIASES: dict[str, tuple[str, ...]] = {
|
|
27
|
+
"rest": ("http.rest", "https.rest"),
|
|
28
|
+
"jsonrpc": ("http.jsonrpc", "https.jsonrpc"),
|
|
29
|
+
"http.stream": ("http.stream", "https.stream"),
|
|
30
|
+
"sse": ("http.sse", "https.sse"),
|
|
31
|
+
"websocket": ("ws", "wss"),
|
|
32
|
+
"webtransport": ("webtransport",),
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
CONTRACT_EXCHANGE_ALIASES: dict[str, str] = {
|
|
36
|
+
"unary": "request_response",
|
|
37
|
+
"duplex": "bidirectional_stream",
|
|
38
|
+
"client_stream": "client_stream",
|
|
39
|
+
"server_stream": "server_stream",
|
|
40
|
+
"fire_and_forget": "fire_and_forget",
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
CANONICAL_CONTRACT_EVENTS: tuple[str, ...] = (
|
|
44
|
+
"http.request",
|
|
45
|
+
"http.disconnect",
|
|
46
|
+
"http.response.start",
|
|
47
|
+
"http.response.body",
|
|
48
|
+
"http.response.pathsend",
|
|
49
|
+
"websocket.connect",
|
|
50
|
+
"websocket.receive",
|
|
51
|
+
"websocket.disconnect",
|
|
52
|
+
"websocket.accept",
|
|
53
|
+
"websocket.send",
|
|
54
|
+
"websocket.close",
|
|
55
|
+
"webtransport.connect",
|
|
56
|
+
"webtransport.accept",
|
|
57
|
+
"webtransport.stream.receive",
|
|
58
|
+
"webtransport.stream.send",
|
|
59
|
+
"webtransport.stream.close",
|
|
60
|
+
"webtransport.stream.reset",
|
|
61
|
+
"webtransport.stream.stop_sending",
|
|
62
|
+
"webtransport.datagram.receive",
|
|
63
|
+
"webtransport.datagram.send",
|
|
64
|
+
"webtransport.disconnect",
|
|
65
|
+
"webtransport.close",
|
|
66
|
+
"transport.emit.complete",
|
|
67
|
+
"transport.emit.failed",
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
_EVENT_SCOPE_PREFIXES: dict[str, str] = {
|
|
71
|
+
"http.": "http",
|
|
72
|
+
"websocket.": "websocket",
|
|
73
|
+
"webtransport.": "webtransport",
|
|
74
|
+
"transport.emit.": "webtransport",
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
@dataclass(frozen=True, slots=True)
|
|
79
|
+
class ContractClassificationProjection:
|
|
80
|
+
event: str
|
|
81
|
+
channel: str
|
|
82
|
+
scope_type: str
|
|
83
|
+
binding: str
|
|
84
|
+
local_binding_kinds: tuple[str, ...]
|
|
85
|
+
family: str
|
|
86
|
+
contract_exchange: str
|
|
87
|
+
local_exchange: str
|
|
88
|
+
direction: str
|
|
89
|
+
allowed_framings: tuple[str, ...]
|
|
90
|
+
required_payload_fields: tuple[str, ...]
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
def project_contract_classification(row: dict[str, Any]) -> ContractClassificationProjection:
|
|
94
|
+
if "subsurface" in row:
|
|
95
|
+
raise ValueError("contract classifications must not use subsurface")
|
|
96
|
+
|
|
97
|
+
event = _required_str(row, "event")
|
|
98
|
+
channel = _required_str(row, "channel")
|
|
99
|
+
scope_type = _required_str(row, "scope_type")
|
|
100
|
+
binding = _required_str(row, "binding")
|
|
101
|
+
family = _required_str(row, "family")
|
|
102
|
+
exchange = _required_str(row, "exchange")
|
|
103
|
+
direction = _required_str(row, "direction")
|
|
104
|
+
|
|
105
|
+
if event not in CANONICAL_CONTRACT_EVENTS:
|
|
106
|
+
raise ValueError(f"unsupported contract event {event!r}")
|
|
107
|
+
if channel not in CONTRACT_CHANNELS:
|
|
108
|
+
raise ValueError(f"unsupported contract channel {channel!r}")
|
|
109
|
+
if scope_type not in CONTRACT_SCOPE_TYPES:
|
|
110
|
+
raise ValueError(f"unsupported contract scope_type {scope_type!r}")
|
|
111
|
+
if not _event_matches_scope(event=event, scope_type=scope_type):
|
|
112
|
+
raise ValueError(f"contract event {event!r} does not match scope_type {scope_type!r}")
|
|
113
|
+
if family not in CONTRACT_FAMILIES:
|
|
114
|
+
raise ValueError(f"unsupported contract family {family!r}")
|
|
115
|
+
if direction not in CONTRACT_DIRECTIONS:
|
|
116
|
+
raise ValueError(f"unsupported contract direction {direction!r}")
|
|
117
|
+
if binding not in CONTRACT_BINDING_ALIASES:
|
|
118
|
+
raise ValueError(f"unsupported contract binding {binding!r}")
|
|
119
|
+
if scope_type == "webtransport" and family == "message":
|
|
120
|
+
raise ValueError("WebTransport message is not a native transport family")
|
|
121
|
+
|
|
122
|
+
try:
|
|
123
|
+
local_exchange = normalize_exchange(CONTRACT_EXCHANGE_ALIASES[exchange])
|
|
124
|
+
except KeyError as exc:
|
|
125
|
+
raise ValueError(f"unsupported contract exchange {exchange!r}") from exc
|
|
126
|
+
|
|
127
|
+
return ContractClassificationProjection(
|
|
128
|
+
event=event,
|
|
129
|
+
channel=channel,
|
|
130
|
+
scope_type=scope_type,
|
|
131
|
+
binding=binding,
|
|
132
|
+
local_binding_kinds=CONTRACT_BINDING_ALIASES[binding],
|
|
133
|
+
family=family,
|
|
134
|
+
contract_exchange=exchange,
|
|
135
|
+
local_exchange=local_exchange,
|
|
136
|
+
direction=direction,
|
|
137
|
+
allowed_framings=_string_tuple(row.get("allowed_framings", ())),
|
|
138
|
+
required_payload_fields=_string_tuple(row.get("required_payload_fields", ())),
|
|
139
|
+
)
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
def is_supported_contract_classification(row: dict[str, Any]) -> bool:
|
|
143
|
+
try:
|
|
144
|
+
project_contract_classification(row)
|
|
145
|
+
except ValueError:
|
|
146
|
+
return False
|
|
147
|
+
return True
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
def _required_str(row: dict[str, Any], key: str) -> str:
|
|
151
|
+
value = row.get(key)
|
|
152
|
+
if not isinstance(value, str) or not value:
|
|
153
|
+
raise ValueError(f"contract classification requires string {key!r}")
|
|
154
|
+
return value
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
def _string_tuple(value: Any) -> tuple[str, ...]:
|
|
158
|
+
if value is None:
|
|
159
|
+
return ()
|
|
160
|
+
if not isinstance(value, (list, tuple)):
|
|
161
|
+
raise ValueError("contract classification list fields must be sequences")
|
|
162
|
+
result = tuple(str(item) for item in value)
|
|
163
|
+
if any(not item for item in result):
|
|
164
|
+
raise ValueError("contract classification list fields must not contain blanks")
|
|
165
|
+
return result
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
def _event_matches_scope(*, event: str, scope_type: str) -> bool:
|
|
169
|
+
for prefix, expected_scope_type in _EVENT_SCOPE_PREFIXES.items():
|
|
170
|
+
if event.startswith(prefix):
|
|
171
|
+
return scope_type == expected_scope_type
|
|
172
|
+
return False
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
__all__ = [
|
|
176
|
+
"CANONICAL_CONTRACT_EVENTS",
|
|
177
|
+
"CONTRACT_BINDING_ALIASES",
|
|
178
|
+
"CONTRACT_CHANNELS",
|
|
179
|
+
"CONTRACT_DIRECTIONS",
|
|
180
|
+
"CONTRACT_EXCHANGE_ALIASES",
|
|
181
|
+
"CONTRACT_FAMILIES",
|
|
182
|
+
"CONTRACT_SCOPE_TYPES",
|
|
183
|
+
"ContractClassificationProjection",
|
|
184
|
+
"is_supported_contract_classification",
|
|
185
|
+
"project_contract_classification",
|
|
186
|
+
]
|