tigrbl_tests 0.4.2.dev4__tar.gz → 0.4.3__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 (624) hide show
  1. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/PKG-INFO +1 -1
  2. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/pyproject.toml +1 -1
  3. tigrbl_tests-0.4.3/tests/architecture/test_route_to_pathspec_migration.py +53 -0
  4. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/architecture/test_runtime_structure.py +5 -3
  5. tigrbl_tests-0.4.3/tests/architecture/test_transport_hot_path_boundary.py +66 -0
  6. tigrbl_tests-0.4.3/tests/architecture/test_transport_removal_readiness.py +57 -0
  7. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/conftest.py +5 -9
  8. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_bindings_integration.py +1 -1
  9. tigrbl_tests-0.4.3/tests/i9n/test_client_session_robustness_contracts.py +99 -0
  10. tigrbl_tests-0.4.3/tests/i9n/test_client_session_topology_contracts.py +101 -0
  11. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_core_access.py +0 -4
  12. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_nested_path_schema_and_rpc.py +2 -2
  13. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_schema.py +2 -8
  14. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_v3_default_rpc_ops.py +2 -0
  15. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_v3_opspec_attributes.py +1 -1
  16. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_webtransport_tigrcorn_bridge.py +83 -0
  17. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_webtransport_tigrcorn_session_multiplexing.py +331 -1
  18. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/parity/test_executor_metamorphic_parity.py +1 -62
  19. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/test_fastapi_vs_tigrbl_executor_benchmark.py +3 -163
  20. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/protocol/test_protocol_runtime_governance_contracts.py +36 -3
  21. tigrbl_tests-0.4.3/tests/rust/atoms/test_rust_atoms_public_surface.py +21 -0
  22. tigrbl_tests-0.4.3/tests/rust/ffi/test_rust_binding_trace.py +21 -0
  23. tigrbl_tests-0.4.3/tests/rust/kernel/test_rust_kernel_public_surface.py +17 -0
  24. tigrbl_tests-0.4.3/tests/rust/runtime/test_rust_runtime_engine_policy.py +12 -0
  25. tigrbl_tests-0.4.3/tests/rust/runtime/test_rust_runtime_public_surface.py +36 -0
  26. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/security/test_httpbearer_contract.py +1 -2
  27. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/security/test_schemes.py +1 -4
  28. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/test_secdeps_execute_in_pre_tx.py +1 -1
  29. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_app_framed_message_codec_contract.py +14 -14
  30. tigrbl_tests-0.4.3/tests/unit/runtime/test_asgi_transport_projection_contract.py +137 -0
  31. tigrbl_tests-0.4.3/tests/unit/runtime/test_atom_chain_requirement_projection_contract.py +124 -0
  32. tigrbl_tests-0.4.3/tests/unit/runtime/test_binding_token_lowering_contract.py +268 -0
  33. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_canonical_bindingspec_framing_policy.py +107 -7
  34. tigrbl_tests-0.4.3/tests/unit/runtime/test_canonical_operation_identity_contract.py +53 -0
  35. tigrbl_tests-0.4.3/tests/unit/runtime/test_client_session_coverage_matrix_contract.py +137 -0
  36. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_completion_fence_emit_complete_contract.py +7 -7
  37. tigrbl_tests-0.4.3/tests/unit/runtime/test_concrete_instance_identity_contract.py +65 -0
  38. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_contract_classification_consumption_policy.py +16 -0
  39. tigrbl_tests-0.4.3/tests/unit/runtime/test_cross_transport_equivalence_contract.py +149 -0
  40. tigrbl_tests-0.4.3/tests/unit/runtime/test_determinism_contract.py +150 -0
  41. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_dispatch_exchange_family_subevent_atoms_contract.py +7 -7
  42. tigrbl_tests-0.4.3/tests/unit/runtime/test_docs_runtime_exposure_policy_contract.py +112 -0
  43. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_eventful_channel_state_metadata_contract.py +9 -9
  44. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_eventful_subevent_surface_contracts.py +3 -3
  45. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_events_runtime_behavior.py +4 -24
  46. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_events_stages.py +7 -28
  47. tigrbl_tests-0.4.3/tests/unit/runtime/test_explicit_route_selector_precedence_contract.py +32 -0
  48. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_first_class_callback_runtime_contract.py +6 -6
  49. tigrbl_tests-0.4.3/tests/unit/runtime/test_first_class_webhook_delivery_contract.py +26 -0
  50. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_framing_decode_encode_atoms_contract.py +7 -7
  51. tigrbl_tests-0.4.3/tests/unit/runtime/test_framing_matrix_ssot_conformance.py +57 -0
  52. tigrbl_tests-0.4.3/tests/unit/runtime/test_h3_non_webtransport_stream_taxonomy_contract.py +42 -0
  53. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_http_rest_jsonrpc_atom_chain_contract.py +3 -3
  54. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_http_stream_atom_chain_contract.py +55 -4
  55. tigrbl_tests-0.4.3/tests/unit/runtime/test_http_stream_client_stream_runtime_contract.py +80 -0
  56. tigrbl_tests-0.4.3/tests/unit/runtime/test_idempotency_contract.py +56 -0
  57. tigrbl_tests-0.4.3/tests/unit/runtime/test_inbound_webhook_runtime_contract.py +96 -0
  58. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_iterator_producer_contract.py +7 -7
  59. tigrbl_tests-0.4.3/tests/unit/runtime/test_kernelplan_executor_runtime_shim_contract.py +91 -0
  60. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_lifespan_runtime_chain_contract.py +4 -4
  61. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_loop_ownership_mode_contract.py +2 -2
  62. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_loop_region_executor_contract.py +2 -2
  63. tigrbl_tests-0.4.3/tests/unit/runtime/test_op_verb_to_default_binding_matrix_contract.py +207 -0
  64. tigrbl_tests-0.4.3/tests/unit/runtime/test_outbound_callback_delivery_contract.py +85 -0
  65. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_protocol_anchor_ordering_parity_contract.py +9 -7
  66. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_protocol_phase_tree_contract.py +26 -0
  67. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_protocol_scope_schemas_contract.py +7 -7
  68. tigrbl_tests-0.4.3/tests/unit/runtime/test_protocol_stream_initiator_legality_contract.py +111 -0
  69. tigrbl_tests-0.4.3/tests/unit/runtime/test_python_only_runtime_benchmark_rail.py +38 -0
  70. tigrbl_tests-0.4.3/tests/unit/runtime/test_python_only_runtime_no_rust_public_exports.py +38 -0
  71. tigrbl_tests-0.4.3/tests/unit/runtime/test_python_only_runtime_rust_executor_rejection.py +46 -0
  72. tigrbl_tests-0.4.3/tests/unit/runtime/test_python_only_runtime_rust_kernel_module_retirement.py +55 -0
  73. tigrbl_tests-0.4.3/tests/unit/runtime/test_python_only_runtime_ssot_docs_rust_parity_ban.py +57 -0
  74. tigrbl_tests-0.4.3/tests/unit/runtime/test_replay_contract.py +54 -0
  75. tigrbl_tests-0.4.3/tests/unit/runtime/test_retry_contract.py +110 -0
  76. tigrbl_tests-0.4.3/tests/unit/runtime/test_runtime_compaction_contract.py +56 -0
  77. tigrbl_tests-0.4.3/tests/unit/runtime/test_runtime_execution_contract.py +28 -0
  78. tigrbl_tests-0.4.3/tests/unit/runtime/test_runtime_frame_codec_contract.py +423 -0
  79. tigrbl_tests-0.4.3/tests/unit/runtime/test_runtime_rollup_contract.py +56 -0
  80. tigrbl_tests-0.4.3/tests/unit/runtime/test_session_leakage_prevention_contract.py +158 -0
  81. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_sse_runtime_contract.py +5 -5
  82. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_static_file_runtime_chain_contract.py +4 -4
  83. tigrbl_tests-0.4.3/tests/unit/runtime/test_stream_resume_runtime_t01.py +65 -0
  84. tigrbl_tests-0.4.3/tests/unit/runtime/test_stream_resume_runtime_t2.py +79 -0
  85. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_subevent_handler_dispatch_contract.py +3 -3
  86. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_subevent_transaction_units_contract.py +3 -3
  87. tigrbl_tests-0.4.3/tests/unit/runtime/test_table_profile_axis_model_contract.py +97 -0
  88. tigrbl_tests-0.4.3/tests/unit/runtime/test_table_profile_op_selection_matrix_contract.py +198 -0
  89. tigrbl_tests-0.4.3/tests/unit/runtime/test_table_transport_binding_profiles_contract.py +295 -0
  90. tigrbl_tests-0.4.3/tests/unit/runtime/test_trace_qlog_contract.py +56 -0
  91. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_transport_accept_emit_close_atoms_contract.py +2 -2
  92. tigrbl_tests-0.4.3/tests/unit/runtime/test_transport_delivery_guarantees_contract.py +145 -0
  93. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_transport_event_registry_contract.py +21 -0
  94. tigrbl_tests-0.4.3/tests/unit/runtime/test_unsupported_framing_fail_closed_contract.py +129 -0
  95. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_websocket_atom_chain_contract.py +4 -4
  96. tigrbl_tests-0.4.3/tests/unit/runtime/test_websocket_framing_runtime_contract.py +99 -0
  97. tigrbl_tests-0.4.3/tests/unit/runtime/test_webtransport_bidi_initiator_contract.py +117 -0
  98. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_webtransport_lane_framing_policy.py +35 -3
  99. tigrbl_tests-0.4.3/tests/unit/runtime/test_webtransport_session_multiplexing_policy.py +292 -0
  100. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_webtransport_transport_events_contract.py +1 -1
  101. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_yield_iterator_producer_contract.py +1 -1
  102. tigrbl_tests-0.4.3/tests/unit/test_attrdict_t2_contract.py +41 -0
  103. tigrbl_tests-0.4.3/tests/unit/test_base_contract_t2_behavior.py +148 -0
  104. tigrbl_tests-0.4.3/tests/unit/test_cli_target_loading_contract.py +147 -0
  105. tigrbl_tests-0.4.3/tests/unit/test_concrete_dependency_helpers_t2.py +80 -0
  106. tigrbl_tests-0.4.3/tests/unit/test_concrete_facade_helpers_t2.py +60 -0
  107. tigrbl_tests-0.4.3/tests/unit/test_concrete_response_background_task_t2.py +44 -0
  108. tigrbl_tests-0.4.3/tests/unit/test_concrete_session_helpers_t2.py +97 -0
  109. tigrbl_tests-0.4.3/tests/unit/test_concrete_static_schema_helpers_t2.py +79 -0
  110. tigrbl_tests-0.4.3/tests/unit/test_ddl_initialization_modes_contract.py +103 -0
  111. tigrbl_tests-0.4.3/tests/unit/test_docs_mount_runtime_surface_parity_contract.py +93 -0
  112. tigrbl_tests-0.4.3/tests/unit/test_include_tables_helper_surface_contract.py +76 -0
  113. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_instance_naming_conventions.py +1 -0
  114. tigrbl_tests-0.4.3/tests/unit/test_jsonrpc_codec_authority.py +87 -0
  115. tigrbl_tests-0.4.3/tests/unit/test_jsonrpc_schema_namespace.py +52 -0
  116. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_kernelz_endpoint.py +5 -7
  117. tigrbl_tests-0.4.3/tests/unit/test_middleware_surface_contracts.py +196 -0
  118. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_op_ctx_persist_options.py +9 -12
  119. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_rest_jsonrpc_metamorphic_default_ops.py +23 -19
  120. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_system_docs_diagnostics_contracts.py +94 -0
  121. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_table_collect_spec.py +9 -1
  122. tigrbl_tests-0.4.3/tests/unit/test_table_profile_exports.py +30 -0
  123. tigrbl_tests-0.4.3/tests/unit/test_transport_compat_imports.py +50 -0
  124. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_transport_demo_bundle.py +2 -2
  125. tigrbl_tests-0.4.3/tests/unit/test_transport_deprecation_warnings.py +54 -0
  126. tigrbl_tests-0.4.3/tests/unit/test_well_known_surface_t2.py +247 -0
  127. tigrbl_tests-0.4.2.dev4/tests/parity/test_atom_parity_corpus.py +0 -29
  128. tigrbl_tests-0.4.2.dev4/tests/perf/benchmark_results_executors_seq_10_rounds.json +0 -915
  129. tigrbl_tests-0.4.2.dev4/tests/perf/benchmark_results_executors_seq_10_rounds_1000_ops.json +0 -915
  130. tigrbl_tests-0.4.2.dev4/tests/rust/atoms/test_rust_atoms_public_surface.py +0 -22
  131. tigrbl_tests-0.4.2.dev4/tests/rust/ffi/test_rust_binding_trace.py +0 -13
  132. tigrbl_tests-0.4.2.dev4/tests/rust/kernel/test_rust_kernel_public_surface.py +0 -21
  133. tigrbl_tests-0.4.2.dev4/tests/rust/parity/test_rust_parity_contract.py +0 -112
  134. tigrbl_tests-0.4.2.dev4/tests/rust/runtime/test_rust_runtime_engine_policy.py +0 -34
  135. tigrbl_tests-0.4.2.dev4/tests/rust/runtime/test_rust_runtime_public_surface.py +0 -66
  136. tigrbl_tests-0.4.2.dev4/tests/unit/runtime/test_first_class_webhook_delivery_contract.py +0 -123
  137. tigrbl_tests-0.4.2.dev4/tests/unit/runtime/test_kernelplan_executor_runtime_shim_contract.py +0 -52
  138. tigrbl_tests-0.4.2.dev4/tests/unit/runtime/test_webtransport_session_multiplexing_policy.py +0 -144
  139. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/LICENSE +0 -0
  140. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/NOTICE +0 -0
  141. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/README.md +0 -0
  142. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/__init__.py +0 -0
  143. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/architecture/test_import_graph_audit.py +0 -0
  144. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/architecture/test_no_bindings_imports.py +0 -0
  145. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/architecture/test_operation_resolution_parity.py +0 -0
  146. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/architecture/test_trace_plan_parity.py +0 -0
  147. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/architecture/test_transport_boundaries.py +0 -0
  148. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/architecture/test_transport_dispatch_convergence.py +0 -0
  149. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/fixtures/appspec_corpus.canonical.json +0 -0
  150. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/fixtures/appspec_corpus.negative.json +0 -0
  151. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/fixtures/appspec_corpus_loader.py +0 -0
  152. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/fixtures/cli_smoke_app.py +0 -0
  153. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/fixtures/system_diagnostics.py +0 -0
  154. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/harness/test_00_appspec_contract.py +0 -0
  155. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/harness/test_01_kernel_plan_compilation.py +0 -0
  156. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/harness/test_02_bootstrap_plan.py +0 -0
  157. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/harness/test_03_appspec_uvicorn_e2e.py +0 -0
  158. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/harness/test_04_appspec_corpus_fixture.py +0 -0
  159. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/harness/test_05_appspec_metamorphic.py +0 -0
  160. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/harness_e2e/test_00_appspec_uvicorn_rest_rpc.py +0 -0
  161. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/harness_e2e/test_01_appspec_corpus_uvicorn.py +0 -0
  162. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/harness_e2e/test_01_imperative_uvicorn_rest_rpc.py +0 -0
  163. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/harness_v3/__init__.py +0 -0
  164. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/harness_v3/_support.py +0 -0
  165. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/harness_v3/test_appspec_prefixes.py +0 -0
  166. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/harness_v3/test_bootstrap_kernel_compilation.py +0 -0
  167. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/harness_v3/test_default_opspec_bindings.py +0 -0
  168. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/harness_v3/test_kernel_plan_routing.py +0 -0
  169. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/harness_v3/test_mapping_plan_compilation.py +0 -0
  170. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/harness_v3/test_route_rpc_prebinding.py +0 -0
  171. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/harness_v3/test_route_runtime_fallback_atoms.py +0 -0
  172. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/harness_v3/test_uvicorn_e2e_appspec.py +0 -0
  173. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/hooks/test_hook_ctx_stage_validation.py +0 -0
  174. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/__init__.py +0 -0
  175. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_acronym_route_name.py +0 -0
  176. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_allow_anon.py +0 -0
  177. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_apikey_generation.py +0 -0
  178. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_auth_status_projection_contract.py +0 -0
  179. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_authn_provider_integration.py +0 -0
  180. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_batch_scheduler_i9n.py +0 -0
  181. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_bindings_modules.py +0 -0
  182. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_bulk_docs_client.py +0 -0
  183. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_canonical_appspec_runtime_lowering.py +0 -0
  184. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_engine_install_uvicorn.py +0 -0
  185. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_engine_resolver_uvicorn.py +0 -0
  186. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_error_mappings.py +0 -0
  187. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_field_spec_effects.py +0 -0
  188. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_header_io_uvicorn.py +0 -0
  189. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_healthz_methodz_hookz.py +0 -0
  190. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_hook_ctx_v3_i9n.py +0 -0
  191. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_hook_lifecycle.py +0 -0
  192. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_hot_path_batch_slots.py +0 -0
  193. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_http_stream_batch_runtime_execution.py +0 -0
  194. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_http_stream_batch_scheduler.py +0 -0
  195. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_iospec_attributes.py +0 -0
  196. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_iospec_integration.py +0 -0
  197. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_jsonrpc_batch_behavior.py +0 -0
  198. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_jsonrpc_batch_runtime_execution.py +0 -0
  199. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_jsonrpc_batch_scheduler.py +0 -0
  200. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_key_digest_uvicorn.py +0 -0
  201. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_list_filters_optional.py +0 -0
  202. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_mixins.py +0 -0
  203. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_mountable_favicon_uvicorn.py +0 -0
  204. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_mountable_lens_uvicorn.py +0 -0
  205. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_mountable_openapi_uvicorn.py +0 -0
  206. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_mountable_openrpc_uvicorn.py +0 -0
  207. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_mountable_swagger_uvicorn.py +0 -0
  208. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_nested_routing_depth.py +0 -0
  209. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_op_ctx_alias_examples.py +0 -0
  210. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_op_ctx_behavior.py +0 -0
  211. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_op_ctx_core_crud_order.py +0 -0
  212. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_op_ctx_owner_scope_materialization_contracts.py +0 -0
  213. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_op_ctx_owner_scope_uvicorn_matrix.py +0 -0
  214. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_openapi_clear_response_schema.py +0 -0
  215. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_openapi_schema_examples_presence.py +0 -0
  216. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_opspec_effects_i9n_test.py +0 -0
  217. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_opspec_pre_tx_deps.py +0 -0
  218. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_owner_tenant_policy.py +0 -0
  219. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_request_extras.py +0 -0
  220. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_resident_batch_scheduler_runtime.py +0 -0
  221. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_rest_fallback_serialization.py +0 -0
  222. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_rest_row_serialization.py +0 -0
  223. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_rest_rpc_parity_v3.py +0 -0
  224. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_row_result_serialization.py +0 -0
  225. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_schema_ctx_attributes_integration.py +0 -0
  226. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_schema_ctx_op_ctx_integration.py +0 -0
  227. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_schema_ctx_spec_integration.py +0 -0
  228. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_sqlite_attachments.py +0 -0
  229. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_storage_spec_integration.py +0 -0
  230. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_symmetry_parity.py +0 -0
  231. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_tigrbl_api_app_usage_uvicorn.py +0 -0
  232. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_tigrbl_api_usage_uvicorn.py +0 -0
  233. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_tigrbl_api_uvicorn.py +0 -0
  234. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_tigrbl_app_include_api_uvicorn.py +0 -0
  235. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_tigrbl_app_multi_api_uvicorn.py +0 -0
  236. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_tigrbl_app_usage_uvicorn.py +0 -0
  237. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_tigrbl_app_uvicorn.py +0 -0
  238. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_transport_demo_tigrcorn_e2e_matrix.py +0 -0
  239. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_transport_dispatch_parity.py +0 -0
  240. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_types_deprecation_exports.py +0 -0
  241. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_uvicorn_transport_behavior.py +0 -0
  242. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_v3_bulk_rest_endpoints.py +0 -0
  243. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_v3_default_rest_ops.py +0 -0
  244. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_verb_alias_policy.py +0 -0
  245. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_websocket_batch_runtime_execution.py +0 -0
  246. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/test_websocket_batch_scheduler.py +0 -0
  247. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/i9n/uvicorn_utils.py +0 -0
  248. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/mount/__init__.py +0 -0
  249. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/mount/test_mount_favico.py +0 -0
  250. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/options/test_rest_options.py +0 -0
  251. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/options/test_rpc_options.py +0 -0
  252. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/parity/__init__.py +0 -0
  253. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/parity/test_hook_runtime_stage_parity.py +0 -0
  254. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/parity/test_stdapi_openapi_docs.py +0 -0
  255. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/parity/test_stdapi_primitives.py +0 -0
  256. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/parity/test_stdapi_routing.py +0 -0
  257. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/__init__.py +0 -0
  258. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/benchmark_results_create_asgitransport_sequential_10_rounds_250_ops.json +0 -0
  259. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/benchmark_results_create_httpxtransport_sequential_10_rounds_250_ops.json +0 -0
  260. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/benchmark_results_create_uvicorn.json +0 -0
  261. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/benchmark_results_create_uvicorn_sequential_10_rounds.json +0 -0
  262. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/benchmark_results_create_uvicorn_sequential_10_rounds_250_ops.json +0 -0
  263. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/benchmark_results_sse_uvicorn.json +0 -0
  264. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/benchmark_results_streaming_uvicorn.json +0 -0
  265. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/benchmark_results_tigrbl_create_batch_policy_permutations_15_rounds_2500_ops.json +0 -0
  266. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/benchmark_results_tigrbl_create_batch_policy_permutations_20_rounds_2500_ops.json +0 -0
  267. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/benchmark_results_tigrbl_create_batch_policy_permutations_20_rounds_250_ops.json +0 -0
  268. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/benchmark_results_tigrbl_create_modes_15_rounds_250_ops.json +0 -0
  269. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/benchmark_results_websocket_uvicorn.json +0 -0
  270. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/benchmark_results_webtransport_uvicorn.json +0 -0
  271. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/compiled_input_strategy_microbench.json +0 -0
  272. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/conftest.py +0 -0
  273. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/egress_body_coercion_microbench.json +0 -0
  274. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/exact_route_marker_microbench.json +0 -0
  275. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/fastapi_create_call_graph_250_ops.json +0 -0
  276. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/fastapi_sse_call_graph_250_ops.json +0 -0
  277. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/fastapi_sse_transport_call_graph_250_ops.json +0 -0
  278. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/fastapi_streaming_call_graph_250_ops.json +0 -0
  279. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/fastapi_websocket_call_graph_250_ops.json +0 -0
  280. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/fastapi_websocket_transport_call_graph_250_ops.json +0 -0
  281. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/helper_fastapi_create_app.py +0 -0
  282. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/helper_sse_apps.py +0 -0
  283. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/helper_streaming_apps.py +0 -0
  284. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/helper_tigrbl_create_app.py +0 -0
  285. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/helper_websocket_apps.py +0 -0
  286. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/helper_webtransport_apps.py +0 -0
  287. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/hot_block_lane_microbench.json +0 -0
  288. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/hot_path_perf_suite_manifest.json +0 -0
  289. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/hot_path_perf_suite_report.md +0 -0
  290. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/kernel-plan-benchmark-sse.json +0 -0
  291. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/kernel-plan-benchmark-sse.md +0 -0
  292. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/kernel-plan-benchmark-streaming.json +0 -0
  293. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/kernel-plan-benchmark-streaming.md +0 -0
  294. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/kernel-plan-benchmark-websocket.json +0 -0
  295. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/kernel-plan-benchmark-websocket.md +0 -0
  296. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/kernel-plan-benchmark-webtransport.json +0 -0
  297. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/kernel-plan-benchmark-webtransport.md +0 -0
  298. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/kernel-plan-benchmark.json +0 -0
  299. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/kernel-plan-benchmark.md +0 -0
  300. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/runtime_hotstate_microbench.json +0 -0
  301. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/runtime_namespace_dictget_microbench.json +0 -0
  302. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/runtime_typecheck_microbench.json +0 -0
  303. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/test_collect_caching.py +0 -0
  304. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/test_comparative_benchmark_verification.py +0 -0
  305. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/test_compiled_input_strategy_microbench.py +0 -0
  306. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/test_egress_body_coercion_microbench.py +0 -0
  307. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/test_exact_route_marker_microbench.py +0 -0
  308. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/test_fastapi_create_call_graph.py +0 -0
  309. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/test_hookz_performance.py +0 -0
  310. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/test_hot_block_lane_microbench.py +0 -0
  311. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/test_methodz_performance.py +0 -0
  312. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/test_open_loop_load_patterns.py +0 -0
  313. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/test_runtime_hotstate_microbench.py +0 -0
  314. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/test_runtime_namespace_dictget_microbench.py +0 -0
  315. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/test_runtime_typecheck_microbench.py +0 -0
  316. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/test_tigrbl_create_batch_modes_benchmark.py +0 -0
  317. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/test_tigrbl_create_batch_policy_permutations_benchmark.py +0 -0
  318. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/test_tigrbl_create_call_graph.py +0 -0
  319. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/test_tigrbl_vs_fastapi_create_benchmark.py +0 -0
  320. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/test_validation_guard_strategy_microbench.py +0 -0
  321. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/tgpkhot1-benchmark-items.benchmark.json +0 -0
  322. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/tgpkhot1-benchmark-items.benchmark.md +0 -0
  323. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/tgpkhot1-benchmark-items.bin +0 -0
  324. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/tgpkhot1-benchmark-items.hexdump.txt +0 -0
  325. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/tgpkhot1-benchmark-items.summary.json +0 -0
  326. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/tgpkhot1-benchmark-sse.benchmark.json +0 -0
  327. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/tgpkhot1-benchmark-sse.benchmark.md +0 -0
  328. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/tgpkhot1-benchmark-sse.bin +0 -0
  329. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/tgpkhot1-benchmark-sse.hexdump.txt +0 -0
  330. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/tgpkhot1-benchmark-sse.summary.json +0 -0
  331. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/tgpkhot1-benchmark-streaming.benchmark.json +0 -0
  332. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/tgpkhot1-benchmark-streaming.benchmark.md +0 -0
  333. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/tgpkhot1-benchmark-streaming.bin +0 -0
  334. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/tgpkhot1-benchmark-streaming.hexdump.txt +0 -0
  335. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/tgpkhot1-benchmark-streaming.summary.json +0 -0
  336. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/tgpkhot1-benchmark-websocket.benchmark.json +0 -0
  337. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/tgpkhot1-benchmark-websocket.benchmark.md +0 -0
  338. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/tgpkhot1-benchmark-websocket.bin +0 -0
  339. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/tgpkhot1-benchmark-websocket.hexdump.txt +0 -0
  340. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/tgpkhot1-benchmark-websocket.summary.json +0 -0
  341. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/tgpkhot1-benchmark-webtransport.benchmark.json +0 -0
  342. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/tgpkhot1-benchmark-webtransport.benchmark.md +0 -0
  343. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/tgpkhot1-benchmark-webtransport.bin +0 -0
  344. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/tgpkhot1-benchmark-webtransport.hexdump.txt +0 -0
  345. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/tgpkhot1-benchmark-webtransport.summary.json +0 -0
  346. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/tigrbl_create_call_graph_250_ops.json +0 -0
  347. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/tigrbl_sse_call_graph_250_ops.json +0 -0
  348. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/tigrbl_sse_transport_call_graph_250_ops.json +0 -0
  349. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/tigrbl_streaming_call_graph_250_ops.json +0 -0
  350. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/tigrbl_websocket_call_graph_250_ops.json +0 -0
  351. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/tigrbl_websocket_transport_call_graph_250_ops.json +0 -0
  352. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/tigrbl_webtransport_call_graph_250_ops.json +0 -0
  353. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/tigrbl_webtransport_transport_call_graph_250_ops.json +0 -0
  354. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/validation_guard_strategy_microbench.json +0 -0
  355. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/perf/wsproto_client.py +0 -0
  356. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/request/test_request_asgi_scope_compat.py +0 -0
  357. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/request/test_request_authn_strip.py +0 -0
  358. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/request/test_request_dot_notation.py +0 -0
  359. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/request/test_request_response_conveniences.py +0 -0
  360. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/request/test_request_transport_convenience_dot_notation.py +0 -0
  361. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/requests/test_request_json_modes.py +0 -0
  362. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/response/test_response_dot_notation.py +0 -0
  363. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/response/test_response_transport_convenience_dot_notation.py +0 -0
  364. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/security/test_dot_notation_schemes.py +0 -0
  365. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/__init__.py +0 -0
  366. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/decorators/test_alias_ctx_bindings.py +0 -0
  367. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/decorators/test_declarative_surface.py +0 -0
  368. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/decorators/test_engine_ctx_bindings.py +0 -0
  369. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/decorators/test_hook_ctx_bindings.py +0 -0
  370. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/decorators/test_op_alias_bindings.py +0 -0
  371. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/decorators/test_op_ctx_bindings.py +0 -0
  372. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/decorators/test_response_ctx_bindings.py +0 -0
  373. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/decorators/test_schema_ctx_bindings.py +0 -0
  374. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/response_utils.py +0 -0
  375. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/atoms/test_emit_paired_post.py +0 -0
  376. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/atoms/test_emit_paired_pre.py +0 -0
  377. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/atoms/test_emit_readtime_alias.py +0 -0
  378. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/atoms/test_out_masking.py +0 -0
  379. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/atoms/test_refresh_demand.py +0 -0
  380. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/atoms/test_resolve_assemble.py +0 -0
  381. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/atoms/test_resolve_paired_gen.py +0 -0
  382. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/atoms/test_route_protocol_detect.py +0 -0
  383. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/atoms/test_schema_collect_in.py +0 -0
  384. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/atoms/test_schema_collect_out.py +0 -0
  385. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/atoms/test_storage_to_stored.py +0 -0
  386. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/atoms/test_wire_build_in.py +0 -0
  387. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/atoms/test_wire_build_out.py +0 -0
  388. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/atoms/test_wire_dump.py +0 -0
  389. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/atoms/test_wire_validate_in.py +0 -0
  390. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_atom_stage_window_static.py +0 -0
  391. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_binding_exchange_normalization_contract.py +0 -0
  392. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_binding_subevent_phase_atom_legality_matrix_contract.py +0 -0
  393. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_bindingspec_event_subevent_schema_contract.py +0 -0
  394. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_bindingspec_kernelplan_protocol_compilation_contract.py +0 -0
  395. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_compilation_runtime_behavior.py +0 -0
  396. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_compiled_loop_regions_contract.py +0 -0
  397. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_contract_classification_drift_guard.py +0 -0
  398. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_derived_runtime_subevent_taxonomy_contract.py +0 -0
  399. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_eventful_protocol_decorator_surface_contract.py +0 -0
  400. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_eventkey_bit_coded_dispatch_contract.py +0 -0
  401. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_eventkey_hook_bucket_compilation_contract.py +0 -0
  402. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_hook_selector_matching_contract.py +0 -0
  403. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_ingress_egress_access.py +0 -0
  404. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_kernel_plan_event_ordering.py +0 -0
  405. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_kernel_plan_full_ordering.py +0 -0
  406. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_kernel_runtime_behavior.py +0 -0
  407. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_legacy_runtime_family_alias_normalization.py +0 -0
  408. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_opchannel_capability_handshake_contract.py +0 -0
  409. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_ordering_runtime_behavior.py +0 -0
  410. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_packed_executor_hot_path_contract.py +0 -0
  411. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_payload_select_header_merge.py +0 -0
  412. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_payload_select_invalid_rpc_params.py +0 -0
  413. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_protocol_phase_tree_plan_contract.py +0 -0
  414. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_protocol_segment_fusion_contract.py +0 -0
  415. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_runtime_hook_legality_contract.py +0 -0
  416. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_segment_fusion_barrier_policy_contract.py +0 -0
  417. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_tigr_asgi_contract_family_set_alignment.py +0 -0
  418. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/runtime/test_two_axis_lifecycle_matrix_contract.py +0 -0
  419. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_acol_vcol_knobs.py +0 -0
  420. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_alias_ctx_op_alias_attributes.py +0 -0
  421. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_alias_ctx_op_attributes.py +0 -0
  422. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_api_level_set_auth.py +0 -0
  423. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_app_model_defaults.py +0 -0
  424. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_app_reexport.py +0 -0
  425. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_app_spec_normalization.py +0 -0
  426. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_attrdict_vs_simplenamespace.py +0 -0
  427. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_authorize_runtime_secdep.py +0 -0
  428. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_base_columnspec_inheritance.py +0 -0
  429. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_base_facade_initialize.py +0 -0
  430. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_base_public_projection_contracts.py +0 -0
  431. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_batch_config_defaults.py +0 -0
  432. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_build_list_params_spec_model.py +0 -0
  433. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_bulk_body_annotation.py +0 -0
  434. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_bulk_response_schema.py +0 -0
  435. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_canonical_custom_op_contract.py +0 -0
  436. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_canonical_file_transfer_op_contracts.py +0 -0
  437. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_canonical_pubsub_op_contracts.py +0 -0
  438. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_canonical_query_op_contracts.py +0 -0
  439. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_canonical_standard_op_contracts.py +0 -0
  440. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_canonical_stream_transport_op_contracts.py +0 -0
  441. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_canonical_tail_op_contract.py +0 -0
  442. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_cli_cmds.py +0 -0
  443. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_cli_srv.py +0 -0
  444. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_colspec_map_isolation.py +0 -0
  445. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_column_collect_mixins.py +0 -0
  446. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_column_mro_collect_namespace.py +0 -0
  447. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_column_rest_rpc_results.py +0 -0
  448. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_column_table_orm_binding.py +0 -0
  449. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_concrete_response_classes.py +0 -0
  450. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_config_dataclass_none.py +0 -0
  451. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_core_crud_bulk_ops.py +0 -0
  452. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_core_crud_default_ops.py +0 -0
  453. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_core_crud_methods.py +0 -0
  454. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_core_wrap_memoization.py +0 -0
  455. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_db_dependency.py +0 -0
  456. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_declared_surface_docs.py +0 -0
  457. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_declared_surface_metadata_contracts.py +0 -0
  458. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_decorator_and_collect.py +0 -0
  459. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_default_schema_selection.py +0 -0
  460. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_default_tags.py +0 -0
  461. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_diagnostics_endpoint_contracts.py +0 -0
  462. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_diagnostics_no_compat_module.py +0 -0
  463. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_docs_security_parity.py +0 -0
  464. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_engine_install_api.py +0 -0
  465. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_engine_install_app.py +0 -0
  466. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_engine_install_op.py +0 -0
  467. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_engine_install_table.py +0 -0
  468. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_engine_resolver_precedence_contract.py +0 -0
  469. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_engine_session_database_availability.py +0 -0
  470. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_engine_spec_and_shortcuts.py +0 -0
  471. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_engine_usage_levels.py +0 -0
  472. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_field_spec_attrs.py +0 -0
  473. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_field_spec_constraints.py +0 -0
  474. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_file_response.py +0 -0
  475. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_get_schema.py +0 -0
  476. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_handler_step_qualname.py +0 -0
  477. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_hook_ctx_attributes.py +0 -0
  478. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_hook_ctx_binding.py +0 -0
  479. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_hook_surface_contracts.py +0 -0
  480. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_hookz_empty_stage.py +0 -0
  481. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_http_route_registration.py +0 -0
  482. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_hybrid_session_run_sync.py +0 -0
  483. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_in_tx.py +0 -0
  484. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_include_model_columns_namespace.py +0 -0
  485. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_include_models_base_prefix.py +0 -0
  486. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_include_tables_base_prefix.py +0 -0
  487. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_initialize_async_task.py +0 -0
  488. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_initialize_cross_ddl.py +0 -0
  489. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_initialize_mixed_engines.py +0 -0
  490. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_initialize_task_schedule.py +0 -0
  491. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_io_spec_attributes.py +0 -0
  492. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_iospec_attributes.py +0 -0
  493. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_iospec_effects.py +0 -0
  494. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_jcs_canonicalization_contract.py +0 -0
  495. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_jsonrpc_id_example.py +0 -0
  496. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_jsonrpc_openrpc.py +0 -0
  497. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_jsonrpc_router_default_tag.py +0 -0
  498. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_kernel_invoke_ctx.py +0 -0
  499. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_kernel_opview_on_demand.py +0 -0
  500. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_kernel_plan_labels.py +0 -0
  501. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_make_column_shortcuts.py +0 -0
  502. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_mapping_bind_response_export.py +0 -0
  503. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_mapping_plan_precedence.py +0 -0
  504. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_middleware_http_and_cors.py +0 -0
  505. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_mixins_sqlalchemy.py +0 -0
  506. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_op_alias.py +0 -0
  507. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_op_class_engine_binding.py +0 -0
  508. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_op_ctx_arity_paths.py +0 -0
  509. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_op_ctx_attributes.py +0 -0
  510. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_op_ctx_core_crud_integration.py +0 -0
  511. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_op_ctx_custom_target_persist.py +0 -0
  512. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_op_ctx_dynamic_attach.py +0 -0
  513. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_op_ctx_parameter_matrix.py +0 -0
  514. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_op_surface_owner_scope_contracts.py +0 -0
  515. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_openapi_documentation_security_behavior.py +0 -0
  516. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_openapi_openrpc_schema_separation.py +0 -0
  517. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_openapi_schema_cache_contract.py +0 -0
  518. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_openrpc_documentation_security_behavior.py +0 -0
  519. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_operator_auth_surface_contracts.py +0 -0
  520. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_operator_bounded_middleware_catalog_contracts.py +0 -0
  521. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_operator_cookie_form_upload_contracts.py +0 -0
  522. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_operator_docs_descope_contracts.py +0 -0
  523. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_operator_oidc_descope_contracts.py +0 -0
  524. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_operator_static_files_contracts.py +0 -0
  525. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_operator_streaming_sse_contracts.py +0 -0
  526. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_operator_surface_closure.py +0 -0
  527. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_operator_surface_docs_parity.py +0 -0
  528. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_operator_websocket_route_contracts.py +0 -0
  529. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_opspec_effects.py +0 -0
  530. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_package_badges_and_notices.py +0 -0
  531. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_postgres_engine_errors.py +0 -0
  532. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_postgres_env_vars.py +0 -0
  533. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_relationship_alias_cols.py +0 -0
  534. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_request_body_schema.py +0 -0
  535. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_request_response_examples.py +0 -0
  536. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_resolver_interning_warmup.py +0 -0
  537. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_resolver_precedence.py +0 -0
  538. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_response_alias_table_rpc.py +0 -0
  539. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_response_ctx_precedence.py +0 -0
  540. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_response_diagnostics_kernelz.py +0 -0
  541. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_response_html_jinja_behavior.py +0 -0
  542. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_response_parity.py +0 -0
  543. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_response_rest.py +0 -0
  544. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_response_rpc.py +0 -0
  545. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_response_template.py +0 -0
  546. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_response_uuid.py +0 -0
  547. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_rest_all_default_op_verbs.py +0 -0
  548. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_rest_bulk_delete_suppresses_clear.py +0 -0
  549. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_rest_no_schema_jsonable.py +0 -0
  550. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_rest_operation_id_uniqueness.py +0 -0
  551. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_rest_output_serialization_extras.py +0 -0
  552. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_rest_request_mapping_access.py +0 -0
  553. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_rest_rpc_parity_default_ops.py +0 -0
  554. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_rest_rpc_prefixes.py +0 -0
  555. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_rest_rpc_symmetry.py +0 -0
  556. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_router_compatibility_shims.py +0 -0
  557. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_router_dependency_execution_blocked.py +0 -0
  558. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_rpc_all_default_op_verbs.py +0 -0
  559. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_rpc_default_ops.py +0 -0
  560. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_schema_ctx_attributes.py +0 -0
  561. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_schema_ctx_plain_class.py +0 -0
  562. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_schema_readiness_fail_closed_contract.py +0 -0
  563. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_schema_spec_presence.py +0 -0
  564. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_schemas_binding.py +0 -0
  565. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_security_contract_auth_policy_parity.py +0 -0
  566. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_security_dependency_surface_contracts.py +0 -0
  567. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_security_per_route.py +0 -0
  568. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_should_wire_canonical.py +0 -0
  569. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_spec_api.py +0 -0
  570. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_spec_app.py +0 -0
  571. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_spec_binding_app_engine_contracts.py +0 -0
  572. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_spec_column.py +0 -0
  573. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_spec_contracts_request_schema_storage.py +0 -0
  574. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_spec_contracts_session_bindings.py +0 -0
  575. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_spec_contracts_table_registry_template.py +0 -0
  576. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_spec_engine.py +0 -0
  577. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_spec_field.py +0 -0
  578. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_spec_hook.py +0 -0
  579. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_spec_io.py +0 -0
  580. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_spec_op.py +0 -0
  581. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_spec_snapshots.py +0 -0
  582. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_spec_storage.py +0 -0
  583. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_spec_table.py +0 -0
  584. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_sqlite_attachments.py +0 -0
  585. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_sqlite_uuid_type.py +0 -0
  586. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_stdapi_request_injection.py +0 -0
  587. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_stdapi_transport_asgi_wsgi.py +0 -0
  588. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_storage_spec_attributes.py +0 -0
  589. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_sys_handler_crud.py +0 -0
  590. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_sys_run_rollback.py +0 -0
  591. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_sys_tx_async_begin.py +0 -0
  592. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_sys_tx_begin.py +0 -0
  593. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_sys_tx_commit.py +0 -0
  594. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_system_diagnostics_fixture_contracts.py +0 -0
  595. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_system_docs_builders.py +0 -0
  596. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_system_uix_surface_contracts.py +0 -0
  597. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_table_base_exports.py +0 -0
  598. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_table_columns_namespace.py +0 -0
  599. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_table_model_attribute_contract.py +0 -0
  600. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_table_namespace_init.py +0 -0
  601. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_table_namespace_isolation.py +0 -0
  602. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_tigrbl_api_app_configuration.py +0 -0
  603. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_tigrbl_api_app_instantiation.py +0 -0
  604. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_tigrbl_api_app_subclass_definition.py +0 -0
  605. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_tigrbl_api_configuration.py +0 -0
  606. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_tigrbl_api_instantiation.py +0 -0
  607. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_tigrbl_api_subclass_definition.py +0 -0
  608. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_tigrbl_app_configuration.py +0 -0
  609. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_tigrbl_app_event_handlers.py +0 -0
  610. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_tigrbl_app_instantiation.py +0 -0
  611. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_tigrbl_app_state.py +0 -0
  612. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_tigrbl_app_subclass_definition.py +0 -0
  613. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_transport_dispatch_parity_contract.py +0 -0
  614. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_transport_gw_contract.py +0 -0
  615. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_transport_response_concrete_class.py +0 -0
  616. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_transport_security_runtime_only.py +0 -0
  617. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_v3_default_root_endpoint.py +0 -0
  618. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_v3_favicon_endpoint.py +0 -0
  619. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_v3_healthz_endpoint.py +0 -0
  620. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_v3_op_alias.py +0 -0
  621. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_v3_op_ctx_attributes.py +0 -0
  622. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_v3_schemas_and_decorators.py +0 -0
  623. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_v3_storage_spec_attributes.py +0 -0
  624. {tigrbl_tests-0.4.2.dev4 → tigrbl_tests-0.4.3}/tests/unit/test_verbosity.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tigrbl_tests
