tigrbl_tests 0.3.11.dev5__tar.gz → 0.3.12__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 (343) hide show
  1. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/PKG-INFO +2 -1
  2. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/pyproject.toml +8 -2
  3. tigrbl_tests-0.3.12/tests/architecture/test_import_graph_audit.py +51 -0
  4. tigrbl_tests-0.3.12/tests/architecture/test_no_bindings_imports.py +33 -0
  5. tigrbl_tests-0.3.12/tests/architecture/test_operation_resolution_parity.py +11 -0
  6. tigrbl_tests-0.3.12/tests/architecture/test_runtime_structure.py +30 -0
  7. tigrbl_tests-0.3.12/tests/architecture/test_trace_plan_parity.py +8 -0
  8. tigrbl_tests-0.3.12/tests/architecture/test_transport_boundaries.py +30 -0
  9. tigrbl_tests-0.3.12/tests/architecture/test_transport_dispatch_convergence.py +56 -0
  10. tigrbl_tests-0.3.12/tests/conftest.py +661 -0
  11. tigrbl_tests-0.3.12/tests/harness/test_00_appspec_contract.py +149 -0
  12. tigrbl_tests-0.3.12/tests/harness/test_01_kernel_plan_compilation.py +166 -0
  13. tigrbl_tests-0.3.12/tests/harness/test_02_bootstrap_plan.py +87 -0
  14. tigrbl_tests-0.3.12/tests/harness/test_03_appspec_uvicorn_e2e.py +86 -0
  15. tigrbl_tests-0.3.12/tests/harness_e2e/test_00_appspec_uvicorn_rest_rpc.py +156 -0
  16. tigrbl_tests-0.3.12/tests/harness_e2e/test_01_imperative_uvicorn_rest_rpc.py +125 -0
  17. tigrbl_tests-0.3.12/tests/harness_v3/_support.py +86 -0
  18. tigrbl_tests-0.3.12/tests/harness_v3/test_appspec_prefixes.py +53 -0
  19. tigrbl_tests-0.3.12/tests/harness_v3/test_bootstrap_kernel_compilation.py +69 -0
  20. tigrbl_tests-0.3.12/tests/harness_v3/test_default_opspec_bindings.py +110 -0
  21. tigrbl_tests-0.3.12/tests/harness_v3/test_kernel_plan_routing.py +67 -0
  22. tigrbl_tests-0.3.12/tests/harness_v3/test_mapping_plan_compilation.py +55 -0
  23. tigrbl_tests-0.3.12/tests/harness_v3/test_route_rpc_prebinding.py +1 -0
  24. tigrbl_tests-0.3.12/tests/harness_v3/test_route_runtime_fallback_atoms.py +1 -0
  25. tigrbl_tests-0.3.12/tests/harness_v3/test_uvicorn_e2e_appspec.py +107 -0
  26. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/hooks/test_hook_ctx_phase_validation.py +2 -1
  27. tigrbl_tests-0.3.12/tests/i9n/test_acronym_route_name.py +24 -0
  28. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_allow_anon.py +30 -29
  29. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_apikey_generation.py +7 -7
  30. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_authn_provider_integration.py +10 -13
  31. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_bindings_integration.py +28 -21
  32. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_bindings_modules.py +48 -50
  33. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_bulk_docs_client.py +15 -14
  34. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_core_access.py +11 -14
  35. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_engine_install_uvicorn.py +5 -5
  36. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_engine_resolver_uvicorn.py +16 -17
  37. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_error_mappings.py +25 -12
  38. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_field_spec_effects.py +11 -11
  39. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_header_io_uvicorn.py +8 -8
  40. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_healthz_methodz_hookz.py +8 -8
  41. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_hook_ctx_v3_i9n.py +44 -46
  42. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_hook_lifecycle.py +25 -26
  43. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_iospec_attributes.py +50 -44
  44. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_iospec_integration.py +38 -17
  45. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_key_digest_uvicorn.py +7 -7
  46. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_mixins.py +24 -25
  47. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_mountable_favicon_uvicorn.py +2 -4
  48. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_mountable_lens_uvicorn.py +0 -1
  49. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_mountable_openapi_uvicorn.py +0 -1
  50. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_mountable_openrpc_uvicorn.py +3 -4
  51. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_mountable_swagger_uvicorn.py +0 -1
  52. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_nested_routing_depth.py +8 -8
  53. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_op_ctx_alias_examples.py +6 -4
  54. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_op_ctx_behavior.py +21 -23
  55. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_op_ctx_core_crud_order.py +41 -41
  56. tigrbl_tests-0.3.12/tests/i9n/test_op_ctx_uvicorn_scopes.py +189 -0
  57. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_openapi_clear_response_schema.py +3 -4
  58. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_openapi_schema_examples_presence.py +6 -5
  59. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_opspec_effects_i9n_test.py +19 -18
  60. tigrbl_tests-0.3.12/tests/i9n/test_opspec_pre_tx_deps.py +254 -0
  61. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_owner_tenant_policy.py +22 -24
  62. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_request_extras.py +6 -6
  63. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_rest_fallback_serialization.py +23 -16
  64. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_rest_row_serialization.py +18 -18
  65. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_row_result_serialization.py +5 -5
  66. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_schema.py +3 -3
  67. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_schema_ctx_attributes_integration.py +7 -10
  68. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_schema_ctx_op_ctx_integration.py +6 -7
  69. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_schema_ctx_spec_integration.py +8 -8
  70. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_sqlite_attachments.py +3 -3
  71. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_storage_spec_integration.py +1 -1
  72. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_tigrbl_api_app_usage_uvicorn.py +9 -10
  73. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_tigrbl_api_usage_uvicorn.py +10 -12
  74. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_tigrbl_api_uvicorn.py +6 -7
  75. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_tigrbl_app_include_api_uvicorn.py +8 -8
  76. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_tigrbl_app_multi_api_uvicorn.py +6 -6
  77. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_tigrbl_app_usage_uvicorn.py +10 -11
  78. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_tigrbl_app_uvicorn.py +5 -5
  79. tigrbl_tests-0.3.12/tests/i9n/test_transport_dispatch_parity.py +21 -0
  80. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_types_deprecation_exports.py +3 -5
  81. tigrbl_tests-0.3.12/tests/i9n/test_uvicorn_transport_behavior.py +150 -0
  82. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_v3_bulk_rest_endpoints.py +8 -8
  83. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_v3_default_rest_ops.py +8 -11
  84. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_v3_default_rpc_ops.py +28 -34
  85. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_v3_opspec_attributes.py +41 -37
  86. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_verb_alias_policy.py +4 -5
  87. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/mount/test_mount_favico.py +1 -1
  88. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/options/test_rest_options.py +1 -1
  89. tigrbl_tests-0.3.12/tests/options/test_rpc_options.py +21 -0
  90. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/parity/test_hook_runtime_phase_parity.py +4 -1
  91. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/parity/test_stdapi_openapi_docs.py +2 -2
  92. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/parity/test_stdapi_primitives.py +2 -2
  93. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/parity/test_stdapi_routing.py +2 -2
  94. tigrbl_tests-0.3.12/tests/perf/helper_fastapi_create_app.py +76 -0
  95. tigrbl_tests-0.3.12/tests/perf/helper_tigrbl_create_app.py +46 -0
  96. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/perf/test_collect_caching.py +4 -4
  97. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/perf/test_hookz_performance.py +6 -6
  98. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/perf/test_methodz_performance.py +3 -3
  99. tigrbl_tests-0.3.12/tests/perf/test_tigrbl_create_call_graph.py +157 -0
  100. tigrbl_tests-0.3.12/tests/perf/test_tigrbl_vs_fastapi_create_benchmark.py +318 -0
  101. tigrbl_tests-0.3.12/tests/perf/tigrbl_create_call_graph_250_ops.json +1589 -0
  102. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/request/test_request_asgi_scope_compat.py +1 -1
  103. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/request/test_request_authn_strip.py +1 -1
  104. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/request/test_request_dot_notation.py +2 -2
  105. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/request/test_request_response_conveniences.py +2 -2
  106. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/request/test_request_transport_convenience_dot_notation.py +1 -1
  107. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/requests/test_request_json_modes.py +1 -1
  108. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/response/test_response_dot_notation.py +2 -2
  109. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/response/test_response_transport_convenience_dot_notation.py +1 -1
  110. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/security/test_dot_notation_schemes.py +2 -2
  111. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/security/test_schemes.py +2 -2
  112. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/test_secdeps_execute_in_pre_tx.py +13 -22
  113. tigrbl_tests-0.3.12/tests/unit/__init__.py +0 -0
  114. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/decorators/test_engine_ctx_bindings.py +1 -1
  115. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/decorators/test_hook_ctx_bindings.py +2 -2
  116. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/decorators/test_op_ctx_bindings.py +6 -9
  117. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/decorators/test_response_ctx_bindings.py +1 -1
  118. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/decorators/test_schema_ctx_bindings.py +1 -1
  119. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/response_utils.py +25 -15
  120. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/runtime/atoms/test_emit_paired_post.py +2 -2
  121. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/runtime/atoms/test_emit_paired_pre.py +6 -4
  122. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/runtime/atoms/test_emit_readtime_alias.py +4 -4
  123. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/runtime/atoms/test_out_masking.py +6 -6
  124. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/runtime/atoms/test_refresh_demand.py +4 -3
  125. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/runtime/atoms/test_resolve_assemble.py +4 -3
  126. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/runtime/atoms/test_resolve_paired_gen.py +10 -6
  127. tigrbl_tests-0.3.12/tests/unit/runtime/atoms/test_route_protocol_detect.py +1 -0
  128. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/runtime/atoms/test_schema_collect_in.py +4 -8
  129. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/runtime/atoms/test_schema_collect_out.py +4 -8
  130. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/runtime/atoms/test_storage_to_stored.py +6 -4
  131. tigrbl_tests-0.3.12/tests/unit/runtime/atoms/test_wire_build_in.py +39 -0
  132. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/runtime/atoms/test_wire_build_out.py +4 -4
  133. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/runtime/atoms/test_wire_dump.py +2 -2
  134. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/runtime/atoms/test_wire_validate_in.py +8 -6
  135. tigrbl_tests-0.3.12/tests/unit/runtime/test_atom_stage_phase_window_static.py +115 -0
  136. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/runtime/test_compilation_runtime_behavior.py +1 -1
  137. tigrbl_tests-0.3.12/tests/unit/runtime/test_events_phases.py +66 -0
  138. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/runtime/test_events_runtime_behavior.py +17 -1
  139. tigrbl_tests-0.3.12/tests/unit/runtime/test_ingress_egress_phase_access.py +52 -0
  140. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/runtime/test_kernel_plan_event_ordering.py +11 -5
  141. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/runtime/test_kernel_plan_full_ordering.py +32 -24
  142. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/runtime/test_kernel_runtime_behavior.py +7 -6
  143. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/runtime/test_ordering_runtime_behavior.py +1 -1
  144. tigrbl_tests-0.3.12/tests/unit/runtime/test_payload_select_header_merge.py +1 -0
  145. tigrbl_tests-0.3.12/tests/unit/runtime/test_payload_select_invalid_rpc_params.py +1 -0
  146. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_acol_vcol_knobs.py +11 -9
  147. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_alias_ctx_op_alias_attributes.py +5 -4
  148. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_alias_ctx_op_attributes.py +1 -1
  149. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_api_level_set_auth.py +4 -6
  150. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_app_model_defaults.py +6 -6
  151. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_app_reexport.py +1 -1
  152. tigrbl_tests-0.3.12/tests/unit/test_app_spec_normalization.py +188 -0
  153. tigrbl_tests-0.3.12/tests/unit/test_attrdict_vs_simplenamespace.py +32 -0
  154. tigrbl_tests-0.3.12/tests/unit/test_authorize_runtime_secdep.py +27 -0
  155. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_base_columnspec_inheritance.py +3 -3
  156. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_base_facade_initialize.py +15 -16
  157. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_build_list_params_spec_model.py +3 -2
  158. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_bulk_body_annotation.py +5 -5
  159. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_bulk_response_schema.py +50 -44
  160. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_colspec_map_isolation.py +5 -5
  161. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_column_collect_mixins.py +5 -4
  162. tigrbl_tests-0.3.12/tests/unit/test_column_mro_collect_namespace.py +15 -0
  163. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_column_rest_rpc_results.py +28 -28
  164. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_column_table_orm_binding.py +5 -5
  165. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_core_crud_bulk_ops.py +5 -4
  166. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_core_crud_default_ops.py +5 -4
  167. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_core_crud_methods.py +8 -6
  168. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_core_wrap_memoization.py +1 -1
  169. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_db_dependency.py +5 -5
  170. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_decorator_and_collect.py +3 -3
  171. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_default_schema_selection.py +43 -42
  172. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_default_tags.py +5 -5
  173. tigrbl_tests-0.3.12/tests/unit/test_diagnostics_no_compat_module.py +5 -0
  174. tigrbl_tests-0.3.12/tests/unit/test_docs_security_parity.py +90 -0
  175. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_engine_install_api.py +2 -2
  176. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_engine_install_app.py +2 -2
  177. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_engine_install_op.py +5 -4
  178. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_engine_install_table.py +5 -4
  179. tigrbl_tests-0.3.12/tests/unit/test_engine_session_database_availability.py +51 -0
  180. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_engine_spec_and_shortcuts.py +2 -4
  181. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_engine_usage_levels.py +2 -2
  182. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_field_spec_attrs.py +13 -11
  183. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_file_response.py +14 -50
  184. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_get_schema.py +10 -11
  185. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_handler_step_qualname.py +2 -2
  186. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_hook_ctx_attributes.py +3 -1
  187. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_hook_ctx_binding.py +7 -7
  188. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_hookz_empty_phase.py +1 -1
  189. tigrbl_tests-0.3.12/tests/unit/test_in_tx.py +8 -0
  190. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_include_model_columns_namespace.py +3 -3
  191. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_include_models_base_prefix.py +3 -3
  192. tigrbl_tests-0.3.12/tests/unit/test_include_tables_base_prefix.py +28 -0
  193. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_initialize_async_task.py +3 -3
  194. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_initialize_cross_ddl.py +7 -6
  195. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_initialize_mixed_engines.py +4 -4
  196. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_initialize_task_schedule.py +4 -4
  197. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_instance_naming_conventions.py +8 -1
  198. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_io_spec_attributes.py +16 -14
  199. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_iospec_attributes.py +2 -2
  200. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_iospec_effects.py +19 -17
  201. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_jsonrpc_openrpc.py +57 -7
  202. tigrbl_tests-0.3.12/tests/unit/test_jsonrpc_router_default_tag.py +13 -0
  203. tigrbl_tests-0.3.12/tests/unit/test_kernel_invoke_ctx.py +9 -0
  204. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_kernel_opview_on_demand.py +8 -7
  205. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_kernel_plan_labels.py +9 -4
  206. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_kernelz_endpoint.py +3 -3
  207. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_make_column_shortcuts.py +1 -1
  208. tigrbl_tests-0.3.12/tests/unit/test_mapping_bind_response_export.py +14 -0
  209. tigrbl_tests-0.3.12/tests/unit/test_mapping_plan_precedence.py +44 -0
  210. tigrbl_tests-0.3.12/tests/unit/test_middleware_http_and_cors.py +99 -0
  211. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_mixins_sqlalchemy.py +2 -2
  212. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_op_alias.py +1 -6
  213. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_op_class_engine_binding.py +5 -3
  214. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_op_ctx_arity_paths.py +12 -13
  215. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_op_ctx_attributes.py +10 -18
  216. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_op_ctx_core_crud_integration.py +31 -31
  217. tigrbl_tests-0.3.12/tests/unit/test_op_ctx_custom_target_persist.py +80 -0
  218. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_op_ctx_dynamic_attach.py +2 -2
  219. tigrbl_tests-0.3.12/tests/unit/test_op_ctx_parameter_matrix.py +88 -0
  220. tigrbl_tests-0.3.12/tests/unit/test_op_ctx_persist_options.py +63 -0
  221. tigrbl_tests-0.3.12/tests/unit/test_openapi_documentation_security_behavior.py +127 -0
  222. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_openapi_openrpc_schema_separation.py +8 -5
  223. tigrbl_tests-0.3.12/tests/unit/test_openrpc_documentation_security_behavior.py +127 -0
  224. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_opspec_effects.py +12 -12
  225. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_relationship_alias_cols.py +11 -10
  226. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_request_body_schema.py +8 -9
  227. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_request_response_examples.py +14 -16
  228. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_resolver_interning_warmup.py +2 -2
  229. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_resolver_precedence.py +3 -2
  230. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_response_alias_table_rpc.py +8 -7
  231. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_response_ctx_precedence.py +8 -11
  232. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_response_diagnostics_kernelz.py +4 -4
  233. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_response_html_jinja_behavior.py +12 -10
  234. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_response_parity.py +2 -2
  235. tigrbl_tests-0.3.12/tests/unit/test_response_rest.py +54 -0
  236. tigrbl_tests-0.3.12/tests/unit/test_response_rpc.py +55 -0
  237. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_response_template.py +1 -1
  238. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_response_uuid.py +2 -2
  239. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_rest_all_default_op_verbs.py +16 -7
  240. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_rest_bulk_delete_suppresses_clear.py +5 -5
  241. tigrbl_tests-0.3.12/tests/unit/test_rest_no_schema_jsonable.py +85 -0
  242. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_rest_operation_id_uniqueness.py +6 -6
  243. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_rest_output_serialization_extras.py +2 -2
  244. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_rest_request_mapping_access.py +2 -2
  245. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_rest_rpc_parity_default_ops.py +5 -5
  246. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_rest_rpc_prefixes.py +5 -5
  247. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_rest_rpc_symmetry.py +9 -9
  248. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_router_compatibility_shims.py +4 -5
  249. tigrbl_tests-0.3.12/tests/unit/test_router_dependency_execution_blocked.py +9 -0
  250. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_rpc_all_default_op_verbs.py +7 -6
  251. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_rpc_default_ops.py +7 -6
  252. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_schema_ctx_attributes.py +1 -1
  253. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_schema_ctx_plain_class.py +3 -3
  254. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_schema_spec_presence.py +6 -6
  255. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_schemas_binding.py +3 -3
  256. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_security_per_route.py +8 -11
  257. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_spec_api.py +6 -6
  258. tigrbl_tests-0.3.12/tests/unit/test_spec_app.py +71 -0
  259. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_spec_column.py +2 -2
  260. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_spec_engine.py +10 -10
  261. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_spec_field.py +1 -1
  262. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_spec_hook.py +4 -4
  263. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_spec_io.py +2 -2
  264. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_spec_op.py +3 -3
  265. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_spec_storage.py +3 -2
  266. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_spec_table.py +15 -2
  267. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_sqlite_uuid_type.py +1 -1
  268. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_stdapi_request_injection.py +9 -10
  269. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_stdapi_transport_asgi_wsgi.py +3 -3
  270. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_storage_spec_attributes.py +2 -2
  271. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_sys_tx_async_begin.py +1 -1
  272. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_sys_tx_begin.py +9 -6
  273. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_system_docs_builders.py +1 -1
  274. tigrbl_tests-0.3.12/tests/unit/test_table_base_exports.py +21 -0
  275. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_table_collect_spec.py +6 -5
  276. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_table_columns_namespace.py +2 -2
  277. tigrbl_tests-0.3.12/tests/unit/test_table_model_attribute_contract.py +17 -0
  278. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_table_namespace_init.py +3 -2
  279. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_table_namespace_isolation.py +3 -2
  280. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_tigrbl_api_app_configuration.py +8 -8
  281. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_tigrbl_api_app_instantiation.py +7 -6
  282. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_tigrbl_api_app_subclass_definition.py +5 -4
  283. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_tigrbl_api_configuration.py +3 -4
  284. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_tigrbl_api_instantiation.py +9 -8
  285. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_tigrbl_api_subclass_definition.py +10 -9
  286. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_tigrbl_app_configuration.py +4 -6
  287. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_tigrbl_app_instantiation.py +7 -6
  288. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_tigrbl_app_state.py +1 -1
  289. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_tigrbl_app_subclass_definition.py +4 -3
  290. tigrbl_tests-0.3.12/tests/unit/test_transport_gw_contract.py +10 -0
  291. tigrbl_tests-0.3.12/tests/unit/test_transport_security_runtime_only.py +29 -0
  292. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_v3_healthz_endpoint.py +1 -1
  293. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_v3_op_alias.py +9 -8
  294. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_v3_op_ctx_attributes.py +1 -1
  295. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_v3_schemas_and_decorators.py +12 -17
  296. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_v3_storage_spec_attributes.py +23 -21
  297. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_verbosity.py +1 -1
  298. tigrbl_tests-0.3.11.dev5/tests/conftest.py +0 -363
  299. tigrbl_tests-0.3.11.dev5/tests/i9n/test_acronym_route_name.py +0 -16
  300. tigrbl_tests-0.3.11.dev5/tests/i9n/test_request_extras_provider.py +0 -27
  301. tigrbl_tests-0.3.11.dev5/tests/i9n/test_response_extras_provider.py +0 -22
  302. tigrbl_tests-0.3.11.dev5/tests/i9n/test_transport_dispatch_parity.py +0 -141
  303. tigrbl_tests-0.3.11.dev5/tests/options/test_rpc_options.py +0 -54
  304. tigrbl_tests-0.3.11.dev5/tests/unit/runtime/atoms/test_wire_build_in.py +0 -13
  305. tigrbl_tests-0.3.11.dev5/tests/unit/runtime/test_events_phases.py +0 -27
  306. tigrbl_tests-0.3.11.dev5/tests/unit/test_in_tx.py +0 -16
  307. tigrbl_tests-0.3.11.dev5/tests/unit/test_jsonrpc_router_default_tag.py +0 -10
  308. tigrbl_tests-0.3.11.dev5/tests/unit/test_kernel_invoke_ctx.py +0 -14
  309. tigrbl_tests-0.3.11.dev5/tests/unit/test_middleware_http_and_cors.py +0 -266
  310. tigrbl_tests-0.3.11.dev5/tests/unit/test_op_ctx_persist_options.py +0 -75
  311. tigrbl_tests-0.3.11.dev5/tests/unit/test_response_rest.py +0 -97
  312. tigrbl_tests-0.3.11.dev5/tests/unit/test_response_rpc.py +0 -88
  313. tigrbl_tests-0.3.11.dev5/tests/unit/test_rest_no_schema_jsonable.py +0 -66
  314. tigrbl_tests-0.3.11.dev5/tests/unit/test_spec_app.py +0 -28
  315. tigrbl_tests-0.3.11.dev5/tests/unit/test_table_base_exports.py +0 -22
  316. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/LICENSE +0 -0
  317. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/README.md +0 -0
  318. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/__init__.py +0 -0
  319. {tigrbl_tests-0.3.11.dev5/tests/i9n → tigrbl_tests-0.3.12/tests/harness_v3}/__init__.py +0 -0
  320. {tigrbl_tests-0.3.11.dev5/tests/parity → tigrbl_tests-0.3.12/tests/i9n}/__init__.py +0 -0
  321. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_jsonrpc_batch_behavior.py +0 -0
  322. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_list_filters_optional.py +0 -0
  323. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_nested_path_schema_and_rpc.py +0 -0
  324. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_rest_rpc_parity_v3.py +0 -0
  325. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/test_symmetry_parity.py +0 -0
  326. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/i9n/uvicorn_utils.py +0 -0
  327. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/mount/__init__.py +0 -0
  328. {tigrbl_tests-0.3.11.dev5/tests/perf → tigrbl_tests-0.3.12/tests/parity}/__init__.py +0 -0
  329. {tigrbl_tests-0.3.11.dev5/tests/unit → tigrbl_tests-0.3.12/tests/perf}/__init__.py +0 -0
  330. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/decorators/test_alias_ctx_bindings.py +0 -0
  331. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/decorators/test_op_alias_bindings.py +0 -0
  332. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_config_dataclass_none.py +0 -0
  333. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_hybrid_session_run_sync.py +0 -0
  334. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_jsonrpc_id_example.py +0 -0
  335. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_postgres_engine_errors.py +0 -0
  336. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_postgres_env_vars.py +0 -0
  337. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_should_wire_canonical.py +0 -0
  338. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_sqlite_attachments.py +0 -0
  339. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_sys_handler_crud.py +0 -0
  340. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_sys_run_rollback.py +0 -0
  341. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_sys_tx_commit.py +0 -0
  342. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_tigrbl_app_event_handlers.py +0 -0
  343. {tigrbl_tests-0.3.11.dev5 → tigrbl_tests-0.3.12}/tests/unit/test_v3_favicon_endpoint.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tigrbl_tests
