tigrbl-concrete 0.4.2.dev3__tar.gz → 0.4.3.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.
Files changed (143) hide show
  1. tigrbl_concrete-0.4.3.dev4/NOTICE +7 -0
  2. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/PKG-INFO +204 -28
  3. tigrbl_concrete-0.4.3.dev4/README.md +251 -0
  4. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/pyproject.toml +1 -1
  5. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_concrete/__init__.py +28 -0
  6. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_concrete/_router.py +6 -0
  7. tigrbl_concrete-0.4.3.dev4/tigrbl_concrete/_concrete/_rust_backend.py +36 -0
  8. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_concrete/_security/api_key.py +2 -2
  9. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_concrete/_security/http_basic.py +2 -2
  10. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_concrete/_security/http_bearer.py +2 -2
  11. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_concrete/_streaming_response.py +1 -1
  12. tigrbl_concrete-0.4.3.dev4/tigrbl_concrete/_concrete/_table.py +257 -0
  13. tigrbl_concrete-0.4.3.dev4/tigrbl_concrete/_concrete/_webhook.py +31 -0
  14. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_concrete/dependencies.py +2 -0
  15. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_concrete/tigrbl_app.py +24 -4
  16. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_concrete/tigrbl_router.py +3 -1
  17. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_decorators/__init__.py +5 -0
  18. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_decorators/hook.py +1 -1
  19. tigrbl_concrete-0.4.3.dev4/tigrbl_concrete/_decorators/webhook.py +46 -0
  20. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_mapping/appspec/__init__.py +6 -1
  21. tigrbl_concrete-0.4.3.dev4/tigrbl_concrete/_mapping/appspec/engine_lowering.py +260 -0
  22. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_mapping/appspec/path_lowering.py +14 -1
  23. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_mapping/core_resolver.py +2 -2
  24. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_mapping/model.py +5 -4
  25. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_mapping/router/include.py +1 -1
  26. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_mapping/router/resource_proxy.py +1 -8
  27. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_mapping/router/rpc.py +1 -1
  28. tigrbl_concrete-0.4.3.dev4/tigrbl_concrete/factories/__init__.py +4 -0
  29. tigrbl_concrete-0.4.3.dev4/tigrbl_concrete/factories/webhook.py +81 -0
  30. tigrbl_concrete-0.4.3.dev4/tigrbl_concrete/schema/__init__.py +5 -0
  31. tigrbl_concrete-0.4.3.dev4/tigrbl_concrete/schema/jsonrpc.py +108 -0
  32. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/shortcuts/__init__.py +1 -0
  33. tigrbl_concrete-0.4.3.dev4/tigrbl_concrete/shortcuts/webhook.py +13 -0
  34. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/system/__init__.py +25 -0
  35. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/system/diagnostics/__init__.py +0 -3
  36. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/system/diagnostics/kernelz.py +9 -5
  37. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/system/diagnostics/methodz.py +2 -0
  38. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/system/diagnostics/router.py +10 -5
  39. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/system/diagnostics/utils.py +6 -7
  40. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/system/docs/openapi/schema.py +1 -1
  41. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/system/static.py +10 -2
  42. tigrbl_concrete-0.4.3.dev4/tigrbl_concrete/system/well_known.py +119 -0
  43. tigrbl_concrete-0.4.3.dev4/tigrbl_concrete/transport/_deprecation.py +37 -0
  44. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/transport/jsonrpc/helpers.py +7 -1
  45. tigrbl_concrete-0.4.3.dev4/tigrbl_concrete/transport/jsonrpc/models.py +9 -0
  46. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/transport/rest/aggregator.py +6 -0
  47. tigrbl_concrete-0.4.3.dev4/tigrbl_concrete/webhooks.py +13 -0
  48. tigrbl_concrete-0.4.2.dev3/README.md +0 -76
  49. tigrbl_concrete-0.4.2.dev3/tigrbl_concrete/_concrete/_rust_backend.py +0 -28
  50. tigrbl_concrete-0.4.2.dev3/tigrbl_concrete/_concrete/_table.py +0 -108
  51. tigrbl_concrete-0.4.2.dev3/tigrbl_concrete/_mapping/appspec/engine_lowering.py +0 -38
  52. tigrbl_concrete-0.4.2.dev3/tigrbl_concrete/factories/__init__.py +0 -3
  53. tigrbl_concrete-0.4.2.dev3/tigrbl_concrete/transport/jsonrpc/models.py +0 -41
  54. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/LICENSE +0 -0
  55. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/__init__.py +0 -0
  56. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_concrete/_alias.py +0 -0
  57. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_concrete/_allow_anon.py +0 -0
  58. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_concrete/_app.py +0 -0
  59. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_concrete/_background.py +0 -0
  60. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_concrete/_binding.py +0 -0
  61. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_concrete/_body.py +0 -0
  62. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_concrete/_column.py +0 -0
  63. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_concrete/_cors_middleware.py +0 -0
  64. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_concrete/_engine.py +0 -0
  65. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_concrete/_event_stream_response.py +0 -0
  66. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_concrete/_file_response.py +0 -0
  67. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_concrete/_headers.py +0 -0
  68. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_concrete/_hook.py +0 -0
  69. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_concrete/_html_response.py +0 -0
  70. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_concrete/_httpx.py +0 -0
  71. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_concrete/_json_response.py +0 -0
  72. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_concrete/_middleware.py +0 -0
  73. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_concrete/_op.py +0 -0
  74. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_concrete/_op_registry.py +0 -0
  75. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_concrete/_plain_text_response.py +0 -0
  76. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_concrete/_redirect_response.py +0 -0
  77. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_concrete/_request.py +0 -0
  78. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_concrete/_request_adapters.py +0 -0
  79. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_concrete/_response.py +0 -0
  80. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_concrete/_route.py +0 -0
  81. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_concrete/_schema.py +0 -0
  82. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_concrete/_security/__init__.py +0 -0
  83. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_concrete/_security/mutual_tls.py +0 -0
  84. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_concrete/_security/oauth2.py +0 -0
  85. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_concrete/_security/openid_connect.py +0 -0
  86. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_concrete/_session.py +0 -0
  87. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_concrete/_storage.py +0 -0
  88. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_concrete/_table_registry.py +0 -0
  89. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_concrete/_websocket.py +0 -0
  90. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_concrete/engine_resolver.py +0 -0
  91. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_decorators/allow_anon.py +0 -0
  92. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_decorators/engine.py +0 -0
  93. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_decorators/eventful.py +0 -0
  94. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_decorators/middlewares.py +0 -0
  95. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_decorators/op.py +0 -0
  96. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_decorators/response.py +0 -0
  97. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_decorators/rest.py +0 -0
  98. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_decorators/schema.py +0 -0
  99. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_decorators/session.py +0 -0
  100. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_mapping/__init__.py +0 -0
  101. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_mapping/appspec/docs_lowering.py +0 -0
  102. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_mapping/column_mro_collect.py +0 -0
  103. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_mapping/model_helpers.py +0 -0
  104. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_mapping/op_resolver.py +0 -0
  105. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_mapping/router/__init__.py +0 -0
  106. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_mapping/router/common.py +0 -0
  107. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/_mapping/rpc.py +0 -0
  108. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/ddl/__init__.py +0 -0
  109. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/decorators.py +0 -0
  110. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/engine/__init__.py +0 -0
  111. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/engine/bind.py +0 -0
  112. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/engine/builders.py +0 -0
  113. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/engine/capabilities.py +0 -0
  114. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/engine/collect.py +0 -0
  115. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/engine/plugins.py +0 -0
  116. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/engine/registry.py +0 -0
  117. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/engine/resolver.py +0 -0
  118. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/factories/app.py +0 -0
  119. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/resolve/__init__.py +0 -0
  120. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/resolve/handlers.py +0 -0
  121. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/security/__init__.py +0 -0
  122. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/security/dependencies.py +0 -0
  123. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/shortcuts/app.py +0 -0
  124. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/shortcuts/rest.py +0 -0
  125. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/system/diagnostics/healthz.py +0 -0
  126. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/system/diagnostics/hookz.py +0 -0
  127. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/system/docs/__init__.py +0 -0
  128. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/system/docs/json_schema.py +0 -0
  129. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/system/docs/lens.py +0 -0
  130. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/system/docs/openapi/__init__.py +0 -0
  131. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/system/docs/openapi/helpers.py +0 -0
  132. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/system/docs/openapi/metadata.py +0 -0
  133. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/system/docs/openapi/mount.py +0 -0
  134. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/system/docs/openrpc.py +0 -0
  135. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/system/docs/runtime_ops.py +0 -0
  136. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/system/docs/surface.py +0 -0
  137. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/system/docs/swagger.py +0 -0
  138. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/system/favicon/__init__.py +0 -0
  139. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/system/favicon/assets/favicon.svg +0 -0
  140. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/system/uvicorn.py +0 -0
  141. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/transport/__init__.py +0 -0
  142. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/transport/jsonrpc/__init__.py +0 -0
  143. {tigrbl_concrete-0.4.2.dev3 → tigrbl_concrete-0.4.3.dev4}/tigrbl_concrete/transport/rest/__init__.py +0 -0