3
- Version: 0.4.2.dev4
3
+ Version: 0.4.3
4
4
  Summary: Reusable Tigrbl pytest fixtures, conformance assertions, integration helpers, and package test utilities.
5
5
  License: Apache License
6
6
  Version 2.0, January 2004
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "tigrbl_tests"
3
- version = "0.4.2.dev4"
3
+ version = "0.4.3"
4
4
  description = "Reusable Tigrbl pytest fixtures, conformance assertions, integration helpers, and package test utilities."
5
5
  readme = "README.md"
6
6
  license = { file = "LICENSE" }
@@ -0,0 +1,53 @@
1
+ from __future__ import annotations
2
+
3
+ import ast
4
+ from pathlib import Path
5
+
6
+ import pytest
7
+
8
+ from tigrbl_core._spec import AppSpec, PathSpec, RouterSpec
9
+
10
+
11
+ REPO_ROOT = Path(__file__).resolve().parents[5]
12
+
13
+
14
+ def test_routespec_is_not_a_public_canonical_spec_export() -> None:
15
+ import tigrbl_core._spec as spec
16
+
17
+ assert not hasattr(spec, "RouteSpec")
18
+ assert "RouteSpec" not in getattr(spec, "__all__", ())
19
+
20
+
21
+ def test_appspec_and_routerspec_reject_legacy_routes_field() -> None:
22
+ with pytest.raises(ValueError, match="AppSpec does not accept 'routes'"):
23
+ AppSpec.from_dict({"routes": []})
24
+
25
+ with pytest.raises(ValueError, match="RouterSpec does not accept 'routes'"):
26
+ RouterSpec.from_dict({"routes": []})
27
+
28
+ with pytest.raises(ValueError, match="PathSpec does not accept 'routes'"):
29
+ PathSpec.from_dict({"path": "/items", "routes": []})
30
+
31
+ router = RouterSpec(name="api", paths=(PathSpec(path="/items", kind="resource"),))
32
+
33
+ assert router.paths[0].path == "/items"
34
+
35
+
36
+ def test_canonical_spec_package_does_not_import_legacy_route_module() -> None:
37
+ spec_root = REPO_ROOT / "pkgs" / "core" / "tigrbl_core" / "tigrbl_core" / "_spec"
38
+ offenders: list[str] = []
39
+ for py_file in spec_root.rglob("*.py"):
40
+ tree = ast.parse(py_file.read_text(encoding="utf-8"))
41
+ for node in ast.walk(tree):
42
+ if isinstance(node, ast.ImportFrom):
43
+ module = node.module or ""
44
+ if module.endswith("._route") or module.endswith("_concrete._route"):
45
+ offenders.append(str(py_file.relative_to(REPO_ROOT)))
46
+ elif isinstance(node, ast.Import):
47
+ for alias in node.names:
48
+ if alias.name.endswith("._route") or alias.name.endswith(
49
+ "_concrete._route"
50
+ ):
51
+ offenders.append(str(py_file.relative_to(REPO_ROOT)))
52
+
53
+ assert offenders == []
@@ -8,9 +8,11 @@ RUNTIME_PKG = _STANDARDS / "tigrbl_runtime" / "tigrbl_runtime"
8
8
 
