tigrbl 0.3.10.dev1__tar.gz → 0.3.11.dev1__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 (312) hide show
  1. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/PKG-INFO +1 -1
  2. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/pyproject.toml +1 -1
  3. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/middlewares/__init__.py +2 -0
  4. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/middlewares/base.py +4 -4
  5. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/middlewares/cors.py +35 -5
  6. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/middlewares/middleware.py +2 -2
  7. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/middlewares/spec.py +3 -2
  8. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/system/docs/lens.py +1 -1
  9. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/LICENSE +0 -0
  10. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/README.md +0 -0
  11. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/README.md +0 -0
  12. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/__init__.py +0 -0
  13. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/api/__init__.py +0 -0
  14. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/api/_api.py +0 -0
  15. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/api/_route.py +0 -0
  16. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/api/_router.py +0 -0
  17. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/api/_routing.py +0 -0
  18. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/api/api_spec.py +0 -0
  19. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/api/mro_collect.py +0 -0
  20. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/api/resolve.py +0 -0
  21. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/api/shortcuts.py +0 -0
  22. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/api/tigrbl_api.py +0 -0
  23. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/app/__init__.py +0 -0
  24. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/app/_app.py +0 -0
  25. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/app/_model_registry.py +0 -0
  26. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/app/_routing_runtime.py +0 -0
  27. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/app/app_spec.py +0 -0
  28. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/app/mro_collect.py +0 -0
  29. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/app/shortcuts.py +0 -0
  30. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/app/tigrbl_app.py +0 -0
  31. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/app/transport.py +0 -0
  32. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/bindings/__init__.py +0 -0
  33. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/bindings/api/__init__.py +0 -0
  34. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/bindings/api/common.py +0 -0
  35. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/bindings/api/include.py +0 -0
  36. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/bindings/api/resource_proxy.py +0 -0
  37. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/bindings/api/rpc.py +0 -0
  38. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/bindings/columns.py +0 -0
  39. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/bindings/handlers/__init__.py +0 -0
  40. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/bindings/handlers/builder.py +0 -0
  41. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/bindings/handlers/ctx.py +0 -0
  42. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/bindings/handlers/identifiers.py +0 -0
  43. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/bindings/handlers/namespaces.py +0 -0
  44. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/bindings/handlers/steps.py +0 -0
  45. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/bindings/hooks.py +0 -0
  46. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/bindings/model.py +0 -0
  47. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/bindings/model_helpers.py +0 -0
  48. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/bindings/model_registry.py +0 -0
  49. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/bindings/rest/__init__.py +0 -0
  50. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/bindings/rest/attach.py +0 -0
  51. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/bindings/rest/collection.py +0 -0
  52. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/bindings/rest/common.py +0 -0
  53. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/bindings/rest/fastapi.py +0 -0
  54. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/bindings/rest/helpers.py +0 -0
  55. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/bindings/rest/io.py +0 -0
  56. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/bindings/rest/io_headers.py +0 -0
  57. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/bindings/rest/member.py +0 -0
  58. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/bindings/rest/router.py +0 -0
  59. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/bindings/rest/routing.py +0 -0
  60. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/bindings/rpc.py +0 -0
  61. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/bindings/schemas/__init__.py +0 -0
  62. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/bindings/schemas/builder.py +0 -0
  63. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/bindings/schemas/defaults.py +0 -0
  64. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/bindings/schemas/utils.py +0 -0
  65. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/column/README.md +0 -0
  66. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/column/__init__.py +0 -0
  67. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/column/_column.py +0 -0
  68. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/column/column_spec.py +0 -0
  69. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/column/field_spec.py +0 -0
  70. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/column/infer/__init__.py +0 -0
  71. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/column/infer/core.py +0 -0
  72. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/column/infer/jsonhints.py +0 -0
  73. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/column/infer/planning.py +0 -0
  74. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/column/infer/types.py +0 -0
  75. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/column/infer/utils.py +0 -0
  76. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/column/io_spec.py +0 -0
  77. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/column/mro_collect.py +0 -0
  78. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/column/shortcuts.py +0 -0
  79. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/column/storage_spec.py +0 -0
  80. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/config/__init__.py +0 -0
  81. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/config/constants.py +0 -0
  82. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/config/defaults.py +0 -0
  83. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/config/resolver.py +0 -0
  84. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/core/__init__.py +0 -0
  85. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/core/crud/__init__.py +0 -0
  86. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/core/crud/bulk.py +0 -0
  87. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/core/crud/helpers/__init__.py +0 -0
  88. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/core/crud/helpers/db.py +0 -0
  89. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/core/crud/helpers/enum.py +0 -0
  90. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/core/crud/helpers/filters.py +0 -0
  91. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/core/crud/helpers/model.py +0 -0
  92. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/core/crud/helpers/normalize.py +0 -0
  93. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/core/crud/ops.py +0 -0
  94. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/core/crud/params.py +0 -0
  95. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/core/resolver.py +0 -0
  96. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/core/router_runtime.py +0 -0
  97. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/ddl/__init__.py +0 -0
  98. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/decorators.py +0 -0
  99. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/deps/__init__.py +0 -0
  100. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/deps/jinja.py +0 -0
  101. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/deps/pydantic.py +0 -0
  102. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/deps/sqlalchemy.py +0 -0
  103. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/docs/verbosity.md +0 -0
  104. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/engine/__init__.py +0 -0
  105. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/engine/_engine.py +0 -0
  106. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/engine/bind.py +0 -0
  107. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/engine/builders.py +0 -0
  108. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/engine/capabilities.py +0 -0
  109. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/engine/collect.py +0 -0
  110. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/engine/decorators.py +0 -0
  111. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/engine/docs/PLUGINS.md +0 -0
  112. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/engine/engine_spec.py +0 -0
  113. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/engine/plugins.py +0 -0
  114. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/engine/registry.py +0 -0
  115. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/engine/resolver.py +0 -0
  116. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/engine/shortcuts.py +0 -0
  117. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/headers/__init__.py +0 -0
  118. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/headers/_header.py +0 -0
  119. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/hook/__init__.py +0 -0
  120. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/hook/_hook.py +0 -0
  121. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/hook/decorators.py +0 -0
  122. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/hook/exceptions.py +0 -0
  123. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/hook/hook_spec.py +0 -0
  124. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/hook/mro_collect.py +0 -0
  125. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/hook/shortcuts.py +0 -0
  126. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/hook/types.py +0 -0
  127. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/middlewares/compose.py +0 -0
  128. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/middlewares/decorators.py +0 -0
  129. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/op/__init__.py +0 -0
  130. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/op/_op.py +0 -0
  131. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/op/canonical.py +0 -0
  132. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/op/collect.py +0 -0
  133. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/op/decorators.py +0 -0
  134. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/op/model_registry.py +0 -0
  135. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/op/mro_collect.py +0 -0
  136. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/op/resolver.py +0 -0
  137. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/op/types.py +0 -0
  138. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/orm/__init__.py +0 -0
  139. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/orm/mixins/_RowBound.py +0 -0
  140. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/orm/mixins/__init__.py +0 -0
  141. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/orm/mixins/bootstrappable.py +0 -0
  142. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/orm/mixins/bound.py +0 -0
  143. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/orm/mixins/edges.py +0 -0
  144. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/orm/mixins/fields.py +0 -0
  145. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/orm/mixins/hierarchy.py +0 -0
  146. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/orm/mixins/key_digest.py +0 -0
  147. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/orm/mixins/lifecycle.py +0 -0
  148. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/orm/mixins/locks.py +0 -0
  149. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/orm/mixins/markers.py +0 -0
  150. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/orm/mixins/operations.py +0 -0
  151. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/orm/mixins/ownable.py +0 -0
  152. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/orm/mixins/principals.py +0 -0
  153. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/orm/mixins/tenant_bound.py +0 -0
  154. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/orm/mixins/upsertable.py +0 -0
  155. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/orm/mixins/utils.py +0 -0
  156. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/orm/tables/__init__.py +0 -0
  157. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/orm/tables/_base.py +0 -0
  158. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/orm/tables/audit.py +0 -0
  159. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/orm/tables/client.py +0 -0
  160. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/orm/tables/group.py +0 -0
  161. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/orm/tables/org.py +0 -0
  162. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/orm/tables/rbac.py +0 -0
  163. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/orm/tables/status.py +0 -0
  164. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/orm/tables/tenant.py +0 -0
  165. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/orm/tables/user.py +0 -0
  166. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/requests/__init__.py +0 -0
  167. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/requests/_request.py +0 -0
  168. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/requests/adapters.py +0 -0
  169. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/responses/README.md +0 -0
  170. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/responses/__init__.py +0 -0
  171. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/responses/_response.py +0 -0
  172. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/responses/_transport.py +0 -0
  173. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/responses/bind.py +0 -0
  174. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/responses/decorators.py +0 -0
  175. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/responses/resolver.py +0 -0
  176. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/responses/shortcuts.py +0 -0
  177. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/responses/types.py +0 -0
  178. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/rest/__init__.py +0 -0
  179. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/README.md +0 -0
  180. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/__init__.py +0 -0
  181. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/atoms/__init__.py +0 -0
  182. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/atoms/emit/__init__.py +0 -0
  183. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/atoms/emit/paired_post.py +0 -0
  184. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/atoms/emit/paired_pre.py +0 -0
  185. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/atoms/emit/readtime_alias.py +0 -0
  186. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/atoms/out/__init__.py +0 -0
  187. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/atoms/out/masking.py +0 -0
  188. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/atoms/refresh/__init__.py +0 -0
  189. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/atoms/refresh/demand.py +0 -0
  190. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/atoms/resolve/__init__.py +0 -0
  191. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/atoms/resolve/assemble.py +0 -0
  192. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/atoms/resolve/paired_gen.py +0 -0
  193. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/atoms/response/__init__.py +0 -0
  194. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/atoms/response/headers_from_payload.py +0 -0
  195. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/atoms/response/negotiate.py +0 -0
  196. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/atoms/response/negotiation.py +0 -0
  197. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/atoms/response/render.py +0 -0
  198. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/atoms/response/renderer.py +0 -0
  199. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/atoms/response/template.py +0 -0
  200. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/atoms/response/templates.py +0 -0
  201. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/atoms/schema/__init__.py +0 -0
  202. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/atoms/schema/collect_in.py +0 -0
  203. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/atoms/schema/collect_out.py +0 -0
  204. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/atoms/storage/__init__.py +0 -0
  205. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/atoms/storage/to_stored.py +0 -0
  206. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/atoms/wire/__init__.py +0 -0
  207. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/atoms/wire/build_in.py +0 -0
  208. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/atoms/wire/build_out.py +0 -0
  209. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/atoms/wire/dump.py +0 -0
  210. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/atoms/wire/validate_in.py +0 -0
  211. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/context.py +0 -0
  212. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/events.py +0 -0
  213. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/executor/__init__.py +0 -0
  214. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/executor/guards.py +0 -0
  215. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/executor/helpers.py +0 -0
  216. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/executor/invoke.py +0 -0
  217. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/executor/types.py +0 -0
  218. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/kernel.py +0 -0
  219. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/labels.py +0 -0
  220. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/opview.py +0 -0
  221. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/ordering.py +0 -0
  222. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/status/__init__.py +0 -0
  223. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/status/converters.py +0 -0
  224. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/status/exceptions.py +0 -0
  225. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/status/mappings.py +0 -0
  226. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/status/utils.py +0 -0
  227. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/system.py +0 -0
  228. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/runtime/trace.py +0 -0
  229. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/schema/__init__.py +0 -0
  230. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/schema/_schema.py +0 -0
  231. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/schema/builder/__init__.py +0 -0
  232. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/schema/builder/build_schema.py +0 -0
  233. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/schema/builder/cache.py +0 -0
  234. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/schema/builder/compat.py +0 -0
  235. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/schema/builder/extras.py +0 -0
  236. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/schema/builder/helpers.py +0 -0
  237. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/schema/builder/list_params.py +0 -0
  238. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/schema/builder/strip_parent_fields.py +0 -0
  239. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/schema/collect.py +0 -0
  240. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/schema/decorators.py +0 -0
  241. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/schema/get_schema.py +0 -0
  242. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/schema/schema_spec.py +0 -0
  243. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/schema/shortcuts.py +0 -0
  244. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/schema/types.py +0 -0
  245. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/schema/utils.py +0 -0
  246. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/security/__init__.py +0 -0
  247. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/security/dependencies.py +0 -0
  248. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/security/schemes/__init__.py +0 -0
  249. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/security/schemes/_base.py +0 -0
  250. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/security/schemes/api_key.py +0 -0
  251. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/security/schemes/http_bearer.py +0 -0
  252. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/security/schemes/mutual_tls.py +0 -0
  253. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/security/schemes/oauth2.py +0 -0
  254. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/security/schemes/openid_connect.py +0 -0
  255. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/session/README.md +0 -0
  256. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/session/__init__.py +0 -0
  257. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/session/abc.py +0 -0
  258. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/session/base.py +0 -0
  259. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/session/decorators.py +0 -0
  260. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/session/default.py +0 -0
  261. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/session/shortcuts.py +0 -0
  262. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/session/spec.py +0 -0
  263. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/shortcuts.py +0 -0
  264. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/specs.py +0 -0
  265. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/system/__init__.py +0 -0
  266. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/system/diagnostics/__init__.py +0 -0
  267. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/system/diagnostics/compat.py +0 -0
  268. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/system/diagnostics/healthz.py +0 -0
  269. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/system/diagnostics/hookz.py +0 -0
  270. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/system/diagnostics/kernelz.py +0 -0
  271. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/system/diagnostics/methodz.py +0 -0
  272. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/system/diagnostics/router.py +0 -0
  273. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/system/diagnostics/utils.py +0 -0
  274. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/system/docs/__init__.py +0 -0
  275. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/system/docs/openapi/__init__.py +0 -0
  276. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/system/docs/openapi/helpers.py +0 -0
  277. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/system/docs/openapi/metadata.py +0 -0
  278. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/system/docs/openapi/mount.py +0 -0
  279. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/system/docs/openapi/schema.py +0 -0
  280. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/system/docs/openrpc.py +0 -0
  281. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/system/docs/swagger.py +0 -0
  282. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/system/favicon/__init__.py +0 -0
  283. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/system/favicon/assets/favicon.svg +0 -0
  284. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/system/uvicorn.py +0 -0
  285. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/table/__init__.py +0 -0
  286. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/table/_base.py +0 -0
  287. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/table/_table.py +0 -0
  288. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/table/mro_collect.py +0 -0
  289. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/table/shortcuts.py +0 -0
  290. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/table/table_spec.py +0 -0
  291. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/transport/__init__.py +0 -0
  292. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/transport/background.py +0 -0
  293. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/transport/httpx.py +0 -0
  294. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/transport/jsonrpc/__init__.py +0 -0
  295. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/transport/jsonrpc/dispatcher.py +0 -0
  296. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/transport/jsonrpc/helpers.py +0 -0
  297. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/transport/jsonrpc/models.py +0 -0
  298. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/transport/jsonrpc/openrpc.py +0 -0
  299. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/transport/rest/__init__.py +0 -0
  300. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/transport/rest/aggregator.py +0 -0
  301. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/transport/rest/decorators.py +0 -0
  302. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/types/__init__.py +0 -0
  303. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/types/allow_anon_provider.py +0 -0
  304. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/types/authn_abc.py +0 -0
  305. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/types/nested_path_provider.py +0 -0
  306. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/types/op.py +0 -0
  307. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/types/op_config_provider.py +0 -0
  308. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/types/op_verb_alias_provider.py +0 -0
  309. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/types/request_extras_provider.py +0 -0
  310. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/types/response_extras_provider.py +0 -0
  311. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/types/table_config_provider.py +0 -0
  312. {tigrbl-0.3.10.dev1 → tigrbl-0.3.11.dev1}/tigrbl/types/uuid.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tigrbl