@@ -0,0 +1,7 @@
1
+ Tigrbl
2
+ Copyright 2026 Swarmauri
3
+
4
+ This product includes software developed by Swarmauri.
5
+
6
+ Tigrbl is licensed under the Apache License, Version 2.0.
7
+ See the LICENSE file distributed with this work for the full license text.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tigrbl-concrete
3
- Version: 0.4.2.dev3
3
+ Version: 0.4.3.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
@@ -249,12 +250,45 @@ Description-Content-Type: text/markdown
249
250
  <p><strong>Concrete Tigrbl implementations for reusable framework behavior, sessions, routes, responses, and base abstraction adapters.</strong></p>
250
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>
251
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>
252
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>
253
255
  <a href="LICENSE"><img src="https://img.shields.io/badge/license-Apache%202.0-525252" alt="Apache 2.0 license"/></a>
254
- <a href="pyproject.toml"><img src="https://img.shields.io/badge/python-3.10%20to%203.15-3776ab" alt="Python requirement for tigrbl-concrete"/></a>
256
+ <a href="pyproject.toml"><img src="https://img.shields.io/badge/python-3.10%2C%203.11%2C%203.12%2C%203.13%2C%203.14-3776ab" alt="Python versions 3.10 | 3.11 | 3.12 | 3.13 | 3.14 for tigrbl-concrete"/></a>
255
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>
256
258
  </div>