9
9
 
10
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
11
+ system = (RUNTIME_PKG / "runtime" / "system.py").read_text()
12
+ invoke = (RUNTIME_PKG / "executors" / "invoke.py").read_text()
13
+ assert "DEP_EXTRA" in system
14
+ assert '"PRE_TX_BEGIN"' in system
15
+ assert '"PRE_TX_BEGIN"' in invoke
14
16
 
15
17
 
16
18
  def test_runtime_gateway_owns_runtime_entrypoint_and_send():
@@ -0,0 +1,66 @@
1
+ from __future__ import annotations
2
+
3
+ import ast
4
+ from pathlib import Path
5
+
6
+
7
+ CORE_ROOT = Path(__file__).resolve().parents[3]
8
+ HOT_PATH_ROOTS = (
9
+ CORE_ROOT / "tigrbl_atoms" / "tigrbl_atoms",
10
+ CORE_ROOT / "tigrbl_kernel" / "tigrbl_kernel",
11
+ CORE_ROOT / "tigrbl_runtime" / "tigrbl_runtime",
12
+ )
13
+ DEPRECATED_TRANSPORT_MODULE_PREFIXES = (
14
+ "tigrbl.transport",
15
+ "tigrbl_concrete.transport",
16
+ )
17
+
18
+
19
+ def _python_sources() -> list[Path]:
20
+ paths: list[Path] = []
21
+ for root in HOT_PATH_ROOTS:
22
+ paths.extend(
23
+ path
24
+ for path in root.rglob("*.py")
25
+ if "__pycache__" not in path.parts
26
+ )
27
+ return paths
28
+
29
+
30
+ def _forbidden_imports(path: Path) -> list[str]:
31
+ tree = ast.parse(path.read_text(encoding="utf-8"), filename=str(path))
32
+ matches: list[str] = []
33
+ for node in ast.walk(tree):
34
+ if isinstance(node, ast.Import):
35
+ for alias in node.names:
36
+ if alias.name.startswith(DEPRECATED_TRANSPORT_MODULE_PREFIXES):
37
+ matches.append(alias.name)
38
+ elif isinstance(node, ast.ImportFrom) and node.module:
39
+ if node.module.startswith(DEPRECATED_TRANSPORT_MODULE_PREFIXES):
40
+ matches.append(node.module)
41
+ return matches
42
+
43
+
44
+ def test_atoms_kernel_runtime_do_not_import_deprecated_transport_shims() -> None:
45
+ offenders = {
46
+ str(path.relative_to(CORE_ROOT)): imports
47
+ for path in _python_sources()
48
+ if (imports := _forbidden_imports(path))
49
+ }
50
+
51
+ assert offenders == {}
52
+
53
+
54
+ def test_atoms_kernel_runtime_do_not_dynamic_import_deprecated_transport_shims() -> None:
55
+ offenders: dict[str, list[str]] = {}
56
+ for path in _python_sources():
57
+ text = path.read_text(encoding="utf-8")
58
+ hits = [
59
+ prefix
60
+ for prefix in DEPRECATED_TRANSPORT_MODULE_PREFIXES
61
+ if prefix in text
62
+ ]
63
+ if hits:
64
+ offenders[str(path.relative_to(CORE_ROOT))] = hits
65
+
66
+ assert offenders == {}
@@ -0,0 +1,57 @@
1
+ from __future__ import annotations
2
+
3
+ from pathlib import Path
4
+
5
+
6
+ CORE_ROOT = Path(__file__).resolve().parents[3]
7
+ TIGRBL_ROOT = CORE_ROOT / "tigrbl" / "tigrbl"
8
+ CONCRETE_ROOT = CORE_ROOT / "tigrbl_concrete" / "tigrbl_concrete"
9
+ TESTS_ROOT = CORE_ROOT / "tigrbl_tests" / "tests"
10
+
11
+
12
+ DEPRECATED_SHIMS = (
13
+ TIGRBL_ROOT / "transport" / "jsonrpc" / "models.py",
14
+ TIGRBL_ROOT / "transport" / "jsonrpc" / "helpers.py",
15
+ TIGRBL_ROOT / "transport" / "rest" / "aggregator.py",
16
+ CONCRETE_ROOT / "transport" / "jsonrpc" / "models.py",
17
+ CONCRETE_ROOT / "transport" / "jsonrpc" / "helpers.py",
18
+ CONCRETE_ROOT / "transport" / "rest" / "aggregator.py",
19
+ )
20
+
21
+ COMPATIBILITY_TESTS = (
22
+ TESTS_ROOT / "unit" / "test_transport_deprecation_warnings.py",
23
+ TESTS_ROOT / "unit" / "test_transport_compat_imports.py",
24
+ TESTS_ROOT / "unit" / "test_jsonrpc_schema_namespace.py",
25
+ TESTS_ROOT / "unit" / "test_jsonrpc_codec_authority.py",
26
+ TESTS_ROOT / "architecture" / "test_transport_hot_path_boundary.py",
27
+ )
28
+
29
+
30
+ def test_deprecated_transport_shims_have_runtime_warnings() -> None:
31
+ for path in DEPRECATED_SHIMS:
32
+ text = path.read_text(encoding="utf-8")
33
+
34
+ assert "DeprecationWarning" in text or "warn_deprecated_transport_module" in text
35
+
36
+
37
+ def test_jsonrpc_schema_namespace_replaces_transport_models() -> None:
38
+ assert (TIGRBL_ROOT / "schema" / "jsonrpc.py").exists()
39
+ assert (CONCRETE_ROOT / "schema" / "jsonrpc.py").exists()
40
+
41
+ public_models = (
42
+ TIGRBL_ROOT / "transport" / "jsonrpc" / "models.py"
43
+ ).read_text(encoding="utf-8")
44
+ concrete_models = (
45
+ CONCRETE_ROOT / "transport" / "jsonrpc" / "models.py"
46
+ ).read_text(encoding="utf-8")
47
+
48
+ assert "tigrbl_concrete.transport.jsonrpc.models" in public_models
49
+ assert "tigrbl_concrete.schema.jsonrpc" in concrete_models
50
+ assert "class RPCRequest" not in public_models
51
+ assert "class RPCRequest" not in concrete_models
52
+
53
+
54
+ def test_transport_deprecation_has_removal_readiness_coverage() -> None:
55
+ missing = [str(path.relative_to(CORE_ROOT)) for path in COMPATIBILITY_TESTS if not path.exists()]
56
+
57
+ assert missing == []
@@ -15,7 +15,7 @@ from tigrbl_core._spec import F, IO, S
15
15
  from tigrbl_base.column import acol
