tigrbl 0.3.17.dev12__tar.gz → 0.3.17.dev15__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-0.3.17.dev12 → tigrbl-0.3.17.dev15}/PKG-INFO +18 -1
- {tigrbl-0.3.17.dev12 → tigrbl-0.3.17.dev15}/README.md +12 -0
- {tigrbl-0.3.17.dev12 → tigrbl-0.3.17.dev15}/pyproject.toml +13 -3
- tigrbl-0.3.17.dev15/tigrbl/__init__.py +333 -0
- tigrbl-0.3.17.dev15/tigrbl/config/__init__.py +3 -0
- tigrbl-0.3.17.dev15/tigrbl/config/constants.py +3 -0
- tigrbl-0.3.17.dev15/tigrbl/config/defaults.py +3 -0
- tigrbl-0.3.17.dev15/tigrbl/ddl/__init__.py +3 -0
- tigrbl-0.3.17.dev15/tigrbl/decorators/__init__.py +1 -0
- tigrbl-0.3.17.dev15/tigrbl/decorators/allow_anon.py +1 -0
- tigrbl-0.3.17.dev15/tigrbl/decorators/engine.py +1 -0
- tigrbl-0.3.17.dev15/tigrbl/decorators/hook.py +1 -0
- tigrbl-0.3.17.dev15/tigrbl/decorators/middlewares.py +1 -0
- tigrbl-0.3.17.dev15/tigrbl/decorators/op.py +1 -0
- tigrbl-0.3.17.dev15/tigrbl/decorators/response.py +1 -0
- tigrbl-0.3.17.dev15/tigrbl/decorators/rest.py +1 -0
- tigrbl-0.3.17.dev15/tigrbl/decorators/router.py +1 -0
- tigrbl-0.3.17.dev15/tigrbl/decorators/schema.py +1 -0
- tigrbl-0.3.17.dev15/tigrbl/decorators/session.py +1 -0
- tigrbl-0.3.17.dev15/tigrbl/engine/__init__.py +1 -0
- tigrbl-0.3.17.dev15/tigrbl/engine/bind.py +1 -0
- tigrbl-0.3.17.dev15/tigrbl/engine/builders.py +1 -0
- tigrbl-0.3.17.dev15/tigrbl/engine/capabilities.py +1 -0
- tigrbl-0.3.17.dev15/tigrbl/engine/collect.py +1 -0
- tigrbl-0.3.17.dev15/tigrbl/engine/plugins.py +1 -0
- tigrbl-0.3.17.dev15/tigrbl/engine/registry.py +1 -0
- {tigrbl-0.3.17.dev12 → tigrbl-0.3.17.dev15}/tigrbl/engine/resolver.py +2 -2
- tigrbl-0.3.17.dev15/tigrbl/hook/types.py +10 -0
- tigrbl-0.3.17.dev15/tigrbl/op/__init__.py +22 -0
- tigrbl-0.3.17.dev15/tigrbl/op/canonical.py +3 -0
- tigrbl-0.3.17.dev15/tigrbl/op/collect.py +3 -0
- tigrbl-0.3.17.dev15/tigrbl/op/types.py +3 -0
- tigrbl-0.3.17.dev15/tigrbl/schema/__init__.py +3 -0
- tigrbl-0.3.17.dev15/tigrbl/schema/builder/__init__.py +3 -0
- tigrbl-0.3.17.dev15/tigrbl/schema/builder/build_schema.py +3 -0
- tigrbl-0.3.17.dev15/tigrbl/schema/builder/cache.py +3 -0
- tigrbl-0.3.17.dev15/tigrbl/schema/builder/extras.py +3 -0
- tigrbl-0.3.17.dev15/tigrbl/schema/builder/helpers.py +3 -0
- tigrbl-0.3.17.dev15/tigrbl/schema/builder/list_params.py +3 -0
- tigrbl-0.3.17.dev15/tigrbl/schema/builder/strip_parent_fields.py +3 -0
- tigrbl-0.3.17.dev15/tigrbl/schema/utils.py +9 -0
- tigrbl-0.3.17.dev15/tigrbl/security/__init__.py +3 -0
- tigrbl-0.3.17.dev15/tigrbl/security/dependencies.py +3 -0
- tigrbl-0.3.17.dev15/tigrbl/shortcuts/app.py +3 -0
- {tigrbl-0.3.17.dev12 → tigrbl-0.3.17.dev15}/tigrbl/shortcuts/engine.py +19 -17
- {tigrbl-0.3.17.dev12 → tigrbl-0.3.17.dev15}/tigrbl/shortcuts/hook.py +1 -1
- {tigrbl-0.3.17.dev12 → tigrbl-0.3.17.dev15}/tigrbl/shortcuts/router.py +1 -1
- {tigrbl-0.3.17.dev12 → tigrbl-0.3.17.dev15}/tigrbl/shortcuts/schema.py +1 -1
- {tigrbl-0.3.17.dev12 → tigrbl-0.3.17.dev15}/tigrbl/specs.py +11 -3
- tigrbl-0.3.17.dev15/tigrbl/system/__init__.py +3 -0
- {tigrbl-0.3.17.dev12 → tigrbl-0.3.17.dev15}/tigrbl/system/diagnostics/healthz.py +6 -0
- {tigrbl-0.3.17.dev12 → tigrbl-0.3.17.dev15}/tigrbl/system/diagnostics/hookz.py +4 -4
- tigrbl-0.3.17.dev15/tigrbl/system/diagnostics/kernelz.py +57 -0
- {tigrbl-0.3.17.dev12 → tigrbl-0.3.17.dev15}/tigrbl/system/diagnostics/router.py +2 -2
- {tigrbl-0.3.17.dev12 → tigrbl-0.3.17.dev15}/tigrbl/system/diagnostics/utils.py +9 -1
- {tigrbl-0.3.17.dev12 → tigrbl-0.3.17.dev15}/tigrbl/system/docs/openapi/helpers.py +1 -1
- {tigrbl-0.3.17.dev12 → tigrbl-0.3.17.dev15}/tigrbl/system/docs/openapi/mount.py +1 -1
- {tigrbl-0.3.17.dev12 → tigrbl-0.3.17.dev15}/tigrbl/system/docs/openapi/schema.py +7 -9
- {tigrbl-0.3.17.dev12 → tigrbl-0.3.17.dev15}/tigrbl/system/docs/openrpc.py +15 -12
- tigrbl-0.3.17.dev15/tigrbl/transport/__init__.py +1 -0
- tigrbl-0.3.17.dev15/tigrbl/transport/jsonrpc/__init__.py +1 -0
- tigrbl-0.3.17.dev15/tigrbl/transport/jsonrpc/helpers.py +1 -0
- tigrbl-0.3.17.dev15/tigrbl/transport/jsonrpc/models.py +1 -0
- tigrbl-0.3.17.dev15/tigrbl/transport/rest/__init__.py +1 -0
- tigrbl-0.3.17.dev15/tigrbl/transport/rest/aggregator.py +1 -0
- tigrbl-0.3.17.dev15/tigrbl/types/__init__.py +35 -0
- {tigrbl-0.3.17.dev12 → tigrbl-0.3.17.dev15}/tigrbl/utils/schema.py +1 -1
- tigrbl-0.3.17.dev12/tigrbl/__init__.py +0 -222
- tigrbl-0.3.17.dev12/tigrbl/column/README.md +0 -62
- tigrbl-0.3.17.dev12/tigrbl/column/__init__.py +0 -23
- tigrbl-0.3.17.dev12/tigrbl/column/infer/__init__.py +0 -25
- tigrbl-0.3.17.dev12/tigrbl/column/infer/core.py +0 -92
- tigrbl-0.3.17.dev12/tigrbl/column/infer/jsonhints.py +0 -44
- tigrbl-0.3.17.dev12/tigrbl/column/infer/planning.py +0 -133
- tigrbl-0.3.17.dev12/tigrbl/column/infer/types.py +0 -102
- tigrbl-0.3.17.dev12/tigrbl/column/infer/utils.py +0 -59
- tigrbl-0.3.17.dev12/tigrbl/config/__init__.py +0 -19
- tigrbl-0.3.17.dev12/tigrbl/config/constants.py +0 -224
- tigrbl-0.3.17.dev12/tigrbl/config/defaults.py +0 -32
- tigrbl-0.3.17.dev12/tigrbl/ddl/__init__.py +0 -411
- tigrbl-0.3.17.dev12/tigrbl/decorators/__init__.py +0 -48
- tigrbl-0.3.17.dev12/tigrbl/decorators/engine.py +0 -110
- tigrbl-0.3.17.dev12/tigrbl/decorators/hook.py +0 -35
- tigrbl-0.3.17.dev12/tigrbl/decorators/middlewares.py +0 -32
- tigrbl-0.3.17.dev12/tigrbl/decorators/op.py +0 -254
- tigrbl-0.3.17.dev12/tigrbl/decorators/response.py +0 -45
- tigrbl-0.3.17.dev12/tigrbl/decorators/rest.py +0 -30
- tigrbl-0.3.17.dev12/tigrbl/decorators/router.py +0 -115
- tigrbl-0.3.17.dev12/tigrbl/decorators/schema.py +0 -67
- tigrbl-0.3.17.dev12/tigrbl/decorators/session.py +0 -43
- tigrbl-0.3.17.dev12/tigrbl/engine/__init__.py +0 -108
- tigrbl-0.3.17.dev12/tigrbl/engine/bind.py +0 -53
- tigrbl-0.3.17.dev12/tigrbl/engine/builders.py +0 -244
- tigrbl-0.3.17.dev12/tigrbl/engine/capabilities.py +0 -29
- tigrbl-0.3.17.dev12/tigrbl/engine/collect.py +0 -10
- tigrbl-0.3.17.dev12/tigrbl/engine/plugins.py +0 -52
- tigrbl-0.3.17.dev12/tigrbl/engine/registry.py +0 -36
- tigrbl-0.3.17.dev12/tigrbl/hook/types.py +0 -60
- tigrbl-0.3.17.dev12/tigrbl/op/__init__.py +0 -39
- tigrbl-0.3.17.dev12/tigrbl/op/canonical.py +0 -33
- tigrbl-0.3.17.dev12/tigrbl/op/collect.py +0 -20
- tigrbl-0.3.17.dev12/tigrbl/op/types.py +0 -55
- tigrbl-0.3.17.dev12/tigrbl/schema/__init__.py +0 -27
- tigrbl-0.3.17.dev12/tigrbl/schema/builder/__init__.py +0 -17
- tigrbl-0.3.17.dev12/tigrbl/schema/builder/build_schema.py +0 -308
- tigrbl-0.3.17.dev12/tigrbl/schema/builder/cache.py +0 -24
- tigrbl-0.3.17.dev12/tigrbl/schema/builder/extras.py +0 -85
- tigrbl-0.3.17.dev12/tigrbl/schema/builder/helpers.py +0 -87
- tigrbl-0.3.17.dev12/tigrbl/schema/builder/list_params.py +0 -117
- tigrbl-0.3.17.dev12/tigrbl/schema/builder/strip_parent_fields.py +0 -70
- tigrbl-0.3.17.dev12/tigrbl/schema/types.py +0 -34
- tigrbl-0.3.17.dev12/tigrbl/schema/utils.py +0 -142
- tigrbl-0.3.17.dev12/tigrbl/security/__init__.py +0 -5
- tigrbl-0.3.17.dev12/tigrbl/security/dependencies.py +0 -5
- tigrbl-0.3.17.dev12/tigrbl/shortcuts/app.py +0 -65
- tigrbl-0.3.17.dev12/tigrbl/system/__init__.py +0 -98
- tigrbl-0.3.17.dev12/tigrbl/system/diagnostics/kernelz.py +0 -20
- tigrbl-0.3.17.dev12/tigrbl/transport/__init__.py +0 -3
- tigrbl-0.3.17.dev12/tigrbl/transport/jsonrpc/__init__.py +0 -0
- tigrbl-0.3.17.dev12/tigrbl/transport/jsonrpc/helpers.py +0 -55
- tigrbl-0.3.17.dev12/tigrbl/transport/jsonrpc/models.py +0 -41
- tigrbl-0.3.17.dev12/tigrbl/transport/rest/__init__.py +0 -30
- tigrbl-0.3.17.dev12/tigrbl/transport/rest/aggregator.py +0 -118
- {tigrbl-0.3.17.dev12 → tigrbl-0.3.17.dev15}/LICENSE +0 -0
- {tigrbl-0.3.17.dev12 → tigrbl-0.3.17.dev15}/tigrbl/README.md +0 -0
- {tigrbl-0.3.17.dev12 → tigrbl-0.3.17.dev15}/tigrbl/docs/column_specs.md +0 -0
- {tigrbl-0.3.17.dev12 → tigrbl-0.3.17.dev15}/tigrbl/docs/session.md +0 -0
- {tigrbl-0.3.17.dev12 → tigrbl-0.3.17.dev15}/tigrbl/docs/verbosity.md +0 -0
- {tigrbl-0.3.17.dev12 → tigrbl-0.3.17.dev15}/tigrbl/engine/docs/PLUGINS.md +0 -0
- {tigrbl-0.3.17.dev12 → tigrbl-0.3.17.dev15}/tigrbl/hook/exceptions.py +0 -0
- {tigrbl-0.3.17.dev12 → tigrbl-0.3.17.dev15}/tigrbl/middlewares/__init__.py +0 -0
- {tigrbl-0.3.17.dev12 → tigrbl-0.3.17.dev15}/tigrbl/middlewares/compose.py +0 -0
- {tigrbl-0.3.17.dev12 → tigrbl-0.3.17.dev15}/tigrbl/requests.py +0 -0
- {tigrbl-0.3.17.dev12 → tigrbl-0.3.17.dev15}/tigrbl/rest/__init__.py +0 -0
- {tigrbl-0.3.17.dev12 → tigrbl-0.3.17.dev15}/tigrbl/shortcuts/__init__.py +0 -0
- {tigrbl-0.3.17.dev12 → tigrbl-0.3.17.dev15}/tigrbl/shortcuts/column.py +0 -0
- {tigrbl-0.3.17.dev12 → tigrbl-0.3.17.dev15}/tigrbl/shortcuts/op.py +0 -0
- {tigrbl-0.3.17.dev12 → tigrbl-0.3.17.dev15}/tigrbl/shortcuts/responses.py +0 -0
- {tigrbl-0.3.17.dev12 → tigrbl-0.3.17.dev15}/tigrbl/shortcuts/table.py +0 -0
- {tigrbl-0.3.17.dev12 → tigrbl-0.3.17.dev15}/tigrbl/system/diagnostics/__init__.py +0 -0
- {tigrbl-0.3.17.dev12 → tigrbl-0.3.17.dev15}/tigrbl/system/diagnostics/methodz.py +0 -0
- {tigrbl-0.3.17.dev12 → tigrbl-0.3.17.dev15}/tigrbl/system/docs/__init__.py +0 -0
- {tigrbl-0.3.17.dev12 → tigrbl-0.3.17.dev15}/tigrbl/system/docs/lens.py +0 -0
- {tigrbl-0.3.17.dev12 → tigrbl-0.3.17.dev15}/tigrbl/system/docs/openapi/__init__.py +0 -0
- {tigrbl-0.3.17.dev12 → tigrbl-0.3.17.dev15}/tigrbl/system/docs/openapi/metadata.py +0 -0
- {tigrbl-0.3.17.dev12 → tigrbl-0.3.17.dev15}/tigrbl/system/docs/swagger.py +0 -0
- {tigrbl-0.3.17.dev12 → tigrbl-0.3.17.dev15}/tigrbl/system/favicon/__init__.py +0 -0
- {tigrbl-0.3.17.dev12 → tigrbl-0.3.17.dev15}/tigrbl/system/favicon/assets/favicon.svg +0 -0
- {tigrbl-0.3.17.dev12 → tigrbl-0.3.17.dev15}/tigrbl/system/uvicorn.py +0 -0
- {tigrbl-0.3.17.dev12 → tigrbl-0.3.17.dev15}/tigrbl/utils/__init__.py +0 -0
- {tigrbl-0.3.17.dev12 → tigrbl-0.3.17.dev15}/tigrbl/vendor/__init__.py +0 -0
- {tigrbl-0.3.17.dev12 → tigrbl-0.3.17.dev15}/tigrbl/vendor/jinja.py +0 -0
- {tigrbl-0.3.17.dev12 → tigrbl-0.3.17.dev15}/tigrbl/vendor/pydantic.py +0 -0
- {tigrbl-0.3.17.dev12 → tigrbl-0.3.17.dev15}/tigrbl/vendor/sqlalchemy.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: tigrbl
|
|
3
|
-
Version: 0.3.17.
|
|
3
|
+
Version: 0.3.17.dev15
|
|
4
4
|
Summary: A modern pure ASGI/WSGI Python framework for building schema-first REST and JSON-RPC APIs with SQLAlchemy models, typed validation, lifecycle hooks, and engine extension support.
|
|
5
5
|
License-Expression: Apache-2.0
|
|
6
6
|
License-File: LICENSE
|
|
@@ -26,8 +26,13 @@ Requires-Dist: jinja2 (>=3.1.4) ; extra == "templates"
|
|
|
26
26
|
Requires-Dist: psycopg2-binary (>=2.9.9) ; extra == "postgres"
|
|
27
27
|
Requires-Dist: pydantic (>=2.0.0)
|
|
28
28
|
Requires-Dist: sqlalchemy (>=2.0)
|
|
29
|
+
Requires-Dist: tigrbl-atoms
|
|
30
|
+
Requires-Dist: tigrbl-base
|
|
29
31
|
Requires-Dist: tigrbl-canon
|
|
30
32
|
Requires-Dist: tigrbl-concrete
|
|
33
|
+
Requires-Dist: tigrbl-core
|
|
34
|
+
Requires-Dist: tigrbl-kernel
|
|
35
|
+
Requires-Dist: tigrbl-ops-oltp
|
|
31
36
|
Requires-Dist: tigrbl-orm
|
|
32
37
|
Requires-Dist: tigrbl-runtime
|
|
33
38
|
Requires-Dist: tigrbl-tests ; extra == "tests"
|
|
@@ -62,6 +67,18 @@ A high-leverage ASGI meta-framework that turns plain SQLAlchemy models into a fu
|
|
|
62
67
|
- 🧩 Pluggable engine and provider abstractions
|
|
63
68
|
- 🚀 Built as an ASGI-native framework with Pydantic-powered schema generation
|
|
64
69
|
|
|
70
|
+
## Split Package Module Locations 🗂️
|
|
71
|
+
|
|
72
|
+
These surfaces are now maintained in the split Tigrbl packages (with `tigrbl.*`
|
|
73
|
+
kept as compatibility imports):
|
|
74
|
+
|
|
75
|
+
- `tigrbl.ddl` → `tigrbl_concrete.ddl`
|
|
76
|
+
- `tigrbl.system` → `tigrbl_concrete.system`
|
|
77
|
+
- `tigrbl.op` → `tigrbl_core.op`
|
|
78
|
+
- `tigrbl.config` → `tigrbl_core.config`
|
|
79
|
+
- `tigrbl.schema` → `tigrbl_core.schema`
|
|
80
|
+
- `tigrbl.security` → `tigrbl_concrete.security`
|
|
81
|
+
|
|
65
82
|
## Runtime-owned Routing Contract
|
|
66
83
|
|
|
67
84
|
For the kernel-first flow that avoids pre-runtime REST/RPC dispatching, see
|
|
@@ -26,6 +26,18 @@ A high-leverage ASGI meta-framework that turns plain SQLAlchemy models into a fu
|
|
|
26
26
|
- 🧩 Pluggable engine and provider abstractions
|
|
27
27
|
- 🚀 Built as an ASGI-native framework with Pydantic-powered schema generation
|
|
28
28
|
|
|
29
|
+
## Split Package Module Locations 🗂️
|
|
30
|
+
|
|
31
|
+
These surfaces are now maintained in the split Tigrbl packages (with `tigrbl.*`
|
|
32
|
+
kept as compatibility imports):
|
|
33
|
+
|
|
34
|
+
- `tigrbl.ddl` → `tigrbl_concrete.ddl`
|
|
35
|
+
- `tigrbl.system` → `tigrbl_concrete.system`
|
|
36
|
+
- `tigrbl.op` → `tigrbl_core.op`
|
|
37
|
+
- `tigrbl.config` → `tigrbl_core.config`
|
|
38
|
+
- `tigrbl.schema` → `tigrbl_core.schema`
|
|
39
|
+
- `tigrbl.security` → `tigrbl_concrete.security`
|
|
40
|
+
|
|
29
41
|
## Runtime-owned Routing Contract
|
|
30
42
|
|
|
31
43
|
For the kernel-first flow that avoids pre-runtime REST/RPC dispatching, see
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "tigrbl"
|
|
3
|
-
version = "0.3.17.
|
|
3
|
+
version = "0.3.17.dev15"
|
|
4
4
|
description = "A modern pure ASGI/WSGI Python framework for building schema-first REST and JSON-RPC APIs with SQLAlchemy models, typed validation, lifecycle hooks, and engine extension support."
|
|
5
5
|
license = "Apache-2.0"
|
|
6
6
|
readme = "README.md"
|
|
@@ -18,10 +18,15 @@ classifiers = [
|
|
|
18
18
|
]
|
|
19
19
|
authors = [{ name = "Jacob Stewart", email = "jacob@swarmauri.com" }]
|
|
20
20
|
dependencies = [
|
|
21
|
+
"tigrbl-core",
|
|
22
|
+
"tigrbl-base",
|
|
21
23
|
"tigrbl-concrete",
|
|
22
24
|
"tigrbl-canon",
|
|
23
|
-
"tigrbl-runtime",
|
|
24
25
|
"tigrbl-orm",
|
|
26
|
+
"tigrbl-runtime",
|
|
27
|
+
"tigrbl-atoms",
|
|
28
|
+
"tigrbl-kernel",
|
|
29
|
+
"tigrbl-ops-oltp",
|
|
25
30
|
"pydantic>=2.0.0",
|
|
26
31
|
"sqlalchemy>=2.0",
|
|
27
32
|
"aiosqlite>=0.19.0",
|
|
@@ -44,10 +49,15 @@ tests = [
|
|
|
44
49
|
]
|
|
45
50
|
|
|
46
51
|
[tool.uv.sources]
|
|
52
|
+
"tigrbl-core" = { workspace = true }
|
|
53
|
+
"tigrbl-base" = { workspace = true }
|
|
47
54
|
"tigrbl-concrete" = { workspace = true }
|
|
48
55
|
"tigrbl-canon" = { workspace = true }
|
|
49
|
-
"tigrbl-runtime" = { workspace = true }
|
|
50
56
|
"tigrbl-orm" = { workspace = true }
|
|
57
|
+
"tigrbl-runtime" = { workspace = true }
|
|
58
|
+
"tigrbl-atoms" = { workspace = true }
|
|
59
|
+
"tigrbl-kernel" = { workspace = true }
|
|
60
|
+
"tigrbl-ops-oltp" = { workspace = true }
|
|
51
61
|
tigrbl-tests = { workspace = true }
|
|
52
62
|
tigrbl_client = { workspace = true }
|
|
53
63
|
|
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
"""Tigrbl public API facade over split core packages."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from importlib import import_module
|
|
6
|
+
from pkgutil import extend_path
|
|
7
|
+
import sys
|
|
8
|
+
|
|
9
|
+
__path__ = extend_path(__path__, __name__)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
# Compatibility aliases so legacy ``tigrbl.<segment>`` imports resolve to
|
|
13
|
+
# the new split packages.
|
|
14
|
+
_ALIAS_MODULES = {
|
|
15
|
+
"_spec": "tigrbl_core._spec",
|
|
16
|
+
"_base": "tigrbl_base._base",
|
|
17
|
+
"_concrete": "tigrbl_concrete._concrete",
|
|
18
|
+
"core": "tigrbl_ops_oltp",
|
|
19
|
+
"orm": "tigrbl_orm.orm",
|
|
20
|
+
"runtime": "tigrbl_runtime.runtime",
|
|
21
|
+
"executors": "tigrbl_runtime.executors",
|
|
22
|
+
"atoms": "tigrbl_atoms.atoms",
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def _optional_import(path: str):
|
|
27
|
+
try:
|
|
28
|
+
return import_module(path)
|
|
29
|
+
except ImportError:
|
|
30
|
+
return None
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def _install_alias(alias: str, target: str) -> None:
|
|
34
|
+
module = _optional_import(target)
|
|
35
|
+
if module is None:
|
|
36
|
+
return
|
|
37
|
+
|
|
38
|
+
alias_name = f"{__name__}.{alias}"
|
|
39
|
+
sys.modules.setdefault(alias_name, module)
|
|
40
|
+
|
|
41
|
+
target_prefix = f"{target}."
|
|
42
|
+
alias_prefix = f"{alias_name}."
|
|
43
|
+
for name, loaded in tuple(sys.modules.items()):
|
|
44
|
+
if name.startswith(target_prefix):
|
|
45
|
+
suffix = name[len(target_prefix) :]
|
|
46
|
+
sys.modules.setdefault(f"{alias_prefix}{suffix}", loaded)
|
|
47
|
+
|
|
48
|
+
module_path = getattr(module, "__path__", None)
|
|
49
|
+
if not module_path:
|
|
50
|
+
return
|
|
51
|
+
|
|
52
|
+
from pkgutil import walk_packages
|
|
53
|
+
|
|
54
|
+
for info in walk_packages(module_path, target_prefix):
|
|
55
|
+
submodule = _optional_import(info.name)
|
|
56
|
+
if submodule is None:
|
|
57
|
+
continue
|
|
58
|
+
suffix = info.name[len(target_prefix) :]
|
|
59
|
+
sys.modules.setdefault(f"{alias_prefix}{suffix}", submodule)
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
for alias, target in _ALIAS_MODULES.items():
|
|
63
|
+
_install_alias(alias, target)
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
_spec = import_module("tigrbl_core._spec")
|
|
67
|
+
_base = import_module("tigrbl_base._base")
|
|
68
|
+
_concrete = import_module("tigrbl_concrete._concrete")
|
|
69
|
+
canon = None
|
|
70
|
+
orm = import_module("tigrbl_orm.orm")
|
|
71
|
+
runtime = _optional_import("tigrbl_runtime.runtime")
|
|
72
|
+
atoms = _optional_import("tigrbl_atoms.atoms")
|
|
73
|
+
kernel = None
|
|
74
|
+
core = _optional_import("tigrbl_ops_oltp")
|
|
75
|
+
|
|
76
|
+
# Backward-compatible names requested for top-level facade access.
|
|
77
|
+
specs = _spec
|
|
78
|
+
base = _base
|
|
79
|
+
concrete = _concrete
|
|
80
|
+
|
|
81
|
+
from tigrbl_concrete._concrete import ( # noqa: E402
|
|
82
|
+
APIKey,
|
|
83
|
+
Alias,
|
|
84
|
+
App,
|
|
85
|
+
BackgroundTask,
|
|
86
|
+
Column,
|
|
87
|
+
FileResponse,
|
|
88
|
+
ForeignKey,
|
|
89
|
+
Hook,
|
|
90
|
+
HTMLResponse,
|
|
91
|
+
HTTPBearer,
|
|
92
|
+
JSONResponse,
|
|
93
|
+
MutualTLS,
|
|
94
|
+
OAuth2,
|
|
95
|
+
OpenIdConnect,
|
|
96
|
+
Op,
|
|
97
|
+
PlainTextResponse,
|
|
98
|
+
RedirectResponse,
|
|
99
|
+
Request,
|
|
100
|
+
Response,
|
|
101
|
+
Route,
|
|
102
|
+
Router,
|
|
103
|
+
Schema,
|
|
104
|
+
StorageTransform,
|
|
105
|
+
StreamingResponse,
|
|
106
|
+
Table,
|
|
107
|
+
TableRegistry,
|
|
108
|
+
TigrblApp,
|
|
109
|
+
TigrblRouter,
|
|
110
|
+
)
|
|
111
|
+
from tigrbl_concrete._concrete.dependencies import Depends # noqa: E402
|
|
112
|
+
from tigrbl_runtime.runtime.status.exceptions import HTTPException # noqa: E402
|
|
113
|
+
from tigrbl.engine import resolver # noqa: E402
|
|
114
|
+
from tigrbl.system import mount_diagnostics # noqa: E402
|
|
115
|
+
from tigrbl_core.config.constants import DEFAULT_HTTP_METHODS, HOOK_DECLS_ATTR # noqa: E402
|
|
116
|
+
from tigrbl.decorators import ( # noqa: E402
|
|
117
|
+
alias,
|
|
118
|
+
allow_anon,
|
|
119
|
+
alias_ctx,
|
|
120
|
+
engine_ctx,
|
|
121
|
+
hook_ctx,
|
|
122
|
+
middleware,
|
|
123
|
+
middlewares,
|
|
124
|
+
op_alias,
|
|
125
|
+
op_ctx,
|
|
126
|
+
response_ctx,
|
|
127
|
+
route_ctx,
|
|
128
|
+
schema_ctx,
|
|
129
|
+
)
|
|
130
|
+
from tigrbl.shortcuts.op import op # noqa: E402
|
|
131
|
+
from tigrbl.schema import _build_list_params, _build_schema, get_schema # noqa: E402
|
|
132
|
+
from tigrbl.ddl import bootstrap_dbschema, ensure_schemas, register_sqlite_attach # noqa: E402
|
|
133
|
+
|
|
134
|
+
from tigrbl_base._base import ( # noqa: E402
|
|
135
|
+
AppBase,
|
|
136
|
+
ForeignKeyBase,
|
|
137
|
+
HookBase,
|
|
138
|
+
RouterBase,
|
|
139
|
+
TableBase,
|
|
140
|
+
TableRegistryBase,
|
|
141
|
+
)
|
|
142
|
+
from tigrbl_core._spec import ( # noqa: E402
|
|
143
|
+
AppSpec,
|
|
144
|
+
Arity,
|
|
145
|
+
ColumnSpec,
|
|
146
|
+
EngineSpec,
|
|
147
|
+
FieldSpec,
|
|
148
|
+
ForeignKeySpec,
|
|
149
|
+
HookPhase,
|
|
150
|
+
IOSpec,
|
|
151
|
+
OpSpec,
|
|
152
|
+
PersistPolicy,
|
|
153
|
+
PHASE,
|
|
154
|
+
PHASES,
|
|
155
|
+
RequestSpec,
|
|
156
|
+
ResponseSpec,
|
|
157
|
+
RouterSpec,
|
|
158
|
+
SchemaArg,
|
|
159
|
+
SchemaRef,
|
|
160
|
+
SchemaSpec,
|
|
161
|
+
SessionSpec,
|
|
162
|
+
StorageSpec,
|
|
163
|
+
StorageTransformSpec,
|
|
164
|
+
TableRegistrySpec,
|
|
165
|
+
TableSpec,
|
|
166
|
+
TargetOp,
|
|
167
|
+
TemplateSpec,
|
|
168
|
+
)
|
|
169
|
+
from tigrbl_runtime.runtime.executor import _invoke # noqa: E402
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
def bind(*args, **kwargs):
|
|
173
|
+
return import_module("tigrbl_concrete._mapping.model").bind(*args, **kwargs)
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
def rebind(*args, **kwargs):
|
|
177
|
+
return import_module("tigrbl_concrete._mapping.model").rebind(*args, **kwargs)
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
def build_schemas(*args, **kwargs):
|
|
181
|
+
return import_module("tigrbl_concrete._mapping.model")._materialize_schemas(
|
|
182
|
+
*args, **kwargs
|
|
183
|
+
)
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
def build_hooks(*args, **kwargs):
|
|
187
|
+
return import_module("tigrbl_concrete._mapping.model")._bind_model_hooks(
|
|
188
|
+
*args, **kwargs
|
|
189
|
+
)
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
def build_handlers(*args, **kwargs):
|
|
193
|
+
mod = import_module("tigrbl_concrete._mapping.model")
|
|
194
|
+
specs = mod._materialize_handlers(*args, **kwargs)
|
|
195
|
+
model = args[0] if args else kwargs.get("model")
|
|
196
|
+
spec_arg = args[1] if len(args) > 1 else kwargs.get("specs", ())
|
|
197
|
+
spec_tuple = tuple(spec_arg or ())
|
|
198
|
+
if model is not None:
|
|
199
|
+
mod._bind_model_hooks(model, spec_tuple)
|
|
200
|
+
return specs
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
def register_rpc(*args, **kwargs):
|
|
204
|
+
return import_module("tigrbl_base._base._rpc_map").register_and_attach(
|
|
205
|
+
*args, **kwargs
|
|
206
|
+
)
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
def build_rest(*args, **kwargs):
|
|
210
|
+
if "router" not in kwargs:
|
|
211
|
+
kwargs["router"] = None
|
|
212
|
+
return import_module("tigrbl_concrete._mapping.model")._materialize_rest_router(
|
|
213
|
+
*args, **kwargs
|
|
214
|
+
)
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
def include_tables(*args, **kwargs):
|
|
218
|
+
return import_module("tigrbl_concrete._mapping.router.include").include_tables(
|
|
219
|
+
*args, **kwargs
|
|
220
|
+
)
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
async def rpc_call(*args, **kwargs):
|
|
224
|
+
return await import_module("tigrbl_concrete._mapping.router.rpc").rpc_call(
|
|
225
|
+
*args, **kwargs
|
|
226
|
+
)
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
__all__ = [
|
|
230
|
+
"specs",
|
|
231
|
+
"base",
|
|
232
|
+
"concrete",
|
|
233
|
+
"canon",
|
|
234
|
+
"orm",
|
|
235
|
+
"runtime",
|
|
236
|
+
"atoms",
|
|
237
|
+
"kernel",
|
|
238
|
+
"core",
|
|
239
|
+
"TigrblApp",
|
|
240
|
+
"TigrblRouter",
|
|
241
|
+
"Router",
|
|
242
|
+
"Depends",
|
|
243
|
+
"HTTPException",
|
|
244
|
+
"TableBase",
|
|
245
|
+
"RouterBase",
|
|
246
|
+
"Op",
|
|
247
|
+
"op",
|
|
248
|
+
"HTTPBearer",
|
|
249
|
+
"APIKey",
|
|
250
|
+
"OAuth2",
|
|
251
|
+
"OpenIdConnect",
|
|
252
|
+
"MutualTLS",
|
|
253
|
+
"OpSpec",
|
|
254
|
+
"TargetOp",
|
|
255
|
+
"Arity",
|
|
256
|
+
"PersistPolicy",
|
|
257
|
+
"PHASE",
|
|
258
|
+
"PHASES",
|
|
259
|
+
"HookPhase",
|
|
260
|
+
"SchemaRef",
|
|
261
|
+
"SchemaArg",
|
|
262
|
+
"alias_ctx",
|
|
263
|
+
"op_ctx",
|
|
264
|
+
"route_ctx",
|
|
265
|
+
"hook_ctx",
|
|
266
|
+
"schema_ctx",
|
|
267
|
+
"response_ctx",
|
|
268
|
+
"alias",
|
|
269
|
+
"allow_anon",
|
|
270
|
+
"Alias",
|
|
271
|
+
"op_alias",
|
|
272
|
+
"engine_ctx",
|
|
273
|
+
"ResponseSpec",
|
|
274
|
+
"bind",
|
|
275
|
+
"rebind",
|
|
276
|
+
"build_schemas",
|
|
277
|
+
"build_hooks",
|
|
278
|
+
"build_handlers",
|
|
279
|
+
"register_rpc",
|
|
280
|
+
"build_rest",
|
|
281
|
+
"include_tables",
|
|
282
|
+
"rpc_call",
|
|
283
|
+
"_invoke",
|
|
284
|
+
"_build_schema",
|
|
285
|
+
"_build_list_params",
|
|
286
|
+
"get_schema",
|
|
287
|
+
"mount_diagnostics",
|
|
288
|
+
"ensure_schemas",
|
|
289
|
+
"register_sqlite_attach",
|
|
290
|
+
"bootstrap_dbschema",
|
|
291
|
+
"DEFAULT_HTTP_METHODS",
|
|
292
|
+
"Request",
|
|
293
|
+
"Response",
|
|
294
|
+
"JSONResponse",
|
|
295
|
+
"BackgroundTask",
|
|
296
|
+
"resolver",
|
|
297
|
+
"AppSpec",
|
|
298
|
+
"RouterSpec",
|
|
299
|
+
"TableSpec",
|
|
300
|
+
"TableRegistrySpec",
|
|
301
|
+
"ColumnSpec",
|
|
302
|
+
"FieldSpec",
|
|
303
|
+
"IOSpec",
|
|
304
|
+
"StorageSpec",
|
|
305
|
+
"StorageTransform",
|
|
306
|
+
"StorageTransformSpec",
|
|
307
|
+
"ForeignKeySpec",
|
|
308
|
+
"RequestSpec",
|
|
309
|
+
"SchemaSpec",
|
|
310
|
+
"SessionSpec",
|
|
311
|
+
"EngineSpec",
|
|
312
|
+
"TemplateSpec",
|
|
313
|
+
"ForeignKeyBase",
|
|
314
|
+
"HookBase",
|
|
315
|
+
"TableRegistryBase",
|
|
316
|
+
"AppBase",
|
|
317
|
+
"App",
|
|
318
|
+
"Table",
|
|
319
|
+
"Column",
|
|
320
|
+
"Route",
|
|
321
|
+
"Schema",
|
|
322
|
+
"Hook",
|
|
323
|
+
"ForeignKey",
|
|
324
|
+
"TableRegistry",
|
|
325
|
+
"HOOK_DECLS_ATTR",
|
|
326
|
+
"middleware",
|
|
327
|
+
"middlewares",
|
|
328
|
+
"FileResponse",
|
|
329
|
+
"HTMLResponse",
|
|
330
|
+
"PlainTextResponse",
|
|
331
|
+
"StreamingResponse",
|
|
332
|
+
"RedirectResponse",
|
|
333
|
+
]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from tigrbl_concrete._decorators import * # noqa: F401,F403
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from tigrbl_concrete._decorators.allow_anon import * # noqa: F401,F403
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from tigrbl_concrete._decorators.engine import * # noqa: F401,F403
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from tigrbl_concrete._decorators.hook import * # noqa: F401,F403
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from tigrbl_concrete._decorators.middlewares import * # noqa: F401,F403
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from tigrbl_concrete._decorators.op import * # noqa: F401,F403
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from tigrbl_concrete._decorators.response import * # noqa: F401,F403
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from tigrbl_concrete._decorators.rest import * # noqa: F401,F403
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from tigrbl_concrete._decorators.router import * # noqa: F401,F403
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from tigrbl_concrete._decorators.schema import * # noqa: F401,F403
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from tigrbl_concrete._decorators.session import * # noqa: F401,F403
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from tigrbl_concrete.engine import * # noqa: F401,F403
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from tigrbl_concrete.engine.bind import * # noqa: F401,F403
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from tigrbl_concrete.engine.builders import * # noqa: F401,F403
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from tigrbl_concrete.engine.capabilities import * # noqa: F401,F403
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from tigrbl_concrete.engine.collect import * # noqa: F401,F403
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from tigrbl_concrete.engine.plugins import * # noqa: F401,F403
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from tigrbl_concrete.engine.registry import * # noqa: F401,F403
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""Backward-compatible engine resolver exports."""
|
|
2
2
|
|
|
3
|
-
from
|
|
4
|
-
from
|
|
3
|
+
from tigrbl_concrete.engine.resolver import * # noqa: F401,F403
|
|
4
|
+
from tigrbl_concrete._concrete import engine_resolver as _engine_resolver
|
|
5
5
|
|
|
6
6
|
_SECRET_KEYS = _engine_resolver._SECRET_KEYS
|
|
7
7
|
_hash_secret = _engine_resolver._hash_secret
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"""Hook type definitions exposed without importing runtime package internals."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from tigrbl_atoms import HookPhase, HookPhases, HookPredicate, StepFn
|
|
6
|
+
|
|
7
|
+
PHASE = HookPhase
|
|
8
|
+
PHASES = tuple(h.value for h in HookPhases)
|
|
9
|
+
|
|
10
|
+
__all__ = ["HookPhase", "HookPhases", "PHASE", "PHASES", "StepFn", "HookPredicate"]
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"""Compatibility facade for op APIs across split tigrbl packages."""
|
|
2
|
+
|
|
3
|
+
import tigrbl_core.op as _core_op
|
|
4
|
+
from tigrbl_core.op import * # noqa: F403
|
|
5
|
+
from tigrbl_core._spec.op_spec import resolve
|
|
6
|
+
from tigrbl_concrete._concrete._op_registry import (
|
|
7
|
+
OpspecRegistry,
|
|
8
|
+
clear_registry,
|
|
9
|
+
get_registered_ops,
|
|
10
|
+
get_registry,
|
|
11
|
+
register_ops,
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
__all__ = [
|
|
15
|
+
*_core_op.__all__,
|
|
16
|
+
"OpspecRegistry",
|
|
17
|
+
"get_registry",
|
|
18
|
+
"register_ops",
|
|
19
|
+
"get_registered_ops",
|
|
20
|
+
"clear_registry",
|
|
21
|
+
"resolve",
|
|
22
|
+
]
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"""Compatibility shim for relocated schema utilities."""
|
|
2
|
+
|
|
3
|
+
from tigrbl_core.schema.utils import * # noqa: F403
|
|
4
|
+
from tigrbl_core.schema.utils import logger
|
|
5
|
+
|
|
6
|
+
__all__ = [
|
|
7
|
+
"logger",
|
|
8
|
+
*[name for name in globals() if not name.startswith("_") and name != "__all__"],
|
|
9
|
+
]
|