257
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.
291
+
258
292
  ## Install
259
293
 
260
294
  ```bash
@@ -265,34 +299,167 @@ uv add tigrbl-concrete
265
299
  pip install tigrbl-concrete
266
300
  ```
267
301
 
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
+
268
315
  ## What It Owns
269
316
 
270
- `tigrbl-concrete` owns the concrete boundary inside the split Python workspace. Key implementation roots include `tigrbl_concrete` with `_concrete/, _decorators/, _mapping/, ddl/, decorators, engine/`.
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/
271
321
 
272
- ## Use It When
322
+ Package catalog:
323
+ - `tigrbl_concrete/_concrete/`: concrete app, router, route, table, column, operation, schema, request, response, headers, body, middleware, background, storage, session, binding, engine, and security classes/adapters.
324
+ - `tigrbl_concrete/_concrete/_security/`: API key, HTTP Basic, HTTP Bearer, mutual TLS, OAuth2, and OpenID Connect security primitives.
325
+ - `tigrbl_concrete/_decorators/` and `tigrbl_concrete/decorators.py`: concrete decorator implementations that attach engine, hook, op, response, schema, session, middleware, allow-anon, and related metadata.
326
+ - `tigrbl_concrete/_mapping/`: app, router, model, column, operation, core, and app-spec lowering helpers that turn specs and model metadata into concrete registrations.
327
+ - `tigrbl_concrete/engine/`: engine builders, binding, capability declarations, plugin discovery, registry, resolver, and collection helpers.
328
+ - `tigrbl_concrete/factories/` and `tigrbl_concrete/shortcuts/`: concrete app and REST shortcut helpers consumed by the facade.
329
+ - `tigrbl_concrete/resolve/`: handler resolution helpers.
330
+ - `tigrbl_concrete/security/`: concrete security dependency helpers.
331
+ - `tigrbl_concrete/system/diagnostics`: `/system/healthz`, `/system/hookz`, `/system/kernelz`, `/system/methodz`, and diagnostic router helpers.
332
+ - `tigrbl_concrete/system/docs`: OpenAPI, OpenRPC, JSON Schema, Swagger, lens, runtime-ops, and surface documentation helpers.
333
+ - `tigrbl_concrete/transport/rest` and `tigrbl_concrete/transport/jsonrpc`: REST route aggregation and JSON-RPC helper/model utilities.
334
+ - `tigrbl_concrete/ddl/` and `tigrbl_concrete/system/static`/`favicon`: DDL and static/docs support surfaces.
273
335
 
274
- Use `tigrbl-concrete` when you want this subsystem directly as a package boundary instead of consuming it only through the top-level `tigrbl` facade.
336
+ ## Public API and Import Surface
275
337
 
276
- ## Public Surface
338
+ - Import roots: `tigrbl_concrete`.
339
+ - Public symbols: public surface is module-oriented; import the package boundary and inspect submodules as needed.
340
+ - 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/).
341
+ - External runtime dependencies: `orjson`, `pydantic>=2.0`, `sqlalchemy`, `uvicorn`.
277
342
 
278
- - `tigrbl_concrete` exposes `import_module, Any, build_handlers, build_hooks, build_schemas, build_rest_router`.
343
+ ## Concrete Implementation Semantics
279
344
 
280
- ## Internal Layout
345
+ `tigrbl-concrete` is where abstract specs and base contracts become usable Python framework objects. It is intentionally below the `tigrbl` facade and above the atom/kernel/runtime internals. Application developers normally import through `tigrbl`; extension authors import this package when they need concrete classes, decorators, engine resolution, docs mounting, or diagnostics without taking the facade dependency.
281
346
 
282
- - Workspace path: `pkgs/core/tigrbl_concrete`.
283
- - Package class: `core framework package`.
284
- - Python requirement: `>=3.10,<3.15`.
285
- - `tigrbl_concrete` modules: `_concrete/, _decorators/, _mapping/, ddl/, decorators, engine/, factories/, resolve/, security/, shortcuts/`.
347
+ The package performs four broad jobs:
286
348
 