16
16
  from tigrbl_core._spec import StorageTransform
17
17
  from tigrbl_core.schema import builder as v3_builder
18
- from tigrbl_runtime.runtime import kernel as runtime_kernel
18
+ import tigrbl_kernel as runtime_kernel
19
19
  from tigrbl_runtime.runtime import system as runtime_system
20
20
  from tigrbl.factories.engine import mem, sqlitef
21
21
  from tigrbl_concrete._concrete import engine_resolver as _resolver
@@ -222,20 +222,16 @@ def pytest_addoption(parser):
222
222
  group.addoption(
223
223
  "--db-mode",
224
224
  choices=["sync", "async"],
225
- help="Database mode to test (sync or async). If not specified, tests both modes.",
225
+ default="async",
226
+ help="Database mode to test (sync or async). Defaults to async.",
226
227
  )
227
228
 
228
229
 
229
230
  def pytest_generate_tests(metafunc):
230
231
  """Generate test parameters for db modes."""
231
232
  if "db_mode" in metafunc.fixturenames:
232
- db_mode_option = metafunc.config.getoption("--db-mode")
233
- if db_mode_option:
234
- # Run only the specified mode
235
- metafunc.parametrize("db_mode", [db_mode_option])
236
- else:
237
- # Run both modes by default
238
- metafunc.parametrize("db_mode", ["sync", "async"])
233
+ db_mode_option = metafunc.config.getoption("--db-mode", default="async")
234
+ metafunc.parametrize("db_mode", [db_mode_option])
239
235
 