3
- Version: 0.3.10.dev1
3
+ Version: 0.3.11.dev1
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
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "tigrbl"
3
- version = "0.3.10.dev1"
3
+ version = "0.3.11.dev1"
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"
@@ -2,6 +2,7 @@ from .spec import (
2
2
  ASGIApp,
3
3
  ASGIReceive,
4
4
  ASGISend,
5
+ Message,
5
6
  MiddlewareSpec,
6
7
  WSGIApp,
7
8
  WSGIStartResponse,
@@ -16,6 +17,7 @@ __all__ = [
16
17
  "ASGIApp",
17
18
  "ASGIReceive",
18
19
  "ASGISend",
20
+ "Message",
19
21
  "WSGIApp",
20
22
  "WSGIStartResponse",
21
23
  "MiddlewareSpec",
@@ -11,7 +11,7 @@ from tigrbl.responses import Response
11
11
  from tigrbl.responses._transport import finalize_transport_response
12
12
 
13
13
  from .middleware import Middleware
14
- from .spec import ASGIReceive, ASGISend
14
+ from .spec import ASGIReceive, ASGISend, Message
15
15
 
16
16
 
17
17
  class BaseHTTPMiddleware(Middleware):
@@ -71,10 +71,10 @@ class BaseHTTPMiddleware(Middleware):
71
71
  target_request = forward_request or request
72
72
  target_scope = self._scope_from_request(scope, target_request)
73
73
 
74
- messages: list[dict[str, Any]] = []
74
+ messages: list[Message] = []
75
75
  body_sent = False
76
76
 
77
- async def receive_for_app() -> dict[str, Any]:
77
+ async def receive_for_app() -> Message:
78
78
  nonlocal body_sent
79
79
  if body_sent:
80
80
  return {"type": "http.request", "body": b"", "more_body": False}
@@ -85,7 +85,7 @@ class BaseHTTPMiddleware(Middleware):
85
85
  "more_body": False,
86
86
  }
87
87
 
88
- async def send_from_app(message: dict[str, Any]) -> None:
88
+ async def send_from_app(message: Message) -> None:
89
89
  messages.append(message)
90
90
 
91
91
  await self.app(target_scope, receive_for_app, send_from_app)
@@ -3,6 +3,7 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  from typing import Any
6
+ import re
6
7
 
7
8
  from tigrbl.headers import Headers
8
9
  from tigrbl.requests import Request
@@ -27,29 +28,58 @@ class CORSMiddleware(BaseHTTPMiddleware):
27
28
  app,
28
29
  *,
29
30
  allow_origin: str = "*",
30
- allow_methods: str = "GET,POST,PUT,PATCH,DELETE,OPTIONS",
31
- allow_headers: str = "*",
31
+ allow_origins: list[str] | tuple[str, ...] | None = None,
32
+ allow_origin_regex: str | None = None,
33
+ allow_methods: str
34
+ | list[str]
35
+ | tuple[str, ...] = "GET,POST,PUT,PATCH,DELETE,OPTIONS",
36
+ allow_headers: str | list[str] | tuple[str, ...] = "*",
32
37
  allow_credentials: bool = False,
33
38
  max_age: int = 600,
34
39
  ) -> None:
35
40
  super().__init__(
36
41
  app,
37
42
  allow_origin=allow_origin,
43
+ allow_origins=allow_origins,
44
+ allow_origin_regex=allow_origin_regex,
38
45
  allow_methods=allow_methods,
39
46
  allow_headers=allow_headers,
40
47
  allow_credentials=allow_credentials,
41
48
  max_age=max_age,
42
49
  )
43
50
  self.allow_origin = allow_origin
44
- self.allow_methods = allow_methods
45
- self.allow_headers = allow_headers
51
+ self.allow_origins = list(allow_origins or [])
52
+ self.allow_origin_regex = allow_origin_regex
53
+ self._allow_origin_pattern = (
54
+ re.compile(allow_origin_regex) if allow_origin_regex else None
55
+ )
56
+ self.allow_methods = self._normalize_listish(allow_methods)
57
+ self.allow_headers = self._normalize_listish(allow_headers)
46
58
  self.allow_credentials = allow_credentials
47
59
  self.max_age = max_age
48
60
 
61
+ @staticmethod
62
+ def _normalize_listish(value: str | list[str] | tuple[str, ...]) -> str:
63
+ if isinstance(value, str):
64
+ return value
65
+ return ",".join(item.strip() for item in value)
66
+
49
67
  def _resolve_allow_origin(self, request_headers: Headers) -> str:
50
68
  origin = request_headers.get("origin")
51
- if self.allow_origin == "*" or not origin:
69
+ if not origin:
70
+ return self.allow_origin
71
+
72
+ if self._allow_origin_pattern and self._allow_origin_pattern.match(origin):
73
+ return origin
74
+
75
+ if self.allow_origins:
76
+ if origin in self.allow_origins:
77
+ return origin
78
+ return "null"
79
+
80
+ if self.allow_origin == "*":
52
81
  return self.allow_origin
82
+
53
83
  allowed = [candidate.strip() for candidate in self.allow_origin.split(",")]
54
84
  if origin in allowed:
55
85
  return origin
@@ -4,7 +4,7 @@ from __future__ import annotations
4
4
 
5
5
  from typing import Any
6
6
 
7
- from .spec import ASGIApp, ASGIReceive, ASGISend, WSGIApp, WSGIStartResponse
7
+ from .spec import ASGIApp, ASGIReceive, ASGISend, Message, WSGIApp, WSGIStartResponse
8
8
 
9
9
 
10
10
  class Middleware:
@@ -16,7 +16,7 @@ class Middleware:
16
16
 
17
17
  async def asgi(
18
18
  self,
19
- scope: dict[str, Any],
19
+ scope: Message,
20
20
  receive: ASGIReceive,
21
21
  send: ASGISend,
22
22
  ) -> None:
@@ -5,8 +5,9 @@ from __future__ import annotations
5
5
  from collections.abc import Awaitable, Callable
6
6
  from typing import Any, Protocol
7
7
 
8
- ASGIReceive = Callable[[], Awaitable[dict[str, Any]]]
9
- ASGISend = Callable[[dict[str, Any]], Awaitable[None]]
8
+ Message = dict[str, Any]
9
+ ASGIReceive = Callable[[], Awaitable[Message]]
10
+ ASGISend = Callable[[Message], Awaitable[None]]
10
11
  ASGIApp = Callable[[dict[str, Any], ASGIReceive, ASGISend], Awaitable[None]]
11
12
  WSGIStartResponse = Callable[..., Any]
12
13
  WSGIApp = Callable[[dict[str, Any], WSGIStartResponse], list[bytes]]
@@ -6,7 +6,7 @@ from urllib.parse import quote
6
6
  from ...responses import Response
7
7
 
8
8
 
9
- TIGRBL_LENS_VERSION = "0.0.14"
9
+ TIGRBL_LENS_VERSION = "latest"
10
10
 
11
11
 
12
12
  def _with_leading_slash(path: str) -> str:
File without changes
File without changes