287
- ## Dependency Surface
349
+ - Lower core specs and base contracts into concrete app/router/table/operation objects.
350
+ - Register REST and JSON-RPC projections for model operations.
351
+ - Resolve engines, handlers, schemas, responses, security dependencies, middleware, and docs surfaces.
352
+ - Expose operational introspection through system routes.
288
353
 
289
- - Workspace package 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/).
290
- - External runtime dependencies: `orjson`, `pydantic>=2.0`, `sqlalchemy`, `uvicorn`.
291
- - Optional extras: none declared.
354
+ ## REST and JSON-RPC Surfaces
355
+
356
+ Concrete routing keeps REST and JSON-RPC projections tied to the same operation inventory:
357
+
358
+ | Surface | Concrete responsibility |
359
+ |---|---|
360
+ | REST | Aggregate route metadata, attach handlers, apply path/method mapping, shape request/response objects, and expose OpenAPI-compatible docs. |
361
+ | JSON-RPC | Resolve method names, validate JSON-RPC request/response models, dispatch through the same operation handlers, and expose OpenRPC-compatible docs. |
362
+ | Docs | Publish OpenAPI, OpenRPC, JSON Schema, Swagger, runtime operation views, and surface/lens outputs from the same concrete registration data. |
363
+ | Diagnostics | Expose `healthz`, `hookz`, `kernelz`, and `methodz` so users can inspect runtime health, hook order, kernel plans, and method inventory. |
364
+
365
+ Avoid adding one-off framework routes for model behavior when an operation spec can represent the behavior. Ops keep REST, JSON-RPC, docs, hooks, and diagnostics unified.
366
+
367
+ ## Engine and Provider Behavior
368
+
369
+ The engine subpackage owns concrete engine resolution and plugin discovery. It can build and bind engines from specs, providers, mappings, or decorator metadata, then expose capability information for runtime and tests.
370
+
371
+ Resolution follows the framework's specificity rule:
372
+
373
+ ```text
374
+ operation > table/model > router > app > defaults
375
+ ```
376
+
377
+ Best practices:
378
+ - Declare engine intent through specs or decorators instead of constructing SQLAlchemy engines inside handlers.
379
+ - Keep engine plugins explicit and capability-aware.
380
+ - Test resolver behavior when adding a new engine package or new engine context shape.
381
+ - Preserve separation between engine resolution and transaction lifecycle; atoms/runtime own transaction phase progression.
382
+
383
+ ## System and Operational Endpoints
384
+
385
+ Concrete apps can mount system endpoints:
386
+
387
+ - `/system/healthz` for basic process health.
388
+ - `/system/hookz` for model/operation/phase hook order.
389
+ - `/system/kernelz` for compiled kernel phase plans.
390
+ - `/system/methodz` for exposed method inventory.
391
+ - docs endpoints for OpenAPI, OpenRPC, JSON Schema, Swagger, and runtime operation surfaces.
392
+
393
+ These endpoints are operational tools. They should reflect registered framework state and compiled plans; do not hard-code documentation that can drift away from actual registrations.
394
+
395
+ ## Security and Middleware
396
+
397
+ Security primitives include API key, HTTP Basic, HTTP Bearer, mutual TLS, OAuth2, and OpenID Connect helpers. Use them as dependencies or framework-level security specs so security behavior participates in lifecycle ordering and diagnostics. Middleware should be declared through concrete middleware helpers or specs rather than wrapping generated routes in ways the kernel cannot see.
398
+
399
+ ## Extension Guidance
400
+
401
+ - Use concrete decorators and factories when building public conveniences for the facade.
402
+ - Keep compatibility imports in `tigrbl` thin; implement reusable behavior here or in lower packages.
403
+ - Do not bypass kernel/runtime plans when wiring REST or JSON-RPC handlers.
404
+ - Keep docs, diagnostics, and transport helpers generated from actual registration state.
405
+ - Treat `_concrete` classes as framework implementation surfaces; public application documentation should continue to prefer facade imports.
406
+
407
+ Authoring BCP for this boundary:
408
+ - Do use `tigrbl-concrete` to lower specs and base contracts into concrete app, router, table, operation, schema, request, response, engine, security, docs, diagnostics, and transport implementations.
409
+ - Do keep REST and JSON-RPC projections tied to the same operation inventory and handler resolution path.
410
+ - Do keep framework-internal ASGI, Starlette-compatible, SQLAlchemy, and engine mechanics behind concrete Tigrbl adapters.
411
+ - Do not teach application users to bypass the `tigrbl` facade and import `_concrete` classes for normal service code.
412
+ - Do not wire one-off handlers around kernel/runtime plans, diagnostics, generated docs, or operation specs.
413
+ - Avoid hard-coded documentation and diagnostics that can drift away from actual registrations.
414
+
415
+ ## Usage Examples
416
+
417
+ ### Verify the installed package
418
+
419
+ ```bash
420
+ python -m pip show tigrbl-concrete
421
+ python - <<'PY'
422
+ from importlib.metadata import version
423
+ print(version("tigrbl-concrete"))
424
+ PY
425
+ ```
426
+
427
+ ### Import the package boundary
428
+
429
+ ```python
430
+ import importlib
431
+
432
+ module = importlib.import_module("tigrbl_concrete")
433
+ print(module.__name__)
434
+ ```
435
+
436
+ ### Inspect available modules
437
+
438
+ ```python
439
+ import importlib
440
+ import pkgutil
441
+
442
+ module = importlib.import_module("tigrbl_concrete")
443
+ for info in pkgutil.iter_modules(getattr(module, "__path__", [])):
444
+ print(info.name)
445
+ ```
446
+
447
+ ### Use with the facade when building applications
448
+
449
+ ```bash
450
+ uv add tigrbl tigrbl-concrete
451
+ python - <<'PY'
452
+ import tigrbl
453
+ print(tigrbl.__name__)
454
+ PY
455
+ ```
456
+
457
+ ## How To Choose This Package
458
+
459
+ 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.
292
460
 
