tigrbl_tests 0.3.11.dev3__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.
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/PKG-INFO +2 -1
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/pyproject.toml +8 -2
- tigrbl_tests-0.3.12/tests/architecture/test_import_graph_audit.py +51 -0
- tigrbl_tests-0.3.12/tests/architecture/test_no_bindings_imports.py +33 -0
- tigrbl_tests-0.3.12/tests/architecture/test_operation_resolution_parity.py +11 -0
- tigrbl_tests-0.3.12/tests/architecture/test_runtime_structure.py +30 -0
- tigrbl_tests-0.3.12/tests/architecture/test_trace_plan_parity.py +8 -0
- tigrbl_tests-0.3.12/tests/architecture/test_transport_boundaries.py +30 -0
- tigrbl_tests-0.3.12/tests/architecture/test_transport_dispatch_convergence.py +56 -0
- tigrbl_tests-0.3.12/tests/conftest.py +661 -0
- tigrbl_tests-0.3.12/tests/harness/test_00_appspec_contract.py +149 -0
- tigrbl_tests-0.3.12/tests/harness/test_01_kernel_plan_compilation.py +166 -0
- tigrbl_tests-0.3.12/tests/harness/test_02_bootstrap_plan.py +87 -0
- tigrbl_tests-0.3.12/tests/harness/test_03_appspec_uvicorn_e2e.py +86 -0
- tigrbl_tests-0.3.12/tests/harness_e2e/test_00_appspec_uvicorn_rest_rpc.py +156 -0
- tigrbl_tests-0.3.12/tests/harness_e2e/test_01_imperative_uvicorn_rest_rpc.py +125 -0
- tigrbl_tests-0.3.12/tests/harness_v3/_support.py +86 -0
- tigrbl_tests-0.3.12/tests/harness_v3/test_appspec_prefixes.py +53 -0
- tigrbl_tests-0.3.12/tests/harness_v3/test_bootstrap_kernel_compilation.py +69 -0
- tigrbl_tests-0.3.12/tests/harness_v3/test_default_opspec_bindings.py +110 -0
- tigrbl_tests-0.3.12/tests/harness_v3/test_kernel_plan_routing.py +67 -0
- tigrbl_tests-0.3.12/tests/harness_v3/test_mapping_plan_compilation.py +55 -0
- tigrbl_tests-0.3.12/tests/harness_v3/test_route_rpc_prebinding.py +1 -0
- tigrbl_tests-0.3.12/tests/harness_v3/test_route_runtime_fallback_atoms.py +1 -0
- tigrbl_tests-0.3.12/tests/harness_v3/test_uvicorn_e2e_appspec.py +107 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/hooks/test_hook_ctx_phase_validation.py +2 -1
- tigrbl_tests-0.3.12/tests/i9n/test_acronym_route_name.py +24 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_allow_anon.py +51 -49
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_apikey_generation.py +12 -13
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_authn_provider_integration.py +17 -16
- tigrbl_tests-0.3.12/tests/i9n/test_bindings_integration.py +115 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_bindings_modules.py +49 -53
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_bulk_docs_client.py +15 -14
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_core_access.py +38 -38
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_engine_install_uvicorn.py +6 -6
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_engine_resolver_uvicorn.py +66 -64
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_error_mappings.py +31 -17
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_field_spec_effects.py +20 -20
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_header_io_uvicorn.py +13 -13
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_healthz_methodz_hookz.py +27 -27
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_hook_ctx_v3_i9n.py +65 -69
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_hook_lifecycle.py +34 -39
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_iospec_attributes.py +60 -54
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_iospec_integration.py +50 -31
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_jsonrpc_batch_behavior.py +4 -4
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_key_digest_uvicorn.py +14 -14
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_list_filters_optional.py +2 -2
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_mixins.py +62 -63
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_mountable_favicon_uvicorn.py +7 -9
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_mountable_lens_uvicorn.py +9 -10
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_mountable_openapi_uvicorn.py +5 -6
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_mountable_openrpc_uvicorn.py +19 -18
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_mountable_swagger_uvicorn.py +5 -6
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_nested_path_schema_and_rpc.py +2 -2
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_nested_routing_depth.py +16 -16
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_op_ctx_alias_examples.py +9 -7
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_op_ctx_behavior.py +43 -46
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_op_ctx_core_crud_order.py +44 -44
- tigrbl_tests-0.3.12/tests/i9n/test_op_ctx_uvicorn_scopes.py +189 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_openapi_clear_response_schema.py +7 -8
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_openapi_schema_examples_presence.py +16 -15
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_opspec_effects_i9n_test.py +19 -18
- tigrbl_tests-0.3.12/tests/i9n/test_opspec_pre_tx_deps.py +254 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_owner_tenant_policy.py +37 -34
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_request_extras.py +20 -20
- tigrbl_tests-0.3.12/tests/i9n/test_rest_fallback_serialization.py +72 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_rest_row_serialization.py +24 -24
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_row_result_serialization.py +11 -11
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_schema.py +7 -7
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_schema_ctx_attributes_integration.py +22 -25
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_schema_ctx_op_ctx_integration.py +12 -13
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_schema_ctx_spec_integration.py +24 -26
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_sqlite_attachments.py +7 -7
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_storage_spec_integration.py +28 -28
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_symmetry_parity.py +3 -3
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_tigrbl_api_app_usage_uvicorn.py +24 -22
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_tigrbl_api_usage_uvicorn.py +21 -22
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_tigrbl_api_uvicorn.py +15 -16
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_tigrbl_app_include_api_uvicorn.py +40 -35
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_tigrbl_app_multi_api_uvicorn.py +20 -18
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_tigrbl_app_usage_uvicorn.py +11 -11
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_tigrbl_app_uvicorn.py +6 -6
- tigrbl_tests-0.3.12/tests/i9n/test_transport_dispatch_parity.py +21 -0
- tigrbl_tests-0.3.12/tests/i9n/test_types_deprecation_exports.py +42 -0
- tigrbl_tests-0.3.12/tests/i9n/test_uvicorn_transport_behavior.py +150 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_v3_bulk_rest_endpoints.py +13 -13
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_v3_default_rest_ops.py +8 -11
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_v3_default_rpc_ops.py +28 -34
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_v3_opspec_attributes.py +41 -37
- tigrbl_tests-0.3.12/tests/i9n/test_verb_alias_policy.py +56 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/mount/test_mount_favico.py +40 -44
- tigrbl_tests-0.3.12/tests/options/test_rest_options.py +57 -0
- tigrbl_tests-0.3.12/tests/options/test_rpc_options.py +21 -0
- tigrbl_tests-0.3.12/tests/parity/test_hook_runtime_phase_parity.py +9 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/parity/test_stdapi_openapi_docs.py +9 -2
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/parity/test_stdapi_primitives.py +3 -1
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/parity/test_stdapi_routing.py +18 -3
- tigrbl_tests-0.3.12/tests/perf/helper_fastapi_create_app.py +76 -0
- tigrbl_tests-0.3.12/tests/perf/helper_tigrbl_create_app.py +46 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/perf/test_collect_caching.py +4 -4
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/perf/test_hookz_performance.py +6 -6
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/perf/test_methodz_performance.py +3 -3
- tigrbl_tests-0.3.12/tests/perf/test_tigrbl_create_call_graph.py +157 -0
- tigrbl_tests-0.3.12/tests/perf/test_tigrbl_vs_fastapi_create_benchmark.py +318 -0
- tigrbl_tests-0.3.12/tests/perf/tigrbl_create_call_graph_250_ops.json +1589 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/request/test_request_asgi_scope_compat.py +1 -1
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/request/test_request_authn_strip.py +1 -1
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/request/test_request_dot_notation.py +2 -2
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/request/test_request_response_conveniences.py +2 -2
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/request/test_request_transport_convenience_dot_notation.py +1 -1
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/requests/test_request_json_modes.py +1 -1
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/response/test_response_dot_notation.py +2 -2
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/response/test_response_transport_convenience_dot_notation.py +1 -1
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/security/test_dot_notation_schemes.py +3 -3
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/security/test_schemes.py +4 -4
- tigrbl_tests-0.3.12/tests/test_secdeps_execute_in_pre_tx.py +135 -0
- tigrbl_tests-0.3.12/tests/unit/__init__.py +0 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/decorators/test_engine_ctx_bindings.py +6 -6
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/decorators/test_hook_ctx_bindings.py +2 -2
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/decorators/test_op_ctx_bindings.py +6 -6
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/decorators/test_response_ctx_bindings.py +1 -1
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/decorators/test_schema_ctx_bindings.py +1 -1
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/response_utils.py +25 -15
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/runtime/atoms/test_emit_paired_post.py +2 -2
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/runtime/atoms/test_emit_paired_pre.py +6 -4
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/runtime/atoms/test_emit_readtime_alias.py +4 -4
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/runtime/atoms/test_out_masking.py +6 -6
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/runtime/atoms/test_refresh_demand.py +4 -3
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/runtime/atoms/test_resolve_assemble.py +4 -3
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/runtime/atoms/test_resolve_paired_gen.py +10 -6
- tigrbl_tests-0.3.12/tests/unit/runtime/atoms/test_route_protocol_detect.py +1 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/runtime/atoms/test_schema_collect_in.py +4 -8
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/runtime/atoms/test_schema_collect_out.py +4 -8
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/runtime/atoms/test_storage_to_stored.py +6 -4
- tigrbl_tests-0.3.12/tests/unit/runtime/atoms/test_wire_build_in.py +39 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/runtime/atoms/test_wire_build_out.py +4 -4
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/runtime/atoms/test_wire_dump.py +2 -2
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/runtime/atoms/test_wire_validate_in.py +8 -6
- tigrbl_tests-0.3.12/tests/unit/runtime/test_atom_stage_phase_window_static.py +115 -0
- tigrbl_tests-0.3.12/tests/unit/runtime/test_compilation_runtime_behavior.py +26 -0
- tigrbl_tests-0.3.12/tests/unit/runtime/test_events_phases.py +66 -0
- tigrbl_tests-0.3.12/tests/unit/runtime/test_events_runtime_behavior.py +46 -0
- tigrbl_tests-0.3.12/tests/unit/runtime/test_ingress_egress_phase_access.py +52 -0
- tigrbl_tests-0.3.12/tests/unit/runtime/test_kernel_plan_event_ordering.py +82 -0
- tigrbl_tests-0.3.12/tests/unit/runtime/test_kernel_plan_full_ordering.py +190 -0
- tigrbl_tests-0.3.12/tests/unit/runtime/test_kernel_runtime_behavior.py +31 -0
- tigrbl_tests-0.3.12/tests/unit/runtime/test_ordering_runtime_behavior.py +35 -0
- tigrbl_tests-0.3.12/tests/unit/runtime/test_payload_select_header_merge.py +1 -0
- tigrbl_tests-0.3.12/tests/unit/runtime/test_payload_select_invalid_rpc_params.py +1 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_acol_vcol_knobs.py +11 -9
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_alias_ctx_op_alias_attributes.py +5 -4
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_alias_ctx_op_attributes.py +1 -1
- tigrbl_tests-0.3.12/tests/unit/test_api_level_set_auth.py +34 -0
- tigrbl_tests-0.3.12/tests/unit/test_app_model_defaults.py +27 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_app_reexport.py +1 -1
- tigrbl_tests-0.3.12/tests/unit/test_app_spec_normalization.py +188 -0
- tigrbl_tests-0.3.12/tests/unit/test_attrdict_vs_simplenamespace.py +32 -0
- tigrbl_tests-0.3.12/tests/unit/test_authorize_runtime_secdep.py +27 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_base_columnspec_inheritance.py +3 -3
- tigrbl_tests-0.3.12/tests/unit/test_base_facade_initialize.py +74 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_build_list_params_spec_model.py +3 -2
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_bulk_body_annotation.py +5 -5
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_bulk_response_schema.py +50 -44
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_colspec_map_isolation.py +5 -5
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_column_collect_mixins.py +5 -4
- tigrbl_tests-0.3.12/tests/unit/test_column_mro_collect_namespace.py +15 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_column_rest_rpc_results.py +67 -55
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_column_table_orm_binding.py +5 -5
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_core_crud_bulk_ops.py +5 -4
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_core_crud_default_ops.py +5 -4
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_core_crud_methods.py +8 -6
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_core_wrap_memoization.py +1 -1
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_db_dependency.py +5 -5
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_decorator_and_collect.py +3 -3
- tigrbl_tests-0.3.12/tests/unit/test_default_schema_selection.py +118 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_default_tags.py +5 -5
- tigrbl_tests-0.3.12/tests/unit/test_diagnostics_no_compat_module.py +5 -0
- tigrbl_tests-0.3.12/tests/unit/test_docs_security_parity.py +90 -0
- tigrbl_tests-0.3.12/tests/unit/test_engine_install_api.py +28 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_engine_install_app.py +5 -5
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_engine_install_op.py +7 -6
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_engine_install_table.py +5 -4
- tigrbl_tests-0.3.12/tests/unit/test_engine_session_database_availability.py +51 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_engine_spec_and_shortcuts.py +2 -4
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_engine_usage_levels.py +12 -10
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_field_spec_attrs.py +13 -11
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_file_response.py +19 -58
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_get_schema.py +10 -11
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_handler_step_qualname.py +2 -2
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_hook_ctx_attributes.py +3 -1
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_hook_ctx_binding.py +7 -7
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_hookz_empty_phase.py +4 -4
- tigrbl_tests-0.3.12/tests/unit/test_in_tx.py +8 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_include_model_columns_namespace.py +6 -6
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_include_models_base_prefix.py +7 -7
- tigrbl_tests-0.3.12/tests/unit/test_include_tables_base_prefix.py +28 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_initialize_async_task.py +4 -4
- tigrbl_tests-0.3.12/tests/unit/test_initialize_cross_ddl.py +27 -0
- tigrbl_tests-0.3.12/tests/unit/test_initialize_mixed_engines.py +40 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_initialize_task_schedule.py +7 -7
- tigrbl_tests-0.3.12/tests/unit/test_instance_naming_conventions.py +81 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_io_spec_attributes.py +16 -14
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_iospec_attributes.py +2 -2
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_iospec_effects.py +19 -17
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_jsonrpc_openrpc.py +75 -18
- tigrbl_tests-0.3.12/tests/unit/test_jsonrpc_router_default_tag.py +13 -0
- tigrbl_tests-0.3.12/tests/unit/test_kernel_invoke_ctx.py +9 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_kernel_opview_on_demand.py +10 -9
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_kernel_plan_labels.py +9 -4
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_kernelz_endpoint.py +6 -6
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_make_column_shortcuts.py +1 -1
- tigrbl_tests-0.3.12/tests/unit/test_mapping_bind_response_export.py +14 -0
- tigrbl_tests-0.3.12/tests/unit/test_mapping_plan_precedence.py +44 -0
- tigrbl_tests-0.3.12/tests/unit/test_middleware_http_and_cors.py +99 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_mixins_sqlalchemy.py +2 -2
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_op_alias.py +1 -6
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_op_class_engine_binding.py +12 -10
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_op_ctx_arity_paths.py +12 -13
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_op_ctx_attributes.py +10 -18
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_op_ctx_core_crud_integration.py +31 -31
- tigrbl_tests-0.3.12/tests/unit/test_op_ctx_custom_target_persist.py +80 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_op_ctx_dynamic_attach.py +4 -4
- tigrbl_tests-0.3.12/tests/unit/test_op_ctx_parameter_matrix.py +88 -0
- tigrbl_tests-0.3.12/tests/unit/test_op_ctx_persist_options.py +63 -0
- tigrbl_tests-0.3.12/tests/unit/test_openapi_documentation_security_behavior.py +127 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_openapi_openrpc_schema_separation.py +9 -6
- tigrbl_tests-0.3.12/tests/unit/test_openrpc_documentation_security_behavior.py +127 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_opspec_effects.py +12 -12
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_relationship_alias_cols.py +11 -10
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_request_body_schema.py +8 -9
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_request_response_examples.py +14 -16
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_resolver_interning_warmup.py +6 -6
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_resolver_precedence.py +12 -11
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_response_alias_table_rpc.py +13 -12
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_response_ctx_precedence.py +12 -15
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_response_diagnostics_kernelz.py +10 -10
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_response_html_jinja_behavior.py +17 -15
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_response_parity.py +3 -3
- tigrbl_tests-0.3.12/tests/unit/test_response_rest.py +54 -0
- tigrbl_tests-0.3.12/tests/unit/test_response_rpc.py +55 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_response_template.py +1 -1
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_response_uuid.py +2 -2
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_rest_all_default_op_verbs.py +17 -8
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_rest_bulk_delete_suppresses_clear.py +5 -5
- tigrbl_tests-0.3.12/tests/unit/test_rest_no_schema_jsonable.py +85 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_rest_operation_id_uniqueness.py +19 -10
- tigrbl_tests-0.3.12/tests/unit/test_rest_output_serialization_extras.py +52 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_rest_request_mapping_access.py +2 -2
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_rest_rpc_parity_default_ops.py +13 -13
- tigrbl_tests-0.3.12/tests/unit/test_rest_rpc_prefixes.py +40 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_rest_rpc_symmetry.py +11 -11
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_router_compatibility_shims.py +11 -4
- tigrbl_tests-0.3.12/tests/unit/test_router_dependency_execution_blocked.py +9 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_rpc_all_default_op_verbs.py +55 -54
- tigrbl_tests-0.3.12/tests/unit/test_rpc_default_ops.py +112 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_schema_ctx_attributes.py +1 -1
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_schema_ctx_plain_class.py +3 -3
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_schema_spec_presence.py +8 -8
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_schemas_binding.py +3 -3
- tigrbl_tests-0.3.12/tests/unit/test_security_per_route.py +51 -0
- tigrbl_tests-0.3.12/tests/unit/test_spec_api.py +50 -0
- tigrbl_tests-0.3.12/tests/unit/test_spec_app.py +71 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_spec_column.py +2 -2
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_spec_engine.py +10 -10
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_spec_field.py +1 -1
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_spec_hook.py +4 -4
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_spec_io.py +2 -2
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_spec_op.py +3 -3
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_spec_storage.py +3 -2
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_spec_table.py +15 -2
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_sqlite_attachments.py +8 -8
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_sqlite_uuid_type.py +1 -1
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_stdapi_request_injection.py +10 -5
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_stdapi_transport_asgi_wsgi.py +55 -23
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_storage_spec_attributes.py +2 -2
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_sys_tx_async_begin.py +1 -1
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_sys_tx_begin.py +9 -6
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_system_docs_builders.py +3 -1
- tigrbl_tests-0.3.12/tests/unit/test_table_base_exports.py +21 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_table_collect_spec.py +6 -5
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_table_columns_namespace.py +2 -2
- tigrbl_tests-0.3.12/tests/unit/test_table_model_attribute_contract.py +17 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_table_namespace_init.py +3 -2
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_table_namespace_isolation.py +3 -2
- tigrbl_tests-0.3.12/tests/unit/test_tigrbl_api_app_configuration.py +86 -0
- tigrbl_tests-0.3.12/tests/unit/test_tigrbl_api_app_instantiation.py +44 -0
- tigrbl_tests-0.3.12/tests/unit/test_tigrbl_api_app_subclass_definition.py +39 -0
- tigrbl_tests-0.3.12/tests/unit/test_tigrbl_api_configuration.py +60 -0
- tigrbl_tests-0.3.12/tests/unit/test_tigrbl_api_instantiation.py +38 -0
- tigrbl_tests-0.3.12/tests/unit/test_tigrbl_api_subclass_definition.py +38 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_tigrbl_app_configuration.py +7 -3
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_tigrbl_app_instantiation.py +8 -7
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_tigrbl_app_state.py +1 -1
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_tigrbl_app_subclass_definition.py +7 -6
- tigrbl_tests-0.3.12/tests/unit/test_transport_gw_contract.py +10 -0
- tigrbl_tests-0.3.12/tests/unit/test_transport_security_runtime_only.py +29 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_v3_healthz_endpoint.py +2 -2
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_v3_op_alias.py +9 -8
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_v3_op_ctx_attributes.py +1 -1
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_v3_schemas_and_decorators.py +12 -17
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_v3_storage_spec_attributes.py +23 -21
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_verbosity.py +1 -1
- tigrbl_tests-0.3.11.dev3/tests/conftest.py +0 -346
- tigrbl_tests-0.3.11.dev3/tests/i9n/test_acronym_route_name.py +0 -16
- tigrbl_tests-0.3.11.dev3/tests/i9n/test_bindings_integration.py +0 -108
- tigrbl_tests-0.3.11.dev3/tests/i9n/test_request_extras_provider.py +0 -27
- tigrbl_tests-0.3.11.dev3/tests/i9n/test_response_extras_provider.py +0 -22
- tigrbl_tests-0.3.11.dev3/tests/i9n/test_rest_fallback_serialization.py +0 -65
- tigrbl_tests-0.3.11.dev3/tests/i9n/test_verb_alias_policy.py +0 -57
- tigrbl_tests-0.3.11.dev3/tests/unit/runtime/atoms/test_wire_build_in.py +0 -13
- tigrbl_tests-0.3.11.dev3/tests/unit/runtime/test_events_phases.py +0 -14
- tigrbl_tests-0.3.11.dev3/tests/unit/test_api_level_set_auth.py +0 -25
- tigrbl_tests-0.3.11.dev3/tests/unit/test_app_model_defaults.py +0 -28
- tigrbl_tests-0.3.11.dev3/tests/unit/test_base_facade_initialize.py +0 -71
- tigrbl_tests-0.3.11.dev3/tests/unit/test_engine_install_api.py +0 -28
- tigrbl_tests-0.3.11.dev3/tests/unit/test_in_tx.py +0 -16
- tigrbl_tests-0.3.11.dev3/tests/unit/test_initialize_cross_ddl.py +0 -26
- tigrbl_tests-0.3.11.dev3/tests/unit/test_initialize_mixed_engines.py +0 -41
- tigrbl_tests-0.3.11.dev3/tests/unit/test_jsonrpc_router_default_tag.py +0 -10
- tigrbl_tests-0.3.11.dev3/tests/unit/test_kernel_invoke_ctx.py +0 -14
- tigrbl_tests-0.3.11.dev3/tests/unit/test_middleware_http_and_cors.py +0 -266
- tigrbl_tests-0.3.11.dev3/tests/unit/test_op_ctx_persist_options.py +0 -75
- tigrbl_tests-0.3.11.dev3/tests/unit/test_response_rest.py +0 -97
- tigrbl_tests-0.3.11.dev3/tests/unit/test_response_rpc.py +0 -88
- tigrbl_tests-0.3.11.dev3/tests/unit/test_rest_no_schema_jsonable.py +0 -66
- tigrbl_tests-0.3.11.dev3/tests/unit/test_rest_rpc_prefixes.py +0 -40
- tigrbl_tests-0.3.11.dev3/tests/unit/test_rpc_default_ops.py +0 -111
- tigrbl_tests-0.3.11.dev3/tests/unit/test_security_per_route.py +0 -43
- tigrbl_tests-0.3.11.dev3/tests/unit/test_spec_api.py +0 -50
- tigrbl_tests-0.3.11.dev3/tests/unit/test_spec_app.py +0 -28
- tigrbl_tests-0.3.11.dev3/tests/unit/test_table_base_exports.py +0 -22
- tigrbl_tests-0.3.11.dev3/tests/unit/test_tigrbl_api_app_configuration.py +0 -83
- tigrbl_tests-0.3.11.dev3/tests/unit/test_tigrbl_api_app_instantiation.py +0 -42
- tigrbl_tests-0.3.11.dev3/tests/unit/test_tigrbl_api_app_subclass_definition.py +0 -38
- tigrbl_tests-0.3.11.dev3/tests/unit/test_tigrbl_api_configuration.py +0 -59
- tigrbl_tests-0.3.11.dev3/tests/unit/test_tigrbl_api_instantiation.py +0 -37
- tigrbl_tests-0.3.11.dev3/tests/unit/test_tigrbl_api_subclass_definition.py +0 -37
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/LICENSE +0 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/README.md +0 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/__init__.py +0 -0
- {tigrbl_tests-0.3.11.dev3/tests/i9n → tigrbl_tests-0.3.12/tests/harness_v3}/__init__.py +0 -0
- {tigrbl_tests-0.3.11.dev3/tests/parity → tigrbl_tests-0.3.12/tests/i9n}/__init__.py +0 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/test_rest_rpc_parity_v3.py +0 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/i9n/uvicorn_utils.py +0 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/mount/__init__.py +0 -0
- {tigrbl_tests-0.3.11.dev3/tests/perf → tigrbl_tests-0.3.12/tests/parity}/__init__.py +0 -0
- {tigrbl_tests-0.3.11.dev3/tests/unit → tigrbl_tests-0.3.12/tests/perf}/__init__.py +0 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/decorators/test_alias_ctx_bindings.py +0 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/decorators/test_op_alias_bindings.py +0 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_config_dataclass_none.py +0 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_hybrid_session_run_sync.py +0 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_jsonrpc_id_example.py +0 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_postgres_engine_errors.py +0 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_postgres_env_vars.py +0 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_should_wire_canonical.py +0 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_sys_handler_crud.py +0 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_sys_run_rollback.py +0 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_sys_tx_commit.py +0 -0
- {tigrbl_tests-0.3.11.dev3 → tigrbl_tests-0.3.12}/tests/unit/test_tigrbl_app_event_handlers.py +0 -0
- {tigrbl_tests-0.3.11.dev3 → 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.
|
|
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.
|
|
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
|
-
|
|
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,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)
|