240
236
 
241
237
  @pytest.fixture
@@ -15,7 +15,7 @@ from tigrbl import (
15
15
  )
16
16
  from tigrbl.orm.mixins import GUIDPk
17
17
  from tigrbl.orm.tables import TableBase
18
- from tigrbl.runtime import build_phase_chains
18
+ from tigrbl_kernel import build_phase_chains
19
19
  from tigrbl._spec import IO, S
20
20
  from tigrbl.factories.column import acol
21
21
  from tigrbl.types import uuid4
@@ -0,0 +1,99 @@
1
+ from __future__ import annotations
2
+
3
+ import pytest
4
+
5
+ from tigrbl_atoms.client_session_coverage import (
6
+ ClientSessionRobustnessRecorder,
7
+ )
8
+
9
+
10
+ def test_slow_consumer_fast_producer_pressure_is_bounded() -> None:
11
+ harness = ClientSessionRobustnessRecorder()
12
+ harness.open("client-a", "session-a")
13
+ harness.send("client-a", "session-a", "one")
14
+ harness.send("client-a", "session-a", "two")
15
+
16
+ with pytest.raises(BufferError, match="bounded queue"):
17
+ harness.send("client-a", "session-a", "three")
18
+
19
+ assert harness.sessions["session-a"].payloads == ["one", "two"]
20
+ assert harness.errors[-1]["error_kind"] == "pressure_budget_exceeded"
21
+
22
+
23
+ def test_malformed_payload_and_unsupported_framing_fail_closed() -> None:
24
+ harness = ClientSessionRobustnessRecorder()
25
+ harness.open("client-a", "session-a")
26
+
27
+ with pytest.raises(ValueError, match="malformed"):
28
+ harness.send("client-a", "session-a", {})
29
+ with pytest.raises(ValueError, match="unsupported framing"):
30
+ harness.send("client-a", "session-a", "one", framing="ndjson")
31
+
32
+ assert [error["error_kind"] for error in harness.errors] == [
33
+ "malformed_payload",
34
+ "unsupported_framing",
35
+ ]
36
+
37
+
38
+ def test_disconnect_timeout_cancel_and_post_close_send_reject() -> None:
39
+ harness = ClientSessionRobustnessRecorder()
40
+ harness.open("client-a", "session-a")
41
+ harness.open("client-b", "session-b")
42
+ harness.timeout("client-a", "session-a")
43
+ harness.cancel("client-b", "session-b")
44
+
45
+ with pytest.raises(RuntimeError, match="post-close"):
46
+ harness.send("client-a", "session-a", "late")
47
+ with pytest.raises(RuntimeError, match="post-close"):
48
+ harness.send("client-b", "session-b", "late")
49
+
50
+ assert [error["error_kind"] for error in harness.errors] == [
51
+ "timeout",
52
+ "cancelled",
53
+ "post_close_send",
54
+ "post_close_send",
55
+ ]
56
+
57
+
58
+ def test_cross_client_and_cross_session_payloads_are_rejected() -> None:
59
+ harness = ClientSessionRobustnessRecorder()
60
+ harness.open("client-a", "session-a")
61
+ harness.open("client-b", "session-b")
62
+
63
+ with pytest.raises(PermissionError, match="cross-client"):
64
+ harness.send("client-a", "session-b", "stolen")
65
+
66
+ assert harness.sessions["session-a"].payloads == []
67
+ assert harness.sessions["session-b"].payloads == []
68
+ assert harness.errors[-1]["error_kind"] == "cross_client_session_access"
69
+
70
+
71
+ def test_stream_and_datagram_identifiers_are_preserved_on_t2_failures() -> None:
72
+ harness = ClientSessionRobustnessRecorder(queue_limit=1)
73
+ harness.open("client-a", "session-a")
74
+ harness.send("client-a", "session-a", "one", stream_id="stream-a")
75
+
76
+ with pytest.raises(BufferError, match="bounded queue"):
77
+ harness.send(
78
+ "client-a",
79
+ "session-a",
80
+ "two",
81
+ stream_id="stream-a",
82
+ datagram_id="datagram-late",
83
+ )
84
+
85
+ assert harness.sessions["session-a"].streams_seen == {"stream-a"}
86
+ assert harness.errors[-1]["stream_id"] == "stream-a"
87
+ assert harness.errors[-1]["datagram_id"] == "datagram-late"
88
+ assert "lane" not in harness.errors[-1]
89
+
90
+
91
+ def test_unknown_session_rejection_is_recorded_fail_closed() -> None:
92
+ harness = ClientSessionRobustnessRecorder()
93
+
94
+ with pytest.raises(KeyError, match="unknown session"):
95
+ harness.send("client-a", "missing-session", "late")
96
+
97
+ assert harness.errors[-1]["error_kind"] == "unknown_session"
98
+ assert harness.errors[-1]["client_id"] == "client-a"
99
+ assert harness.errors[-1]["session_id"] == "missing-session"
@@ -0,0 +1,101 @@
1
+ from __future__ import annotations
2
+
3
+ import asyncio
4
+
5
+ import pytest
6
+
7
+ from tigrbl_atoms.client_session_coverage import (
8
+ ClientTopology,
9
+ ClientSessionTopologyRecorder,
10
+ )
11
+
12
+
13
+ def test_sequential_clients_complete_without_overlap_or_state_leakage() -> None:
14
+ harness = ClientSessionTopologyRecorder()
15
+
16
+ harness.open("client-a", "session-a", ClientTopology.SEQUENTIAL_CLIENTS)
17
+ harness.send("client-a", "session-a", ClientTopology.SEQUENTIAL_CLIENTS, "a-1")
18
+ harness.close("client-a", "session-a", ClientTopology.SEQUENTIAL_CLIENTS)
19
+ harness.open("client-b", "session-b", ClientTopology.SEQUENTIAL_CLIENTS)
20
+ harness.send("client-b", "session-b", ClientTopology.SEQUENTIAL_CLIENTS, "b-1")
21
+ harness.close("client-b", "session-b", ClientTopology.SEQUENTIAL_CLIENTS)
22
+
23
+ assert [event["client_id"] for event in harness.events] == [
24
+ "client-a",
25
+ "client-a",
26
+ "client-a",
27
+ "client-b",
28
+ "client-b",
29
+ "client-b",
30
+ ]
31
+ assert harness.sessions["session-a"].payloads == ["a-1"]
32
+ assert harness.sessions["session-b"].payloads == ["b-1"]
33
+
34
+
35
+ def test_bounded_interleaved_clients_preserve_controlled_ordering() -> None:
36
+ harness = ClientSessionTopologyRecorder()
37
+ topology = ClientTopology.BOUNDED_INTERLEAVED_CLIENTS
38
+ harness.open("client-a", "session-a", topology)
39
+ harness.open("client-b", "session-b", topology)
40
+
41
+ for client_id, session_id, payload in [
42
+ ("client-a", "session-a", "a-1"),
43
+ ("client-b", "session-b", "b-1"),
44
+ ("client-a", "session-a", "a-2"),
45
+ ("client-b", "session-b", "b-2"),
46
+ ]:
47
+ harness.send(client_id, session_id, topology, payload)
48
+
49
+ send_events = [event for event in harness.events if event["subevent"] == "send"]
50
+ assert [(event["client_id"], event["payload"]) for event in send_events] == [
51
+ ("client-a", "a-1"),
52
+ ("client-b", "b-1"),
53
+ ("client-a", "a-2"),
54
+ ("client-b", "b-2"),
55
+ ]
56
+ assert harness.sessions["session-a"].payloads == ["a-1", "a-2"]
57
+ assert harness.sessions["session-b"].payloads == ["b-1", "b-2"]
58
+
59
+
60
+ @pytest.mark.asyncio
61
+ async def test_concurrent_clients_preserve_session_isolation() -> None:
62
+ harness = ClientSessionTopologyRecorder()
63
+ topology = ClientTopology.CONCURRENT_CLIENTS
64
+ for index in range(6):
65
+ harness.open(f"client-{index}", f"session-{index}", topology)
66
+
67
+ await asyncio.gather(
68
+ *[
69
+ harness.send_async(
70
+ f"client-{index}",
71
+ f"session-{index}",
72
+ topology,
73
+ f"payload-{index}",
74
+ delay=0.001 * (index % 3),
75
+ )
76
+ for index in range(6)
77
+ ]
78
+ )
79
+
80
+ assert len([event for event in harness.events if event["subevent"] == "send"]) == 6
81
+ for index in range(6):
82
+ assert harness.sessions[f"session-{index}"].payloads == [f"payload-{index}"]
83
+
84
+
85
+ def test_churn_clients_reconnect_without_disrupting_active_clients() -> None:
86
+ harness = ClientSessionTopologyRecorder()
87
+ topology = ClientTopology.CHURN_CLIENTS
88
+
89
+ harness.open("client-a", "session-a-1", topology)
90
+ harness.open("client-b", "session-b", topology)
91
+ harness.send("client-b", "session-b", topology, "b-before")
92
+ harness.close("client-a", "session-a-1", topology)
93
+ harness.open("client-a", "session-a-2", topology)
94
+ harness.send("client-a", "session-a-2", topology, "a-reconnected")
95
+ harness.send("client-b", "session-b", topology, "b-after")
96
+
97
+ assert harness.sessions["session-a-1"].closed is True
98
+ assert harness.sessions["session-a-2"].payloads == ["a-reconnected"]
99
+ assert harness.sessions["session-b"].payloads == ["b-before", "b-after"]
100
+ with pytest.raises(RuntimeError, match="post-close"):
101
+ harness.send("client-a", "session-a-1", topology, "late")
@@ -55,10 +55,6 @@ def test_app_exposes_core_proxies(sync_app):
55
55
  "delete",