3
- Version: 0.3.11.dev5
3
+ Version: 0.3.12
4
4
  Summary: Test suite and fixtures for the Tigrbl framework.
5
5
  License-Expression: Apache-2.0
6
6
  License-File: LICENSE
@@ -19,6 +19,7 @@ Classifier: Programming Language :: Python :: 3
19
19
  Classifier: Programming Language :: Python :: 3 :: Only
20
20
  Requires-Dist: asyncpg (>=0.30.0)
21
21
  Requires-Dist: flake8 (>=7.0)
22
+ Requires-Dist: jinja2 (>=3.1.0)
22
23
  Requires-Dist: psycopg2-binary (>=2.9.9)
23
24
  Requires-Dist: pytest (>=8.0)
24
25
  Requires-Dist: pytest-asyncio (>=0.24.0)
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "tigrbl_tests"
3
- version = "0.3.11.dev5"
3
+ version = "0.3.12"
4
4
  description = "Test suite and fixtures for the Tigrbl framework."
5
5
  license = "Apache-2.0"
6
6
  readme = "README.md"
@@ -33,6 +33,7 @@ dependencies = [
33
33
  "pytest-timeout>=2.3.1",
34
34
  "ruff>=0.9.9",
35
35
  "pytest-benchmark>=4.0.0",
36
+ "jinja2>=3.1.0",
36
37
  ]
