tigrbl-concrete 0.4.1.dev6__tar.gz → 0.4.2.dev4__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_concrete-0.4.2.dev4/NOTICE +7 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/PKG-INFO +148 -110
- tigrbl_concrete-0.4.2.dev4/README.md +163 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/pyproject.toml +1 -1
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_concrete/_app.py +33 -4
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_concrete/_router.py +2 -8
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_concrete/tigrbl_app.py +6 -10
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_concrete/tigrbl_router.py +6 -11
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_mapping/appspec/path_lowering.py +2 -2
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/system/__init__.py +0 -14
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/system/docs/__init__.py +0 -14
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/system/docs/lens.py +12 -1
- tigrbl_concrete-0.4.1.dev6/README.md +0 -126
- tigrbl_concrete-0.4.1.dev6/tigrbl_concrete/system/docs/asyncapi.py +0 -86
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/LICENSE +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/__init__.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_concrete/__init__.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_concrete/_alias.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_concrete/_allow_anon.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_concrete/_background.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_concrete/_binding.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_concrete/_body.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_concrete/_column.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_concrete/_cors_middleware.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_concrete/_engine.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_concrete/_event_stream_response.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_concrete/_file_response.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_concrete/_headers.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_concrete/_hook.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_concrete/_html_response.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_concrete/_httpx.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_concrete/_json_response.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_concrete/_middleware.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_concrete/_op.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_concrete/_op_registry.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_concrete/_plain_text_response.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_concrete/_redirect_response.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_concrete/_request.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_concrete/_request_adapters.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_concrete/_response.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_concrete/_route.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_concrete/_rust_backend.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_concrete/_schema.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_concrete/_security/__init__.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_concrete/_security/api_key.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_concrete/_security/http_basic.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_concrete/_security/http_bearer.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_concrete/_security/mutual_tls.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_concrete/_security/oauth2.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_concrete/_security/openid_connect.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_concrete/_session.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_concrete/_storage.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_concrete/_streaming_response.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_concrete/_table.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_concrete/_table_registry.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_concrete/_websocket.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_concrete/dependencies.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_concrete/engine_resolver.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_decorators/__init__.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_decorators/allow_anon.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_decorators/engine.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_decorators/eventful.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_decorators/hook.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_decorators/middlewares.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_decorators/op.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_decorators/response.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_decorators/rest.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_decorators/schema.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_decorators/session.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_mapping/__init__.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_mapping/appspec/__init__.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_mapping/appspec/docs_lowering.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_mapping/appspec/engine_lowering.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_mapping/column_mro_collect.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_mapping/core_resolver.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_mapping/model.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_mapping/model_helpers.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_mapping/op_resolver.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_mapping/router/__init__.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_mapping/router/common.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_mapping/router/include.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_mapping/router/resource_proxy.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_mapping/router/rpc.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_mapping/rpc.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/ddl/__init__.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/decorators.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/engine/__init__.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/engine/bind.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/engine/builders.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/engine/capabilities.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/engine/collect.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/engine/plugins.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/engine/registry.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/engine/resolver.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/factories/__init__.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/factories/app.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/resolve/__init__.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/resolve/handlers.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/security/__init__.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/security/dependencies.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/shortcuts/__init__.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/shortcuts/app.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/shortcuts/rest.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/system/diagnostics/__init__.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/system/diagnostics/healthz.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/system/diagnostics/hookz.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/system/diagnostics/kernelz.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/system/diagnostics/methodz.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/system/diagnostics/router.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/system/diagnostics/utils.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/system/docs/json_schema.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/system/docs/openapi/__init__.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/system/docs/openapi/helpers.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/system/docs/openapi/metadata.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/system/docs/openapi/mount.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/system/docs/openapi/schema.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/system/docs/openrpc.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/system/docs/runtime_ops.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/system/docs/surface.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/system/docs/swagger.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/system/favicon/__init__.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/system/favicon/assets/favicon.svg +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/system/static.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/system/uvicorn.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/transport/__init__.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/transport/jsonrpc/__init__.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/transport/jsonrpc/helpers.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/transport/jsonrpc/models.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/transport/rest/__init__.py +0 -0
- {tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/transport/rest/aggregator.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: tigrbl-concrete
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.2.dev4
|
|
4
4
|
Summary: Concrete Tigrbl implementations for reusable framework behavior, sessions, routes, responses, and base abstraction adapters.
|
|
5
5
|
License: Apache License
|
|
6
6
|
Version 2.0, January 2004
|
|
@@ -204,6 +204,7 @@ License: Apache License
|
|
|
204
204
|
See the License for the specific language governing permissions and
|
|
205
205
|
limitations under the License.
|
|
206
206
|
License-File: LICENSE
|
|
207
|
+
License-File: NOTICE
|
|
207
208
|
Keywords: tigrbl,asgi,api,json-rpc,rest,sqlalchemy,pydantic,concrete,implementation,framework,openapi,openrpc,schema-first
|
|
208
209
|
Author: Jacob Stewart
|
|
209
210
|
Author-email: jacob@swarmauri.com
|
|
@@ -243,130 +244,167 @@ Project-URL: Organization, https://github.com/tigrbl
|
|
|
243
244
|
Project-URL: Repository, https://github.com/tigrbl/tigrbl/tree/master/pkgs/core/tigrbl_concrete
|
|
244
245
|
Description-Content-Type: text/markdown
|
|
245
246
|
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
<
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
##
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
-
|
|
286
|
-
- [
|
|
287
|
-
- [
|
|
288
|
-
-
|
|
289
|
-
-
|
|
290
|
-
- [`tigrbl-ops-olap`](https://pypi.org/project/tigrbl-ops-olap/) - Analytical OLAP operation boundaries for Tigrbl workloads, query-oriented APIs, and engine integrations.
|
|
291
|
-
- [`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.
|
|
292
|
-
- [`tigrbl-ops-realtime`](https://pypi.org/project/tigrbl-ops-realtime/) - Realtime, streaming, datagram, websocket, and event operation handlers for Tigrbl ASGI runtimes.
|
|
293
|
-
- [`tigrbl-orm`](https://pypi.org/project/tigrbl-orm/) - SQLAlchemy ORM tables, mixins, columns, model helpers, and persistence primitives for Tigrbl applications.
|
|
294
|
-
- [`tigrbl-runtime`](https://pypi.org/project/tigrbl-runtime/) - Runtime pipeline helpers and execution bridge surfaces for Tigrbl ASGI applications, transports, and operation dispatch.
|
|
295
|
-
- [`tigrbl_spec`](https://pypi.org/project/tigrbl_spec/) - Shared Tigrbl interfaces, protocol definitions, compatibility targets, and specification artifacts for framework integration.
|
|
296
|
-
- [`tigrbl_tests`](https://pypi.org/project/tigrbl_tests/) - Reusable Tigrbl pytest fixtures, conformance assertions, integration helpers, and package test utilities.
|
|
297
|
-
- [`tigrbl-typing`](https://pypi.org/project/tigrbl-typing/) - Typing protocols, aliases, generics, and shared type helpers for Tigrbl framework packages and extensions.
|
|
298
|
-
|
|
299
|
-
Engine packages:
|
|
300
|
-
- [`tigrbl_engine_bigquery`](https://pypi.org/project/tigrbl_engine_bigquery/) - BigQuery engine plugin for Google BigQuery warehouse sessions, analytics workloads, and Tigrbl engine registration.
|
|
301
|
-
- [`tigrbl_engine_clickhouse`](https://pypi.org/project/tigrbl_engine_clickhouse/) - ClickHouse engine plugin for analytical database sessions, warehouse workloads, and Tigrbl engine registration.
|
|
302
|
-
- [`tigrbl_engine_csv`](https://pypi.org/project/tigrbl_engine_csv/) - CSV engine plugin for file-backed tables, pandas DataFrames, and lightweight Tigrbl data workflows.
|
|
303
|
-
- [`tigrbl_engine_dataframe`](https://pypi.org/project/tigrbl_engine_dataframe/) - DataFrame engine plugin for transactional pandas sessions and in-process Tigrbl analytics workloads.
|
|
304
|
-
- [`tigrbl_engine_duckdb`](https://pypi.org/project/tigrbl_engine_duckdb/) - DuckDB engine plugin for embedded analytical database sessions, OLAP workloads, and Tigrbl engine registration.
|
|
305
|
-
- [`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.
|
|
306
|
-
- [`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.
|
|
307
|
-
- [`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.
|
|
308
|
-
- [`tigrbl_engine_memdedupe`](https://pypi.org/project/tigrbl_engine_memdedupe/) - In-memory dedupe engine plugin for idempotency tracking, duplicate suppression, and Tigrbl workflow coordination.
|
|
309
|
-
- [`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.
|
|
310
|
-
- [`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.
|
|
311
|
-
- [`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.
|
|
312
|
-
- [`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.
|
|
313
|
-
- [`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.
|
|
314
|
-
- [`tigrbl_engine_numpy`](https://pypi.org/project/tigrbl_engine_numpy/) - NumPy engine plugin for array-to-table helpers, analytical workflows, and Tigrbl data integration.
|
|
315
|
-
- [`tigrbl_engine_pandas`](https://pypi.org/project/tigrbl_engine_pandas/) - Pandas engine plugin for transactional DataFrame sessions, tabular workflows, and Tigrbl data integration.
|
|
316
|
-
- [`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.
|
|
317
|
-
- [`tigrbl_engine_postgres`](https://pypi.org/project/tigrbl_engine_postgres/) - PostgreSQL engine plugin for SQLAlchemy sessions, async database workflows, and Tigrbl application persistence.
|
|
318
|
-
- [`tigrbl_engine_pyspark`](https://pypi.org/project/tigrbl_engine_pyspark/) - PySpark engine plugin for distributed DataFrame integration, analytics workloads, and Tigrbl data workflows.
|
|
319
|
-
- [`tigrbl_engine_redis`](https://pypi.org/project/tigrbl_engine_redis/) - Redis engine plugin for cache, data structures, and Tigrbl engine workflows backed by Redis.
|
|
320
|
-
- [`tigrbl_engine_rediscachethrough`](https://pypi.org/project/tigrbl_engine_rediscachethrough/) - Redis cache-through engine plugin for Redis, PostgreSQL, and Tigrbl data-access acceleration workflows.
|
|
321
|
-
- [`tigrbl_engine_snowflake`](https://pypi.org/project/tigrbl_engine_snowflake/) - Snowflake engine plugin for warehouse sessions, analytical workloads, and Tigrbl engine registration.
|
|
322
|
-
- [`tigrbl_engine_sqlite`](https://pypi.org/project/tigrbl_engine_sqlite/) - SQLite engine plugin for SQLAlchemy sessions, local transactional storage, and Tigrbl application persistence.
|
|
323
|
-
- [`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.
|
|
324
|
-
|
|
325
|
-
Application packages:
|
|
326
|
-
- [`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.
|
|
327
|
-
- [`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.
|
|
328
|
-
|
|
329
|
-
Source-tree links remain available from each package identity section; this ecosystem section is intentionally PyPI-first for package discovery and installation routing.
|
|
247
|
+
<div align="center">
|
|
248
|
+
<h1>tigrbl-concrete</h1>
|
|
249
|
+
<img src="https://raw.githubusercontent.com/swarmauri/swarmauri-sdk/master/assets/tigrbl_full_logo.png" alt="Tigrbl logo" width="140"/>
|
|
250
|
+
<p><strong>Concrete Tigrbl implementations for reusable framework behavior, sessions, routes, responses, and base abstraction adapters.</strong></p>
|
|
251
|
+
<a href="https://pypi.org/project/tigrbl-concrete/"><img src="https://img.shields.io/pypi/v/tigrbl-concrete?label=PyPI" alt="PyPI version for tigrbl-concrete"/></a>
|
|
252
|
+
<a href="https://pypi.org/project/tigrbl-concrete/"><img src="https://static.pepy.tech/badge/tigrbl-concrete" alt="Downloads for tigrbl-concrete"/></a>
|
|
253
|
+
<a href="https://discord.gg/K4YTAPapjR"><img src="https://img.shields.io/badge/Discord-Join%20chat-5865F2?logo=discord&logoColor=white" alt="Discord community for tigrbl-concrete"/></a>
|
|
254
|
+
<a href="https://github.com/tigrbl/tigrbl/blob/master/pkgs/core/tigrbl_concrete/README.md"><img src="https://hits.sh/github.com/tigrbl/tigrbl/blob/master/pkgs/core/tigrbl_concrete/README.md.svg?label=hits" alt="Repository hits for tigrbl-concrete README"/></a>
|
|
255
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/license-Apache%202.0-525252" alt="Apache 2.0 license"/></a>
|
|
256
|
+
<a href="pyproject.toml"><img src="https://img.shields.io/badge/python-3.10%20%7C%203.11%20%7C%203.12%20%7C%203.13%20%7C%203.14-3776ab" alt="Python versions 3.10 | 3.11 | 3.12 | 3.13 | 3.14 for tigrbl-concrete"/></a>
|
|
257
|
+
<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-concrete"/></a>
|
|
258
|
+
</div>
|
|
259
|
+
|
|
260
|
+
## What is tigrbl-concrete?
|
|
261
|
+
|
|
262
|
+
Concrete Tigrbl implementations for reusable framework behavior, sessions, routes, responses, and base abstraction adapters.
|
|
263
|
+
|
|
264
|
+
## Why use tigrbl-concrete?
|
|
265
|
+
|
|
266
|
+
Use it when you need this foundational Tigrbl layer directly as a small, focused dependency.
|
|
267
|
+
|
|
268
|
+
## When should I install tigrbl-concrete?
|
|
269
|
+
|
|
270
|
+
Install it for extension packages, package-local tests, or internals that need this boundary without the whole facade.
|
|
271
|
+
|
|
272
|
+
## Who is tigrbl-concrete for?
|
|
273
|
+
|
|
274
|
+
Framework maintainers, extension authors, and advanced users composing Tigrbl from split packages.
|
|
275
|
+
|
|
276
|
+
## Where does tigrbl-concrete fit?
|
|
277
|
+
|
|
278
|
+
`tigrbl-concrete` lives at `pkgs/core/tigrbl_concrete` and serves a focused layer in the split Tigrbl framework.
|
|
279
|
+
|
|
280
|
+
## How does tigrbl-concrete work?
|
|
281
|
+
|
|
282
|
+
It owns a narrow layer in the split workspace and is consumed by higher-level packages through explicit dependencies.
|
|
283
|
+
|
|
284
|
+
## Certification Status
|
|
285
|
+
|
|
286
|
+
- Package status: governed package in the `tigrbl/tigrbl` workspace.
|
|
287
|
+
- Governance source: [SSOT registry](https://github.com/tigrbl/tigrbl/blob/master/.ssot/registry.json).
|
|
288
|
+
- Release evidence: [publish workflow](https://github.com/tigrbl/tigrbl/actions/workflows/publish.yml) validates package builds, tests, GitHub release assets, and PyPI publication for managed packages.
|
|
289
|
+
- Local certification guard: `pkgs/core/tigrbl_tests/tests/unit/test_package_badges_and_notices.py` verifies every package README keeps the Discord badge, Apache 2.0 badge, explicit Python-version badge, `LICENSE`, and `NOTICE`.
|
|
290
|
+
- Scope note: this README documents the package boundary. Runtime feature support remains governed by `.ssot/` entities and the conformance docs linked below.
|
|
330
291
|
|
|
331
292
|
## Install
|
|
332
293
|
|
|
294
|
+
```bash
|
|
295
|
+
uv add tigrbl-concrete
|
|
296
|
+
```
|
|
297
|
+
|
|
333
298
|
```bash
|
|
334
299
|
pip install tigrbl-concrete
|
|
335
300
|
```
|
|
336
301
|
|
|
337
|
-
##
|
|
302
|
+
## Surface Coverage
|
|
303
|
+
|
|
304
|
+
| Surface | Value |
|
|
305
|
+
|---|---|
|
|
306
|
+
| PyPI package | [`tigrbl-concrete`](https://pypi.org/project/tigrbl-concrete/) |
|
|
307
|
+
| Repository path | [`pkgs/core/tigrbl_concrete`](https://github.com/tigrbl/tigrbl/tree/master/pkgs/core/tigrbl_concrete) |
|
|
308
|
+
| Python import root | `tigrbl_concrete` |
|
|
309
|
+
| Console scripts | none declared |
|
|
310
|
+
| Entry points | `tigrbl.engine_plugins` |
|
|
311
|
+
| Optional extras | none declared |
|
|
312
|
+
| Legal files | `LICENSE`, `NOTICE` |
|
|
313
|
+
| Supported Python | `3.10 | 3.11 | 3.12 | 3.13 | 3.14` |
|
|
314
|
+
|
|
315
|
+
## What It Owns
|
|
316
|
+
|
|
317
|
+
`tigrbl-concrete` owns the `foundational framework package` boundary. It should be installed when you need this package's focused responsibility without assuming every other Tigrbl workspace package is present.
|
|
318
|
+
|
|
319
|
+
Implementation orientation:
|
|
320
|
+
- `tigrbl_concrete`: _concrete/, _decorators/, _mapping/, ddl/, decorators, engine/, factories/, resolve/, security/, shortcuts/, system/, transport/
|
|
321
|
+
|
|
322
|
+
## Public API and Import Surface
|
|
323
|
+
|
|
324
|
+
- Import roots: `tigrbl_concrete`.
|
|
325
|
+
- Public symbols: public surface is module-oriented; import the package boundary and inspect submodules as needed.
|
|
326
|
+
- Workspace dependencies: [`tigrbl-atoms`](https://pypi.org/project/tigrbl-atoms/), [`tigrbl-base`](https://pypi.org/project/tigrbl-base/), [`tigrbl-core`](https://pypi.org/project/tigrbl-core/), [`tigrbl-ops-olap`](https://pypi.org/project/tigrbl-ops-olap/), [`tigrbl-ops-oltp`](https://pypi.org/project/tigrbl-ops-oltp/), [`tigrbl-ops-realtime`](https://pypi.org/project/tigrbl-ops-realtime/), [`tigrbl-runtime`](https://pypi.org/project/tigrbl-runtime/), [`tigrbl-typing`](https://pypi.org/project/tigrbl-typing/).
|
|
327
|
+
- External runtime dependencies: `orjson`, `pydantic>=2.0`, `sqlalchemy`, `uvicorn`.
|
|
328
|
+
|
|
329
|
+
## Usage Examples
|
|
330
|
+
|
|
331
|
+
### Verify the installed package
|
|
332
|
+
|
|
333
|
+
```bash
|
|
334
|
+
python -m pip show tigrbl-concrete
|
|
335
|
+
python - <<'PY'
|
|
336
|
+
from importlib.metadata import version
|
|
337
|
+
print(version("tigrbl-concrete"))
|
|
338
|
+
PY
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
### Import the package boundary
|
|
342
|
+
|
|
343
|
+
```python
|
|
344
|
+
import importlib
|
|
345
|
+
|
|
346
|
+
module = importlib.import_module("tigrbl_concrete")
|
|
347
|
+
print(module.__name__)
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
### Inspect available modules
|
|
351
|
+
|
|
352
|
+
```python
|
|
353
|
+
import importlib
|
|
354
|
+
import pkgutil
|
|
355
|
+
|
|
356
|
+
module = importlib.import_module("tigrbl_concrete")
|
|
357
|
+
for info in pkgutil.iter_modules(getattr(module, "__path__", [])):
|
|
358
|
+
print(info.name)
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
### Use with the facade when building applications
|
|
362
|
+
|
|
363
|
+
```bash
|
|
364
|
+
uv add tigrbl tigrbl-concrete
|
|
365
|
+
python - <<'PY'
|
|
366
|
+
import tigrbl
|
|
367
|
+
print(tigrbl.__name__)
|
|
368
|
+
PY
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
## How To Choose This Package
|
|
372
|
+
|
|
373
|
+
Choose `tigrbl-concrete` when the quick-answer table matches your use case. Choose [`tigrbl`](https://pypi.org/project/tigrbl/) instead when you want the full public facade. Choose a lower-level package such as [`tigrbl-core`](https://pypi.org/project/tigrbl-core/), [`tigrbl-base`](https://pypi.org/project/tigrbl-base/), or [`tigrbl-runtime`](https://pypi.org/project/tigrbl-runtime/) when you are building framework extensions or testing a specific internal boundary.
|
|
338
374
|
|
|
339
|
-
|
|
375
|
+
## Related Packages
|
|
340
376
|
|
|
341
|
-
|
|
377
|
+
- [`tigrbl-atoms`](https://pypi.org/project/tigrbl-atoms/)
|
|
378
|
+
- [`tigrbl-base`](https://pypi.org/project/tigrbl-base/)
|
|
379
|
+
- [`tigrbl-core`](https://pypi.org/project/tigrbl-core/)
|
|
380
|
+
- [`tigrbl-ops-olap`](https://pypi.org/project/tigrbl-ops-olap/)
|
|
381
|
+
- [`tigrbl-ops-oltp`](https://pypi.org/project/tigrbl-ops-oltp/)
|
|
382
|
+
- [`tigrbl-ops-realtime`](https://pypi.org/project/tigrbl-ops-realtime/)
|
|
383
|
+
- [`tigrbl-runtime`](https://pypi.org/project/tigrbl-runtime/)
|
|
384
|
+
- [`tigrbl-typing`](https://pypi.org/project/tigrbl-typing/)
|
|
385
|
+
- [`tigrbl`](https://pypi.org/project/tigrbl/)
|
|
342
386
|
|
|
343
|
-
|
|
387
|
+
## Documentation Links
|
|
344
388
|
|
|
345
|
-
|
|
389
|
+
- [Workspace docs](https://github.com/tigrbl/tigrbl/blob/master/docs/README.md)
|
|
390
|
+
- [Package catalog](https://github.com/tigrbl/tigrbl/blob/master/docs/developer/PACKAGE_CATALOG.md)
|
|
391
|
+
- [Package layout](https://github.com/tigrbl/tigrbl/blob/master/docs/developer/PACKAGE_LAYOUT.md)
|
|
392
|
+
- [Current target](https://github.com/tigrbl/tigrbl/blob/master/docs/conformance/CURRENT_TARGET.md)
|
|
393
|
+
- [Current state](https://github.com/tigrbl/tigrbl/blob/master/docs/conformance/CURRENT_STATE.md)
|
|
394
|
+
- [SSOT registry](https://github.com/tigrbl/tigrbl/blob/master/.ssot/registry.json)
|
|
395
|
+
- [Release workflow](https://github.com/tigrbl/tigrbl/actions/workflows/publish.yml)
|
|
346
396
|
|
|
347
|
-
|
|
348
|
-
It is not the authoritative location for repository governance, current target status, current state reporting, certification claims, or release evidence.
|
|
397
|
+
## Support
|
|
349
398
|
|
|
350
|
-
|
|
399
|
+
- Community: [Discord](https://discord.gg/K4YTAPapjR).
|
|
400
|
+
- Issues: [GitHub Issues](https://github.com/tigrbl/tigrbl/issues).
|
|
401
|
+
- Repository: [pkgs/core/tigrbl_concrete](https://github.com/tigrbl/tigrbl/tree/master/pkgs/core/tigrbl_concrete).
|
|
351
402
|
|
|
352
|
-
-
|
|
353
|
-
- `docs/README.md`
|
|
354
|
-
- `docs/conformance/CURRENT_TARGET.md`
|
|
355
|
-
- `docs/conformance/CURRENT_STATE.md`
|
|
356
|
-
- `docs/conformance/NEXT_STEPS.md`
|
|
357
|
-
- `docs/governance/DOC_POINTERS.md`
|
|
358
|
-
- `docs/developer/PACKAGE_CATALOG.md`
|
|
359
|
-
- `docs/developer/PACKAGE_LAYOUT.md`
|
|
403
|
+
## Package-local Boundary
|
|
360
404
|
|
|
361
|
-
|
|
405
|
+
This README is the package-local distribution entry point for `tigrbl-concrete`. It answers install, usage, API, ownership, and certification-orientation questions for this package. Broader architectural decisions, release status, and cross-package proof chains remain in the repository-level docs and SSOT registry.
|
|
362
406
|
|
|
363
|
-
|
|
364
|
-
- organization: `https://github.com/tigrbl`
|
|
365
|
-
- social: `https://discord.gg/K4YTAPapjR`
|
|
366
|
-
- package path: `https://github.com/tigrbl/tigrbl/tree/master/pkgs/core/tigrbl_concrete`
|
|
367
|
-
- workspace path: `pkgs/core/tigrbl_concrete`
|
|
368
|
-
- workspace class: core Python package
|
|
369
|
-
- implementation layout: `tigrbl_concrete/`
|
|
407
|
+
## License
|
|
370
408
|
|
|
371
|
-
|
|
409
|
+
Licensed under the Apache License, Version 2.0. See `LICENSE`, `NOTICE`, and the official [Apache 2.0 license text](https://www.apache.org/licenses/LICENSE-2.0).
|
|
372
410
|
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
<h1>tigrbl-concrete</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>Concrete Tigrbl implementations for reusable framework behavior, sessions, routes, responses, and base abstraction adapters.</strong></p>
|
|
5
|
+
<a href="https://pypi.org/project/tigrbl-concrete/"><img src="https://img.shields.io/pypi/v/tigrbl-concrete?label=PyPI" alt="PyPI version for tigrbl-concrete"/></a>
|
|
6
|
+
<a href="https://pypi.org/project/tigrbl-concrete/"><img src="https://static.pepy.tech/badge/tigrbl-concrete" alt="Downloads for tigrbl-concrete"/></a>
|
|
7
|
+
<a href="https://discord.gg/K4YTAPapjR"><img src="https://img.shields.io/badge/Discord-Join%20chat-5865F2?logo=discord&logoColor=white" alt="Discord community for tigrbl-concrete"/></a>
|
|
8
|
+
<a href="https://github.com/tigrbl/tigrbl/blob/master/pkgs/core/tigrbl_concrete/README.md"><img src="https://hits.sh/github.com/tigrbl/tigrbl/blob/master/pkgs/core/tigrbl_concrete/README.md.svg?label=hits" alt="Repository hits for tigrbl-concrete README"/></a>
|
|
9
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/license-Apache%202.0-525252" alt="Apache 2.0 license"/></a>
|
|
10
|
+
<a href="pyproject.toml"><img src="https://img.shields.io/badge/python-3.10%20%7C%203.11%20%7C%203.12%20%7C%203.13%20%7C%203.14-3776ab" alt="Python versions 3.10 | 3.11 | 3.12 | 3.13 | 3.14 for tigrbl-concrete"/></a>
|
|
11
|
+
<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-concrete"/></a>
|
|
12
|
+
</div>
|
|
13
|
+
|
|
14
|
+
## What is tigrbl-concrete?
|
|
15
|
+
|
|
16
|
+
Concrete Tigrbl implementations for reusable framework behavior, sessions, routes, responses, and base abstraction adapters.
|
|
17
|
+
|
|
18
|
+
## Why use tigrbl-concrete?
|
|
19
|
+
|
|
20
|
+
Use it when you need this foundational Tigrbl layer directly as a small, focused dependency.
|
|
21
|
+
|
|
22
|
+
## When should I install tigrbl-concrete?
|
|
23
|
+
|
|
24
|
+
Install it for extension packages, package-local tests, or internals that need this boundary without the whole facade.
|
|
25
|
+
|
|
26
|
+
## Who is tigrbl-concrete for?
|
|
27
|
+
|
|
28
|
+
Framework maintainers, extension authors, and advanced users composing Tigrbl from split packages.
|
|
29
|
+
|
|
30
|
+
## Where does tigrbl-concrete fit?
|
|
31
|
+
|
|
32
|
+
`tigrbl-concrete` lives at `pkgs/core/tigrbl_concrete` and serves a focused layer in the split Tigrbl framework.
|
|
33
|
+
|
|
34
|
+
## How does tigrbl-concrete work?
|
|
35
|
+
|
|
36
|
+
It owns a narrow layer in the split workspace and is consumed by higher-level packages through explicit dependencies.
|
|
37
|
+
|
|
38
|
+
## Certification Status
|
|
39
|
+
|
|
40
|
+
- Package status: governed package in the `tigrbl/tigrbl` workspace.
|
|
41
|
+
- Governance source: [SSOT registry](https://github.com/tigrbl/tigrbl/blob/master/.ssot/registry.json).
|
|
42
|
+
- Release evidence: [publish workflow](https://github.com/tigrbl/tigrbl/actions/workflows/publish.yml) validates package builds, tests, GitHub release assets, and PyPI publication for managed packages.
|
|
43
|
+
- Local certification guard: `pkgs/core/tigrbl_tests/tests/unit/test_package_badges_and_notices.py` verifies every package README keeps the Discord badge, Apache 2.0 badge, explicit Python-version badge, `LICENSE`, and `NOTICE`.
|
|
44
|
+
- Scope note: this README documents the package boundary. Runtime feature support remains governed by `.ssot/` entities and the conformance docs linked below.
|
|
45
|
+
|
|
46
|
+
## Install
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
uv add tigrbl-concrete
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
pip install tigrbl-concrete
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Surface Coverage
|
|
57
|
+
|
|
58
|
+
| Surface | Value |
|
|
59
|
+
|---|---|
|
|
60
|
+
| PyPI package | [`tigrbl-concrete`](https://pypi.org/project/tigrbl-concrete/) |
|
|
61
|
+
| Repository path | [`pkgs/core/tigrbl_concrete`](https://github.com/tigrbl/tigrbl/tree/master/pkgs/core/tigrbl_concrete) |
|
|
62
|
+
| Python import root | `tigrbl_concrete` |
|
|
63
|
+
| Console scripts | none declared |
|
|
64
|
+
| Entry points | `tigrbl.engine_plugins` |
|
|
65
|
+
| Optional extras | none declared |
|
|
66
|
+
| Legal files | `LICENSE`, `NOTICE` |
|
|
67
|
+
| Supported Python | `3.10 | 3.11 | 3.12 | 3.13 | 3.14` |
|
|
68
|
+
|
|
69
|
+
## What It Owns
|
|
70
|
+
|
|
71
|
+
`tigrbl-concrete` owns the `foundational framework package` boundary. It should be installed when you need this package's focused responsibility without assuming every other Tigrbl workspace package is present.
|
|
72
|
+
|
|
73
|
+
Implementation orientation:
|
|
74
|
+
- `tigrbl_concrete`: _concrete/, _decorators/, _mapping/, ddl/, decorators, engine/, factories/, resolve/, security/, shortcuts/, system/, transport/
|
|
75
|
+
|
|
76
|
+
## Public API and Import Surface
|
|
77
|
+
|
|
78
|
+
- Import roots: `tigrbl_concrete`.
|
|
79
|
+
- Public symbols: public surface is module-oriented; import the package boundary and inspect submodules as needed.
|
|
80
|
+
- Workspace dependencies: [`tigrbl-atoms`](https://pypi.org/project/tigrbl-atoms/), [`tigrbl-base`](https://pypi.org/project/tigrbl-base/), [`tigrbl-core`](https://pypi.org/project/tigrbl-core/), [`tigrbl-ops-olap`](https://pypi.org/project/tigrbl-ops-olap/), [`tigrbl-ops-oltp`](https://pypi.org/project/tigrbl-ops-oltp/), [`tigrbl-ops-realtime`](https://pypi.org/project/tigrbl-ops-realtime/), [`tigrbl-runtime`](https://pypi.org/project/tigrbl-runtime/), [`tigrbl-typing`](https://pypi.org/project/tigrbl-typing/).
|
|
81
|
+
- External runtime dependencies: `orjson`, `pydantic>=2.0`, `sqlalchemy`, `uvicorn`.
|
|
82
|
+
|
|
83
|
+
## Usage Examples
|
|
84
|
+
|
|
85
|
+
### Verify the installed package
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
python -m pip show tigrbl-concrete
|
|
89
|
+
python - <<'PY'
|
|
90
|
+
from importlib.metadata import version
|
|
91
|
+
print(version("tigrbl-concrete"))
|
|
92
|
+
PY
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Import the package boundary
|
|
96
|
+
|
|
97
|
+
```python
|
|
98
|
+
import importlib
|
|
99
|
+
|
|
100
|
+
module = importlib.import_module("tigrbl_concrete")
|
|
101
|
+
print(module.__name__)
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### Inspect available modules
|
|
105
|
+
|
|
106
|
+
```python
|
|
107
|
+
import importlib
|
|
108
|
+
import pkgutil
|
|
109
|
+
|
|
110
|
+
module = importlib.import_module("tigrbl_concrete")
|
|
111
|
+
for info in pkgutil.iter_modules(getattr(module, "__path__", [])):
|
|
112
|
+
print(info.name)
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### Use with the facade when building applications
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
uv add tigrbl tigrbl-concrete
|
|
119
|
+
python - <<'PY'
|
|
120
|
+
import tigrbl
|
|
121
|
+
print(tigrbl.__name__)
|
|
122
|
+
PY
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
## How To Choose This Package
|
|
126
|
+
|
|
127
|
+
Choose `tigrbl-concrete` when the quick-answer table matches your use case. Choose [`tigrbl`](https://pypi.org/project/tigrbl/) instead when you want the full public facade. Choose a lower-level package such as [`tigrbl-core`](https://pypi.org/project/tigrbl-core/), [`tigrbl-base`](https://pypi.org/project/tigrbl-base/), or [`tigrbl-runtime`](https://pypi.org/project/tigrbl-runtime/) when you are building framework extensions or testing a specific internal boundary.
|
|
128
|
+
|
|
129
|
+
## Related Packages
|
|
130
|
+
|
|
131
|
+
- [`tigrbl-atoms`](https://pypi.org/project/tigrbl-atoms/)
|
|
132
|
+
- [`tigrbl-base`](https://pypi.org/project/tigrbl-base/)
|
|
133
|
+
- [`tigrbl-core`](https://pypi.org/project/tigrbl-core/)
|
|
134
|
+
- [`tigrbl-ops-olap`](https://pypi.org/project/tigrbl-ops-olap/)
|
|
135
|
+
- [`tigrbl-ops-oltp`](https://pypi.org/project/tigrbl-ops-oltp/)
|
|
136
|
+
- [`tigrbl-ops-realtime`](https://pypi.org/project/tigrbl-ops-realtime/)
|
|
137
|
+
- [`tigrbl-runtime`](https://pypi.org/project/tigrbl-runtime/)
|
|
138
|
+
- [`tigrbl-typing`](https://pypi.org/project/tigrbl-typing/)
|
|
139
|
+
- [`tigrbl`](https://pypi.org/project/tigrbl/)
|
|
140
|
+
|
|
141
|
+
## Documentation Links
|
|
142
|
+
|
|
143
|
+
- [Workspace docs](https://github.com/tigrbl/tigrbl/blob/master/docs/README.md)
|
|
144
|
+
- [Package catalog](https://github.com/tigrbl/tigrbl/blob/master/docs/developer/PACKAGE_CATALOG.md)
|
|
145
|
+
- [Package layout](https://github.com/tigrbl/tigrbl/blob/master/docs/developer/PACKAGE_LAYOUT.md)
|
|
146
|
+
- [Current target](https://github.com/tigrbl/tigrbl/blob/master/docs/conformance/CURRENT_TARGET.md)
|
|
147
|
+
- [Current state](https://github.com/tigrbl/tigrbl/blob/master/docs/conformance/CURRENT_STATE.md)
|
|
148
|
+
- [SSOT registry](https://github.com/tigrbl/tigrbl/blob/master/.ssot/registry.json)
|
|
149
|
+
- [Release workflow](https://github.com/tigrbl/tigrbl/actions/workflows/publish.yml)
|
|
150
|
+
|
|
151
|
+
## Support
|
|
152
|
+
|
|
153
|
+
- Community: [Discord](https://discord.gg/K4YTAPapjR).
|
|
154
|
+
- Issues: [GitHub Issues](https://github.com/tigrbl/tigrbl/issues).
|
|
155
|
+
- Repository: [pkgs/core/tigrbl_concrete](https://github.com/tigrbl/tigrbl/tree/master/pkgs/core/tigrbl_concrete).
|
|
156
|
+
|
|
157
|
+
## Package-local Boundary
|
|
158
|
+
|
|
159
|
+
This README is the package-local distribution entry point for `tigrbl-concrete`. It answers install, usage, API, ownership, and certification-orientation questions for this package. Broader architectural decisions, release status, and cross-package proof chains remain in the repository-level docs and SSOT registry.
|
|
160
|
+
|
|
161
|
+
## License
|
|
162
|
+
|
|
163
|
+
Licensed under the Apache License, Version 2.0. See `LICENSE`, `NOTICE`, 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-concrete"
|
|
3
|
-
version = "0.4.
|
|
3
|
+
version = "0.4.2.dev4"
|
|
4
4
|
description = "Concrete Tigrbl implementations for reusable framework behavior, sessions, routes, responses, and base abstraction adapters."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = { file = "LICENSE" }
|
|
@@ -164,6 +164,7 @@ class App(AppBase):
|
|
|
164
164
|
self._runtime_plan_revision = int(current) + 1
|
|
165
165
|
except Exception:
|
|
166
166
|
self._runtime_plan_revision = 1
|
|
167
|
+
self.openapi_schema = None
|
|
167
168
|
kernels = []
|
|
168
169
|
runtime = getattr(self, "_runtime_instance", None)
|
|
169
170
|
kernel = getattr(runtime, "kernel", None)
|
|
@@ -216,10 +217,6 @@ class App(AppBase):
|
|
|
216
217
|
from tigrbl_concrete.system.docs.json_schema import _mount_json_schema
|
|
217
218
|
return _mount_json_schema(self, path=path)
|
|
218
219
|
|
|
219
|
-
def mount_asyncapi(self, *, path: str = "/asyncapi.json") -> Any:
|
|
220
|
-
from tigrbl_concrete.system.docs.asyncapi import _mount_asyncapi
|
|
221
|
-
return _mount_asyncapi(self, path=path)
|
|
222
|
-
|
|
223
220
|
def mount_static(self, *, directory: str | Path, path: str = "/static") -> Any:
|
|
224
221
|
from tigrbl_concrete.system.static import _mount_static
|
|
225
222
|
return _mount_static(self, directory=directory, path=path)
|
|
@@ -336,6 +333,9 @@ class App(AppBase):
|
|
|
336
333
|
if scope_type == "lifespan":
|
|
337
334
|
await self._handle_lifespan(scope, receive, send)
|
|
338
335
|
return
|
|
336
|
+
if scope_type == "webtransport":
|
|
337
|
+
await self._handle_webtransport(scope, receive, send)
|
|
338
|
+
return
|
|
339
339
|
if scope_type == "websocket":
|
|
340
340
|
if not scope.get("scheme"):
|
|
341
341
|
scope = dict(scope)
|
|
@@ -406,6 +406,35 @@ class App(AppBase):
|
|
|
406
406
|
env = GwRawEnvelope(kind="asgi3", scope=scope, receive=receive, send=send)
|
|
407
407
|
await self.invoke(env)
|
|
408
408
|
|
|
409
|
+
async def _handle_webtransport(
|
|
410
|
+
self, scope: dict[str, Any], receive: Any, send: Any
|
|
411
|
+
) -> None:
|
|
412
|
+
if not scope.get("scheme"):
|
|
413
|
+
scope = dict(scope)
|
|
414
|
+
scope["scheme"] = "webtransport"
|
|
415
|
+
scope_state = scope.setdefault("state", {})
|
|
416
|
+
if not isinstance(scope_state, dict):
|
|
417
|
+
scope_state = {}
|
|
418
|
+
scope["state"] = scope_state
|
|
419
|
+
wt_state = scope_state.setdefault("tigrbl_webtransport", {})
|
|
420
|
+
if not isinstance(wt_state, dict):
|
|
421
|
+
wt_state = {}
|
|
422
|
+
scope_state["tigrbl_webtransport"] = wt_state
|
|
423
|
+
|
|
424
|
+
while wt_state.get("closed") is not True:
|
|
425
|
+
env = GwRawEnvelope(kind="asgi3", scope=scope, receive=receive, send=send)
|
|
426
|
+
await self.invoke(env)
|
|
427
|
+
trace = wt_state.get("trace")
|
|
428
|
+
if isinstance(trace, list):
|
|
429
|
+
self._webtransport_trace_latest = list(trace)
|
|
430
|
+
snapshots = getattr(self, "_webtransport_trace_snapshots", None)
|
|
431
|
+
if not isinstance(snapshots, list):
|
|
432
|
+
snapshots = []
|
|
433
|
+
self._webtransport_trace_snapshots = snapshots
|
|
434
|
+
snapshots.append(list(trace))
|
|
435
|
+
if wt_state.get("closed") is True or wt_state.get("disconnected") is True:
|
|
436
|
+
break
|
|
437
|
+
|
|
409
438
|
async def _handle_lifespan(
|
|
410
439
|
self, _scope: dict[str, Any], receive: Any, send: Any
|
|
411
440
|
) -> None:
|
{tigrbl_concrete-0.4.1.dev6 → tigrbl_concrete-0.4.2.dev4}/tigrbl_concrete/_concrete/_router.py
RENAMED
|
@@ -98,6 +98,7 @@ class Router(RouterBase):
|
|
|
98
98
|
self.docs_url = docs_url
|
|
99
99
|
self.debug = debug
|
|
100
100
|
self.swagger_ui_version = swagger_ui_version
|
|
101
|
+
self.openapi_schema = None
|
|
101
102
|
class_prefix = getattr(self, "PREFIX", "")
|
|
102
103
|
self.prefix = normalize_prefix(prefix or class_prefix)
|
|
103
104
|
self.tags = list(_seqify(tags))
|
|
@@ -201,6 +202,7 @@ class Router(RouterBase):
|
|
|
201
202
|
self._runtime_plan_revision = int(current) + 1
|
|
202
203
|
except Exception:
|
|
203
204
|
self._runtime_plan_revision = 1
|
|
205
|
+
self.openapi_schema = None
|
|
204
206
|
kernels = []
|
|
205
207
|
runtime = getattr(self, "_runtime_instance", None)
|
|
206
208
|
kernel = getattr(runtime, "kernel", None)
|
|
@@ -255,10 +257,6 @@ class Router(RouterBase):
|
|
|
255
257
|
from tigrbl_concrete.system.docs.json_schema import _mount_json_schema
|
|
256
258
|
return _mount_json_schema(self, path=path)
|
|
257
259
|
|
|
258
|
-
def mount_asyncapi(self, *, path: str = "/asyncapi.json") -> Any:
|
|
259
|
-
from tigrbl_concrete.system.docs.asyncapi import _mount_asyncapi
|
|
260
|
-
return _mount_asyncapi(self, path=path)
|
|
261
|
-
|
|
262
260
|
def mount_static(self, *, directory: str | Path, path: str = "/static") -> Any:
|
|
263
261
|
from tigrbl_concrete.system.static import _mount_static
|
|
264
262
|
return _mount_static(self, directory=directory, path=path)
|
|
@@ -275,10 +273,6 @@ class Router(RouterBase):
|
|
|
275
273
|
from tigrbl_concrete.system.docs.json_schema import _build_json_schema_bundle
|
|
276
274
|
return _build_json_schema_bundle(self)
|
|
277
275
|
|
|
278
|
-
def build_asyncapi_spec(self) -> dict[str, Any]:
|
|
279
|
-
from tigrbl_concrete.system.docs.asyncapi import _build_asyncapi_spec
|
|
280
|
-
return _build_asyncapi_spec(self)
|
|
281
|
-
|
|
282
276
|
def websocket(self, path: str, **kwargs: Any) -> Callable[[Any], Any]:
|
|
283
277
|
def _decorator(handler: Any) -> Any:
|
|
284
278
|
from tigrbl_concrete.system.docs.runtime_ops import (
|