tigrcorn 0.3.16.dev12__tar.gz → 0.3.17.dev1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {tigrcorn-0.3.16.dev12/src/tigrcorn.egg-info → tigrcorn-0.3.17.dev1}/PKG-INFO +17 -17
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/PYPI_README.md +3 -3
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/README.md +3 -3
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/pyproject.toml +15 -14
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/__init__.py +5 -0
- tigrcorn-0.3.17.dev1/src/tigrcorn/capabilities/__init__.py +15 -0
- tigrcorn-0.3.17.dev1/src/tigrcorn/capabilities/export.py +233 -0
- tigrcorn-0.3.17.dev1/src/tigrcorn/capabilities/model.py +77 -0
- tigrcorn-0.3.17.dev1/src/tigrcorn/capabilities/schema/__init__.py +19 -0
- tigrcorn-0.3.17.dev1/src/tigrcorn/capabilities/schema/runtime-capability-registry.schema.json +114 -0
- tigrcorn-0.3.17.dev1/src/tigrcorn/certification/__init__.py +7 -0
- tigrcorn-0.3.17.dev1/src/tigrcorn/certification/artifacts.py +7 -0
- tigrcorn-0.3.17.dev1/src/tigrcorn/certification/supply_chain.py +7 -0
- tigrcorn-0.3.17.dev1/src/tigrcorn/cli.py +40 -0
- tigrcorn-0.3.17.dev1/src/tigrcorn/compat/perf_runner.py +7 -0
- tigrcorn-0.3.17.dev1/src/tigrcorn/http/certification.py +7 -0
- tigrcorn-0.3.17.dev1/src/tigrcorn/observability/protocol.py +7 -0
- tigrcorn-0.3.17.dev1/src/tigrcorn/transport_stacks.py +120 -0
- tigrcorn-0.3.17.dev1/src/tigrcorn/transports/quic/security.py +7 -0
- tigrcorn-0.3.17.dev1/src/tigrcorn/webtransport/__init__.py +13 -0
- tigrcorn-0.3.17.dev1/src/tigrcorn/webtransport/governance.py +7 -0
- tigrcorn-0.3.17.dev1/src/tigrcorn/webtransport/wire.py +7 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1/src/tigrcorn.egg-info}/PKG-INFO +17 -17
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn.egg-info/SOURCES.txt +86 -1
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn.egg-info/requires.txt +13 -13
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_aioquic_adapter_preflight.py +3 -3
- tigrcorn-0.3.17.dev1/tests/test_asgi_module_organization.py +67 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_category_boundaries.py +21 -29
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_certification_delivery_plan.py +19 -19
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_certification_environment_freeze.py +10 -10
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_certification_explicit_surfaces_boundary.py +8 -4
- tigrcorn-0.3.17.dev1/tests/test_certification_module_organization.py +87 -0
- tigrcorn-0.3.17.dev1/tests/test_client_session_coverage_matrix_contract.py +113 -0
- tigrcorn-0.3.17.dev1/tests/test_client_session_fault_cleanup_modes_t2.py +102 -0
- tigrcorn-0.3.17.dev1/tests/test_client_session_pressure_modes_t2.py +89 -0
- tigrcorn-0.3.17.dev1/tests/test_client_session_topology_schedules.py +79 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_concurrency_keepalive_checkpoint.py +6 -6
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_concurrency_keepalive_closure.py +2 -52
- tigrcorn-0.3.17.dev1/tests/test_config_module_organization.py +70 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_connect_relay_independent_closure.py +7 -7
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_connect_relay_local_negatives.py +45 -1
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_content_coding_independent_closure.py +8 -8
- tigrcorn-0.3.17.dev1/tests/test_contract_channel_lifecycle_transport_enforcement_t012.py +100 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_contract_emit_completion_events.py +1 -1
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_contract_planned_coverage_inventory.py +14 -5
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_contract_proof_boundary.py +7 -4
- tigrcorn-0.3.17.dev1/tests/test_contract_registry_release_integration.py +139 -0
- tigrcorn-0.3.17.dev1/tests/test_contract_registry_traceability.py +141 -0
- tigrcorn-0.3.17.dev1/tests/test_contract_semantic_transport_enforcement_t012.py +90 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_documentation_truth_normalization_checkpoint.py +3 -3
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_dos_resilience.py +9 -5
- tigrcorn-0.3.17.dev1/tests/test_embedded_resource_ownership.py +210 -0
- tigrcorn-0.3.17.dev1/tests/test_h2_h3_quic_lifecycle_enforcement_t012.py +93 -0
- tigrcorn-0.3.17.dev1/tests/test_http1_client_session_topology.py +11 -0
- tigrcorn-0.3.17.dev1/tests/test_http2_client_session_topology.py +23 -0
- tigrcorn-0.3.17.dev1/tests/test_http2_module_organization.py +79 -0
- tigrcorn-0.3.17.dev1/tests/test_http3_module_organization.py +44 -0
- tigrcorn-0.3.17.dev1/tests/test_http3_quic_client_session_topology.py +23 -0
- tigrcorn-0.3.17.dev1/tests/test_http_entity_range_content_coding_certification.py +174 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_independent_harness_foundation.py +10 -10
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_ocsp_independent_closure.py +8 -8
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_optional_performance_comparison_ssot.py +9 -6
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_p8_gov.py +1 -2
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_promotion_contract_freeze.py +37 -37
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_promotion_evaluator_hardening.py +2 -2
- tigrcorn-0.3.17.dev1/tests/test_protocol_aware_observability.py +189 -0
- tigrcorn-0.3.17.dev1/tests/test_protocol_aware_observability_integration.py +186 -0
- tigrcorn-0.3.17.dev1/tests/test_protocol_support_matrix.py +91 -0
- tigrcorn-0.3.17.dev1/tests/test_protocols_module_organization.py +105 -0
- tigrcorn-0.3.17.dev1/tests/test_quic_module_organization.py +55 -0
- tigrcorn-0.3.17.dev1/tests/test_quic_operational_security_certification.py +216 -0
- tigrcorn-0.3.17.dev1/tests/test_quic_operational_security_integration.py +131 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_quic_rfc_upgrade_paths.py +8 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_release_assembly_checkpoint.py +14 -14
- tigrcorn-0.3.16.dev12/tests/test_p9_auto.py → tigrcorn-0.3.17.dev1/tests/test_release_auto.py +4 -4
- tigrcorn-0.3.17.dev1/tests/test_reproducible_signed_certification_artifacts.py +147 -0
- tigrcorn-0.3.17.dev1/tests/test_reproducible_signed_certification_artifacts_integration.py +109 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_rfc7692_independent_closure.py +7 -7
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_rfc8297_7838_boundary_formalization.py +1 -1
- tigrcorn-0.3.17.dev1/tests/test_root_module_organization.py +106 -0
- tigrcorn-0.3.17.dev1/tests/test_runtime_capability_registry.py +107 -0
- tigrcorn-0.3.17.dev1/tests/test_runtime_certification_claim_maturity.py +239 -0
- tigrcorn-0.3.17.dev1/tests/test_runtime_describe_contract.py +164 -0
- tigrcorn-0.3.17.dev1/tests/test_runtime_module_organization.py +86 -0
- tigrcorn-0.3.17.dev1/tests/test_security_module_organization.py +111 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_ssot_registry.py +19 -1
- tigrcorn-0.3.17.dev1/tests/test_static_delivery_security_certification.py +166 -0
- tigrcorn-0.3.17.dev1/tests/test_static_module_organization.py +82 -0
- tigrcorn-0.3.17.dev1/tests/test_stream_resume_runtime_t01.py +48 -0
- tigrcorn-0.3.17.dev1/tests/test_stream_resume_runtime_t2.py +61 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_strict_performance_closure.py +7 -7
- tigrcorn-0.3.17.dev1/tests/test_supply_chain_evidence_release_provenance.py +206 -0
- tigrcorn-0.3.17.dev1/tests/test_supply_chain_evidence_release_provenance_integration.py +172 -0
- tigrcorn-0.3.17.dev1/tests/test_tests_module_organization.py +24 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_tigr_asgi_contract_peer_validation.py +1 -1
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_tls_cipher_policy_closure.py +3 -3
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_tls_identity_interop_boundary.py +9 -63
- tigrcorn-0.3.17.dev1/tests/test_tools_module_organization.py +61 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_trailer_fields_independent_closure.py +8 -8
- tigrcorn-0.3.17.dev1/tests/test_transport_certification_domains.py +190 -0
- tigrcorn-0.3.17.dev1/tests/test_transport_certification_domains_integration.py +104 -0
- tigrcorn-0.3.17.dev1/tests/test_transport_stack_taxonomy_t01.py +43 -0
- tigrcorn-0.3.17.dev1/tests/test_transport_stack_taxonomy_t2.py +46 -0
- tigrcorn-0.3.17.dev1/tests/test_websocket_client_session_topology.py +11 -0
- tigrcorn-0.3.17.dev1/tests/test_webtransport_bidi_stream_context.py +20 -0
- tigrcorn-0.3.17.dev1/tests/test_webtransport_client_session_topology.py +44 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_webtransport_datagram_runtime_dispatch.py +12 -8
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_webtransport_feature_coverage.py +26 -139
- tigrcorn-0.3.17.dev1/tests/test_webtransport_feature_demo_app.py +141 -0
- tigrcorn-0.3.17.dev1/tests/test_webtransport_h2_capsules.py +116 -0
- tigrcorn-0.3.17.dev1/tests/test_webtransport_h2_extended_connect.py +53 -0
- tigrcorn-0.3.17.dev1/tests/test_webtransport_h2_flow_control.py +95 -0
- tigrcorn-0.3.17.dev1/tests/test_webtransport_h2_iana.py +12 -0
- tigrcorn-0.3.17.dev1/tests/test_webtransport_h2_operator_surface.py +17 -0
- tigrcorn-0.3.17.dev1/tests/test_webtransport_h2_session_lifecycle.py +63 -0
- tigrcorn-0.3.17.dev1/tests/test_webtransport_h2_settings.py +56 -0
- tigrcorn-0.3.17.dev1/tests/test_webtransport_h3_draft13_buffering.py +28 -0
- tigrcorn-0.3.17.dev1/tests/test_webtransport_h3_draft13_connect.py +74 -0
- tigrcorn-0.3.17.dev1/tests/test_webtransport_h3_draft13_datagrams.py +28 -0
- tigrcorn-0.3.17.dev1/tests/test_webtransport_h3_draft13_flow_control.py +51 -0
- tigrcorn-0.3.17.dev1/tests/test_webtransport_h3_draft13_iana.py +97 -0
- tigrcorn-0.3.17.dev1/tests/test_webtransport_h3_draft13_keying_material.py +46 -0
- tigrcorn-0.3.17.dev1/tests/test_webtransport_h3_draft13_lifecycle.py +58 -0
- tigrcorn-0.3.17.dev1/tests/test_webtransport_h3_draft13_settings.py +63 -0
- tigrcorn-0.3.17.dev1/tests/test_webtransport_h3_draft13_streams.py +76 -0
- tigrcorn-0.3.17.dev1/tests/test_webtransport_mtls_demo.py +112 -0
- tigrcorn-0.3.17.dev1/tests/test_webtransport_mtls_demo_cleanup.py +122 -0
- tigrcorn-0.3.16.dev12/tests/test_webtransport_mtls_demo.py → tigrcorn-0.3.17.dev1/tests/test_webtransport_mtls_demo_runtime.py +1 -189
- tigrcorn-0.3.17.dev1/tests/test_webtransport_resource_governance.py +190 -0
- tigrcorn-0.3.17.dev1/tests/test_webtransport_resource_governance_integration.py +161 -0
- tigrcorn-0.3.17.dev1/tests/test_webtransport_t2_runtime_robustness.py +203 -0
- tigrcorn-0.3.17.dev1/tests/test_wt_stream_probe_fixture.py +144 -0
- tigrcorn-0.3.17.dev1/tests/test_x509_webpki_validation.py +210 -0
- tigrcorn-0.3.16.dev12/src/tigrcorn/cli.py +0 -7
- tigrcorn-0.3.16.dev12/src/tigrcorn/compat/perf_runner.py +0 -744
- tigrcorn-0.3.16.dev12/tests/test_webtransport_bidi_stream_context.py +0 -303
- tigrcorn-0.3.16.dev12/tests/test_wt_stream_probe_fixture.py +0 -80
- tigrcorn-0.3.16.dev12/tests/test_x509_webpki_validation.py +0 -477
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/LICENSE +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/setup.cfg +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/__main__.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/_workspace.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/api.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/app_interfaces.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/asgi/__init__.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/asgi/connection.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/asgi/errors.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/asgi/events/__init__.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/asgi/events/custom.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/asgi/events/http.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/asgi/events/lifespan.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/asgi/events/websocket.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/asgi/extensions/__init__.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/asgi/extensions/tls.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/asgi/extensions/websocket_denial.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/asgi/receive.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/asgi/scopes/__init__.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/asgi/scopes/custom.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/asgi/scopes/http.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/asgi/scopes/lifespan.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/asgi/scopes/websocket.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/asgi/send.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/asgi/state.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/availability.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/compat/__init__.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/compat/aioquic_preflight.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/compat/asgi3.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/compat/certification_env.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/compat/conformance.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/compat/hypercorn.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/compat/interop.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/compat/interop_capture.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/compat/interop_cli.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/compat/interop_runner.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/compat/release_gates.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/compat/uvicorn.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/config/__init__.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/config/audit.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/config/defaults.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/config/env.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/config/files.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/config/governance_surface.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/config/load.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/config/merge.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/config/model.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/config/negative_surface.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/config/normalize.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/config/observability_surface.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/config/origin_surface.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/config/policy_surface.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/config/profiles.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/config/quic_surface.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/config/validate.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/constants.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/contract/__init__.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/contract/classification.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/contract/events.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/contract/metadata.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/contract/scopes.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/embedded.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/errors.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/flow/__init__.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/flow/backpressure.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/flow/buffers.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/flow/credits.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/flow/keepalive.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/flow/timeouts.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/flow/watermarks.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/http/__init__.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/http/alt_svc.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/http/conditional.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/http/early_hints.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/http/entity.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/http/etag.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/http/range.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/http/structured_fields.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/listeners/__init__.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/listeners/base.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/listeners/inproc.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/listeners/pipe.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/listeners/registry.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/listeners/tcp.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/listeners/udp.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/listeners/unix.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/observability/__init__.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/observability/events.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/observability/logging.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/observability/metrics.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/observability/tracing.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/profiles/README.md +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/profiles/__init__.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/profiles/default.profile.json +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/profiles/static-origin.profile.json +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/profiles/strict-h1-origin.profile.json +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/profiles/strict-h2-origin.profile.json +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/profiles/strict-h3-edge.profile.json +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/profiles/strict-mtls-origin.profile.json +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/__init__.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/_compression.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/connect.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/content_coding.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/custom/__init__.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/custom/adapters.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/custom/registry.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/http1/__init__.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/http1/keepalive.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/http1/parser.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/http1/serializer.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/http1/state.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/http2/__init__.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/http2/codec.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/http2/flow.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/http2/handler.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/http2/hpack.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/http2/state.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/http2/streams.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/http2/websocket.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/http3/__init__.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/http3/codec.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/http3/handler.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/http3/qpack.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/http3/state.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/http3/streams.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/http3/websocket.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/lifespan/__init__.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/lifespan/driver.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/rawframed/__init__.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/rawframed/codec.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/rawframed/frames.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/rawframed/handler.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/rawframed/state.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/registry.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/websocket/__init__.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/websocket/codec.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/websocket/extensions.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/websocket/frames.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/websocket/handler.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/websocket/handshake.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/websocket/state.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/py.typed +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/scheduler/__init__.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/scheduler/cancellation.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/scheduler/dispatch.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/scheduler/fairness.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/scheduler/policy.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/scheduler/priorities.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/scheduler/quotas.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/scheduler/runtime.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/scheduler/tasks.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/security/__init__.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/security/alpn.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/security/certs.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/security/policies.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/security/tls.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/security/tls13/__init__.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/security/tls13/extensions.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/security/tls13/handshake.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/security/tls13/key_schedule.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/security/tls13/messages.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/security/tls13/transcript.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/security/tls_cipher_policy.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/security/x509/__init__.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/security/x509/path.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/server/__init__.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/server/app_loader.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/server/bootstrap.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/server/hooks.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/server/reloader.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/server/runner.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/server/shutdown.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/server/signals.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/server/state.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/server/supervisor.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/sessions/__init__.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/sessions/base.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/sessions/connection.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/sessions/limits.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/sessions/manager.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/sessions/metadata.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/sessions/quic.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/ssot_baseline.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/static.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/streams/__init__.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/streams/base.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/streams/ids.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/streams/multiplex.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/streams/registry.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/streams/singleplex.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/__init__.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/base.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/inproc/__init__.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/inproc/channel.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/pipe/__init__.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/pipe/connection.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/quic/__init__.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/quic/connection.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/quic/crypto.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/quic/datagrams.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/quic/flow.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/quic/handshake.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/quic/packets.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/quic/recovery.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/quic/scheduler.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/quic/streams.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/quic/tls_adapter.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/registry.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/tcp/__init__.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/tcp/accept.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/tcp/connection.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/tcp/reader.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/tcp/socketopts.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/tcp/tls.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/tcp/writer.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/udp/__init__.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/udp/endpoint.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/udp/packet.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/udp/socketopts.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/unix/__init__.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/unix/connection.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/types.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/utils/__init__.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/utils/authority.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/utils/bytes.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/utils/headers.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/utils/ids.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/utils/imports.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/utils/net.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/utils/proxy.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/version.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/workers/__init__.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/workers/local.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/workers/model.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/workers/process.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn/workers/supervisor.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn.egg-info/dependency_links.txt +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn.egg-info/entry_points.txt +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/src/tigrcorn.egg-info/top_level.txt +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_additional_remaining_work.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_advanced_protocol_delivery_checkpoint.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_aioquic_adapter_helpers.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_aioquic_performance_matrix.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_app_interface_cli_flag.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_app_interface_config_toml.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_app_interface_detection_precedence.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_app_interface_env_var.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_app_interface_fail_closed_ambiguity.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_app_interface_public_api.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_app_loader.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_asgi2_compat_exclusion.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_asgi3_endpoint_metadata_extension.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_asgi3_hot_path_isolation.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_asgi3_security_metadata_extension.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_asgi3_stream_datagram_extension.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_asgi3_transport_identity_extension.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_certification_policy_alignment.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_cli_and_asgi3.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_cli_config_surface.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_code_style_governance.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_compat_dispatch_selection.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_compat_http_boundary.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_compression_additional.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_config_matrix.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_config_matrix_pytest.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_conformance_corpus.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_connect_rfc9110.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_connect_tunnel_h2_h3.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_content_coding_policy_local.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_contract_alpn_metadata.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_contract_app_dispatch.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_contract_classification_projection.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_contract_classification_projection_t2.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_contract_core_boundary.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_contract_datagram_flow_control_mapping.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_contract_datagram_unit_identity.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_contract_emit_completion_asgi_extension.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_contract_fd_endpoint_metadata.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_contract_generic_datagram_runtime.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_contract_generic_stream_runtime.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_contract_http2_stream_identity.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_contract_http3_stream_identity.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_contract_illegal_event_order_rejection.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_contract_inproc_endpoint_metadata.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_contract_invalid_endpoint_metadata_rejection.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_contract_jsonrpc_binding_classification.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_contract_listener_endpoint_metadata.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_contract_lossy_metadata_rejection.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_contract_mtls_peer_metadata.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_contract_native_public_api.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_contract_native_runtime.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_contract_ocsp_crl_metadata.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_contract_pipe_endpoint_metadata.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_contract_quic_connection_identity.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_contract_rest_binding_classification.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_contract_sni_metadata.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_contract_sse_binding_classification.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_contract_stream_backpressure_mapping.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_contract_tcp_connection_identity.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_contract_tls_endpoint_metadata.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_contract_uds_endpoint_metadata.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_contract_unix_connection_identity.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_contract_unsupported_scope_rejection.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_contract_webtransport_session_identity.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_contract_webtransport_stream_identity.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_default_audits.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_dependency_declaration_reconciliation_checkpoint.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_documentation_reconciliation.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_entity_semantics_checkpoint.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_external_current_release_matrix.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_external_independent_peer_release_matrix.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_external_interop_runner_matrix.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_external_rfc_hardening_candidate_matrix.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_flag_surface_truth_reconciliation.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_flow_control_bundle.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_flow_scheduler.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_governance_graph_export.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_governed_rfc_deep_coverage.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_governed_rfc_support_floor.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_h11_http1_probe_fixture.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_h1_websocket_operator_surface.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_h2_http2_probe_fixture.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_h3_asgi3_lab.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_h3_http3_probe_fixture.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_h3_quic_control_plane_boundary.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_h3_quic_probe_fixture.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_hpack_completion_pass.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_http1_chunked.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_http1_hardening_pass.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_http1_parser.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_http1_parser_owned_surface.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_http1_rfc9112.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_http2_asgi3_demo.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_http2_duplex_interleaving.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_http2_duplex_interleaving_t2.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_http2_flow_control_backpressure.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_http2_flow_control_backpressure_t2.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_http2_hpack.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_http2_operator_surface.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_http2_request_streaming.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_http2_request_streaming_t2.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_http2_rfc9113.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_http2_rfc9113_gap_regressions.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_http2_rfc9113_server_negatives.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_http2_server_push_surface.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_http2_state_machine_completion.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_http2_websocket_rfc8441.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_http3_request_stream_state_machine.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_http3_rfc9114.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_http3_server.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_http3_websocket_rfc9220.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_http_content_coding_rfc9110.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_http_integrity_caching_signatures_status.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_http_status_code_surface.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_import.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_intermediary_proxy_corpus.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_json_rpc_runtime_exclusion.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_lifespan.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_lifespan_example.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_logging_exporter_closure.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_minimum_certified_intermediary_proxy_corpus.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_negative_certification.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_observability_surface.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_observability_workers.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_ocsp_local_validation.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_open_loop_benchmark_matrices.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_operator_surface.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_origin_contract.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_p8_sf.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_package_boundaries.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_performance_harness.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_pipe_and_inproc.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_policy_surface.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_prebuffered_reader_and_custom.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_product_boundary_exclusions.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_profile_resolution.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_promotion_targets.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_protocol_scope_fixtures.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_provisional_all_surfaces_gap_bundle.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_provisional_flow_control_gap_bundle.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_provisional_http3_gap_bundle.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_public_api_cli_mtls_surface.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_public_api_tls_cipher_surface.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_public_lifecycle_and_embedder_contract.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_public_quic_tls_packaging.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_qpack_completion.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_quic_custom_server.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_quic_http3.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_quic_http3_additional_rfc.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_quic_packets_rfc9000.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_quic_primitives.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_quic_recovery_live_runtime_integration.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_quic_recovery_rfc9002.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_quic_runtime_additions.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_quic_stream_flow_state_machine.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_quic_surface.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_quic_tls_external_interop_regressions.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_quic_tls_handshake_driver.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_quic_tls_rfc9001.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_quic_transport_runtime_completion.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_rawframed_handler.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_registries_models.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_release_candidate.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_release_gates.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_response_pipeline_streaming_checkpoint.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_response_trailers_rfc9110.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_rest_runtime_exclusion.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_rfc7232_7233_boundary_formalization.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_rfc7232_conditional_requests.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_rfc7233_range_requests.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_rfc7838_alt_svc.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_rfc8297_early_hints.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_rfc9112_boundary_formalization.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_rfc_applicability_and_competitor_status.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_rfc_applicability_and_competitor_support.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_rfc_compliance_hardening.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_rsgi_compat_exclusion.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_runtime_performance_matrix.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_scheduler_runtime.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_security_compat_utils.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_server_http1.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_server_http2.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_server_unix.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_server_websocket.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_sessions_streams.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_ssot_all_feature_t012_baseline.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_static_delivery_productionization_checkpoint.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_static_delivery_surface.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_stream_probe_fixtures.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_strict_rfc_surface.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_surface_parity_checkpoint.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_tcp_tls_package_owned.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_tls13_engine_upgrade.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_tls_alpn_rfc7301.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_tls_operator_material_surface.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_trailer_policy_strict_local.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_trailers_rfc9110.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_transport_core_strictness_checkpoint.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_trio_runtime_surface_reconciliation_checkpoint.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_websocket_additional_rfc6455.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_websocket_frames.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_websocket_peer_performance_matrix.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_websocket_rfc6455.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_websocket_rfc7692.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_websocket_rfc7936.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_websocket_rfc8307.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_websocket_uix_demo.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_webtransport_h3_quic_completion_events.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_webtransport_h3_quic_datagram_events.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_webtransport_h3_quic_scope.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_webtransport_h3_quic_session_events.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_webtransport_h3_quic_stream_events.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_webtransport_operator_surface.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_ws_wss_probe_fixture.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_wsgi_compat_exclusion.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_wss_asgi3_lab.py +0 -0
- {tigrcorn-0.3.16.dev12 → tigrcorn-0.3.17.dev1}/tests/test_wt_peer_probe_package.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: tigrcorn
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.17.dev1
|
|
4
4
|
Summary: ASGI3 Python web server with built-in HTTP/1.1, HTTP/2, HTTP/3, QUIC, WebSocket, WebTransport, TLS, and certification tooling.
|
|
5
5
|
Author-email: Jacob Stewart <jacob@swarmauri.com>
|
|
6
6
|
License: Apache License
|
|
@@ -187,19 +187,19 @@ Classifier: Typing :: Typed
|
|
|
187
187
|
Requires-Python: <3.15,>=3.10
|
|
188
188
|
Description-Content-Type: text/markdown
|
|
189
189
|
License-File: LICENSE
|
|
190
|
-
Requires-Dist: tigrcorn-core==0.3.
|
|
191
|
-
Requires-Dist: tigrcorn-config==0.3.
|
|
192
|
-
Requires-Dist: tigrcorn-asgi==0.3.
|
|
193
|
-
Requires-Dist: tigrcorn-contract==0.3.
|
|
194
|
-
Requires-Dist: tigrcorn-transports==0.3.
|
|
195
|
-
Requires-Dist: tigrcorn-protocols==0.3.
|
|
196
|
-
Requires-Dist: tigrcorn-http==0.3.
|
|
197
|
-
Requires-Dist: tigrcorn-security==0.3.
|
|
198
|
-
Requires-Dist: tigrcorn-runtime==0.3.
|
|
199
|
-
Requires-Dist: tigrcorn-static==0.3.
|
|
200
|
-
Requires-Dist: tigrcorn-observability==0.3.
|
|
201
|
-
Requires-Dist: tigrcorn-compat==0.3.
|
|
202
|
-
Requires-Dist: tigrcorn-certification==0.3.
|
|
190
|
+
Requires-Dist: tigrcorn-core==0.3.17.dev1
|
|
191
|
+
Requires-Dist: tigrcorn-config==0.3.17.dev1
|
|
192
|
+
Requires-Dist: tigrcorn-asgi==0.3.17.dev1
|
|
193
|
+
Requires-Dist: tigrcorn-contract==0.3.17.dev1
|
|
194
|
+
Requires-Dist: tigrcorn-transports==0.3.17.dev1
|
|
195
|
+
Requires-Dist: tigrcorn-protocols==0.3.17.dev1
|
|
196
|
+
Requires-Dist: tigrcorn-http==0.3.17.dev1
|
|
197
|
+
Requires-Dist: tigrcorn-security==0.3.17.dev1
|
|
198
|
+
Requires-Dist: tigrcorn-runtime==0.3.17.dev1
|
|
199
|
+
Requires-Dist: tigrcorn-static==0.3.17.dev1
|
|
200
|
+
Requires-Dist: tigrcorn-observability==0.3.17.dev1
|
|
201
|
+
Requires-Dist: tigrcorn-compat==0.3.17.dev1
|
|
202
|
+
Requires-Dist: tigrcorn-certification==0.3.17.dev1
|
|
203
203
|
Requires-Dist: tigr-asgi-contract>=0.3.2
|
|
204
204
|
Provides-Extra: tls-x509
|
|
205
205
|
Requires-Dist: cryptography>=46.0.0; extra == "tls-x509"
|
|
@@ -820,7 +820,7 @@ print(promotion_report.passed)
|
|
|
820
820
|
| Lifecycle and embedding contract | [lifecycle and embedded server guide](https://github.com/tigrbl/tigrcorn/blob/master/docs/LIFECYCLE_AND_EMBEDDED_SERVER.md) |
|
|
821
821
|
| Optional dependency truth | [optional dependency surface](https://github.com/tigrbl/tigrcorn/blob/master/docs/review/conformance/OPTIONAL_DEPENDENCY_SURFACE.md), [optional dependency surface JSON](https://github.com/tigrbl/tigrcorn/blob/master/docs/review/conformance/optional_dependency_surface.current.json) |
|
|
822
822
|
| External evidence inputs | [same-stack replay matrix](https://github.com/tigrbl/tigrcorn/blob/master/docs/review/conformance/external_matrix.same_stack_replay.json), [release external matrix](https://github.com/tigrbl/tigrcorn/blob/master/docs/review/conformance/external_matrix.release.json), [current-release external matrix](https://github.com/tigrbl/tigrcorn/blob/master/docs/review/conformance/external_matrix.current_release.json) |
|
|
823
|
-
| Planning and promotion checkpoints | [
|
|
823
|
+
| Planning and promotion checkpoints | [Release certification implementation plan](https://github.com/tigrbl/tigrcorn/blob/master/docs/review/conformance/RELEASE_IMPLEMENTATION_PLAN.md), [Promotion contract promotion contract freeze](https://github.com/tigrbl/tigrcorn/blob/master/docs/review/conformance/PROMOTION_CONTRACT_PROMOTION_CONTRACT_FREEZE.md) |
|
|
824
824
|
|
|
825
825
|
### Current repository claim
|
|
826
826
|
|
|
@@ -859,7 +859,7 @@ Read next:
|
|
|
859
859
|
- [release gate status](https://github.com/tigrbl/tigrcorn/blob/master/docs/review/conformance/RELEASE_GATE_STATUS.md)
|
|
860
860
|
- [strict profile target](https://github.com/tigrbl/tigrcorn/blob/master/docs/review/conformance/STRICT_PROFILE_TARGET.md)
|
|
861
861
|
- [flag certification target](https://github.com/tigrbl/tigrcorn/blob/master/docs/review/conformance/FLAG_CERTIFICATION_TARGET.md)
|
|
862
|
-
- [
|
|
862
|
+
- [Promotion contract promotion contract freeze](https://github.com/tigrbl/tigrcorn/blob/master/docs/review/conformance/PROMOTION_CONTRACT_PROMOTION_CONTRACT_FREEZE.md)
|
|
863
863
|
|
|
864
864
|
## Where to look
|
|
865
865
|
|
|
@@ -873,7 +873,7 @@ Read next:
|
|
|
873
873
|
| Reviewing the boundary or current scope | [certification boundary](https://github.com/tigrbl/tigrcorn/blob/master/docs/review/conformance/CERTIFICATION_BOUNDARY.md) | [boundary non-goals](https://github.com/tigrbl/tigrcorn/blob/master/docs/review/conformance/BOUNDARY_NON_GOALS.md) |
|
|
874
874
|
| Comparing Tigrcorn with peer servers | [RFC comparison](https://github.com/tigrbl/tigrcorn/blob/master/docs/comp/rfc.md) | [CLI comparison](https://github.com/tigrbl/tigrcorn/blob/master/docs/comp/cli.md), [operations comparison](https://github.com/tigrbl/tigrcorn/blob/master/docs/comp/ops.md), [out-of-bound comparison](https://github.com/tigrbl/tigrcorn/blob/master/docs/comp/oob.md) |
|
|
875
875
|
| Writing or maintaining docs | [authoring guide](https://github.com/tigrbl/tigrcorn/blob/master/docs/gov/authoring.md) | [`CONTRIBUTING.md`](https://github.com/tigrbl/tigrcorn/blob/master/CONTRIBUTING.md), [tree rules](https://github.com/tigrbl/tigrcorn/blob/master/docs/gov/tree.md), [mutability rules](https://github.com/tigrbl/tigrcorn/blob/master/docs/gov/mut.md) |
|
|
876
|
-
| Working on release or promotion | [release workflow guide](https://github.com/tigrbl/tigrcorn/blob/master/docs/gov/release.md) | [
|
|
876
|
+
| Working on release or promotion | [release workflow guide](https://github.com/tigrbl/tigrcorn/blob/master/docs/gov/release.md) | [Promotion contract promotion contract freeze](https://github.com/tigrbl/tigrcorn/blob/master/docs/review/conformance/PROMOTION_CONTRACT_PROMOTION_CONTRACT_FREEZE.md) |
|
|
877
877
|
|
|
878
878
|
## Contributing, conduct, and community norms
|
|
879
879
|
|
|
@@ -580,7 +580,7 @@ print(promotion_report.passed)
|
|
|
580
580
|
| Lifecycle and embedding contract | [lifecycle and embedded server guide](https://github.com/tigrbl/tigrcorn/blob/master/docs/LIFECYCLE_AND_EMBEDDED_SERVER.md) |
|
|
581
581
|
| Optional dependency truth | [optional dependency surface](https://github.com/tigrbl/tigrcorn/blob/master/docs/review/conformance/OPTIONAL_DEPENDENCY_SURFACE.md), [optional dependency surface JSON](https://github.com/tigrbl/tigrcorn/blob/master/docs/review/conformance/optional_dependency_surface.current.json) |
|
|
582
582
|
| External evidence inputs | [same-stack replay matrix](https://github.com/tigrbl/tigrcorn/blob/master/docs/review/conformance/external_matrix.same_stack_replay.json), [release external matrix](https://github.com/tigrbl/tigrcorn/blob/master/docs/review/conformance/external_matrix.release.json), [current-release external matrix](https://github.com/tigrbl/tigrcorn/blob/master/docs/review/conformance/external_matrix.current_release.json) |
|
|
583
|
-
| Planning and promotion checkpoints | [
|
|
583
|
+
| Planning and promotion checkpoints | [Release certification implementation plan](https://github.com/tigrbl/tigrcorn/blob/master/docs/review/conformance/RELEASE_IMPLEMENTATION_PLAN.md), [Promotion contract promotion contract freeze](https://github.com/tigrbl/tigrcorn/blob/master/docs/review/conformance/PROMOTION_CONTRACT_PROMOTION_CONTRACT_FREEZE.md) |
|
|
584
584
|
|
|
585
585
|
### Current repository claim
|
|
586
586
|
|
|
@@ -619,7 +619,7 @@ Read next:
|
|
|
619
619
|
- [release gate status](https://github.com/tigrbl/tigrcorn/blob/master/docs/review/conformance/RELEASE_GATE_STATUS.md)
|
|
620
620
|
- [strict profile target](https://github.com/tigrbl/tigrcorn/blob/master/docs/review/conformance/STRICT_PROFILE_TARGET.md)
|
|
621
621
|
- [flag certification target](https://github.com/tigrbl/tigrcorn/blob/master/docs/review/conformance/FLAG_CERTIFICATION_TARGET.md)
|
|
622
|
-
- [
|
|
622
|
+
- [Promotion contract promotion contract freeze](https://github.com/tigrbl/tigrcorn/blob/master/docs/review/conformance/PROMOTION_CONTRACT_PROMOTION_CONTRACT_FREEZE.md)
|
|
623
623
|
|
|
624
624
|
## Where to look
|
|
625
625
|
|
|
@@ -633,7 +633,7 @@ Read next:
|
|
|
633
633
|
| Reviewing the boundary or current scope | [certification boundary](https://github.com/tigrbl/tigrcorn/blob/master/docs/review/conformance/CERTIFICATION_BOUNDARY.md) | [boundary non-goals](https://github.com/tigrbl/tigrcorn/blob/master/docs/review/conformance/BOUNDARY_NON_GOALS.md) |
|
|
634
634
|
| Comparing Tigrcorn with peer servers | [RFC comparison](https://github.com/tigrbl/tigrcorn/blob/master/docs/comp/rfc.md) | [CLI comparison](https://github.com/tigrbl/tigrcorn/blob/master/docs/comp/cli.md), [operations comparison](https://github.com/tigrbl/tigrcorn/blob/master/docs/comp/ops.md), [out-of-bound comparison](https://github.com/tigrbl/tigrcorn/blob/master/docs/comp/oob.md) |
|
|
635
635
|
| Writing or maintaining docs | [authoring guide](https://github.com/tigrbl/tigrcorn/blob/master/docs/gov/authoring.md) | [`CONTRIBUTING.md`](https://github.com/tigrbl/tigrcorn/blob/master/CONTRIBUTING.md), [tree rules](https://github.com/tigrbl/tigrcorn/blob/master/docs/gov/tree.md), [mutability rules](https://github.com/tigrbl/tigrcorn/blob/master/docs/gov/mut.md) |
|
|
636
|
-
| Working on release or promotion | [release workflow guide](https://github.com/tigrbl/tigrcorn/blob/master/docs/gov/release.md) | [
|
|
636
|
+
| Working on release or promotion | [release workflow guide](https://github.com/tigrbl/tigrcorn/blob/master/docs/gov/release.md) | [Promotion contract promotion contract freeze](https://github.com/tigrbl/tigrcorn/blob/master/docs/review/conformance/PROMOTION_CONTRACT_PROMOTION_CONTRACT_FREEZE.md) |
|
|
637
637
|
|
|
638
638
|
## Contributing, conduct, and community norms
|
|
639
639
|
|
|
@@ -580,7 +580,7 @@ print(promotion_report.passed)
|
|
|
580
580
|
| Lifecycle and embedding contract | [lifecycle and embedded server guide](docs/LIFECYCLE_AND_EMBEDDED_SERVER.md) |
|
|
581
581
|
| Optional dependency truth | [optional dependency surface](docs/review/conformance/OPTIONAL_DEPENDENCY_SURFACE.md), [optional dependency surface JSON](docs/review/conformance/optional_dependency_surface.current.json) |
|
|
582
582
|
| External evidence inputs | [same-stack replay matrix](docs/review/conformance/external_matrix.same_stack_replay.json), [release external matrix](docs/review/conformance/external_matrix.release.json), [current-release external matrix](docs/review/conformance/external_matrix.current_release.json) |
|
|
583
|
-
| Planning and promotion checkpoints | [
|
|
583
|
+
| Planning and promotion checkpoints | [Release certification implementation plan](docs/review/conformance/RELEASE_IMPLEMENTATION_PLAN.md), [Release certification implementation JSON](docs/review/conformance/release_implementation_plan.current.json), [Promotion contract promotion contract freeze](docs/review/conformance/PROMOTION_CONTRACT_PROMOTION_CONTRACT_FREEZE.md), [Promotion contract promotion JSON](docs/review/conformance/promotion_contract_promotion_contract.current.json) |
|
|
584
584
|
|
|
585
585
|
### Current repository claim
|
|
586
586
|
|
|
@@ -619,7 +619,7 @@ Read next:
|
|
|
619
619
|
- [release gate status](docs/review/conformance/RELEASE_GATE_STATUS.md)
|
|
620
620
|
- [strict profile target](docs/review/conformance/STRICT_PROFILE_TARGET.md)
|
|
621
621
|
- [flag certification target](docs/review/conformance/FLAG_CERTIFICATION_TARGET.md)
|
|
622
|
-
- [
|
|
622
|
+
- [Promotion contract promotion contract freeze](docs/review/conformance/PROMOTION_CONTRACT_PROMOTION_CONTRACT_FREEZE.md)
|
|
623
623
|
|
|
624
624
|
## Where to look
|
|
625
625
|
|
|
@@ -633,7 +633,7 @@ Read next:
|
|
|
633
633
|
| Reviewing the boundary or current scope | [certification boundary](docs/review/conformance/CERTIFICATION_BOUNDARY.md) | [boundary non-goals](docs/review/conformance/BOUNDARY_NON_GOALS.md) |
|
|
634
634
|
| Comparing Tigrcorn with peer servers | [RFC comparison](docs/comp/rfc.md) | [CLI comparison](docs/comp/cli.md), [operations comparison](docs/comp/ops.md), [out-of-bound comparison](docs/comp/oob.md) |
|
|
635
635
|
| Writing or maintaining docs | [authoring guide](docs/gov/authoring.md) | [`CONTRIBUTING.md`](CONTRIBUTING.md), [tree rules](docs/gov/tree.md), [mutability rules](docs/gov/mut.md) |
|
|
636
|
-
| Working on release or promotion | [release workflow guide](docs/gov/release.md) | [
|
|
636
|
+
| Working on release or promotion | [release workflow guide](docs/gov/release.md) | [Promotion contract promotion contract freeze](docs/review/conformance/PROMOTION_CONTRACT_PROMOTION_CONTRACT_FREEZE.md) |
|
|
637
637
|
|
|
638
638
|
## Contributing, conduct, and community norms
|
|
639
639
|
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "tigrcorn"
|
|
7
|
-
version = "0.3.
|
|
7
|
+
version = "0.3.17.dev1"
|
|
8
8
|
description = "ASGI3 Python web server with built-in HTTP/1.1, HTTP/2, HTTP/3, QUIC, WebSocket, WebTransport, TLS, and certification tooling."
|
|
9
9
|
readme = "PYPI_README.md"
|
|
10
10
|
requires-python = ">=3.10,<3.15"
|
|
@@ -32,19 +32,19 @@ classifiers = [
|
|
|
32
32
|
"Typing :: Typed",
|
|
33
33
|
]
|
|
34
34
|
dependencies = [
|
|
35
|
-
"tigrcorn-core==0.3.
|
|
36
|
-
"tigrcorn-config==0.3.
|
|
37
|
-
"tigrcorn-asgi==0.3.
|
|
38
|
-
"tigrcorn-contract==0.3.
|
|
39
|
-
"tigrcorn-transports==0.3.
|
|
40
|
-
"tigrcorn-protocols==0.3.
|
|
41
|
-
"tigrcorn-http==0.3.
|
|
42
|
-
"tigrcorn-security==0.3.
|
|
43
|
-
"tigrcorn-runtime==0.3.
|
|
44
|
-
"tigrcorn-static==0.3.
|
|
45
|
-
"tigrcorn-observability==0.3.
|
|
46
|
-
"tigrcorn-compat==0.3.
|
|
47
|
-
"tigrcorn-certification==0.3.
|
|
35
|
+
"tigrcorn-core==0.3.17.dev1",
|
|
36
|
+
"tigrcorn-config==0.3.17.dev1",
|
|
37
|
+
"tigrcorn-asgi==0.3.17.dev1",
|
|
38
|
+
"tigrcorn-contract==0.3.17.dev1",
|
|
39
|
+
"tigrcorn-transports==0.3.17.dev1",
|
|
40
|
+
"tigrcorn-protocols==0.3.17.dev1",
|
|
41
|
+
"tigrcorn-http==0.3.17.dev1",
|
|
42
|
+
"tigrcorn-security==0.3.17.dev1",
|
|
43
|
+
"tigrcorn-runtime==0.3.17.dev1",
|
|
44
|
+
"tigrcorn-static==0.3.17.dev1",
|
|
45
|
+
"tigrcorn-observability==0.3.17.dev1",
|
|
46
|
+
"tigrcorn-compat==0.3.17.dev1",
|
|
47
|
+
"tigrcorn-certification==0.3.17.dev1",
|
|
48
48
|
"tigr-asgi-contract>=0.3.2",
|
|
49
49
|
]
|
|
50
50
|
|
|
@@ -103,6 +103,7 @@ license-files = ["LICENSE"]
|
|
|
103
103
|
|
|
104
104
|
[tool.setuptools.package-data]
|
|
105
105
|
tigrcorn = ["py.typed", "profiles/*.profile.json", "profiles/README.md"]
|
|
106
|
+
"tigrcorn.capabilities.schema" = ["*.schema.json"]
|
|
106
107
|
|
|
107
108
|
[tool.setuptools.packages.find]
|
|
108
109
|
where = ["src"]
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
from importlib import import_module
|
|
2
|
+
|
|
1
3
|
from .version import __version__
|
|
2
4
|
from ._workspace import ensure_workspace_package_paths
|
|
3
5
|
|
|
@@ -5,6 +7,7 @@ ensure_workspace_package_paths()
|
|
|
5
7
|
|
|
6
8
|
__all__ = [
|
|
7
9
|
"__version__",
|
|
10
|
+
"capabilities",
|
|
8
11
|
"run",
|
|
9
12
|
"serve",
|
|
10
13
|
"serve_import_string",
|
|
@@ -17,6 +20,8 @@ __all__ = [
|
|
|
17
20
|
|
|
18
21
|
|
|
19
22
|
def __getattr__(name: str):
|
|
23
|
+
if name == "capabilities":
|
|
24
|
+
return import_module(".capabilities", __name__)
|
|
20
25
|
if name in {"run", "serve", "serve_import_string"}:
|
|
21
26
|
from .api import run, serve, serve_import_string
|
|
22
27
|
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from .export import capability_ids, export, require_supported
|
|
4
|
+
from .model import CapabilityState, UnsupportedCapabilityError
|
|
5
|
+
from .schema import load_schema, read_schema_text
|
|
6
|
+
|
|
7
|
+
__all__ = [
|
|
8
|
+
"CapabilityState",
|
|
9
|
+
"UnsupportedCapabilityError",
|
|
10
|
+
"capability_ids",
|
|
11
|
+
"export",
|
|
12
|
+
"load_schema",
|
|
13
|
+
"read_schema_text",
|
|
14
|
+
"require_supported",
|
|
15
|
+
]
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from importlib import util as importlib_util
|
|
4
|
+
from typing import Any, Iterable, Mapping
|
|
5
|
+
|
|
6
|
+
from tigrcorn_config.profiles import list_blessed_profiles, resolve_effective_profile_mapping
|
|
7
|
+
from tigrcorn_core.constants import SUPPORTED_RUNTIMES
|
|
8
|
+
from tigrcorn_transports.registry import TRANSPORTS
|
|
9
|
+
|
|
10
|
+
from .model import (
|
|
11
|
+
CapabilityDefinition,
|
|
12
|
+
CapabilityExport,
|
|
13
|
+
CapabilityRecord,
|
|
14
|
+
CapabilityState,
|
|
15
|
+
UnsupportedCapabilityError,
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
SCHEMA_VERSION = "1.0"
|
|
20
|
+
REGISTRY_NAME = "tigrcorn.runtime-capabilities"
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
_CATALOG: tuple[CapabilityDefinition, ...] = (
|
|
24
|
+
CapabilityDefinition("certification.deployment_profiles", "certification", "Deployment profile registry", True, certifiable=True, certified=True),
|
|
25
|
+
CapabilityDefinition("certification.release_validation", "certification", "Release validation tooling", True, certifiable=True, certified=False),
|
|
26
|
+
CapabilityDefinition("certification.ssot_boundary", "certification", "SSOT boundary evidence", True, certifiable=True, certified=False),
|
|
27
|
+
CapabilityDefinition("delivery.static", "delivery", "Static delivery", True, certifiable=True, certified=False),
|
|
28
|
+
CapabilityDefinition("observability.metrics", "observability", "Metrics export", True, certifiable=True, certified=False),
|
|
29
|
+
CapabilityDefinition("observability.otel", "observability", "OpenTelemetry export", True, certifiable=True, certified=False),
|
|
30
|
+
CapabilityDefinition("observability.statsd", "observability", "StatsD export", True, certifiable=True, certified=False),
|
|
31
|
+
CapabilityDefinition("observability.structured_logging", "observability", "Structured logging", True, certifiable=True, certified=False),
|
|
32
|
+
CapabilityDefinition("protocol.http1", "protocol", "HTTP/1.1", True, certifiable=True, certified=True),
|
|
33
|
+
CapabilityDefinition("protocol.http2", "protocol", "HTTP/2", importlib_util.find_spec("h2") is not None, certifiable=True, certified=True, optional=True),
|
|
34
|
+
CapabilityDefinition("protocol.http3", "protocol", "HTTP/3", importlib_util.find_spec("aioquic") is not None, certifiable=True, certified=True, optional=True),
|
|
35
|
+
CapabilityDefinition("protocol.lifespan", "protocol", "ASGI lifespan", True, certifiable=True, certified=True),
|
|
36
|
+
CapabilityDefinition("protocol.quic", "protocol", "QUIC protocol", importlib_util.find_spec("aioquic") is not None, certifiable=True, certified=True, optional=True),
|
|
37
|
+
CapabilityDefinition("protocol.websocket", "protocol", "WebSocket", importlib_util.find_spec("websockets") is not None or importlib_util.find_spec("wsproto") is not None, certifiable=True, certified=True, optional=True),
|
|
38
|
+
CapabilityDefinition("protocol.webtransport", "protocol", "WebTransport", True, certifiable=True, certified=False),
|
|
39
|
+
CapabilityDefinition("runtime.embedded", "runtime", "Embedded runtime API", True, certifiable=True, certified=False),
|
|
40
|
+
CapabilityDefinition("runtime.lifecycle", "runtime", "Lifecycle management", True, certifiable=True, certified=True),
|
|
41
|
+
CapabilityDefinition("runtime.worker_pool", "runtime", "Worker process management", True, certifiable=True, certified=False),
|
|
42
|
+
CapabilityDefinition("tls.alpn", "tls", "ALPN negotiation", True, certifiable=True, certified=True),
|
|
43
|
+
CapabilityDefinition("tls.crl", "tls", "CRL revocation handling", True, certifiable=True, certified=True),
|
|
44
|
+
CapabilityDefinition("tls.mtls", "tls", "Mutual TLS", True, certifiable=True, certified=False),
|
|
45
|
+
CapabilityDefinition("tls.ocsp", "tls", "OCSP revocation handling", True, certifiable=True, certified=True),
|
|
46
|
+
CapabilityDefinition("tls.tls13", "tls", "TLS 1.3", True, certifiable=True, certified=True),
|
|
47
|
+
CapabilityDefinition("tls.x509", "tls", "X.509 path validation", True, certifiable=True, certified=True),
|
|
48
|
+
CapabilityDefinition("transport.inproc", "transport", "In-process transport", "inproc" in TRANSPORTS, certifiable=True, certified=False),
|
|
49
|
+
CapabilityDefinition("transport.pipe", "transport", "Pipe transport", "pipe" in TRANSPORTS, certifiable=True, certified=False),
|
|
50
|
+
CapabilityDefinition("transport.quic", "transport", "QUIC transport", "quic" in TRANSPORTS and importlib_util.find_spec("aioquic") is not None, certifiable=True, certified=True, optional=True),
|
|
51
|
+
CapabilityDefinition("transport.tcp", "transport", "TCP transport", "tcp" in TRANSPORTS, certifiable=True, certified=True),
|
|
52
|
+
CapabilityDefinition("transport.udp", "transport", "UDP transport", "udp" in TRANSPORTS, certifiable=True, certified=False),
|
|
53
|
+
CapabilityDefinition("transport.unix", "transport", "Unix domain socket transport", "unix" in TRANSPORTS, certifiable=True, certified=False),
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
_KNOWN_IDS = frozenset(item.id for item in _CATALOG)
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
def _normalize_profile(profile: str | None) -> str:
|
|
61
|
+
return (profile or "default").strip().lower() or "default"
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
def _iter_mapping_values(value: Any) -> Iterable[Any]:
|
|
65
|
+
if isinstance(value, Mapping):
|
|
66
|
+
yield value
|
|
67
|
+
for item in value.values():
|
|
68
|
+
yield from _iter_mapping_values(item)
|
|
69
|
+
elif isinstance(value, list | tuple):
|
|
70
|
+
for item in value:
|
|
71
|
+
yield from _iter_mapping_values(item)
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
def _configured_capability_ids(config: Mapping[str, Any]) -> set[str]:
|
|
75
|
+
configured = {
|
|
76
|
+
"certification.deployment_profiles",
|
|
77
|
+
"certification.release_validation",
|
|
78
|
+
"certification.ssot_boundary",
|
|
79
|
+
"protocol.lifespan",
|
|
80
|
+
"runtime.embedded",
|
|
81
|
+
"runtime.lifecycle",
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
app = config.get("app")
|
|
85
|
+
if isinstance(app, Mapping):
|
|
86
|
+
runtime = app.get("runtime")
|
|
87
|
+
if runtime in SUPPORTED_RUNTIMES:
|
|
88
|
+
configured.add("runtime.lifecycle")
|
|
89
|
+
|
|
90
|
+
http = config.get("http")
|
|
91
|
+
if isinstance(http, Mapping):
|
|
92
|
+
for version in http.get("http_versions") or ():
|
|
93
|
+
if version == "1.1":
|
|
94
|
+
configured.add("protocol.http1")
|
|
95
|
+
elif str(version) == "2":
|
|
96
|
+
configured.add("protocol.http2")
|
|
97
|
+
elif str(version) == "3":
|
|
98
|
+
configured.add("protocol.http3")
|
|
99
|
+
configured.add("protocol.quic")
|
|
100
|
+
configured.add("transport.quic")
|
|
101
|
+
if http.get("alt_svc_auto") or http.get("alt_svc_headers"):
|
|
102
|
+
configured.add("protocol.http3")
|
|
103
|
+
if http.get("content_codings"):
|
|
104
|
+
configured.add("delivery.static")
|
|
105
|
+
|
|
106
|
+
websocket = config.get("websocket")
|
|
107
|
+
if isinstance(websocket, Mapping) and websocket.get("enabled"):
|
|
108
|
+
configured.add("protocol.websocket")
|
|
109
|
+
|
|
110
|
+
static = config.get("static")
|
|
111
|
+
if isinstance(static, Mapping) and (static.get("route") or static.get("mount")):
|
|
112
|
+
configured.add("delivery.static")
|
|
113
|
+
|
|
114
|
+
tls = config.get("tls")
|
|
115
|
+
if isinstance(tls, Mapping):
|
|
116
|
+
if tls.get("certfile") or tls.get("keyfile") or tls.get("alpn_protocols"):
|
|
117
|
+
configured.update({"tls.tls13", "tls.alpn", "tls.x509"})
|
|
118
|
+
if tls.get("ocsp_mode") and tls.get("ocsp_mode") != "off":
|
|
119
|
+
configured.add("tls.ocsp")
|
|
120
|
+
if tls.get("crl_mode") and tls.get("crl_mode") != "off":
|
|
121
|
+
configured.add("tls.crl")
|
|
122
|
+
if tls.get("require_client_cert"):
|
|
123
|
+
configured.add("tls.mtls")
|
|
124
|
+
|
|
125
|
+
observability = config.get("observability")
|
|
126
|
+
if isinstance(observability, Mapping):
|
|
127
|
+
if observability.get("metrics"):
|
|
128
|
+
configured.add("observability.metrics")
|
|
129
|
+
if observability.get("structured_log"):
|
|
130
|
+
configured.add("observability.structured_logging")
|
|
131
|
+
if observability.get("otel_endpoint"):
|
|
132
|
+
configured.add("observability.otel")
|
|
133
|
+
if observability.get("statsd_host"):
|
|
134
|
+
configured.add("observability.statsd")
|
|
135
|
+
|
|
136
|
+
for value in _iter_mapping_values(config.get("listeners")):
|
|
137
|
+
if not isinstance(value, Mapping):
|
|
138
|
+
continue
|
|
139
|
+
kind = value.get("kind")
|
|
140
|
+
if isinstance(kind, str):
|
|
141
|
+
configured.add(f"transport.{kind}")
|
|
142
|
+
for protocol in value.get("protocols") or ():
|
|
143
|
+
if protocol == "quic":
|
|
144
|
+
configured.update({"protocol.quic", "transport.quic"})
|
|
145
|
+
elif protocol in {"http1", "http2", "http3", "websocket", "webtransport"}:
|
|
146
|
+
configured.add(f"protocol.{protocol}")
|
|
147
|
+
for version in value.get("http_versions") or ():
|
|
148
|
+
if version == "1.1":
|
|
149
|
+
configured.add("protocol.http1")
|
|
150
|
+
elif str(version) == "2":
|
|
151
|
+
configured.add("protocol.http2")
|
|
152
|
+
elif str(version) == "3":
|
|
153
|
+
configured.update({"protocol.http3", "protocol.quic", "transport.quic"})
|
|
154
|
+
if value.get("websocket"):
|
|
155
|
+
configured.add("protocol.websocket")
|
|
156
|
+
if value.get("alpn_protocols"):
|
|
157
|
+
configured.add("tls.alpn")
|
|
158
|
+
|
|
159
|
+
return configured
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
def _record(definition: CapabilityDefinition, configured_ids: set[str]) -> CapabilityRecord:
|
|
163
|
+
configured = definition.id in configured_ids
|
|
164
|
+
enabled = definition.compiled and configured
|
|
165
|
+
certified = enabled and definition.certified
|
|
166
|
+
if not definition.compiled:
|
|
167
|
+
state = CapabilityState.UNAVAILABLE if definition.optional else CapabilityState.UNSUPPORTED
|
|
168
|
+
reason = "optional dependency is not available" if definition.optional else "capability is not compiled into this distribution"
|
|
169
|
+
elif certified:
|
|
170
|
+
state = CapabilityState.CERTIFIED
|
|
171
|
+
reason = "configured and certified for the selected profile"
|
|
172
|
+
elif enabled:
|
|
173
|
+
state = CapabilityState.ENABLED
|
|
174
|
+
reason = "configured but not certified for the selected profile"
|
|
175
|
+
elif configured:
|
|
176
|
+
state = CapabilityState.CONFIGURED
|
|
177
|
+
reason = "configured but unavailable"
|
|
178
|
+
else:
|
|
179
|
+
state = CapabilityState.COMPILED
|
|
180
|
+
reason = "compiled into the distribution but not selected by the profile"
|
|
181
|
+
return CapabilityRecord(
|
|
182
|
+
id=definition.id,
|
|
183
|
+
domain=definition.domain,
|
|
184
|
+
name=definition.name,
|
|
185
|
+
state=state,
|
|
186
|
+
compiled=definition.compiled,
|
|
187
|
+
configured=configured,
|
|
188
|
+
enabled=enabled,
|
|
189
|
+
certified=certified,
|
|
190
|
+
certifiable=definition.certifiable,
|
|
191
|
+
reason=reason,
|
|
192
|
+
)
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
def capability_ids() -> tuple[str, ...]:
|
|
196
|
+
return tuple(sorted(_KNOWN_IDS))
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
def require_supported(required_capabilities: Iterable[str], *, profile: str = "default") -> None:
|
|
200
|
+
payload = export(profile=profile)
|
|
201
|
+
records = {item["id"]: item for item in payload["capabilities"]}
|
|
202
|
+
errors: list[str] = []
|
|
203
|
+
for capability_id in required_capabilities:
|
|
204
|
+
record = records.get(capability_id)
|
|
205
|
+
if record is None:
|
|
206
|
+
errors.append(f"unsupported capability requirement: {capability_id}")
|
|
207
|
+
elif not record["enabled"]:
|
|
208
|
+
errors.append(f"capability is not enabled for profile {profile!r}: {capability_id}")
|
|
209
|
+
if errors:
|
|
210
|
+
raise UnsupportedCapabilityError("; ".join(errors))
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
def export(*, profile: str = "default") -> dict[str, Any]:
|
|
214
|
+
profile_name = _normalize_profile(profile)
|
|
215
|
+
if profile_name not in list_blessed_profiles():
|
|
216
|
+
raise ValueError(f"unknown blessed profile: {profile_name!r}")
|
|
217
|
+
|
|
218
|
+
config = resolve_effective_profile_mapping(profile_name)
|
|
219
|
+
configured_ids = _configured_capability_ids(config)
|
|
220
|
+
profile_errors = tuple(
|
|
221
|
+
f"configured capability is not supported: {capability_id}"
|
|
222
|
+
for capability_id in sorted(configured_ids - _KNOWN_IDS)
|
|
223
|
+
)
|
|
224
|
+
records = tuple(_record(definition, configured_ids) for definition in sorted(_CATALOG, key=lambda item: item.id))
|
|
225
|
+
document = CapabilityExport(
|
|
226
|
+
schema_version=SCHEMA_VERSION,
|
|
227
|
+
registry=REGISTRY_NAME,
|
|
228
|
+
profile=profile_name,
|
|
229
|
+
profile_valid=not profile_errors,
|
|
230
|
+
profile_errors=profile_errors,
|
|
231
|
+
capabilities=records,
|
|
232
|
+
)
|
|
233
|
+
return document.as_dict()
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from dataclasses import dataclass
|
|
4
|
+
from enum import Enum
|
|
5
|
+
from typing import Any
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class CapabilityState(str, Enum):
|
|
9
|
+
COMPILED = "compiled"
|
|
10
|
+
CONFIGURED = "configured"
|
|
11
|
+
ENABLED = "enabled"
|
|
12
|
+
CERTIFIED = "certified"
|
|
13
|
+
UNAVAILABLE = "unavailable"
|
|
14
|
+
UNSUPPORTED = "unsupported"
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class UnsupportedCapabilityError(ValueError):
|
|
18
|
+
"""Raised when a required capability cannot be satisfied."""
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
@dataclass(frozen=True, slots=True)
|
|
22
|
+
class CapabilityDefinition:
|
|
23
|
+
id: str
|
|
24
|
+
domain: str
|
|
25
|
+
name: str
|
|
26
|
+
compiled: bool
|
|
27
|
+
certifiable: bool = False
|
|
28
|
+
certified: bool = False
|
|
29
|
+
optional: bool = False
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
@dataclass(frozen=True, slots=True)
|
|
33
|
+
class CapabilityRecord:
|
|
34
|
+
id: str
|
|
35
|
+
domain: str
|
|
36
|
+
name: str
|
|
37
|
+
state: CapabilityState
|
|
38
|
+
compiled: bool
|
|
39
|
+
configured: bool
|
|
40
|
+
enabled: bool
|
|
41
|
+
certified: bool
|
|
42
|
+
certifiable: bool
|
|
43
|
+
reason: str
|
|
44
|
+
|
|
45
|
+
def as_dict(self) -> dict[str, Any]:
|
|
46
|
+
return {
|
|
47
|
+
"id": self.id,
|
|
48
|
+
"domain": self.domain,
|
|
49
|
+
"name": self.name,
|
|
50
|
+
"state": self.state.value,
|
|
51
|
+
"compiled": self.compiled,
|
|
52
|
+
"configured": self.configured,
|
|
53
|
+
"enabled": self.enabled,
|
|
54
|
+
"certified": self.certified,
|
|
55
|
+
"certifiable": self.certifiable,
|
|
56
|
+
"reason": self.reason,
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
@dataclass(frozen=True, slots=True)
|
|
61
|
+
class CapabilityExport:
|
|
62
|
+
schema_version: str
|
|
63
|
+
registry: str
|
|
64
|
+
profile: str
|
|
65
|
+
profile_valid: bool
|
|
66
|
+
profile_errors: tuple[str, ...]
|
|
67
|
+
capabilities: tuple[CapabilityRecord, ...]
|
|
68
|
+
|
|
69
|
+
def as_dict(self) -> dict[str, Any]:
|
|
70
|
+
return {
|
|
71
|
+
"schema_version": self.schema_version,
|
|
72
|
+
"registry": self.registry,
|
|
73
|
+
"profile": self.profile,
|
|
74
|
+
"profile_valid": self.profile_valid,
|
|
75
|
+
"profile_errors": list(self.profile_errors),
|
|
76
|
+
"capabilities": [record.as_dict() for record in self.capabilities],
|
|
77
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from importlib import resources
|
|
4
|
+
from typing import Any
|
|
5
|
+
import json
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
SCHEMA_NAME = "runtime-capability-registry.schema.json"
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def read_schema_text() -> str:
|
|
12
|
+
return resources.files(__package__).joinpath(SCHEMA_NAME).read_text(encoding="utf-8")
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def load_schema() -> dict[str, Any]:
|
|
16
|
+
payload = json.loads(read_schema_text())
|
|
17
|
+
if not isinstance(payload, dict):
|
|
18
|
+
raise ValueError(f"{SCHEMA_NAME} did not contain a JSON object")
|
|
19
|
+
return payload
|