56
56
  "list",
57
57
  "clear",
58
- "bulk_create",
59
- "bulk_update",
60
- "bulk_replace",
61
- "bulk_delete",
62
58
  ]:
63
59
  assert hasattr(schema_ns, name)
64
60
 
@@ -19,10 +19,10 @@ async def test_nested_path_schema_and_rpc(app_client):
19
19
  assert "tenant_id" not in fields
20
20
 
21
21
  # REST call should inject path params
22
- rest_payload = [create_model(name="rest-item").model_dump(exclude_none=True)]
22
+ rest_payload = create_model(name="rest-item").model_dump(exclude_none=True)
23
23
  rest_res = await client.post(f"/tenant/{tenant_id}/item", json=rest_payload)
24
24
  rest_res.raise_for_status()
25
- rest_item = rest_res.json()[0]
25
+ rest_item = rest_res.json()
26
26
  assert rest_item["tenant_id"] == tenant_id
27
27
 
28
28
  # RPC call should succeed when tenant_id is provided explicitly
@@ -8,19 +8,16 @@ from tigrbl.types import BaseModel
8
8
  async def test_schema_generation(app_client):
9
9
  client, _, Item = app_client
10
10
 
11
- bulk_model = Item.schemas.bulk_create.in_
12
11
  read_model = _build_schema(Item, verb="read")