293
461
  ## Related Packages
294
462
 
295
- - [`tigrbl`](https://pypi.org/project/tigrbl/)
296
463
  - [`tigrbl-atoms`](https://pypi.org/project/tigrbl-atoms/)
297
464
  - [`tigrbl-base`](https://pypi.org/project/tigrbl-base/)
298
465
  - [`tigrbl-core`](https://pypi.org/project/tigrbl-core/)
@@ -300,23 +467,32 @@ Use `tigrbl-concrete` when you want this subsystem directly as a package boundar
300
467
  - [`tigrbl-ops-oltp`](https://pypi.org/project/tigrbl-ops-oltp/)
301
468
  - [`tigrbl-ops-realtime`](https://pypi.org/project/tigrbl-ops-realtime/)
302
469
  - [`tigrbl-runtime`](https://pypi.org/project/tigrbl-runtime/)
470
+ - [`tigrbl-typing`](https://pypi.org/project/tigrbl-typing/)
471
+ - [`tigrbl`](https://pypi.org/project/tigrbl/)
472
+
473
+ ## Documentation Links
474
+
475
+ - [Workspace docs](https://github.com/tigrbl/tigrbl/blob/master/docs/README.md)
476
+ - [Package catalog](https://github.com/tigrbl/tigrbl/blob/master/docs/developer/PACKAGE_CATALOG.md)
477
+ - [Package layout](https://github.com/tigrbl/tigrbl/blob/master/docs/developer/PACKAGE_LAYOUT.md)
478
+ - [Current target](https://github.com/tigrbl/tigrbl/blob/master/docs/conformance/CURRENT_TARGET.md)
479
+ - [Current state](https://github.com/tigrbl/tigrbl/blob/master/docs/conformance/CURRENT_STATE.md)
480
+ - [Next steps](https://github.com/tigrbl/tigrbl/blob/master/docs/conformance/NEXT_STEPS.md)
481
+ - [Documentation pointers](https://github.com/tigrbl/tigrbl/blob/master/docs/governance/DOC_POINTERS.md)
482
+ - [SSOT registry](https://github.com/tigrbl/tigrbl/blob/master/.ssot/registry.json)
483
+ - [Release workflow](https://github.com/tigrbl/tigrbl/actions/workflows/publish.yml)
303
484
 
304
- ## Canonical Repository Docs
485
+ ## Support
305
486
 
306
- - `docs/README.md`
307
- - `docs/conformance/CURRENT_TARGET.md`
308
- - `docs/conformance/CURRENT_STATE.md`
309
- - `docs/conformance/NEXT_STEPS.md`
310
- - `docs/governance/DOC_POINTERS.md`
311
- - `docs/developer/PACKAGE_CATALOG.md`
312
- - `docs/developer/PACKAGE_LAYOUT.md`
487
+ - Community: [Discord](https://discord.gg/K4YTAPapjR).
488
+ - Issues: [GitHub Issues](https://github.com/tigrbl/tigrbl/issues).
489
+ - Repository: [pkgs/core/tigrbl_concrete](https://github.com/tigrbl/tigrbl/tree/master/pkgs/core/tigrbl_concrete).
313
490
 
314
491
  ## Package-local Boundary
315
492
 
316
- This file is a package-local distribution entry point.
317
- Use this page for package installation and boundary orientation. Repository governance, conformance state, target status, and release evidence remain governed from `docs/` and `.ssot/`.
493
+ This file is a package-local distribution entry point. 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.
318
494
 
319
495
  ## License
320
496
 
321
- 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).
497
+ 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).
322
498
 
@@ -0,0 +1,251 @@
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%2C%203.11%2C%203.12%2C%203.13%2C%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
+ Package catalog:
77
+ - `tigrbl_concrete/_concrete/`: concrete app, router, route, table, column, operation, schema, request, response, headers, body, middleware, background, storage, session, binding, engine, and security classes/adapters.
78
+ - `tigrbl_concrete/_concrete/_security/`: API key, HTTP Basic, HTTP Bearer, mutual TLS, OAuth2, and OpenID Connect security primitives.
79
+ - `tigrbl_concrete/_decorators/` and `tigrbl_concrete/decorators.py`: concrete decorator implementations that attach engine, hook, op, response, schema, session, middleware, allow-anon, and related metadata.
80
+ - `tigrbl_concrete/_mapping/`: app, router, model, column, operation, core, and app-spec lowering helpers that turn specs and model metadata into concrete registrations.
81
+ - `tigrbl_concrete/engine/`: engine builders, binding, capability declarations, plugin discovery, registry, resolver, and collection helpers.
82
+ - `tigrbl_concrete/factories/` and `tigrbl_concrete/shortcuts/`: concrete app and REST shortcut helpers consumed by the facade.
83
+ - `tigrbl_concrete/resolve/`: handler resolution helpers.
84
+ - `tigrbl_concrete/security/`: concrete security dependency helpers.
85
+ - `tigrbl_concrete/system/diagnostics`: `/system/healthz`, `/system/hookz`, `/system/kernelz`, `/system/methodz`, and diagnostic router helpers.
86
+ - `tigrbl_concrete/system/docs`: OpenAPI, OpenRPC, JSON Schema, Swagger, lens, runtime-ops, and surface documentation helpers.
87
+ - `tigrbl_concrete/transport/rest` and `tigrbl_concrete/transport/jsonrpc`: REST route aggregation and JSON-RPC helper/model utilities.
88
+ - `tigrbl_concrete/ddl/` and `tigrbl_concrete/system/static`/`favicon`: DDL and static/docs support surfaces.
89
+
90
+ ## Public API and Import Surface
91
+
92
+ - Import roots: `tigrbl_concrete`.
93
+ - Public symbols: public surface is module-oriented; import the package boundary and inspect submodules as needed.
94
+ - 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/).
95
+ - External runtime dependencies: `orjson`, `pydantic>=2.0`, `sqlalchemy`, `uvicorn`.
96
+
97
+ ## Concrete Implementation Semantics
98
+
99
+ `tigrbl-concrete` is where abstract specs and base contracts become usable Python framework objects. It is intentionally below the `tigrbl` facade and above the atom/kernel/runtime internals. Application developers normally import through `tigrbl`; extension authors import this package when they need concrete classes, decorators, engine resolution, docs mounting, or diagnostics without taking the facade dependency.
100
+
101
+ The package performs four broad jobs:
102
+
103
+ - Lower core specs and base contracts into concrete app/router/table/operation objects.
104
+ - Register REST and JSON-RPC projections for model operations.
105
+ - Resolve engines, handlers, schemas, responses, security dependencies, middleware, and docs surfaces.
106
+ - Expose operational introspection through system routes.
107
+
108
+ ## REST and JSON-RPC Surfaces
109
+
110
+ Concrete routing keeps REST and JSON-RPC projections tied to the same operation inventory:
111
+
112
+ | Surface | Concrete responsibility |
113
+ |---|---|
114
+ | REST | Aggregate route metadata, attach handlers, apply path/method mapping, shape request/response objects, and expose OpenAPI-compatible docs. |
115
+ | JSON-RPC | Resolve method names, validate JSON-RPC request/response models, dispatch through the same operation handlers, and expose OpenRPC-compatible docs. |
116
+ | Docs | Publish OpenAPI, OpenRPC, JSON Schema, Swagger, runtime operation views, and surface/lens outputs from the same concrete registration data. |
117
+ | Diagnostics | Expose `healthz`, `hookz`, `kernelz`, and `methodz` so users can inspect runtime health, hook order, kernel plans, and method inventory. |
118
+
119
+ Avoid adding one-off framework routes for model behavior when an operation spec can represent the behavior. Ops keep REST, JSON-RPC, docs, hooks, and diagnostics unified.
120
+
121
+ ## Engine and Provider Behavior
122
+
123
+ The engine subpackage owns concrete engine resolution and plugin discovery. It can build and bind engines from specs, providers, mappings, or decorator metadata, then expose capability information for runtime and tests.
124
+
125
+ Resolution follows the framework's specificity rule:
126
+
127
+ ```text
128
+ operation > table/model > router > app > defaults
129
+ ```
130
+
131
+ Best practices:
132
+ - Declare engine intent through specs or decorators instead of constructing SQLAlchemy engines inside handlers.
133
+ - Keep engine plugins explicit and capability-aware.
134
+ - Test resolver behavior when adding a new engine package or new engine context shape.
135
+ - Preserve separation between engine resolution and transaction lifecycle; atoms/runtime own transaction phase progression.
136
+
137
+ ## System and Operational Endpoints
138
+
139
+ Concrete apps can mount system endpoints:
140
+
141
+ - `/system/healthz` for basic process health.
142
+ - `/system/hookz` for model/operation/phase hook order.
143
+ - `/system/kernelz` for compiled kernel phase plans.
144
+ - `/system/methodz` for exposed method inventory.
145
+ - docs endpoints for OpenAPI, OpenRPC, JSON Schema, Swagger, and runtime operation surfaces.
146
+
147
+ These endpoints are operational tools. They should reflect registered framework state and compiled plans; do not hard-code documentation that can drift away from actual registrations.
148
+
149
+ ## Security and Middleware
150
+
151
+ Security primitives include API key, HTTP Basic, HTTP Bearer, mutual TLS, OAuth2, and OpenID Connect helpers. Use them as dependencies or framework-level security specs so security behavior participates in lifecycle ordering and diagnostics. Middleware should be declared through concrete middleware helpers or specs rather than wrapping generated routes in ways the kernel cannot see.
152
+
153
+ ## Extension Guidance
154
+
155
+ - Use concrete decorators and factories when building public conveniences for the facade.
156
+ - Keep compatibility imports in `tigrbl` thin; implement reusable behavior here or in lower packages.
157
+ - Do not bypass kernel/runtime plans when wiring REST or JSON-RPC handlers.
158
+ - Keep docs, diagnostics, and transport helpers generated from actual registration state.
159
+ - Treat `_concrete` classes as framework implementation surfaces; public application documentation should continue to prefer facade imports.
160
+
161
+ Authoring BCP for this boundary:
162
+ - Do use `tigrbl-concrete` to lower specs and base contracts into concrete app, router, table, operation, schema, request, response, engine, security, docs, diagnostics, and transport implementations.
163
+ - Do keep REST and JSON-RPC projections tied to the same operation inventory and handler resolution path.
164
+ - Do keep framework-internal ASGI, Starlette-compatible, SQLAlchemy, and engine mechanics behind concrete Tigrbl adapters.
165
+ - Do not teach application users to bypass the `tigrbl` facade and import `_concrete` classes for normal service code.
166
+ - Do not wire one-off handlers around kernel/runtime plans, diagnostics, generated docs, or operation specs.
167
+ - Avoid hard-coded documentation and diagnostics that can drift away from actual registrations.
168
+
169
+ ## Usage Examples
170
+
171
+ ### Verify the installed package
172
+
173
+ ```bash
174
+ python -m pip show tigrbl-concrete
175
+ python - <<'PY'
176
+ from importlib.metadata import version
177
+ print(version("tigrbl-concrete"))
178
+ PY
179
+ ```
180
+
181
+ ### Import the package boundary
182
+
183
+ ```python
184
+ import importlib
185
+
186
+ module = importlib.import_module("tigrbl_concrete")
187
+ print(module.__name__)
188
+ ```
189
+
190
+ ### Inspect available modules
191
+
192
+ ```python
193
+ import importlib
194
+ import pkgutil
195
+
196
+ module = importlib.import_module("tigrbl_concrete")
197
+ for info in pkgutil.iter_modules(getattr(module, "__path__", [])):
198
+ print(info.name)
199
+ ```
200
+
201
+ ### Use with the facade when building applications
202
+
203
+ ```bash
204
+ uv add tigrbl tigrbl-concrete
205
+ python - <<'PY'
206
+ import tigrbl
207
+ print(tigrbl.__name__)
208
+ PY
209
+ ```
210
+
211
+ ## How To Choose This Package
212
+
213
+ 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.
214
+
215
+ ## Related Packages
216
+
217
+ - [`tigrbl-atoms`](https://pypi.org/project/tigrbl-atoms/)
218
+ - [`tigrbl-base`](https://pypi.org/project/tigrbl-base/)
219
+ - [`tigrbl-core`](https://pypi.org/project/tigrbl-core/)
220
+ - [`tigrbl-ops-olap`](https://pypi.org/project/tigrbl-ops-olap/)
221
+ - [`tigrbl-ops-oltp`](https://pypi.org/project/tigrbl-ops-oltp/)
222
+ - [`tigrbl-ops-realtime`](https://pypi.org/project/tigrbl-ops-realtime/)
223
+ - [`tigrbl-runtime`](https://pypi.org/project/tigrbl-runtime/)
224
+ - [`tigrbl-typing`](https://pypi.org/project/tigrbl-typing/)
225
+ - [`tigrbl`](https://pypi.org/project/tigrbl/)
226
+
227
+ ## Documentation Links
228
+
229
+ - [Workspace docs](https://github.com/tigrbl/tigrbl/blob/master/docs/README.md)
230
+ - [Package catalog](https://github.com/tigrbl/tigrbl/blob/master/docs/developer/PACKAGE_CATALOG.md)
231
+ - [Package layout](https://github.com/tigrbl/tigrbl/blob/master/docs/developer/PACKAGE_LAYOUT.md)
232
+ - [Current target](https://github.com/tigrbl/tigrbl/blob/master/docs/conformance/CURRENT_TARGET.md)
233
+ - [Current state](https://github.com/tigrbl/tigrbl/blob/master/docs/conformance/CURRENT_STATE.md)
234
+ - [Next steps](https://github.com/tigrbl/tigrbl/blob/master/docs/conformance/NEXT_STEPS.md)
235
+ - [Documentation pointers](https://github.com/tigrbl/tigrbl/blob/master/docs/governance/DOC_POINTERS.md)
236
+ - [SSOT registry](https://github.com/tigrbl/tigrbl/blob/master/.ssot/registry.json)
237
+ - [Release workflow](https://github.com/tigrbl/tigrbl/actions/workflows/publish.yml)
238
+
239
+ ## Support
240
+
241
+ - Community: [Discord](https://discord.gg/K4YTAPapjR).
242
+ - Issues: [GitHub Issues](https://github.com/tigrbl/tigrbl/issues).
243
+ - Repository: [pkgs/core/tigrbl_concrete](https://github.com/tigrbl/tigrbl/tree/master/pkgs/core/tigrbl_concrete).
244
+
245
+ ## Package-local Boundary
246
+
247
+ This file is a package-local distribution entry point. 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.
248
+
249
+ ## License
250
+
251
+ 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.2.dev3"
3
+ version = "0.4.3.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" }
@@ -19,7 +19,31 @@ _EXPORTS = {
19
19
  "Schema": "_schema",
20
20
  "ForeignKey": "_storage",
21
21
  "StorageTransform": "_storage",
22
+ "BulkCrudTable": "_table",
23
+ "CrudTable": "_table",
24
+ "EventStreamTable": "_table",
25
+ "JsonRpcOlapTable": "_table",
26
+ "JsonRpcOltpTable": "_table",
27
+ "JsonRpcTable": "_table",
28
+ "OlapTable": "_table",
29
+ "OltpTable": "_table",
30
+ "RealtimeTable": "_table",
31
+ "RestJsonRpcOlapTable": "_table",
32
+ "RestJsonRpcOltpTable": "_table",
33
+ "RestJsonRpcTable": "_table",
34
+ "RestOlapTable": "_table",
35
+ "RestOltpTable": "_table",
36
+ "RestTable": "_table",
37
+ "SseTable": "_table",
38
+ "StreamTable": "_table",
22
39
  "Table": "_table",
40
+ "WebSocketJsonRpcTable": "_table",
41
+ "WebSocketTable": "_table",
42
+ "WebTransportBidiTable": "_table",
43
+ "WebTransportClientStreamTable": "_table",
44
+ "WebTransportDatagramTable": "_table",
45
+ "WebTransportServerStreamTable": "_table",
46
+ "WebTransportTable": "_table",
23
47
  "Template": "_response",
24
48
  "TableRegistry": "_table_registry",
25
49
  "Response": "_response",
@@ -35,6 +59,7 @@ _EXPORTS = {
35
59
  "Request": "_request",
36
60
  "UploadedFile": "_request",
37
61
  "WebSocket": "_websocket",
62
+ "Webhook": "_webhook",
38
63
  "Body": "_body",
39
64
  "Depends": "dependencies",
40
65
  "APIKey": "_security",
@@ -54,6 +79,9 @@ _EXPORTS = {
54
79
 
55
80
  __all__ = list(_EXPORTS)
56
81
 
82
+ for _symbol in __all__:
83
+ globals().pop(_symbol, None)
84
+
57
85
 
58
86
  def __getattr__(name: str) -> Any:
59
87
  module_name = _EXPORTS.get(name)
@@ -3,6 +3,7 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  from contextlib import asynccontextmanager
6
+ from pathlib import Path
6
7
  from typing import Any, Callable
7
8
  from types import SimpleNamespace
8
9
 
@@ -261,6 +262,11 @@ class Router(RouterBase):
261
262
  from tigrbl_concrete.system.static import _mount_static
262
263
  return _mount_static(self, directory=directory, path=path)
263
264
 
265
+ def mount_well_known(self, resources: Any, **kwargs: Any) -> tuple[str, ...]:
266
+ from tigrbl_concrete.system.well_known import mount_well_known
267
+
268
+ return mount_well_known(self, resources, **kwargs)
269
+
264
270
  def mount_app(self, *, app: Any, path: str) -> Any:
265
271
  mount_path = path if str(path).startswith("/") else f"/{path}"
266
272
  mounts = list(getattr(self, "_mounted_apps", []) or [])