37
38
  keywords = [
38
39
  "tigrbl",
@@ -47,7 +48,7 @@ keywords = [
47
48
 
48
49
  [tool.uv.sources]
49
50
  tigrbl = { workspace = true }
50
- tigrbl-client = { workspace = true }
51
+ tigrbl_client = { workspace = true }
51
52
 
52
53
  [tool.pytest.ini_options]
53
54
  norecursedirs = ["combined", "scripts"]
@@ -77,3 +78,8 @@ build-backend = "poetry.core.masonry.api"
77
78
  packages = [
78
79
  { include = "tests" },
79
80
  ]
81
+
82
+ [dependency-groups]
83
+ dev = [
84
+ "ruff>=0.11.0",
85
+ ]
@@ -0,0 +1,51 @@
1
+ from __future__ import annotations
2
+
3
+ import ast
4
+ from pathlib import Path
5
+
6
+ ROOT = Path(__file__).resolve().parents[3] / "tigrbl" / "tigrbl"
7
+
8
+
9
+ def _imported_modules(path: Path) -> set[str]:
10
+ tree = ast.parse(path.read_text(), filename=str(path))
11
+ modules: set[str] = set()
12
+ for node in ast.walk(tree):
13
+ if isinstance(node, ast.ImportFrom):
14
+ if node.module:
15
+ modules.add(node.module)
16
+ elif isinstance(node, ast.Import):
17
+ for alias in node.names:
18
+ modules.add(alias.name)
19
+ return modules
20
+
21
+
22
+ def test_runtime_and_core_are_transport_agnostic() -> None:
23
+ violations: list[str] = []
24
+ for scope in ("runtime", "core"):
25
+ for path in (ROOT / scope).rglob("*.py"):
26
+ modules = _imported_modules(path)
27
+ bad = [mod for mod in modules if mod.startswith("tigrbl.transport")]
28
+ if bad:
29
+ rel = path.relative_to(ROOT)
30
+ violations.append(f"{rel}: {sorted(set(bad))}")
31
+ assert violations == [], "\n".join(violations)
32
+
33
+
34
+ def test_transport_surface_files_are_fast_broken_removed() -> None:
35
+ transport = ROOT / "transport"
36
+ removed = [
37
+ "contracts.py",
38
+ "dispatch.py",
39
+ "dispatcher.py",
40
+ "gateway.py",
41
+ "gw.py",
42
+ "headers.py",
43
+ "httpx.py",
44
+ "request.py",
45
+ "request_adapters.py",
46
+ "response.py",
47
+ "_header.py",
48
+ "_response.py",
49
+ "background.py",
50
+ ]
51
+ assert all(not (transport / rel).exists() for rel in removed)
@@ -0,0 +1,33 @@
1
+ from __future__ import annotations
2
+
3
+ import ast
4
+ from pathlib import Path
5
+
6
+ ROOT = Path(__file__).resolve().parents[2]
7
+
8
+
9
+ def _imports_bindings(tree: ast.AST) -> bool:
10
+ for node in ast.walk(tree):
11
+ if isinstance(node, ast.Import):
12
+ if any(alias.name.startswith("tigrbl.bindings") for alias in node.names):
13
+ return True
14
+ if isinstance(node, ast.ImportFrom):
15
+ module = node.module or ""
16
+ if module.startswith("tigrbl.bindings"):
17
+ return True
18
+ return False
19
+
20
+
21
+ def test_no_tests_import_from_bindings() -> None:
22
+ offenders: list[str] = []
23
+ for py in ROOT.rglob("*.py"):
24
+ if ".venv" in py.parts:
25
+ continue
26
+ tree = ast.parse(py.read_text(encoding="utf-8"), filename=str(py))
27
+ if _imports_bindings(tree):
28
+ offenders.append(str(py.relative_to(ROOT)))
29
+
30
+ assert offenders == [], (
31
+ "Found legacy bindings imports; tests should use tigrbl.mapping or top-level "
32
+ f"exports instead: {offenders}"
33
+ )
@@ -0,0 +1,11 @@
1
+ from __future__ import annotations
2
+
3
+ import pytest
4
+
5
+
6
+ @pytest.mark.asyncio
7
+ async def test_tigrbl_dispatch_exports_removed() -> None:
8
+ import tigrbl
9
+
10
+ assert not hasattr(tigrbl, "dispatch_operation")
11
+ assert not hasattr(tigrbl, "resolve_operation")
@@ -0,0 +1,30 @@
1
+ from __future__ import annotations
2
+
3
+ from pathlib import Path
4
+
5
+ _STANDARDS = Path(__file__).resolve().parents[3]
6
+ PKG = _STANDARDS / "tigrbl" / "tigrbl"
7
+ RUNTIME_PKG = _STANDARDS / "tigrbl_runtime" / "tigrbl_runtime"
8
+
9
+
10
+ def test_dependency_invoke_is_runtime_event_anchor():
11
+ events = (RUNTIME_PKG / "runtime" / "events.py").read_text()
12
+ assert "DEP_EXTRA" in events
13
+ assert '"PRE_TX_BEGIN"' in events
14
+
15
+
16
+ def test_runtime_gateway_owns_runtime_entrypoint_and_send():
17
+ runtime_source = (RUNTIME_PKG / "runtime" / "runtime.py").read_text()
18
+ executor_source = (RUNTIME_PKG / "executors" / "kernel_executor.py").read_text()
19
+ packed_source = (RUNTIME_PKG / "executors" / "packed.py").read_text()
20
+
21
+ assert "kernel.kernel_plan(app)" in runtime_source
22
+ assert "await _invoke(" in executor_source
23
+ assert "_send_transport_response" in packed_source
24
+
25
+
26
+ def test_docs_generation_reads_secdeps_metadata():
27
+ openapi = (PKG / "system" / "docs" / "openapi" / "schema.py").read_text()
28
+ openrpc = (PKG / "system" / "docs" / "openrpc.py").read_text()
29
+ assert "secdeps" in openapi
30
+ assert 'item["name"]' in openrpc
@@ -0,0 +1,8 @@
1
+ from __future__ import annotations
2
+
3
+ from pathlib import Path
4
+
5
+
6
+ def test_legacy_transport_dispatcher_file_absent():
7
+ root = Path(__file__).resolve().parents[3] / "tigrbl" / "tigrbl" / "transport"
8
+ assert not (root / "dispatcher.py").exists()
@@ -0,0 +1,30 @@
1
+ from __future__ import annotations
2
+
3
+ from pathlib import Path
4
+
5
+
6
+ ROOT = Path(__file__).resolve().parents[3] / "tigrbl" / "tigrbl"
7
+
8
+
9
+ def _target_variants(name: str) -> tuple[str, ...]:
10
+ return (name, f"{name}.py")
11
+
12
+
13
+ def test_transport_boundary_removed_modules_absent() -> None:
14
+ transport = ROOT / "transport"
15
+ removed = {
16
+ "contracts",
17
+ "dispatch",
18
+ "dispatcher",
19
+ "gateway",
20
+ "gw",
21
+ "headers",
22
+ "httpx",
23
+ "request",
24
+ "request_adapters",
25
+ "responses",
26
+ }
27
+
28
+ for name in removed:
29
+ for candidate in _target_variants(name):
30
+ assert not (transport / candidate).exists()
@@ -0,0 +1,56 @@
1
+ from __future__ import annotations
2
+
3
+ import ast
4
+ from pathlib import Path
5
+
6
+ _STANDARDS = Path(__file__).resolve().parents[3]
7
+ ROOT = _STANDARDS / "tigrbl" / "tigrbl"
8
+ RUNTIME_ROOT = _STANDARDS / "tigrbl_runtime" / "tigrbl_runtime"
9
+ CANON_ROOT = _STANDARDS / "tigrbl_canon" / "tigrbl_canon"
10
+
11
+
12
+ def _source(pkg_root: Path, rel: str) -> str:
13
+ return (pkg_root / rel).read_text()
14
+
15
+
16
+ def _imports_module(path: Path, module: str, symbol: str | None = None) -> bool:
17
+ tree = ast.parse(path.read_text(), filename=str(path))
18
+ for node in ast.walk(tree):
19
+ if isinstance(node, ast.ImportFrom):
20
+ module_name = f"{'.' * node.level}{node.module or ''}"
21
+ if module_name == module:
22
+ if symbol is None:
23
+ return True
24
+ if any(alias.name == symbol for alias in node.names):
25
+ return True
26
+ return False
27
+
28
+
29
+ def test_gateway_runtime_module_removed():
30
+ assert not (RUNTIME_ROOT / "runtime" / "gw").exists()
31
+
32
+
33
+ def test_mapping_does_not_import_dispatch_modules():
34
+ rest_collection = CANON_ROOT / "mapping" / "rest" / "collection.py"
35
+ rest_member = CANON_ROOT / "mapping" / "rest" / "member.py"
36
+ rpc_mapping = CANON_ROOT / "mapping" / "rpc.py"
37
+ router_proxy = CANON_ROOT / "mapping" / "router" / "resource_proxy.py"
38
+
39
+ for path in (rest_collection, rest_member, rpc_mapping, router_proxy):
40
+ assert not _imports_module(path, "tigrbl", "dispatch_operation")
41
+ assert not _imports_module(path, "..dispatch")
42
+ assert not _imports_module(path, "...dispatch")
43
+
44
+
45
+ def test_mapping_layers_return_operation_envelopes_without_invoke_calls():
46
+ rpc_source = _source(CANON_ROOT, "mapping/rpc.py")
47
+ assert "_invoke(" not in rpc_source
48
+
49
+
50
+ def test_removed_transport_dispatcher_files_are_absent():
51
+ removed = (
52
+ ROOT / "transport" / "dispatch.py",
53
+ ROOT / "transport" / "dispatcher.py",
54
+ ROOT / "transport" / "jsonrpc" / "dispatcher.py",
55
+ )
56
+ assert all(not path.exists() for path in removed)