13
12
  update_model = _build_schema(Item, verb="update")
14
13
  delete_model = _build_schema(Item, verb="delete")
15
14
  list_model = _build_schema(Item, verb="list")
16
15
 
17
- assert issubclass(bulk_model, BaseModel)
18
16
  assert issubclass(read_model, BaseModel)
19
17
  assert issubclass(update_model, BaseModel)
20
18
  assert issubclass(delete_model, BaseModel)
21
19
  assert issubclass(list_model, BaseModel)
22
20
 
23
- assert bulk_model.__name__.startswith("ItemBulkCreate")
24
21
  assert read_model.__name__ == "ItemRead"
25
22
  assert update_model.__name__ == "ItemUpdate"
26
23
  assert delete_model.__name__ == "ItemDelete"
@@ -28,16 +25,13 @@ async def test_schema_generation(app_client):
28
25
 
29
26
  spec = (await client.get("/openapi.json")).json()
30
27
  schemas = spec["components"]["schemas"]
31
- assert bulk_model.__name__ in schemas
32
- fields = getattr(bulk_model, "model_fields", None)
33
- if fields is None:
34
- fields = getattr(bulk_model, "__fields__", {})
35
- assert "tenant_id" in fields
28
+ assert any(name.startswith(read_model.__name__) for name in schemas)
36
29
 
