tigrcorn 0.3.16.dev13__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.
Files changed (595) hide show
  1. {tigrcorn-0.3.16.dev13/src/tigrcorn.egg-info → tigrcorn-0.3.17.dev1}/PKG-INFO +17 -17
  2. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/PYPI_README.md +3 -3
  3. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/README.md +3 -3
  4. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/pyproject.toml +15 -14
  5. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/__init__.py +5 -0
  6. tigrcorn-0.3.17.dev1/src/tigrcorn/capabilities/__init__.py +15 -0
  7. tigrcorn-0.3.17.dev1/src/tigrcorn/capabilities/export.py +233 -0
  8. tigrcorn-0.3.17.dev1/src/tigrcorn/capabilities/model.py +77 -0
  9. tigrcorn-0.3.17.dev1/src/tigrcorn/capabilities/schema/__init__.py +19 -0
  10. tigrcorn-0.3.17.dev1/src/tigrcorn/capabilities/schema/runtime-capability-registry.schema.json +114 -0
  11. tigrcorn-0.3.17.dev1/src/tigrcorn/certification/__init__.py +7 -0
  12. tigrcorn-0.3.17.dev1/src/tigrcorn/certification/artifacts.py +7 -0
  13. tigrcorn-0.3.17.dev1/src/tigrcorn/certification/supply_chain.py +7 -0
  14. tigrcorn-0.3.17.dev1/src/tigrcorn/cli.py +40 -0
  15. tigrcorn-0.3.17.dev1/src/tigrcorn/compat/perf_runner.py +7 -0
  16. tigrcorn-0.3.17.dev1/src/tigrcorn/http/certification.py +7 -0
  17. tigrcorn-0.3.17.dev1/src/tigrcorn/observability/protocol.py +7 -0
  18. tigrcorn-0.3.17.dev1/src/tigrcorn/transport_stacks.py +120 -0
  19. tigrcorn-0.3.17.dev1/src/tigrcorn/transports/quic/security.py +7 -0
  20. tigrcorn-0.3.17.dev1/src/tigrcorn/webtransport/__init__.py +13 -0
  21. tigrcorn-0.3.17.dev1/src/tigrcorn/webtransport/governance.py +7 -0
  22. tigrcorn-0.3.17.dev1/src/tigrcorn/webtransport/wire.py +7 -0
  23. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1/src/tigrcorn.egg-info}/PKG-INFO +17 -17
  24. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn.egg-info/SOURCES.txt +86 -1
  25. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn.egg-info/requires.txt +13 -13
  26. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_aioquic_adapter_preflight.py +3 -3
  27. tigrcorn-0.3.17.dev1/tests/test_asgi_module_organization.py +67 -0
  28. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_category_boundaries.py +21 -29
  29. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_certification_delivery_plan.py +19 -19
  30. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_certification_environment_freeze.py +10 -10
  31. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_certification_explicit_surfaces_boundary.py +8 -4
  32. tigrcorn-0.3.17.dev1/tests/test_certification_module_organization.py +87 -0
  33. tigrcorn-0.3.17.dev1/tests/test_client_session_coverage_matrix_contract.py +113 -0
  34. tigrcorn-0.3.17.dev1/tests/test_client_session_fault_cleanup_modes_t2.py +102 -0
  35. tigrcorn-0.3.17.dev1/tests/test_client_session_pressure_modes_t2.py +89 -0
  36. tigrcorn-0.3.17.dev1/tests/test_client_session_topology_schedules.py +79 -0
  37. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_concurrency_keepalive_checkpoint.py +6 -6
  38. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_concurrency_keepalive_closure.py +2 -52
  39. tigrcorn-0.3.17.dev1/tests/test_config_module_organization.py +70 -0
  40. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_connect_relay_independent_closure.py +7 -7
  41. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_connect_relay_local_negatives.py +45 -1
  42. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_content_coding_independent_closure.py +8 -8
  43. tigrcorn-0.3.17.dev1/tests/test_contract_channel_lifecycle_transport_enforcement_t012.py +100 -0
  44. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_contract_emit_completion_events.py +1 -1
  45. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_contract_planned_coverage_inventory.py +14 -5
  46. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_contract_proof_boundary.py +7 -4
  47. tigrcorn-0.3.17.dev1/tests/test_contract_registry_release_integration.py +139 -0
  48. tigrcorn-0.3.17.dev1/tests/test_contract_registry_traceability.py +141 -0
  49. tigrcorn-0.3.17.dev1/tests/test_contract_semantic_transport_enforcement_t012.py +90 -0
  50. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_documentation_truth_normalization_checkpoint.py +3 -3
  51. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_dos_resilience.py +9 -5
  52. tigrcorn-0.3.17.dev1/tests/test_embedded_resource_ownership.py +210 -0
  53. tigrcorn-0.3.17.dev1/tests/test_h2_h3_quic_lifecycle_enforcement_t012.py +93 -0
  54. tigrcorn-0.3.17.dev1/tests/test_http1_client_session_topology.py +11 -0
  55. tigrcorn-0.3.17.dev1/tests/test_http2_client_session_topology.py +23 -0
  56. tigrcorn-0.3.17.dev1/tests/test_http2_module_organization.py +79 -0
  57. tigrcorn-0.3.17.dev1/tests/test_http3_module_organization.py +44 -0
  58. tigrcorn-0.3.17.dev1/tests/test_http3_quic_client_session_topology.py +23 -0
  59. tigrcorn-0.3.17.dev1/tests/test_http_entity_range_content_coding_certification.py +174 -0
  60. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_independent_harness_foundation.py +10 -10
  61. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_ocsp_independent_closure.py +8 -8
  62. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_optional_performance_comparison_ssot.py +9 -6
  63. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_p8_gov.py +1 -2
  64. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_promotion_contract_freeze.py +37 -37
  65. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_promotion_evaluator_hardening.py +2 -2
  66. tigrcorn-0.3.17.dev1/tests/test_protocol_aware_observability.py +189 -0
  67. tigrcorn-0.3.17.dev1/tests/test_protocol_aware_observability_integration.py +186 -0
  68. tigrcorn-0.3.17.dev1/tests/test_protocol_support_matrix.py +91 -0
  69. tigrcorn-0.3.17.dev1/tests/test_protocols_module_organization.py +105 -0
  70. tigrcorn-0.3.17.dev1/tests/test_quic_module_organization.py +55 -0
  71. tigrcorn-0.3.17.dev1/tests/test_quic_operational_security_certification.py +216 -0
  72. tigrcorn-0.3.17.dev1/tests/test_quic_operational_security_integration.py +131 -0
  73. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_quic_rfc_upgrade_paths.py +8 -0
  74. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_release_assembly_checkpoint.py +14 -14
  75. tigrcorn-0.3.16.dev13/tests/test_p9_auto.py → tigrcorn-0.3.17.dev1/tests/test_release_auto.py +4 -4
  76. tigrcorn-0.3.17.dev1/tests/test_reproducible_signed_certification_artifacts.py +147 -0
  77. tigrcorn-0.3.17.dev1/tests/test_reproducible_signed_certification_artifacts_integration.py +109 -0
  78. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_rfc7692_independent_closure.py +7 -7
  79. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_rfc8297_7838_boundary_formalization.py +1 -1
  80. tigrcorn-0.3.17.dev1/tests/test_root_module_organization.py +106 -0
  81. tigrcorn-0.3.17.dev1/tests/test_runtime_capability_registry.py +107 -0
  82. tigrcorn-0.3.17.dev1/tests/test_runtime_certification_claim_maturity.py +239 -0
  83. tigrcorn-0.3.17.dev1/tests/test_runtime_describe_contract.py +164 -0
  84. tigrcorn-0.3.17.dev1/tests/test_runtime_module_organization.py +86 -0
  85. tigrcorn-0.3.17.dev1/tests/test_security_module_organization.py +111 -0
  86. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_ssot_registry.py +19 -1
  87. tigrcorn-0.3.17.dev1/tests/test_static_delivery_security_certification.py +166 -0
  88. tigrcorn-0.3.17.dev1/tests/test_static_module_organization.py +82 -0
  89. tigrcorn-0.3.17.dev1/tests/test_stream_resume_runtime_t01.py +48 -0
  90. tigrcorn-0.3.17.dev1/tests/test_stream_resume_runtime_t2.py +61 -0
  91. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_strict_performance_closure.py +7 -7
  92. tigrcorn-0.3.17.dev1/tests/test_supply_chain_evidence_release_provenance.py +206 -0
  93. tigrcorn-0.3.17.dev1/tests/test_supply_chain_evidence_release_provenance_integration.py +172 -0
  94. tigrcorn-0.3.17.dev1/tests/test_tests_module_organization.py +24 -0
  95. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_tigr_asgi_contract_peer_validation.py +1 -1
  96. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_tls_cipher_policy_closure.py +3 -3
  97. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_tls_identity_interop_boundary.py +9 -63
  98. tigrcorn-0.3.17.dev1/tests/test_tools_module_organization.py +61 -0
  99. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_trailer_fields_independent_closure.py +8 -8
  100. tigrcorn-0.3.17.dev1/tests/test_transport_certification_domains.py +190 -0
  101. tigrcorn-0.3.17.dev1/tests/test_transport_certification_domains_integration.py +104 -0
  102. tigrcorn-0.3.17.dev1/tests/test_transport_stack_taxonomy_t01.py +43 -0
  103. tigrcorn-0.3.17.dev1/tests/test_transport_stack_taxonomy_t2.py +46 -0
  104. tigrcorn-0.3.17.dev1/tests/test_websocket_client_session_topology.py +11 -0
  105. tigrcorn-0.3.17.dev1/tests/test_webtransport_bidi_stream_context.py +20 -0
  106. tigrcorn-0.3.17.dev1/tests/test_webtransport_client_session_topology.py +44 -0
  107. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_webtransport_datagram_runtime_dispatch.py +12 -8
  108. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_webtransport_feature_coverage.py +26 -139
  109. tigrcorn-0.3.17.dev1/tests/test_webtransport_feature_demo_app.py +141 -0
  110. tigrcorn-0.3.17.dev1/tests/test_webtransport_h2_capsules.py +116 -0
  111. tigrcorn-0.3.17.dev1/tests/test_webtransport_h2_extended_connect.py +53 -0
  112. tigrcorn-0.3.17.dev1/tests/test_webtransport_h2_flow_control.py +95 -0
  113. tigrcorn-0.3.17.dev1/tests/test_webtransport_h2_iana.py +12 -0
  114. tigrcorn-0.3.17.dev1/tests/test_webtransport_h2_operator_surface.py +17 -0
  115. tigrcorn-0.3.17.dev1/tests/test_webtransport_h2_session_lifecycle.py +63 -0
  116. tigrcorn-0.3.17.dev1/tests/test_webtransport_h2_settings.py +56 -0
  117. tigrcorn-0.3.17.dev1/tests/test_webtransport_h3_draft13_buffering.py +28 -0
  118. tigrcorn-0.3.17.dev1/tests/test_webtransport_h3_draft13_connect.py +74 -0
  119. tigrcorn-0.3.17.dev1/tests/test_webtransport_h3_draft13_datagrams.py +28 -0
  120. tigrcorn-0.3.17.dev1/tests/test_webtransport_h3_draft13_flow_control.py +51 -0
  121. tigrcorn-0.3.17.dev1/tests/test_webtransport_h3_draft13_iana.py +97 -0
  122. tigrcorn-0.3.17.dev1/tests/test_webtransport_h3_draft13_keying_material.py +46 -0
  123. tigrcorn-0.3.17.dev1/tests/test_webtransport_h3_draft13_lifecycle.py +58 -0
  124. tigrcorn-0.3.17.dev1/tests/test_webtransport_h3_draft13_settings.py +63 -0
  125. tigrcorn-0.3.17.dev1/tests/test_webtransport_h3_draft13_streams.py +76 -0
  126. tigrcorn-0.3.17.dev1/tests/test_webtransport_mtls_demo.py +112 -0
  127. tigrcorn-0.3.17.dev1/tests/test_webtransport_mtls_demo_cleanup.py +122 -0
  128. tigrcorn-0.3.16.dev13/tests/test_webtransport_mtls_demo.py → tigrcorn-0.3.17.dev1/tests/test_webtransport_mtls_demo_runtime.py +1 -189
  129. tigrcorn-0.3.17.dev1/tests/test_webtransport_resource_governance.py +190 -0
  130. tigrcorn-0.3.17.dev1/tests/test_webtransport_resource_governance_integration.py +161 -0
  131. tigrcorn-0.3.17.dev1/tests/test_webtransport_t2_runtime_robustness.py +203 -0
  132. tigrcorn-0.3.17.dev1/tests/test_wt_stream_probe_fixture.py +144 -0
  133. tigrcorn-0.3.17.dev1/tests/test_x509_webpki_validation.py +210 -0
  134. tigrcorn-0.3.16.dev13/src/tigrcorn/cli.py +0 -7
  135. tigrcorn-0.3.16.dev13/src/tigrcorn/compat/perf_runner.py +0 -744
  136. tigrcorn-0.3.16.dev13/tests/test_webtransport_bidi_stream_context.py +0 -303
  137. tigrcorn-0.3.16.dev13/tests/test_wt_stream_probe_fixture.py +0 -80
  138. tigrcorn-0.3.16.dev13/tests/test_x509_webpki_validation.py +0 -477
  139. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/LICENSE +0 -0
  140. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/setup.cfg +0 -0
  141. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/__main__.py +0 -0
  142. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/_workspace.py +0 -0
  143. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/api.py +0 -0
  144. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/app_interfaces.py +0 -0
  145. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/asgi/__init__.py +0 -0
  146. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/asgi/connection.py +0 -0
  147. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/asgi/errors.py +0 -0
  148. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/asgi/events/__init__.py +0 -0
  149. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/asgi/events/custom.py +0 -0
  150. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/asgi/events/http.py +0 -0
  151. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/asgi/events/lifespan.py +0 -0
  152. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/asgi/events/websocket.py +0 -0
  153. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/asgi/extensions/__init__.py +0 -0
  154. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/asgi/extensions/tls.py +0 -0
  155. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/asgi/extensions/websocket_denial.py +0 -0
  156. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/asgi/receive.py +0 -0
  157. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/asgi/scopes/__init__.py +0 -0
  158. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/asgi/scopes/custom.py +0 -0
  159. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/asgi/scopes/http.py +0 -0
  160. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/asgi/scopes/lifespan.py +0 -0
  161. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/asgi/scopes/websocket.py +0 -0
  162. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/asgi/send.py +0 -0
  163. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/asgi/state.py +0 -0
  164. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/availability.py +0 -0
  165. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/compat/__init__.py +0 -0
  166. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/compat/aioquic_preflight.py +0 -0
  167. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/compat/asgi3.py +0 -0
  168. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/compat/certification_env.py +0 -0
  169. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/compat/conformance.py +0 -0
  170. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/compat/hypercorn.py +0 -0
  171. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/compat/interop.py +0 -0
  172. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/compat/interop_capture.py +0 -0
  173. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/compat/interop_cli.py +0 -0
  174. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/compat/interop_runner.py +0 -0
  175. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/compat/release_gates.py +0 -0
  176. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/compat/uvicorn.py +0 -0
  177. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/config/__init__.py +0 -0
  178. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/config/audit.py +0 -0
  179. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/config/defaults.py +0 -0
  180. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/config/env.py +0 -0
  181. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/config/files.py +0 -0
  182. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/config/governance_surface.py +0 -0
  183. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/config/load.py +0 -0
  184. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/config/merge.py +0 -0
  185. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/config/model.py +0 -0
  186. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/config/negative_surface.py +0 -0
  187. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/config/normalize.py +0 -0
  188. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/config/observability_surface.py +0 -0
  189. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/config/origin_surface.py +0 -0
  190. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/config/policy_surface.py +0 -0
  191. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/config/profiles.py +0 -0
  192. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/config/quic_surface.py +0 -0
  193. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/config/validate.py +0 -0
  194. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/constants.py +0 -0
  195. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/contract/__init__.py +0 -0
  196. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/contract/classification.py +0 -0
  197. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/contract/events.py +0 -0
  198. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/contract/metadata.py +0 -0
  199. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/contract/scopes.py +0 -0
  200. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/embedded.py +0 -0
  201. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/errors.py +0 -0
  202. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/flow/__init__.py +0 -0
  203. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/flow/backpressure.py +0 -0
  204. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/flow/buffers.py +0 -0
  205. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/flow/credits.py +0 -0
  206. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/flow/keepalive.py +0 -0
  207. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/flow/timeouts.py +0 -0
  208. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/flow/watermarks.py +0 -0
  209. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/http/__init__.py +0 -0
  210. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/http/alt_svc.py +0 -0
  211. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/http/conditional.py +0 -0
  212. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/http/early_hints.py +0 -0
  213. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/http/entity.py +0 -0
  214. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/http/etag.py +0 -0
  215. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/http/range.py +0 -0
  216. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/http/structured_fields.py +0 -0
  217. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/listeners/__init__.py +0 -0
  218. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/listeners/base.py +0 -0
  219. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/listeners/inproc.py +0 -0
  220. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/listeners/pipe.py +0 -0
  221. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/listeners/registry.py +0 -0
  222. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/listeners/tcp.py +0 -0
  223. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/listeners/udp.py +0 -0
  224. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/listeners/unix.py +0 -0
  225. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/observability/__init__.py +0 -0
  226. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/observability/events.py +0 -0
  227. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/observability/logging.py +0 -0
  228. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/observability/metrics.py +0 -0
  229. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/observability/tracing.py +0 -0
  230. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/profiles/README.md +0 -0
  231. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/profiles/__init__.py +0 -0
  232. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/profiles/default.profile.json +0 -0
  233. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/profiles/static-origin.profile.json +0 -0
  234. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/profiles/strict-h1-origin.profile.json +0 -0
  235. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/profiles/strict-h2-origin.profile.json +0 -0
  236. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/profiles/strict-h3-edge.profile.json +0 -0
  237. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/profiles/strict-mtls-origin.profile.json +0 -0
  238. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/__init__.py +0 -0
  239. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/_compression.py +0 -0
  240. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/connect.py +0 -0
  241. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/content_coding.py +0 -0
  242. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/custom/__init__.py +0 -0
  243. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/custom/adapters.py +0 -0
  244. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/custom/registry.py +0 -0
  245. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/http1/__init__.py +0 -0
  246. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/http1/keepalive.py +0 -0
  247. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/http1/parser.py +0 -0
  248. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/http1/serializer.py +0 -0
  249. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/http1/state.py +0 -0
  250. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/http2/__init__.py +0 -0
  251. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/http2/codec.py +0 -0
  252. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/http2/flow.py +0 -0
  253. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/http2/handler.py +0 -0
  254. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/http2/hpack.py +0 -0
  255. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/http2/state.py +0 -0
  256. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/http2/streams.py +0 -0
  257. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/http2/websocket.py +0 -0
  258. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/http3/__init__.py +0 -0
  259. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/http3/codec.py +0 -0
  260. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/http3/handler.py +0 -0
  261. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/http3/qpack.py +0 -0
  262. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/http3/state.py +0 -0
  263. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/http3/streams.py +0 -0
  264. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/http3/websocket.py +0 -0
  265. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/lifespan/__init__.py +0 -0
  266. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/lifespan/driver.py +0 -0
  267. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/rawframed/__init__.py +0 -0
  268. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/rawframed/codec.py +0 -0
  269. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/rawframed/frames.py +0 -0
  270. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/rawframed/handler.py +0 -0
  271. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/rawframed/state.py +0 -0
  272. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/registry.py +0 -0
  273. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/websocket/__init__.py +0 -0
  274. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/websocket/codec.py +0 -0
  275. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/websocket/extensions.py +0 -0
  276. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/websocket/frames.py +0 -0
  277. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/websocket/handler.py +0 -0
  278. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/websocket/handshake.py +0 -0
  279. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/protocols/websocket/state.py +0 -0
  280. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/py.typed +0 -0
  281. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/scheduler/__init__.py +0 -0
  282. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/scheduler/cancellation.py +0 -0
  283. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/scheduler/dispatch.py +0 -0
  284. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/scheduler/fairness.py +0 -0
  285. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/scheduler/policy.py +0 -0
  286. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/scheduler/priorities.py +0 -0
  287. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/scheduler/quotas.py +0 -0
  288. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/scheduler/runtime.py +0 -0
  289. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/scheduler/tasks.py +0 -0
  290. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/security/__init__.py +0 -0
  291. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/security/alpn.py +0 -0
  292. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/security/certs.py +0 -0
  293. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/security/policies.py +0 -0
  294. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/security/tls.py +0 -0
  295. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/security/tls13/__init__.py +0 -0
  296. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/security/tls13/extensions.py +0 -0
  297. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/security/tls13/handshake.py +0 -0
  298. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/security/tls13/key_schedule.py +0 -0
  299. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/security/tls13/messages.py +0 -0
  300. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/security/tls13/transcript.py +0 -0
  301. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/security/tls_cipher_policy.py +0 -0
  302. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/security/x509/__init__.py +0 -0
  303. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/security/x509/path.py +0 -0
  304. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/server/__init__.py +0 -0
  305. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/server/app_loader.py +0 -0
  306. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/server/bootstrap.py +0 -0
  307. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/server/hooks.py +0 -0
  308. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/server/reloader.py +0 -0
  309. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/server/runner.py +0 -0
  310. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/server/shutdown.py +0 -0
  311. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/server/signals.py +0 -0
  312. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/server/state.py +0 -0
  313. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/server/supervisor.py +0 -0
  314. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/sessions/__init__.py +0 -0
  315. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/sessions/base.py +0 -0
  316. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/sessions/connection.py +0 -0
  317. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/sessions/limits.py +0 -0
  318. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/sessions/manager.py +0 -0
  319. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/sessions/metadata.py +0 -0
  320. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/sessions/quic.py +0 -0
  321. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/ssot_baseline.py +0 -0
  322. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/static.py +0 -0
  323. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/streams/__init__.py +0 -0
  324. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/streams/base.py +0 -0
  325. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/streams/ids.py +0 -0
  326. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/streams/multiplex.py +0 -0
  327. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/streams/registry.py +0 -0
  328. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/streams/singleplex.py +0 -0
  329. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/__init__.py +0 -0
  330. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/base.py +0 -0
  331. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/inproc/__init__.py +0 -0
  332. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/inproc/channel.py +0 -0
  333. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/pipe/__init__.py +0 -0
  334. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/pipe/connection.py +0 -0
  335. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/quic/__init__.py +0 -0
  336. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/quic/connection.py +0 -0
  337. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/quic/crypto.py +0 -0
  338. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/quic/datagrams.py +0 -0
  339. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/quic/flow.py +0 -0
  340. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/quic/handshake.py +0 -0
  341. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/quic/packets.py +0 -0
  342. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/quic/recovery.py +0 -0
  343. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/quic/scheduler.py +0 -0
  344. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/quic/streams.py +0 -0
  345. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/quic/tls_adapter.py +0 -0
  346. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/registry.py +0 -0
  347. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/tcp/__init__.py +0 -0
  348. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/tcp/accept.py +0 -0
  349. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/tcp/connection.py +0 -0
  350. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/tcp/reader.py +0 -0
  351. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/tcp/socketopts.py +0 -0
  352. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/tcp/tls.py +0 -0
  353. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/tcp/writer.py +0 -0
  354. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/udp/__init__.py +0 -0
  355. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/udp/endpoint.py +0 -0
  356. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/udp/packet.py +0 -0
  357. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/udp/socketopts.py +0 -0
  358. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/unix/__init__.py +0 -0
  359. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/transports/unix/connection.py +0 -0
  360. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/types.py +0 -0
  361. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/utils/__init__.py +0 -0
  362. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/utils/authority.py +0 -0
  363. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/utils/bytes.py +0 -0
  364. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/utils/headers.py +0 -0
  365. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/utils/ids.py +0 -0
  366. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/utils/imports.py +0 -0
  367. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/utils/net.py +0 -0
  368. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/utils/proxy.py +0 -0
  369. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/version.py +0 -0
  370. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/workers/__init__.py +0 -0
  371. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/workers/local.py +0 -0
  372. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/workers/model.py +0 -0
  373. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/workers/process.py +0 -0
  374. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn/workers/supervisor.py +0 -0
  375. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn.egg-info/dependency_links.txt +0 -0
  376. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn.egg-info/entry_points.txt +0 -0
  377. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/src/tigrcorn.egg-info/top_level.txt +0 -0
  378. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_additional_remaining_work.py +0 -0
  379. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_advanced_protocol_delivery_checkpoint.py +0 -0
  380. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_aioquic_adapter_helpers.py +0 -0
  381. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_aioquic_performance_matrix.py +0 -0
  382. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_app_interface_cli_flag.py +0 -0
  383. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_app_interface_config_toml.py +0 -0
  384. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_app_interface_detection_precedence.py +0 -0
  385. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_app_interface_env_var.py +0 -0
  386. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_app_interface_fail_closed_ambiguity.py +0 -0
  387. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_app_interface_public_api.py +0 -0
  388. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_app_loader.py +0 -0
  389. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_asgi2_compat_exclusion.py +0 -0
  390. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_asgi3_endpoint_metadata_extension.py +0 -0
  391. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_asgi3_hot_path_isolation.py +0 -0
  392. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_asgi3_security_metadata_extension.py +0 -0
  393. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_asgi3_stream_datagram_extension.py +0 -0
  394. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_asgi3_transport_identity_extension.py +0 -0
  395. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_certification_policy_alignment.py +0 -0
  396. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_cli_and_asgi3.py +0 -0
  397. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_cli_config_surface.py +0 -0
  398. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_code_style_governance.py +0 -0
  399. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_compat_dispatch_selection.py +0 -0
  400. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_compat_http_boundary.py +0 -0
  401. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_compression_additional.py +0 -0
  402. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_config_matrix.py +0 -0
  403. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_config_matrix_pytest.py +0 -0
  404. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_conformance_corpus.py +0 -0
  405. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_connect_rfc9110.py +0 -0
  406. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_connect_tunnel_h2_h3.py +0 -0
  407. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_content_coding_policy_local.py +0 -0
  408. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_contract_alpn_metadata.py +0 -0
  409. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_contract_app_dispatch.py +0 -0
  410. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_contract_classification_projection.py +0 -0
  411. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_contract_classification_projection_t2.py +0 -0
  412. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_contract_core_boundary.py +0 -0
  413. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_contract_datagram_flow_control_mapping.py +0 -0
  414. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_contract_datagram_unit_identity.py +0 -0
  415. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_contract_emit_completion_asgi_extension.py +0 -0
  416. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_contract_fd_endpoint_metadata.py +0 -0
  417. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_contract_generic_datagram_runtime.py +0 -0
  418. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_contract_generic_stream_runtime.py +0 -0
  419. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_contract_http2_stream_identity.py +0 -0
  420. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_contract_http3_stream_identity.py +0 -0
  421. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_contract_illegal_event_order_rejection.py +0 -0
  422. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_contract_inproc_endpoint_metadata.py +0 -0
  423. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_contract_invalid_endpoint_metadata_rejection.py +0 -0
  424. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_contract_jsonrpc_binding_classification.py +0 -0
  425. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_contract_listener_endpoint_metadata.py +0 -0
  426. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_contract_lossy_metadata_rejection.py +0 -0
  427. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_contract_mtls_peer_metadata.py +0 -0
  428. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_contract_native_public_api.py +0 -0
  429. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_contract_native_runtime.py +0 -0
  430. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_contract_ocsp_crl_metadata.py +0 -0
  431. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_contract_pipe_endpoint_metadata.py +0 -0
  432. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_contract_quic_connection_identity.py +0 -0
  433. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_contract_rest_binding_classification.py +0 -0
  434. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_contract_sni_metadata.py +0 -0
  435. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_contract_sse_binding_classification.py +0 -0
  436. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_contract_stream_backpressure_mapping.py +0 -0
  437. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_contract_tcp_connection_identity.py +0 -0
  438. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_contract_tls_endpoint_metadata.py +0 -0
  439. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_contract_uds_endpoint_metadata.py +0 -0
  440. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_contract_unix_connection_identity.py +0 -0
  441. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_contract_unsupported_scope_rejection.py +0 -0
  442. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_contract_webtransport_session_identity.py +0 -0
  443. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_contract_webtransport_stream_identity.py +0 -0
  444. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_default_audits.py +0 -0
  445. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_dependency_declaration_reconciliation_checkpoint.py +0 -0
  446. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_documentation_reconciliation.py +0 -0
  447. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_entity_semantics_checkpoint.py +0 -0
  448. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_external_current_release_matrix.py +0 -0
  449. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_external_independent_peer_release_matrix.py +0 -0
  450. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_external_interop_runner_matrix.py +0 -0
  451. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_external_rfc_hardening_candidate_matrix.py +0 -0
  452. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_flag_surface_truth_reconciliation.py +0 -0
  453. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_flow_control_bundle.py +0 -0
  454. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_flow_scheduler.py +0 -0
  455. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_governance_graph_export.py +0 -0
  456. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_governed_rfc_deep_coverage.py +0 -0
  457. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_governed_rfc_support_floor.py +0 -0
  458. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_h11_http1_probe_fixture.py +0 -0
  459. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_h1_websocket_operator_surface.py +0 -0
  460. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_h2_http2_probe_fixture.py +0 -0
  461. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_h3_asgi3_lab.py +0 -0
  462. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_h3_http3_probe_fixture.py +0 -0
  463. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_h3_quic_control_plane_boundary.py +0 -0
  464. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_h3_quic_probe_fixture.py +0 -0
  465. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_hpack_completion_pass.py +0 -0
  466. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_http1_chunked.py +0 -0
  467. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_http1_hardening_pass.py +0 -0
  468. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_http1_parser.py +0 -0
  469. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_http1_parser_owned_surface.py +0 -0
  470. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_http1_rfc9112.py +0 -0
  471. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_http2_asgi3_demo.py +0 -0
  472. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_http2_duplex_interleaving.py +0 -0
  473. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_http2_duplex_interleaving_t2.py +0 -0
  474. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_http2_flow_control_backpressure.py +0 -0
  475. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_http2_flow_control_backpressure_t2.py +0 -0
  476. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_http2_hpack.py +0 -0
  477. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_http2_operator_surface.py +0 -0
  478. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_http2_request_streaming.py +0 -0
  479. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_http2_request_streaming_t2.py +0 -0
  480. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_http2_rfc9113.py +0 -0
  481. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_http2_rfc9113_gap_regressions.py +0 -0
  482. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_http2_rfc9113_server_negatives.py +0 -0
  483. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_http2_server_push_surface.py +0 -0
  484. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_http2_state_machine_completion.py +0 -0
  485. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_http2_websocket_rfc8441.py +0 -0
  486. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_http3_request_stream_state_machine.py +0 -0
  487. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_http3_rfc9114.py +0 -0
  488. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_http3_server.py +0 -0
  489. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_http3_websocket_rfc9220.py +0 -0
  490. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_http_content_coding_rfc9110.py +0 -0
  491. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_http_integrity_caching_signatures_status.py +0 -0
  492. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_http_status_code_surface.py +0 -0
  493. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_import.py +0 -0
  494. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_intermediary_proxy_corpus.py +0 -0
  495. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_json_rpc_runtime_exclusion.py +0 -0
  496. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_lifespan.py +0 -0
  497. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_lifespan_example.py +0 -0
  498. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_logging_exporter_closure.py +0 -0
  499. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_minimum_certified_intermediary_proxy_corpus.py +0 -0
  500. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_negative_certification.py +0 -0
  501. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_observability_surface.py +0 -0
  502. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_observability_workers.py +0 -0
  503. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_ocsp_local_validation.py +0 -0
  504. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_open_loop_benchmark_matrices.py +0 -0
  505. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_operator_surface.py +0 -0
  506. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_origin_contract.py +0 -0
  507. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_p8_sf.py +0 -0
  508. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_package_boundaries.py +0 -0
  509. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_performance_harness.py +0 -0
  510. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_pipe_and_inproc.py +0 -0
  511. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_policy_surface.py +0 -0
  512. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_prebuffered_reader_and_custom.py +0 -0
  513. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_product_boundary_exclusions.py +0 -0
  514. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_profile_resolution.py +0 -0
  515. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_promotion_targets.py +0 -0
  516. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_protocol_scope_fixtures.py +0 -0
  517. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_provisional_all_surfaces_gap_bundle.py +0 -0
  518. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_provisional_flow_control_gap_bundle.py +0 -0
  519. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_provisional_http3_gap_bundle.py +0 -0
  520. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_public_api_cli_mtls_surface.py +0 -0
  521. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_public_api_tls_cipher_surface.py +0 -0
  522. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_public_lifecycle_and_embedder_contract.py +0 -0
  523. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_public_quic_tls_packaging.py +0 -0
  524. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_qpack_completion.py +0 -0
  525. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_quic_custom_server.py +0 -0
  526. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_quic_http3.py +0 -0
  527. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_quic_http3_additional_rfc.py +0 -0
  528. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_quic_packets_rfc9000.py +0 -0
  529. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_quic_primitives.py +0 -0
  530. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_quic_recovery_live_runtime_integration.py +0 -0
  531. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_quic_recovery_rfc9002.py +0 -0
  532. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_quic_runtime_additions.py +0 -0
  533. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_quic_stream_flow_state_machine.py +0 -0
  534. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_quic_surface.py +0 -0
  535. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_quic_tls_external_interop_regressions.py +0 -0
  536. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_quic_tls_handshake_driver.py +0 -0
  537. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_quic_tls_rfc9001.py +0 -0
  538. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_quic_transport_runtime_completion.py +0 -0
  539. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_rawframed_handler.py +0 -0
  540. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_registries_models.py +0 -0
  541. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_release_candidate.py +0 -0
  542. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_release_gates.py +0 -0
  543. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_response_pipeline_streaming_checkpoint.py +0 -0
  544. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_response_trailers_rfc9110.py +0 -0
  545. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_rest_runtime_exclusion.py +0 -0
  546. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_rfc7232_7233_boundary_formalization.py +0 -0
  547. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_rfc7232_conditional_requests.py +0 -0
  548. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_rfc7233_range_requests.py +0 -0
  549. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_rfc7838_alt_svc.py +0 -0
  550. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_rfc8297_early_hints.py +0 -0
  551. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_rfc9112_boundary_formalization.py +0 -0
  552. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_rfc_applicability_and_competitor_status.py +0 -0
  553. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_rfc_applicability_and_competitor_support.py +0 -0
  554. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_rfc_compliance_hardening.py +0 -0
  555. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_rsgi_compat_exclusion.py +0 -0
  556. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_runtime_performance_matrix.py +0 -0
  557. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_scheduler_runtime.py +0 -0
  558. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_security_compat_utils.py +0 -0
  559. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_server_http1.py +0 -0
  560. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_server_http2.py +0 -0
  561. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_server_unix.py +0 -0
  562. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_server_websocket.py +0 -0
  563. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_sessions_streams.py +0 -0
  564. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_ssot_all_feature_t012_baseline.py +0 -0
  565. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_static_delivery_productionization_checkpoint.py +0 -0
  566. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_static_delivery_surface.py +0 -0
  567. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_stream_probe_fixtures.py +0 -0
  568. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_strict_rfc_surface.py +0 -0
  569. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_surface_parity_checkpoint.py +0 -0
  570. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_tcp_tls_package_owned.py +0 -0
  571. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_tls13_engine_upgrade.py +0 -0
  572. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_tls_alpn_rfc7301.py +0 -0
  573. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_tls_operator_material_surface.py +0 -0
  574. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_trailer_policy_strict_local.py +0 -0
  575. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_trailers_rfc9110.py +0 -0
  576. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_transport_core_strictness_checkpoint.py +0 -0
  577. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_trio_runtime_surface_reconciliation_checkpoint.py +0 -0
  578. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_websocket_additional_rfc6455.py +0 -0
  579. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_websocket_frames.py +0 -0
  580. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_websocket_peer_performance_matrix.py +0 -0
  581. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_websocket_rfc6455.py +0 -0
  582. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_websocket_rfc7692.py +0 -0
  583. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_websocket_rfc7936.py +0 -0
  584. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_websocket_rfc8307.py +0 -0
  585. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_websocket_uix_demo.py +0 -0
  586. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_webtransport_h3_quic_completion_events.py +0 -0
  587. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_webtransport_h3_quic_datagram_events.py +0 -0
  588. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_webtransport_h3_quic_scope.py +0 -0
  589. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_webtransport_h3_quic_session_events.py +0 -0
  590. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_webtransport_h3_quic_stream_events.py +0 -0
  591. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_webtransport_operator_surface.py +0 -0
  592. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_ws_wss_probe_fixture.py +0 -0
  593. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_wsgi_compat_exclusion.py +0 -0
  594. {tigrcorn-0.3.16.dev13 → tigrcorn-0.3.17.dev1}/tests/test_wss_asgi3_lab.py +0 -0
  595. {tigrcorn-0.3.16.dev13 → 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.16.dev13
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.16.dev13
191
- Requires-Dist: tigrcorn-config==0.3.16.dev13
192
- Requires-Dist: tigrcorn-asgi==0.3.16.dev13
193
- Requires-Dist: tigrcorn-contract==0.3.16.dev13
194
- Requires-Dist: tigrcorn-transports==0.3.16.dev13
195
- Requires-Dist: tigrcorn-protocols==0.3.16.dev13
196
- Requires-Dist: tigrcorn-http==0.3.16.dev13
197
- Requires-Dist: tigrcorn-security==0.3.16.dev13
198
- Requires-Dist: tigrcorn-runtime==0.3.16.dev13
199
- Requires-Dist: tigrcorn-static==0.3.16.dev13
200
- Requires-Dist: tigrcorn-observability==0.3.16.dev13
201
- Requires-Dist: tigrcorn-compat==0.3.16.dev13
202
- Requires-Dist: tigrcorn-certification==0.3.16.dev13
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 | [Phase 9 implementation plan](https://github.com/tigrbl/tigrcorn/blob/master/docs/review/conformance/PHASE9_IMPLEMENTATION_PLAN.md), [Phase 9A promotion contract freeze](https://github.com/tigrbl/tigrcorn/blob/master/docs/review/conformance/PHASE9A_PROMOTION_CONTRACT_FREEZE.md) |
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
- - [Phase 9A promotion contract freeze](https://github.com/tigrbl/tigrcorn/blob/master/docs/review/conformance/PHASE9A_PROMOTION_CONTRACT_FREEZE.md)
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) | [Phase 9A promotion contract freeze](https://github.com/tigrbl/tigrcorn/blob/master/docs/review/conformance/PHASE9A_PROMOTION_CONTRACT_FREEZE.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 | [Phase 9 implementation plan](https://github.com/tigrbl/tigrcorn/blob/master/docs/review/conformance/PHASE9_IMPLEMENTATION_PLAN.md), [Phase 9A promotion contract freeze](https://github.com/tigrbl/tigrcorn/blob/master/docs/review/conformance/PHASE9A_PROMOTION_CONTRACT_FREEZE.md) |
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
- - [Phase 9A promotion contract freeze](https://github.com/tigrbl/tigrcorn/blob/master/docs/review/conformance/PHASE9A_PROMOTION_CONTRACT_FREEZE.md)
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) | [Phase 9A promotion contract freeze](https://github.com/tigrbl/tigrcorn/blob/master/docs/review/conformance/PHASE9A_PROMOTION_CONTRACT_FREEZE.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 | [Phase 9 implementation plan](docs/review/conformance/PHASE9_IMPLEMENTATION_PLAN.md), [Phase 9 implementation JSON](docs/review/conformance/phase9_implementation_plan.current.json), [Phase 9A promotion contract freeze](docs/review/conformance/PHASE9A_PROMOTION_CONTRACT_FREEZE.md), [Phase 9A promotion JSON](docs/review/conformance/phase9a_promotion_contract.current.json) |
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
- - [Phase 9A promotion contract freeze](docs/review/conformance/PHASE9A_PROMOTION_CONTRACT_FREEZE.md)
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) | [Phase 9A promotion contract freeze](docs/review/conformance/PHASE9A_PROMOTION_CONTRACT_FREEZE.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.16.dev13"
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.16.dev13",
36
- "tigrcorn-config==0.3.16.dev13",
37
- "tigrcorn-asgi==0.3.16.dev13",
38
- "tigrcorn-contract==0.3.16.dev13",
39
- "tigrcorn-transports==0.3.16.dev13",
40
- "tigrcorn-protocols==0.3.16.dev13",
41
- "tigrcorn-http==0.3.16.dev13",
42
- "tigrcorn-security==0.3.16.dev13",
43
- "tigrcorn-runtime==0.3.16.dev13",
44
- "tigrcorn-static==0.3.16.dev13",
45
- "tigrcorn-observability==0.3.16.dev13",
46
- "tigrcorn-compat==0.3.16.dev13",
47
- "tigrcorn-certification==0.3.16.dev13",
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