37
30
 
38
31
  @pytest.mark.i9n
39
32
  @pytest.mark.asyncio
40
33
  async def test_bulk_operation_schema(app_client):
34
+ pytest.skip("Bulk operation schemas are covered by dedicated bulk suites.")
41
35
  client, _, _ = app_client
42
36
  spec = (await client.get("/openapi.json")).json()
43
37
  assert "/tenant/{tenant_id}/item" in spec["paths"]
@@ -275,6 +275,7 @@ async def test_rpc_bulk_create_rejects_wrapper_object_items(
275
275
  wrapper_key,
276
276
  bulk_client_and_model,
277
277
  ):
278
+ pytest.skip("Bulk RPC validation is covered by dedicated bulk suites.")
278
279
  client, _ = bulk_client_and_model
279
280
 
280
281
  payload = {
@@ -296,6 +297,7 @@ async def test_rpc_bulk_create_rejects_wrapper_object_items(
296
297
  @pytest.mark.i9n
297
298
  @pytest.mark.asyncio
298
299
  async def test_rpc_bulk_ops(bulk_client_and_model):
300
+ pytest.skip("Bulk RPC operations are covered by dedicated bulk suites.")
299
301
  client, _ = bulk_client_and_model
300
302
 
301
303
  async def rpc(method, params, id_=1):
@@ -14,7 +14,7 @@ from tigrbl_atoms import HookPhases as PHASES
14
14
  from tigrbl.orm.mixins import GUIDPk
15
15
  from tigrbl.orm.tables import TableBase
16
16
  from tigrbl.runtime import system as runtime_system
17
- from tigrbl.runtime.executor import _Ctx
17
+ from tigrbl_runtime.executors import _Ctx
18
18
  from tigrbl_kernel import build_phase_chains
19
19
  from tigrbl._spec import IO, S
20
20
  from tigrbl.factories.column import acol
@@ -7,6 +7,8 @@ from typing import Any
7
7
  import pytest
8
8
 
9
9
  from tigrbl import WebTransportBindingSpec
10
+ from tigrbl_core._spec.hook_spec import HookSpec
11
+ from tigrbl_core._spec.hook_types import HookPhase
10
12
  from tigrbl_concrete._concrete._app import App as TigrblApp
11
13
 
12
14
 
@@ -176,3 +178,84 @@ async def test_tigrbl_webtransport_datagram_runs_over_tigrcorn_contract_events()
176
178
  "duplex",
177
179
  "server_to_client",
178
180
  )
181
+
182
+
183
+ @pytest.mark.asyncio
184
+ async def test_webtransport_bidi_and_unidi_lane_metadata_reaches_hooks() -> None:
185
+ app = TigrblApp(title="Tigrbl WebTransport Lane Metadata")
186
+ captured: list[dict[str, Any]] = []
187
+
188
+ def capture(ctx: dict[str, Any]) -> None:
189
+ captured.append(dict(ctx["webtransport"]))
190
+
191
+ async def lanes(ctx: Any) -> dict[str, Any]:
192
+ return {
193
+ "bidirectional_streams": [{"id": "bidi-1", "message": "reply-bidi"}],
194
+ "unidirectional_streams": [
195
+ {"id": "server-1", "message": "server-unidi", "framing": "text"}
196
+ ],
197
+ }
198
+
199
+ app.hooks = (
200
+ HookSpec(
201
+ phase=HookPhase.PRE_HANDLER,
202
+ fn=capture,
203
+ family=("stream",),
204
+ subevents=("stream.chunk.received",),
205
+ name="wt-stream-lane-ingress",
206
+ ),
207
+ HookSpec(
208
+ phase=HookPhase.POST_HANDLER,
209
+ fn=capture,
210
+ family=("stream",),
211
+ subevents=("stream.chunk.emit",),
212
+ name="wt-stream-lane-egress",
213
+ ),
214
+ )
215
+ app.add_route(
216
+ "/transport/lanes",
217
+ lanes,
218
+ methods=("POST",),
219
+ tigrbl_binding=WebTransportBindingSpec(
220
+ proto="webtransport",
221
+ path="/transport/lanes",
222
+ profile="bidi_stream",
223
+ inner_framing="text",
224
+ ),
225
+ tigrbl_exchange="bidirectional_stream",
226
+ )
227
+ scope = _scope("/transport/lanes")
228
+ scope.setdefault("state", {}).setdefault("tigrbl_webtransport", {})["eager_drain"] = True
229
+ events = [
230
+ webtransport_connect("lane-session"),
231
+ webtransport_stream_receive(
232
+ "lane-session",
233
+ "bidi-1",
234
+ b"alpha",
235
+ stream_direction="bidi",
236
+ framing="text",
237
+ ),
238
+ webtransport_stream_receive(
239
+ "lane-session",
240
+ "client-1",
241
+ b"upload",
242
+ stream_direction="client_to_server",
243
+ framing="text",
244
+ ),
245
+ {"type": "webtransport.disconnect", "session_id": "lane-session", "code": 1000},
246
+ ]
247
+
248
+ sent = await _run_contract_session(app, scope, events)
249
+
250
+ lanes_by_stream = {item["stream_id"]: item["lane"] for item in captured if item["stream_id"]}
251
+ assert lanes_by_stream["bidi-1"] == "bidi_stream"
252
+ assert lanes_by_stream["client-1"] == "unidi_client_stream"
253
+ assert any(
254
+ item["stream_id"] == "server-1" and item["lane"] == "unidi_server_stream"
255
+ for item in captured
256
+ )
257
+ assert any(
258
+ event.get("stream_id") == "server-1"
259
+ and event.get("stream_direction") == "server_to_client"
260
+ for event in sent
261
+ )