schemathesis 3.25.5__tar.gz → 3.25.6__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 (543) hide show
  1. {schemathesis-3.25.5 → schemathesis-3.25.6}/PKG-INFO +1 -1
  2. {schemathesis-3.25.5 → schemathesis-3.25.6}/docs/changelog.rst +17 -1
  3. {schemathesis-3.25.5 → schemathesis-3.25.6}/pyproject.toml +1 -1
  4. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/cli/__init__.py +13 -19
  5. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/cli/context.py +3 -0
  6. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/cli/output/default.py +32 -7
  7. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/cli/output/short.py +4 -0
  8. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/models.py +5 -2
  9. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/runner/__init__.py +24 -9
  10. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/runner/events.py +21 -1
  11. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/runner/impl/core.py +71 -22
  12. {schemathesis-3.25.5/src/schemathesis/cli → schemathesis-3.25.6/src/schemathesis/runner}/probes.py +31 -21
  13. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/serializers.py +10 -2
  14. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/service/serialization.py +15 -0
  15. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/specs/openapi/_hypothesis.py +1 -1
  16. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/specs/openapi/examples.py +22 -24
  17. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/specs/openapi/schemas.py +10 -3
  18. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/__snapshots__/test_hypothesis/test_health_check_failed_large_base_example.raw +1 -0
  19. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/__snapshots__/test_recoverable_errors/test_in_cli[1].raw +1 -0
  20. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/__snapshots__/test_recoverable_errors/test_in_cli[2].raw +1 -0
  21. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/__snapshots__/test_serialization/test_in_cli[Open API 3.0].raw +1 -0
  22. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/auth/__snapshots__/test_cli/test_conditional[Open API 3.0].raw +1 -0
  23. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/auth/__snapshots__/test_cli/test_custom_auth[Open API 3.0].raw +1 -0
  24. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/auth/__snapshots__/test_cli/test_explicit_auth_precedence[Open API 3.0-args0-Basic dXNlcjpwYXNz].raw +1 -0
  25. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/auth/__snapshots__/test_cli/test_explicit_auth_precedence[Open API 3.0-args1-Bearer EXPLICIT].raw +1 -0
  26. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/auth/__snapshots__/test_cli/test_multiple_auth_mechanisms_with_explicit_auth.raw +1 -0
  27. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/auth/__snapshots__/test_cli/test_multiple_threads[Open API 3.0].raw +1 -0
  28. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/auth/__snapshots__/test_cli/test_requests_auth[Open API 3.0].raw +1 -0
  29. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_add_case_output[Open API 2.0].raw +1 -0
  30. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_add_case_output[Open API 3.0].raw +1 -0
  31. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 2.0---auth='testwrong'].raw +1 -0
  32. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 2.0--H Authorization Basic J3Rlc3Q6d3Jvbmcn].raw +1 -0
  33. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 3.0---auth='testwrong'].raw +1 -0
  34. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 3.0--H Authorization Basic J3Rlc3Q6d3Jvbmcn].raw +1 -0
  35. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_binary_payload.raw +1 -0
  36. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_chunked_encoding_error[Open API 3.0].raw +1 -0
  37. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 2.0-1].raw +1 -0
  38. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 2.0-2].raw +1 -0
  39. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 3.0-1].raw +1 -0
  40. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 3.0-2].raw +1 -0
  41. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 2.0-1].raw +1 -0
  42. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 2.0-2].raw +1 -0
  43. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 3.0-1].raw +1 -0
  44. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 3.0-2].raw +1 -0
  45. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_complex_urlencoded_example.raw +1 -0
  46. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 2.0-1].raw +1 -0
  47. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 2.0-2].raw +1 -0
  48. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 3.0-1].raw +1 -0
  49. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 3.0-2].raw +1 -0
  50. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 2.0-1].raw +1 -0
  51. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 2.0-2].raw +1 -0
  52. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 3.0-1].raw +1 -0
  53. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 3.0-2].raw +1 -0
  54. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_explicit_example_failure_output.raw +1 -0
  55. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_explicit_headers_in_output_on_errors[Open API 3.0].raw +1 -0
  56. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_get_request_with_body[Open API 2.0].raw +1 -0
  57. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_get_request_with_body[Open API 3.0].raw +1 -0
  58. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_graphql_asgi.raw +1 -0
  59. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_graphql_url[foo-args0].raw +1 -0
  60. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_graphql_url[foo-args1].raw +1 -0
  61. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_graphql_url[graphql-args0].raw +1 -0
  62. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_graphql_url[graphql-args1].raw +1 -0
  63. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_group_errors.raw +1 -0
  64. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 2.0-1].raw +1 -0
  65. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 2.0-2].raw +1 -0
  66. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 3.0-1].raw +1 -0
  67. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 3.0-2].raw +1 -0
  68. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 2.0-1].raw +1 -0
  69. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 2.0-2].raw +1 -0
  70. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 3.0-1].raw +1 -0
  71. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 3.0-2].raw +1 -0
  72. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_invalid_schema_with_disabled_validation[3.0.2-The provided definition doesn't match any of the expected formats or types.].raw +1 -0
  73. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_invalid_schema_with_disabled_validation[3.1.0-'type' is a required property].raw +1 -0
  74. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_long_payload.raw +1 -0
  75. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_malformed_json_deduplication[real-Open API 3.0].raw +1 -0
  76. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_malformed_json_deduplication[wsgi-Open API 3.0].raw +1 -0
  77. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 2.0-1].raw +1 -0
  78. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 2.0-2].raw +1 -0
  79. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 3.0-1].raw +1 -0
  80. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 3.0-2].raw +1 -0
  81. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[cookie-None].raw +1 -0
  82. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[cookie-http127.0.0.1apiv2].raw +1 -0
  83. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[header-None].raw +1 -0
  84. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[header-http127.0.0.1apiv2].raw +1 -0
  85. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[path-None].raw +1 -0
  86. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[path-http127.0.0.1apiv2].raw +1 -0
  87. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[query-None].raw +1 -0
  88. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[query-http127.0.0.1apiv2].raw +1 -0
  89. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_multiple_errors.raw +1 -0
  90. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_multiple_failures_different_check[Open API 2.0].raw +1 -0
  91. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_multiple_failures_different_check[Open API 3.0].raw +1 -0
  92. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_multiple_failures_in_single_check.raw +1 -0
  93. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_multiple_failures_single_check[Open API 2.0].raw +1 -0
  94. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_multiple_failures_single_check[Open API 3.0].raw +1 -0
  95. schemathesis-3.25.5/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema1].raw → schemathesis-3.25.6/test/cli/__snapshots__/test_commands/test_nested_binary_in_yaml.raw +5 -2
  96. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_no_useless_traceback.raw +1 -0
  97. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_null_byte_in_header_probe.raw +1 -0
  98. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_openapi_links[real-Open API 2.0].raw +1 -0
  99. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_openapi_links[real-Open API 3.0].raw +1 -0
  100. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_openapi_links[wsgi-Open API 2.0].raw +1 -0
  101. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_openapi_links[wsgi-Open API 3.0].raw +1 -0
  102. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_openapi_links_disabled[Open API 2.0].raw +1 -0
  103. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_openapi_links_disabled[Open API 3.0].raw +1 -0
  104. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_proxy_error[Open API 3.0].raw +1 -0
  105. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_read_content_timeout[Open API 3.0].raw +1 -0
  106. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError(Custom check failed!)-Open API 2.0].raw +1 -0
  107. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError(Custom check failed!)-Open API 3.0].raw +1 -0
  108. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError-Open API 2.0].raw +1 -0
  109. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError-Open API 3.0].raw +1 -0
  110. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[real-Open API 2.0].raw +1 -0
  111. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[real-Open API 3.0].raw +1 -0
  112. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[wsgi-Open API 2.0].raw +1 -0
  113. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[wsgi-Open API 3.0].raw +1 -0
  114. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[real-Open API 2.0].raw +1 -0
  115. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[real-Open API 3.0].raw +1 -0
  116. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[wsgi-Open API 2.0].raw +1 -0
  117. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[wsgi-Open API 3.0].raw +1 -0
  118. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 2.0-1].raw +1 -0
  119. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 2.0-2].raw +1 -0
  120. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 3.0-1].raw +1 -0
  121. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 3.0-2].raw +1 -0
  122. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 2.0-1].raw +1 -0
  123. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 2.0-2].raw +1 -0
  124. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 3.0-1].raw +1 -0
  125. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 3.0-2].raw +1 -0
  126. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_unresolvable_reference_with_disabled_validation.raw +1 -0
  127. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 2.0-1].raw +1 -0
  128. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 2.0-2].raw +1 -0
  129. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 3.0-1].raw +1 -0
  130. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 3.0-2].raw +1 -0
  131. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 2.0-1].raw +1 -0
  132. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 2.0-2].raw +1 -0
  133. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 3.0-1].raw +1 -0
  134. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 3.0-2].raw +1 -0
  135. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_unsupported_regex.raw +1 -0
  136. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_useful_traceback[Open API 3.0].raw +1 -0
  137. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_yaml_parsing_of_floats[Open API 3.0].raw +1 -0
  138. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_hooks/test_after_call[real-Open API 3.0].raw +1 -0
  139. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_hooks/test_after_call[wsgi-Open API 3.0].raw +1 -0
  140. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/output/test_default.py +3 -1
  141. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/test_asgi.py +2 -2
  142. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/test_cassettes.py +2 -1
  143. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/test_commands.py +67 -42
  144. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/test_crashes.py +7 -2
  145. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/code_samples/__snapshots__/test_python/test_cli_output[Open API 2.0].raw +1 -0
  146. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/code_samples/__snapshots__/test_python/test_cli_output[Open API 3.0].raw +1 -0
  147. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/conftest.py +3 -1
  148. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/contrib/__snapshots__/test_unique_data/test_cli[None].raw +4 -2
  149. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema0].raw +4 -2
  150. schemathesis-3.25.6/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema1].raw +25 -0
  151. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema2].raw +4 -0
  152. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/contrib/__snapshots__/test_unique_data/test_explicit_headers[1].raw +4 -2
  153. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/contrib/__snapshots__/test_unique_data/test_explicit_headers[2].raw +4 -2
  154. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/contrib/openapi/__snapshots__/test_fill_missing_examples/test_fills_missing_examples.raw +1 -0
  155. {schemathesis-3.25.5/test/cli → schemathesis-3.25.6/test/runner}/test_probes.py +13 -25
  156. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/runner/test_runner.py +15 -13
  157. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/service/__snapshots__/test_cli/test_client_error_on_upload[Open API 3.0].raw +1 -0
  158. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/service/__snapshots__/test_cli/test_error_in_another_handler[Open API 3.0].raw +0 -1
  159. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/service/__snapshots__/test_cli/test_github_suggestion[Open API 3.0].raw +1 -0
  160. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/service/__snapshots__/test_cli/test_unknown_error_on_upload[Open API 3.0].raw +1 -0
  161. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/service/test_cli.py +8 -8
  162. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/service/test_report.py +3 -1
  163. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/service/test_serialization.py +6 -0
  164. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/specs/graphql/__snapshots__/test_custom_scalars/test_built_in_scalars_in_cli.raw +1 -0
  165. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/specs/graphql/__snapshots__/test_custom_scalars/test_custom_scalar_in_cli.raw +1 -0
  166. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/specs/openapi/__snapshots__/test_examples/test_network_error_with_flaky_generation.raw +1 -0
  167. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/specs/openapi/test_examples.py +52 -4
  168. {schemathesis-3.25.5 → schemathesis-3.25.6}/.dockerignore +0 -0
  169. {schemathesis-3.25.5 → schemathesis-3.25.6}/.github/FUNDING.yml +0 -0
  170. {schemathesis-3.25.5 → schemathesis-3.25.6}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  171. {schemathesis-3.25.5 → schemathesis-3.25.6}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  172. {schemathesis-3.25.5 → schemathesis-3.25.6}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  173. {schemathesis-3.25.5 → schemathesis-3.25.6}/.github/dependabot.yml +0 -0
  174. {schemathesis-3.25.5 → schemathesis-3.25.6}/.github/workflows/build.yml +0 -0
  175. {schemathesis-3.25.5 → schemathesis-3.25.6}/.github/workflows/codeql-analysis.yml +0 -0
  176. {schemathesis-3.25.5 → schemathesis-3.25.6}/.github/workflows/codspeed.yml +0 -0
  177. {schemathesis-3.25.5 → schemathesis-3.25.6}/.github/workflows/commit.yml +0 -0
  178. {schemathesis-3.25.5 → schemathesis-3.25.6}/.github/workflows/example-build.yml +0 -0
  179. {schemathesis-3.25.5 → schemathesis-3.25.6}/.github/workflows/example-no-build.yml +0 -0
  180. {schemathesis-3.25.5 → schemathesis-3.25.6}/.github/workflows/master_update.yml +0 -0
  181. {schemathesis-3.25.5 → schemathesis-3.25.6}/.github/workflows/release.yml +0 -0
  182. {schemathesis-3.25.5 → schemathesis-3.25.6}/.github/workflows/test-corpus.yml +0 -0
  183. {schemathesis-3.25.5 → schemathesis-3.25.6}/.github/workflows/test-hypothesis.yml +0 -0
  184. {schemathesis-3.25.5 → schemathesis-3.25.6}/.github/workflows/update-corpus.yml +0 -0
  185. {schemathesis-3.25.5 → schemathesis-3.25.6}/.github/workflows/update-pre-commit.yml +0 -0
  186. {schemathesis-3.25.5 → schemathesis-3.25.6}/.gitignore +0 -0
  187. {schemathesis-3.25.5 → schemathesis-3.25.6}/.gitmodules +0 -0
  188. {schemathesis-3.25.5 → schemathesis-3.25.6}/.pre-commit-config.yaml +0 -0
  189. {schemathesis-3.25.5 → schemathesis-3.25.6}/.readthedocs.yml +0 -0
  190. {schemathesis-3.25.5 → schemathesis-3.25.6}/.relint.yml +0 -0
  191. {schemathesis-3.25.5 → schemathesis-3.25.6}/.rstcheck.cfg +0 -0
  192. {schemathesis-3.25.5 → schemathesis-3.25.6}/.yamllint +0 -0
  193. {schemathesis-3.25.5 → schemathesis-3.25.6}/CITATION.cff +0 -0
  194. {schemathesis-3.25.5 → schemathesis-3.25.6}/CODE_OF_CONDUCT.md +0 -0
  195. {schemathesis-3.25.5 → schemathesis-3.25.6}/CONTRIBUTING.rst +0 -0
  196. {schemathesis-3.25.5 → schemathesis-3.25.6}/Dockerfile +0 -0
  197. {schemathesis-3.25.5 → schemathesis-3.25.6}/Dockerfile.bookworm +0 -0
  198. {schemathesis-3.25.5 → schemathesis-3.25.6}/LICENSE +0 -0
  199. {schemathesis-3.25.5 → schemathesis-3.25.6}/README.md +0 -0
  200. {schemathesis-3.25.5 → schemathesis-3.25.6}/benches/cli.py +0 -0
  201. {schemathesis-3.25.5 → schemathesis-3.25.6}/benches/references.py +0 -0
  202. {schemathesis-3.25.5 → schemathesis-3.25.6}/changelog.py +0 -0
  203. {schemathesis-3.25.5 → schemathesis-3.25.6}/codecov.yml +0 -0
  204. {schemathesis-3.25.5 → schemathesis-3.25.6}/docs/Makefile +0 -0
  205. {schemathesis-3.25.5 → schemathesis-3.25.6}/docs/additional-content.rst +0 -0
  206. {schemathesis-3.25.5 → schemathesis-3.25.6}/docs/api.rst +0 -0
  207. {schemathesis-3.25.5 → schemathesis-3.25.6}/docs/auth.rst +0 -0
  208. {schemathesis-3.25.5 → schemathesis-3.25.6}/docs/cli.rst +0 -0
  209. {schemathesis-3.25.5 → schemathesis-3.25.6}/docs/compatibility.rst +0 -0
  210. {schemathesis-3.25.5 → schemathesis-3.25.6}/docs/conf.py +0 -0
  211. {schemathesis-3.25.5 → schemathesis-3.25.6}/docs/continuous_integration.rst +0 -0
  212. {schemathesis-3.25.5 → schemathesis-3.25.6}/docs/contrib.rst +0 -0
  213. {schemathesis-3.25.5 → schemathesis-3.25.6}/docs/data-generation.rst +0 -0
  214. {schemathesis-3.25.5 → schemathesis-3.25.6}/docs/examples.rst +0 -0
  215. {schemathesis-3.25.5 → schemathesis-3.25.6}/docs/experimental.rst +0 -0
  216. {schemathesis-3.25.5 → schemathesis-3.25.6}/docs/extending.rst +0 -0
  217. {schemathesis-3.25.5 → schemathesis-3.25.6}/docs/faq.rst +0 -0
  218. {schemathesis-3.25.5 → schemathesis-3.25.6}/docs/getting-started.rst +0 -0
  219. {schemathesis-3.25.5 → schemathesis-3.25.6}/docs/graphql.rst +0 -0
  220. {schemathesis-3.25.5 → schemathesis-3.25.6}/docs/index.rst +0 -0
  221. {schemathesis-3.25.5 → schemathesis-3.25.6}/docs/python.rst +0 -0
  222. {schemathesis-3.25.5 → schemathesis-3.25.6}/docs/recipes.rst +0 -0
  223. {schemathesis-3.25.5 → schemathesis-3.25.6}/docs/requirements.txt +0 -0
  224. {schemathesis-3.25.5 → schemathesis-3.25.6}/docs/sanitizing.rst +0 -0
  225. {schemathesis-3.25.5 → schemathesis-3.25.6}/docs/service.rst +0 -0
  226. {schemathesis-3.25.5 → schemathesis-3.25.6}/docs/stateful.rst +0 -0
  227. {schemathesis-3.25.5 → schemathesis-3.25.6}/docs/targeted.rst +0 -0
  228. {schemathesis-3.25.5 → schemathesis-3.25.6}/example/Dockerfile +0 -0
  229. {schemathesis-3.25.5 → schemathesis-3.25.6}/example/README.md +0 -0
  230. {schemathesis-3.25.5 → schemathesis-3.25.6}/example/app.py +0 -0
  231. {schemathesis-3.25.5 → schemathesis-3.25.6}/example/compose.yml +0 -0
  232. {schemathesis-3.25.5 → schemathesis-3.25.6}/example/openapi.json +0 -0
  233. {schemathesis-3.25.5 → schemathesis-3.25.6}/example/requirements-app.in +0 -0
  234. {schemathesis-3.25.5 → schemathesis-3.25.6}/example/requirements-app.txt +0 -0
  235. {schemathesis-3.25.5 → schemathesis-3.25.6}/example/requirements-pytest.in +0 -0
  236. {schemathesis-3.25.5 → schemathesis-3.25.6}/example/requirements-pytest.txt +0 -0
  237. {schemathesis-3.25.5 → schemathesis-3.25.6}/example/tests/__init__.py +0 -0
  238. {schemathesis-3.25.5 → schemathesis-3.25.6}/example/tests/conftest.py +0 -0
  239. {schemathesis-3.25.5 → schemathesis-3.25.6}/example/tests/extensions.py +0 -0
  240. {schemathesis-3.25.5 → schemathesis-3.25.6}/example/tests/test_app.py +0 -0
  241. {schemathesis-3.25.5 → schemathesis-3.25.6}/img/demo.gif +0 -0
  242. {schemathesis-3.25.5 → schemathesis-3.25.6}/img/service_github_report.png +0 -0
  243. {schemathesis-3.25.5 → schemathesis-3.25.6}/mypy.ini +0 -0
  244. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/__init__.py +0 -0
  245. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/_compat.py +0 -0
  246. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/_dependency_versions.py +0 -0
  247. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/_hypothesis.py +0 -0
  248. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/_lazy_import.py +0 -0
  249. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/_override.py +0 -0
  250. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/_xml.py +0 -0
  251. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/auths.py +0 -0
  252. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/checks.py +0 -0
  253. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/cli/callbacks.py +0 -0
  254. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/cli/cassettes.py +0 -0
  255. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/cli/constants.py +0 -0
  256. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/cli/debug.py +0 -0
  257. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/cli/handlers.py +0 -0
  258. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/cli/junitxml.py +0 -0
  259. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/cli/options.py +0 -0
  260. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/cli/output/__init__.py +0 -0
  261. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/cli/sanitization.py +0 -0
  262. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/code_samples.py +0 -0
  263. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/constants.py +0 -0
  264. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/contrib/__init__.py +0 -0
  265. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/contrib/openapi/__init__.py +0 -0
  266. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/contrib/openapi/fill_missing_examples.py +0 -0
  267. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/contrib/openapi/formats/__init__.py +0 -0
  268. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/contrib/openapi/formats/uuid.py +0 -0
  269. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/contrib/unique_data.py +0 -0
  270. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/exceptions.py +0 -0
  271. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/experimental/__init__.py +0 -0
  272. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/extra/__init__.py +0 -0
  273. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/extra/_aiohttp.py +0 -0
  274. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/extra/_flask.py +0 -0
  275. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/extra/_server.py +0 -0
  276. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/extra/pytest_plugin.py +0 -0
  277. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/failures.py +0 -0
  278. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/filters.py +0 -0
  279. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/fixups/__init__.py +0 -0
  280. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/fixups/fast_api.py +0 -0
  281. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/fixups/utf8_bom.py +0 -0
  282. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/generation/__init__.py +0 -0
  283. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/graphql.py +0 -0
  284. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/hooks.py +0 -0
  285. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/internal/__init__.py +0 -0
  286. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/internal/copy.py +0 -0
  287. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/internal/datetime.py +0 -0
  288. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/internal/deprecation.py +0 -0
  289. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/internal/jsonschema.py +0 -0
  290. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/internal/result.py +0 -0
  291. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/internal/transformation.py +0 -0
  292. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/internal/validation.py +0 -0
  293. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/lazy.py +0 -0
  294. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/loaders.py +0 -0
  295. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/parameters.py +0 -0
  296. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/py.typed +0 -0
  297. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/runner/impl/__init__.py +0 -0
  298. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/runner/impl/solo.py +0 -0
  299. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/runner/impl/threadpool.py +0 -0
  300. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/runner/serialization.py +0 -0
  301. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/sanitization.py +0 -0
  302. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/schemas.py +0 -0
  303. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/service/__init__.py +0 -0
  304. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/service/auth.py +0 -0
  305. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/service/ci.py +0 -0
  306. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/service/client.py +0 -0
  307. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/service/constants.py +0 -0
  308. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/service/events.py +0 -0
  309. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/service/hosts.py +0 -0
  310. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/service/metadata.py +0 -0
  311. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/service/models.py +0 -0
  312. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/service/report.py +0 -0
  313. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/service/usage.py +0 -0
  314. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/specs/__init__.py +0 -0
  315. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/specs/graphql/__init__.py +0 -0
  316. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/specs/graphql/loaders.py +0 -0
  317. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/specs/graphql/nodes.py +0 -0
  318. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/specs/graphql/scalars.py +0 -0
  319. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/specs/graphql/schemas.py +0 -0
  320. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/specs/graphql/validation.py +0 -0
  321. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/specs/openapi/__init__.py +0 -0
  322. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/specs/openapi/checks.py +0 -0
  323. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/specs/openapi/constants.py +0 -0
  324. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/specs/openapi/converter.py +0 -0
  325. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/specs/openapi/definitions.py +0 -0
  326. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/specs/openapi/expressions/__init__.py +0 -0
  327. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/specs/openapi/expressions/context.py +0 -0
  328. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/specs/openapi/expressions/errors.py +0 -0
  329. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/specs/openapi/expressions/lexer.py +0 -0
  330. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/specs/openapi/expressions/nodes.py +0 -0
  331. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/specs/openapi/expressions/parser.py +0 -0
  332. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/specs/openapi/filters.py +0 -0
  333. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/specs/openapi/formats.py +0 -0
  334. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/specs/openapi/links.py +0 -0
  335. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/specs/openapi/loaders.py +0 -0
  336. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/specs/openapi/negative/__init__.py +0 -0
  337. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/specs/openapi/negative/mutations.py +0 -0
  338. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/specs/openapi/negative/types.py +0 -0
  339. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/specs/openapi/negative/utils.py +0 -0
  340. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/specs/openapi/parameters.py +0 -0
  341. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/specs/openapi/references.py +0 -0
  342. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/specs/openapi/security.py +0 -0
  343. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/specs/openapi/serialization.py +0 -0
  344. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/specs/openapi/stateful/__init__.py +0 -0
  345. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/specs/openapi/stateful/links.py +0 -0
  346. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/specs/openapi/utils.py +0 -0
  347. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/specs/openapi/validation.py +0 -0
  348. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/stateful/__init__.py +0 -0
  349. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/stateful/state_machine.py +0 -0
  350. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/targets.py +0 -0
  351. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/throttling.py +0 -0
  352. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/transports/__init__.py +0 -0
  353. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/transports/auth.py +0 -0
  354. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/transports/content_types.py +0 -0
  355. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/transports/headers.py +0 -0
  356. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/transports/responses.py +0 -0
  357. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/types.py +0 -0
  358. {schemathesis-3.25.5 → schemathesis-3.25.6}/src/schemathesis/utils.py +0 -0
  359. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/__init__.py +0 -0
  360. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/apps/__init__.py +0 -0
  361. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/apps/_graphql/__init__.py +0 -0
  362. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/apps/_graphql/_fastapi/__init__.py +0 -0
  363. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/apps/_graphql/_fastapi/app.py +0 -0
  364. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/apps/_graphql/_flask/__init__.py +0 -0
  365. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/apps/_graphql/_flask/app.py +0 -0
  366. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/apps/_graphql/schema.py +0 -0
  367. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/apps/openapi/__init__.py +0 -0
  368. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/apps/openapi/_aiohttp/__init__.py +0 -0
  369. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/apps/openapi/_aiohttp/app.py +0 -0
  370. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/apps/openapi/_aiohttp/handlers.py +0 -0
  371. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/apps/openapi/_fastapi/__init__.py +0 -0
  372. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/apps/openapi/_fastapi/app.py +0 -0
  373. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/apps/openapi/_flask/__init__.py +0 -0
  374. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/apps/openapi/_flask/app.py +0 -0
  375. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/apps/openapi/schema.py +0 -0
  376. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/auth/__init__.py +0 -0
  377. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/auth/conftest.py +0 -0
  378. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/auth/test_cli.py +0 -0
  379. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/auth/test_provider.py +0 -0
  380. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/auth/test_pytest.py +0 -0
  381. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__init__.py +0 -0
  382. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_cassettes/test_forbid_preserve_exact_bytes_without_cassette_path[Open API 3.0].raw +0 -0
  383. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_cassettes/test_forbid_simultaneous_use_of_deprecated_and_new_options[Open API 3.0].raw +0 -0
  384. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_auth_and_authorization_header_are_disallowed[Open API 3.0-Authorization].raw +0 -0
  385. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_auth_and_authorization_header_are_disallowed[Open API 3.0-authorization].raw +0 -0
  386. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_certificate_only_key.raw +0 -0
  387. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_commands_help.raw +0 -0
  388. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_empty_schema_file[args0].raw +0 -0
  389. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_empty_schema_file[args1].raw +0 -0
  390. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_force_color_nocolor[Open API 3.0].raw +0 -0
  391. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_hooks_module_not_found.raw +0 -0
  392. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_hooks_with_inner_import_error.raw +0 -0
  393. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_hypothesis_database_with_derandomize[Open API 3.0].raw +0 -0
  394. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[real-Open API 2.0].raw +0 -0
  395. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[real-Open API 3.0].raw +0 -0
  396. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[wsgi-Open API 2.0].raw +0 -0
  397. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[wsgi-Open API 3.0].raw +0 -0
  398. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_invalid_yaml.raw +0 -0
  399. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_remote_disconnected_error[Open API 3.0].raw +0 -0
  400. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_run_output[args0].raw +0 -0
  401. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_run_output[args10].raw +0 -0
  402. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_run_output[args11].raw +0 -0
  403. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_run_output[args12].raw +0 -0
  404. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_run_output[args13].raw +0 -0
  405. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_run_output[args14].raw +0 -0
  406. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_run_output[args15].raw +0 -0
  407. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_run_output[args16].raw +0 -0
  408. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_run_output[args17].raw +0 -0
  409. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_run_output[args18].raw +0 -0
  410. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_run_output[args19].raw +0 -0
  411. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_run_output[args1].raw +0 -0
  412. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_run_output[args20].raw +0 -0
  413. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_run_output[args21].raw +0 -0
  414. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_run_output[args22].raw +0 -0
  415. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_run_output[args23].raw +0 -0
  416. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_run_output[args24].raw +0 -0
  417. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_run_output[args25].raw +0 -0
  418. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_run_output[args26].raw +0 -0
  419. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_run_output[args27].raw +0 -0
  420. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_run_output[args28].raw +0 -0
  421. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_run_output[args29].raw +0 -0
  422. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_run_output[args2].raw +0 -0
  423. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_run_output[args30].raw +0 -0
  424. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_run_output[args31].raw +0 -0
  425. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_run_output[args32].raw +0 -0
  426. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_run_output[args33].raw +0 -0
  427. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_run_output[args34].raw +0 -0
  428. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_run_output[args35].raw +0 -0
  429. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_run_output[args36].raw +0 -0
  430. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_run_output[args3].raw +0 -0
  431. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_run_output[args4].raw +0 -0
  432. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_run_output[args5].raw +0 -0
  433. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_run_output[args6].raw +0 -0
  434. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_run_output[args7].raw +0 -0
  435. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_run_output[args8].raw +0 -0
  436. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_run_output[args9].raw +0 -0
  437. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_schema_not_available[1].raw +0 -0
  438. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_schema_not_available[2].raw +0 -0
  439. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_schema_not_available_wsgi.raw +0 -0
  440. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/__snapshots__/test_commands/test_wait_for_schema_not_enough.raw +0 -0
  441. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/cert.pem +0 -0
  442. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/conftest.py +0 -0
  443. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/output/__init__.py +0 -0
  444. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/test_callbacks.py +0 -0
  445. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/test_checks.py +0 -0
  446. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/test_hooks.py +0 -0
  447. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/test_junitxml.py +0 -0
  448. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/test_options.py +0 -0
  449. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/cli/test_targeted.py +0 -0
  450. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/code_samples/conftest.py +0 -0
  451. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/code_samples/test_curl.py +0 -0
  452. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/code_samples/test_python.py +0 -0
  453. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/contrib/openapi/formats/test_uuid.py +0 -0
  454. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/contrib/openapi/test_fill_missing_examples.py +0 -0
  455. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/contrib/test_install.py +0 -0
  456. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/contrib/test_unique_data.py +0 -0
  457. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/data/petstore_v2.yaml +0 -0
  458. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/data/petstore_v3.yaml +0 -0
  459. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/data/simple_openapi.yaml +0 -0
  460. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/data/simple_swagger.yaml +0 -0
  461. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/experimental/__snapshots__/test_experiments/test_not_enabled.raw +0 -0
  462. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/experimental/conftest.py +0 -0
  463. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/experimental/test_experiments.py +0 -0
  464. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/experimental/test_openapi_3_1.py +0 -0
  465. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/extra/__init__.py +0 -0
  466. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/extra/test_aiohttp.py +0 -0
  467. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/filters/test_matching.py +0 -0
  468. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/hooks/test_filter_operations.py +0 -0
  469. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/hooks/test_hooks.py +0 -0
  470. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/loaders/conftest.py +0 -0
  471. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/loaders/test_app.py +0 -0
  472. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/loaders/test_common.py +0 -0
  473. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/loaders/test_graphql.py +0 -0
  474. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/loaders/test_openapi.py +0 -0
  475. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/loaders/test_yaml.py +0 -0
  476. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/runner/test_checks.py +0 -0
  477. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/runner/test_events.py +0 -0
  478. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/service/__init__.py +0 -0
  479. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/service/__snapshots__/test_cli/test_client_error_on_project_details[Open API 3.0].raw +0 -0
  480. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/service/__snapshots__/test_cli/test_not_authenticated_with_name.raw +0 -0
  481. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/service/__snapshots__/test_cli/test_two_names.raw +0 -0
  482. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/service/__snapshots__/test_cli/test_unauthorized[Open API 3.0].raw +0 -0
  483. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/service/__snapshots__/test_cli/test_upload_failure[Open API 3.0].raw +0 -0
  484. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/service/__snapshots__/test_cli/test_upload_success[Open API 3.0].raw +0 -0
  485. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/service/conftest.py +0 -0
  486. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/service/test_auth.py +0 -0
  487. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/service/test_ci.py +0 -0
  488. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/service/test_usage.py +0 -0
  489. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/specs/graphql/__snapshots__/test_basic/test_schema_error[ntype Query {n 123(created Int!) Int!n}-.whatever].raw +0 -0
  490. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/specs/graphql/__snapshots__/test_basic/test_schema_error[ntype Query {n func(created Unknown!) Int!n}-.gql].raw +0 -0
  491. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/specs/graphql/test_basic.py +0 -0
  492. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/specs/graphql/test_custom_scalars.py +0 -0
  493. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/specs/graphql/test_pytest.py +0 -0
  494. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/specs/openapi/conftest.py +0 -0
  495. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/specs/openapi/parameters/test_forms.py +0 -0
  496. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/specs/openapi/parameters/test_non_payload.py +0 -0
  497. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/specs/openapi/parameters/test_simple_payloads.py +0 -0
  498. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/specs/openapi/test_expressions.py +0 -0
  499. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/specs/openapi/test_hypothesis.py +0 -0
  500. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/specs/openapi/test_links.py +0 -0
  501. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/specs/openapi/test_negative.py +0 -0
  502. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/specs/openapi/test_parameters.py +0 -0
  503. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/specs/openapi/test_schemas.py +0 -0
  504. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/specs/openapi/test_security.py +0 -0
  505. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/specs/openapi/test_serializing.py +0 -0
  506. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/specs/openapi/test_stateful.py +0 -0
  507. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/specs/openapi/test_utils.py +0 -0
  508. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/specs/openapi/test_validation.py +0 -0
  509. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/test_app.py +0 -0
  510. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/test_asgi.py +0 -0
  511. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/test_async.py +0 -0
  512. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/test_common_parameters.py +0 -0
  513. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/test_converter.py +0 -0
  514. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/test_dereferencing.py +0 -0
  515. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/test_direct_access.py +0 -0
  516. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/test_errors.py +0 -0
  517. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/test_examples.py +0 -0
  518. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/test_filters.py +0 -0
  519. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/test_fixups.py +0 -0
  520. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/test_hypothesis.py +0 -0
  521. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/test_internal.py +0 -0
  522. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/test_lazy.py +0 -0
  523. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/test_models.py +0 -0
  524. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/test_package.py +0 -0
  525. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/test_parameters.py +0 -0
  526. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/test_parametrization.py +0 -0
  527. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/test_petstore.py +0 -0
  528. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/test_pytest.py +0 -0
  529. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/test_rate_limit.py +0 -0
  530. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/test_recoverable_errors.py +0 -0
  531. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/test_required.py +0 -0
  532. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/test_sanitizing_output.py +0 -0
  533. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/test_schemas.py +0 -0
  534. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/test_serialization.py +0 -0
  535. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/test_stateful.py +0 -0
  536. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/test_unittest.py +0 -0
  537. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/test_utils.py +0 -0
  538. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/test_wsgi.py +0 -0
  539. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/transports/test_content_types.py +0 -0
  540. {schemathesis-3.25.5 → schemathesis-3.25.6}/test/utils.py +0 -0
  541. {schemathesis-3.25.5 → schemathesis-3.25.6}/test-corpus/test_corpus.py +0 -0
  542. {schemathesis-3.25.5 → schemathesis-3.25.6}/test_server.sh +0 -0
  543. {schemathesis-3.25.5 → schemathesis-3.25.6}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: schemathesis
3
- Version: 3.25.5
3
+ Version: 3.25.6
4
4
  Summary: Property-based testing framework for Open API and GraphQL based apps
5
5
  Project-URL: Documentation, https://schemathesis.readthedocs.io/en/stable/
6
6
  Project-URL: Changelog, https://schemathesis.readthedocs.io/en/stable/changelog.html
@@ -1,9 +1,25 @@
1
1
  Changelog
2
2
  =========
3
3
 
4
- :version:`Unreleased <v3.25.5...HEAD>` - TBD
4
+ :version:`Unreleased <v3.25.6...HEAD>` - TBD
5
5
  --------------------------------------------
6
6
 
7
+ .. _v3.25.6:
8
+
9
+ :version:`3.25.6 <v3.25.5...v3.25.6>` - 2024-03-02
10
+ --------------------------------------------------
11
+
12
+ **Fixed**
13
+
14
+ - Not respecting ``allow_x00`` and ``codec`` configs options during filling gaps in explicit examples.
15
+ - Internal error when sending ``multipart/form-data`` requests when the schema defines the ``*/*`` content type.
16
+ - Internal error when YAML payload definition contains nested ``binary`` format.
17
+ - Internal error when an Open API 2.0 schema contains no ``swagger`` key and the schema version is forced.
18
+
19
+ **Changed**
20
+
21
+ - Indicate API probing results in CLI.
22
+
7
23
  .. _v3.25.5:
8
24
 
9
25
  :version:`3.25.5 <v3.25.4...v3.25.5>` - 2024-02-29
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "schemathesis"
7
- version = "3.25.5"
7
+ version = "3.25.6"
8
8
  description = "Property-based testing framework for Open API and GraphQL based apps"
9
9
  keywords = ["pytest", "hypothesis", "openapi", "graphql", "testing"]
10
10
  authors = [{ name = "Dmitry Dygalo", email = "dadygalo@gmail.com" }]
@@ -41,16 +41,15 @@ from .._override import CaseOverride
41
41
  from ..transports.auth import get_requests_auth
42
42
  from ..hooks import GLOBAL_HOOK_DISPATCHER, HookContext, HookDispatcher, HookScope
43
43
  from ..models import Case, CheckFunction
44
- from ..runner import events, prepare_hypothesis_settings
44
+ from ..runner import events, prepare_hypothesis_settings, probes
45
45
  from ..specs.graphql import loaders as gql_loaders
46
46
  from ..specs.openapi import loaders as oas_loaders
47
- from ..specs.openapi import formats
48
47
  from ..stateful import Stateful
49
48
  from ..targets import Target
50
49
  from ..types import Filter, PathLike, RequestCert
51
50
  from ..internal.datetime import current_datetime
52
51
  from ..internal.validation import file_exists
53
- from . import callbacks, cassettes, output, probes
52
+ from . import callbacks, cassettes, output
54
53
  from .constants import DEFAULT_WORKERS, MAX_WORKERS, MIN_WORKERS
55
54
  from .context import ExecutionContext, FileReportContext, ServiceReportContext
56
55
  from .debug import DebugOutputHandler
@@ -1100,10 +1099,9 @@ def into_event_stream(
1100
1099
  tag=tag or None,
1101
1100
  operation_id=operation_id or None,
1102
1101
  )
1103
- loaded_schema = load_schema(config)
1104
- run_probes(loaded_schema, config)
1102
+ schema = load_schema(config)
1105
1103
  yield from runner.from_schema(
1106
- loaded_schema,
1104
+ schema,
1107
1105
  auth=auth,
1108
1106
  auth_type=auth_type,
1109
1107
  override=override,
@@ -1126,6 +1124,15 @@ def into_event_stream(
1126
1124
  stateful_recursion_limit=stateful_recursion_limit,
1127
1125
  hypothesis_settings=hypothesis_settings,
1128
1126
  generation_config=generation_config,
1127
+ probe_config=probes.ProbeConfig(
1128
+ base_url=config.base_url,
1129
+ request_tls_verify=config.request_tls_verify,
1130
+ request_proxy=config.request_proxy,
1131
+ request_cert=config.request_cert,
1132
+ auth=config.auth,
1133
+ auth_type=config.auth_type,
1134
+ headers=config.headers,
1135
+ ),
1129
1136
  ).execute()
1130
1137
  except SchemaError as error:
1131
1138
  yield events.InternalError.from_schema_error(error)
@@ -1133,19 +1140,6 @@ def into_event_stream(
1133
1140
  yield events.InternalError.from_exc(exc)
1134
1141
 
1135
1142
 
1136
- def run_probes(schema: BaseSchema, config: LoaderConfig) -> None:
1137
- """Discover capabilities of the tested app."""
1138
- probe_results = probes.run(schema, config)
1139
- for result in probe_results:
1140
- if isinstance(result.probe, probes.NullByteInHeader) and result.is_failure:
1141
- from ..specs.openapi._hypothesis import HEADER_FORMAT, header_values
1142
-
1143
- formats.register(
1144
- HEADER_FORMAT,
1145
- header_values(blacklist_characters="\n\r\x00").map(str.lstrip),
1146
- )
1147
-
1148
-
1149
1143
  def load_schema(config: LoaderConfig) -> BaseSchema:
1150
1144
  """Automatically load API schema."""
1151
1145
  first: Callable[[LoaderConfig], BaseSchema]
@@ -1,4 +1,5 @@
1
1
  from __future__ import annotations
2
+
2
3
  import os
3
4
  import shutil
4
5
  from dataclasses import dataclass, field
@@ -8,6 +9,7 @@ from typing import TYPE_CHECKING
8
9
  from ..code_samples import CodeSampleStyle
9
10
  from ..internal.deprecation import deprecated_property
10
11
  from ..runner.serialization import SerializedTestResult
12
+ from ..runner.probes import ProbeRun
11
13
 
12
14
  if TYPE_CHECKING:
13
15
  import hypothesis
@@ -49,6 +51,7 @@ class ExecutionContext:
49
51
  verbosity: int = 0
50
52
  code_sample_style: CodeSampleStyle = CodeSampleStyle.default()
51
53
  report: ServiceReportContext | FileReportContext | None = None
54
+ probes: list[ProbeRun] | None = None
52
55
 
53
56
  @deprecated_property(removed_in="4.0", replacement="show_trace")
54
57
  def show_errors_tracebacks(self) -> bool:
@@ -1,35 +1,37 @@
1
1
  from __future__ import annotations
2
+
2
3
  import base64
3
4
  import os
4
5
  import platform
5
6
  import shutil
6
7
  import textwrap
7
8
  import time
9
+ from importlib import metadata
8
10
  from itertools import groupby
9
11
  from queue import Queue
10
12
  from typing import Any, Generator, cast
11
13
 
12
14
  import click
13
- from importlib import metadata
14
15
 
15
16
  from ... import service
16
17
  from ...code_samples import CodeSampleStyle
17
18
  from ...constants import (
18
19
  DISCORD_LINK,
20
+ FALSE_VALUES,
19
21
  FLAKY_FAILURE_MESSAGE,
22
+ GITHUB_APP_LINK,
23
+ ISSUE_TRACKER_URL,
20
24
  REPORT_SUGGESTION_ENV_VAR,
21
25
  SCHEMATHESIS_TEST_CASE_HEADER,
22
26
  SCHEMATHESIS_VERSION,
23
- FALSE_VALUES,
24
- ISSUE_TRACKER_URL,
25
- GITHUB_APP_LINK,
26
27
  )
27
28
  from ...exceptions import RuntimeErrorType, prepare_response_payload
28
29
  from ...experimental import GLOBAL_EXPERIMENTS
29
30
  from ...models import Status
30
31
  from ...runner import events
31
32
  from ...runner.events import InternalErrorType, SchemaErrorType
32
- from ...runner.serialization import SerializedError, SerializedTestResult, deduplicate_failures, SerializedCheck
33
+ from ...runner.probes import ProbeOutcome
34
+ from ...runner.serialization import SerializedCheck, SerializedError, SerializedTestResult, deduplicate_failures
33
35
  from ..context import ExecutionContext, FileReportContext, ServiceReportContext
34
36
  from ..handlers import EventHandler
35
37
 
@@ -487,7 +489,7 @@ def display_service_unauthorized(hostname: str) -> None:
487
489
 
488
490
  def display_service_error(event: service.Error, message_prefix: str = "") -> None:
489
491
  """Show information about an error during communication with Schemathesis.io."""
490
- from requests import RequestException, HTTPError, Response
492
+ from requests import HTTPError, RequestException, Response
491
493
 
492
494
  if isinstance(event.exception, HTTPError):
493
495
  response = cast(Response, event.exception.response)
@@ -694,7 +696,26 @@ def handle_initialized(context: ExecutionContext, event: events.Initialized) ->
694
696
  click.secho(f"Collected API links: {links_count}", bold=True)
695
697
  if isinstance(context.report, ServiceReportContext):
696
698
  click.secho("Report to Schemathesis.io: ENABLED", bold=True)
697
- if context.operations_count >= 1:
699
+
700
+
701
+ def handle_before_probing(context: ExecutionContext, event: events.BeforeProbing) -> None:
702
+ click.secho("API probing: ...\r", bold=True, nl=False)
703
+
704
+
705
+ def handle_after_probing(context: ExecutionContext, event: events.AfterProbing) -> None:
706
+ context.probes = event.probes
707
+ status = "SKIP"
708
+ if event.probes is not None:
709
+ for probe in event.probes:
710
+ if probe.outcome in (ProbeOutcome.SUCCESS, ProbeOutcome.FAILURE):
711
+ # The probe itself has been executed
712
+ status = "SUCCESS"
713
+ elif probe.outcome == ProbeOutcome.ERROR:
714
+ status = "ERROR"
715
+ click.secho(f"API probing: {status}\r", bold=True, nl=False)
716
+ click.echo()
717
+ operations_count = cast(int, context.operations_count) # INVARIANT: should not be `None`
718
+ if operations_count >= 1:
698
719
  click.echo()
699
720
 
700
721
 
@@ -752,6 +773,10 @@ class DefaultOutputStyleHandler(EventHandler):
752
773
  """Choose and execute a proper handler for the given event."""
753
774
  if isinstance(event, events.Initialized):
754
775
  handle_initialized(context, event)
776
+ if isinstance(event, events.BeforeProbing):
777
+ handle_before_probing(context, event)
778
+ if isinstance(event, events.AfterProbing):
779
+ handle_after_probing(context, event)
755
780
  if isinstance(event, events.BeforeExecution):
756
781
  handle_before_execution(context, event)
757
782
  if isinstance(event, events.AfterExecution):
@@ -26,6 +26,10 @@ class ShortOutputStyleHandler(EventHandler):
26
26
  """
27
27
  if isinstance(event, events.Initialized):
28
28
  default.handle_initialized(context, event)
29
+ if isinstance(event, events.BeforeProbing):
30
+ default.handle_before_probing(context, event)
31
+ if isinstance(event, events.AfterProbing):
32
+ default.handle_after_probing(context, event)
29
33
  if isinstance(event, events.BeforeExecution):
30
34
  handle_before_execution(context, event)
31
35
  if isinstance(event, events.AfterExecution):
@@ -960,9 +960,12 @@ class Response:
960
960
  @classmethod
961
961
  def from_requests(cls, response: requests.Response) -> Response:
962
962
  """Create a response from requests.Response."""
963
- headers = {name: response.raw.headers.getlist(name) for name in response.raw.headers.keys()}
963
+ raw = response.raw
964
+ raw_headers = raw.headers if raw is not None else {}
965
+ headers = {name: response.raw.headers.getlist(name) for name in raw_headers.keys()}
964
966
  # Similar to http.client:319 (HTTP version detection in stdlib's `http` package)
965
- http_version = "1.0" if response.raw.version == 10 else "1.1"
967
+ version = raw.version if raw is not None else 10
968
+ http_version = "1.0" if version == 10 else "1.1"
966
969
 
967
970
  def is_empty(_response: requests.Response) -> bool:
968
971
  # Assume the response is empty if:
@@ -1,34 +1,36 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  from random import Random
4
- from typing import Any, Callable, Generator, Iterable, TYPE_CHECKING
4
+ from typing import TYPE_CHECKING, Any, Callable, Generator, Iterable
5
5
  from urllib.parse import urlparse
6
6
 
7
7
  from .._override import CaseOverride
8
- from ..generation import DEFAULT_DATA_GENERATION_METHODS, DataGenerationMethod, GenerationConfig
9
8
  from ..constants import (
10
9
  DEFAULT_DEADLINE,
11
10
  DEFAULT_STATEFUL_RECURSION_LIMIT,
12
11
  HYPOTHESIS_IN_MEMORY_DATABASE_IDENTIFIER,
13
12
  )
14
- from ..internal.deprecation import deprecated_function
13
+ from ..exceptions import SchemaError
14
+ from ..generation import DEFAULT_DATA_GENERATION_METHODS, DataGenerationMethod, GenerationConfig
15
15
  from ..internal.datetime import current_datetime
16
+ from ..internal.deprecation import deprecated_function
16
17
  from ..internal.validation import file_exists
17
- from ..transports.auth import get_requests_auth
18
- from ..exceptions import SchemaError
19
18
  from ..loaders import load_app
20
19
  from ..specs.graphql import loaders as gql_loaders
21
20
  from ..specs.openapi import loaders as oas_loaders
22
21
  from ..targets import DEFAULT_TARGETS, Target
22
+ from ..transports.auth import get_requests_auth
23
23
  from ..types import Filter, NotSet, RawAuth, RequestCert
24
+ from .probes import ProbeConfig
24
25
 
25
26
  if TYPE_CHECKING:
26
- from . import events
27
+ import hypothesis
28
+
27
29
  from ..models import CheckFunction
28
30
  from ..schemas import BaseSchema
29
- from .impl import BaseRunner
30
31
  from ..stateful import Stateful
31
- import hypothesis
32
+ from . import events
33
+ from .impl import BaseRunner
32
34
 
33
35
 
34
36
  @deprecated_function(removed_in="4.0", replacement="schemathesis.runner.from_schema")
@@ -75,6 +77,7 @@ def prepare(
75
77
  hypothesis_report_multiple_bugs: bool | None = None,
76
78
  hypothesis_suppress_health_check: list[hypothesis.HealthCheck] | None = None,
77
79
  hypothesis_verbosity: hypothesis.Verbosity | None = None,
80
+ probe_config: ProbeConfig | None = None,
78
81
  ) -> Generator[events.ExecutionEvent, None, None]:
79
82
  """Prepare a generator that will run test cases against the given API definition."""
80
83
  from ..checks import DEFAULT_CHECKS
@@ -128,6 +131,7 @@ def prepare(
128
131
  stateful_recursion_limit=stateful_recursion_limit,
129
132
  count_operations=count_operations,
130
133
  count_links=count_links,
134
+ probe_config=probe_config,
131
135
  )
132
136
 
133
137
 
@@ -188,6 +192,7 @@ def execute_from_schema(
188
192
  stateful_recursion_limit: int = DEFAULT_STATEFUL_RECURSION_LIMIT,
189
193
  count_operations: bool = True,
190
194
  count_links: bool = True,
195
+ probe_config: ProbeConfig | None = None,
191
196
  ) -> Generator[events.ExecutionEvent, None, None]:
192
197
  """Execute tests for the given schema.
193
198
 
@@ -237,6 +242,7 @@ def execute_from_schema(
237
242
  stateful_recursion_limit=stateful_recursion_limit,
238
243
  count_operations=count_operations,
239
244
  count_links=count_links,
245
+ probe_config=probe_config,
240
246
  ).execute()
241
247
  except SchemaError as error:
242
248
  yield events.InternalError.from_schema_error(error)
@@ -341,9 +347,11 @@ def from_schema(
341
347
  stateful_recursion_limit: int = DEFAULT_STATEFUL_RECURSION_LIMIT,
342
348
  count_operations: bool = True,
343
349
  count_links: bool = True,
350
+ probe_config: ProbeConfig | None = None,
344
351
  ) -> BaseRunner:
345
- from starlette.applications import Starlette
346
352
  import hypothesis
353
+ from starlette.applications import Starlette
354
+
347
355
  from ..checks import DEFAULT_CHECKS
348
356
  from .impl import (
349
357
  SingleThreadASGIRunner,
@@ -355,6 +363,7 @@ def from_schema(
355
363
  )
356
364
 
357
365
  checks = checks or DEFAULT_CHECKS
366
+ probe_config = probe_config or ProbeConfig()
358
367
 
359
368
  hypothesis_settings = hypothesis_settings or hypothesis.settings(deadline=DEFAULT_DEADLINE)
360
369
  generation_config = generation_config or GenerationConfig()
@@ -392,6 +401,7 @@ def from_schema(
392
401
  stateful_recursion_limit=stateful_recursion_limit,
393
402
  count_operations=count_operations,
394
403
  count_links=count_links,
404
+ probe_config=probe_config,
395
405
  )
396
406
  if isinstance(schema.app, Starlette):
397
407
  return ThreadPoolASGIRunner(
@@ -415,6 +425,7 @@ def from_schema(
415
425
  stateful_recursion_limit=stateful_recursion_limit,
416
426
  count_operations=count_operations,
417
427
  count_links=count_links,
428
+ probe_config=probe_config,
418
429
  )
419
430
  return ThreadPoolWSGIRunner(
420
431
  schema=schema,
@@ -438,6 +449,7 @@ def from_schema(
438
449
  stateful_recursion_limit=stateful_recursion_limit,
439
450
  count_operations=count_operations,
440
451
  count_links=count_links,
452
+ probe_config=probe_config,
441
453
  )
442
454
  if not schema.app:
443
455
  return SingleThreadRunner(
@@ -465,6 +477,7 @@ def from_schema(
465
477
  stateful_recursion_limit=stateful_recursion_limit,
466
478
  count_operations=count_operations,
467
479
  count_links=count_links,
480
+ probe_config=probe_config,
468
481
  )
469
482
  if isinstance(schema.app, Starlette):
470
483
  return SingleThreadASGIRunner(
@@ -488,6 +501,7 @@ def from_schema(
488
501
  stateful_recursion_limit=stateful_recursion_limit,
489
502
  count_operations=count_operations,
490
503
  count_links=count_links,
504
+ probe_config=probe_config,
491
505
  )
492
506
  return SingleThreadWSGIRunner(
493
507
  schema=schema,
@@ -510,6 +524,7 @@ def from_schema(
510
524
  stateful_recursion_limit=stateful_recursion_limit,
511
525
  count_operations=count_operations,
512
526
  count_links=count_links,
527
+ probe_config=probe_config,
513
528
  )
514
529
 
515
530
 
@@ -14,6 +14,7 @@ from .serialization import SerializedError, SerializedTestResult
14
14
  if TYPE_CHECKING:
15
15
  from ..models import APIOperation, Status, TestResult, TestResultSet
16
16
  from ..schemas import BaseSchema
17
+ from . import probes
17
18
 
18
19
 
19
20
  @dataclass
@@ -60,6 +61,7 @@ class Initialized(ExecutionEvent):
60
61
  schema: BaseSchema,
61
62
  count_operations: bool = True,
62
63
  count_links: bool = True,
64
+ start_time: float | None = None,
63
65
  started_at: str | None = None,
64
66
  seed: int | None,
65
67
  ) -> Initialized:
@@ -70,12 +72,27 @@ class Initialized(ExecutionEvent):
70
72
  links_count=schema.links_count if count_links else None,
71
73
  location=schema.location,
72
74
  base_url=schema.get_base_url(),
75
+ start_time=start_time or time.monotonic(),
73
76
  started_at=started_at or current_datetime(),
74
77
  specification_name=schema.verbose_name,
75
78
  seed=seed,
76
79
  )
77
80
 
78
81
 
82
+ @dataclass
83
+ class BeforeProbing(ExecutionEvent):
84
+ pass
85
+
86
+
87
+ @dataclass
88
+ class AfterProbing(ExecutionEvent):
89
+ probes: list[probes.ProbeRun] | None
90
+
91
+ def asdict(self, **kwargs: Any) -> dict[str, Any]:
92
+ probes = self.probes or []
93
+ return {"probes": [probe.serialize() for probe in probes], "events_type": self.__class__.__name__}
94
+
95
+
79
96
  class CurrentOperationMixin:
80
97
  method: str
81
98
  path: str
@@ -188,6 +205,9 @@ class InternalErrorType(str, enum.Enum):
188
205
  OTHER = "other"
189
206
 
190
207
 
208
+ DEFAULT_INTERNAL_ERROR_MESSAGE = "An internal error occurred during the test run"
209
+
210
+
191
211
  @dataclass
192
212
  class InternalError(ExecutionEvent):
193
213
  """An error that happened inside the runner."""
@@ -226,7 +246,7 @@ class InternalError(ExecutionEvent):
226
246
  type_=InternalErrorType.OTHER,
227
247
  subtype=None,
228
248
  title="Test Execution Error",
229
- message="An internal error occurred during the test run",
249
+ message=DEFAULT_INTERNAL_ERROR_MESSAGE,
230
250
  extras=[],
231
251
  )
232
252
 
@@ -1,4 +1,5 @@
1
1
  from __future__ import annotations
2
+
2
3
  import logging
3
4
  import re
4
5
  import threading
@@ -8,7 +9,7 @@ import uuid
8
9
  from contextlib import contextmanager
9
10
  from dataclasses import dataclass, field
10
11
  from types import TracebackType
11
- from typing import Any, Callable, Generator, Iterable, cast, TYPE_CHECKING, Literal
12
+ from typing import TYPE_CHECKING, Any, Callable, Generator, Iterable, List, Literal, cast
12
13
  from warnings import WarningMessage, catch_warnings
13
14
 
14
15
  import hypothesis
@@ -16,53 +17,56 @@ import requests
16
17
  from _pytest.logging import LogCaptureHandler, catching_logs
17
18
  from hypothesis.errors import HypothesisException, InvalidArgument
18
19
  from hypothesis_jsonschema._canonicalise import HypothesisRefResolutionError
19
- from jsonschema.exceptions import ValidationError, SchemaError as JsonSchemaError
20
+ from jsonschema.exceptions import SchemaError as JsonSchemaError
21
+ from jsonschema.exceptions import ValidationError
20
22
  from requests.auth import HTTPDigestAuth, _basic_auth_str
21
23
 
22
- from ..._override import CaseOverride
23
24
  from ... import failures, hooks
24
25
  from ..._compat import MultipleFailures
25
26
  from ..._hypothesis import (
26
- has_unsatisfied_example_mark,
27
- get_non_serializable_mark,
28
- get_invalid_regex_mark,
29
27
  get_invalid_example_headers_mark,
28
+ get_invalid_regex_mark,
29
+ get_non_serializable_mark,
30
+ has_unsatisfied_example_mark,
30
31
  )
32
+ from ..._override import CaseOverride
31
33
  from ...auths import unregister as unregister_auth
32
- from ...generation import DataGenerationMethod, GenerationConfig
33
34
  from ...constants import (
34
35
  DEFAULT_STATEFUL_RECURSION_LIMIT,
35
36
  RECURSIVE_REFERENCE_ERROR_MESSAGE,
36
- USER_AGENT,
37
37
  SERIALIZERS_SUGGESTION_MESSAGE,
38
+ USER_AGENT,
38
39
  )
39
40
  from ...exceptions import (
40
41
  CheckFailed,
41
42
  DeadlineExceeded,
43
+ InvalidHeadersExample,
42
44
  InvalidRegularExpression,
43
45
  NonCheckError,
44
46
  OperationSchemaError,
47
+ SerializationNotPossible,
45
48
  SkipTest,
49
+ format_exception,
46
50
  get_grouped_exception,
47
51
  maybe_set_assertion_message,
48
- format_exception,
49
- SerializationNotPossible,
50
- InvalidHeadersExample,
51
52
  )
53
+ from ...generation import DataGenerationMethod, GenerationConfig
52
54
  from ...hooks import HookContext, get_all_by_name
55
+ from ...internal.datetime import current_datetime
53
56
  from ...internal.result import Ok
54
57
  from ...models import APIOperation, Case, Check, CheckFunction, Status, TestResult, TestResultSet
55
58
  from ...runner import events
56
- from ...internal.datetime import current_datetime
57
59
  from ...schemas import BaseSchema
60
+ from ...specs.openapi import formats
58
61
  from ...stateful import Feedback, Stateful
59
62
  from ...targets import Target, TargetContext
60
63
  from ...types import RawAuth, RequestCert
61
64
  from ...utils import capture_hypothesis_output
65
+ from .. import probes
62
66
  from ..serialization import SerializedTestResult
63
67
 
64
68
  if TYPE_CHECKING:
65
- from ...transports.responses import WSGIResponse, GenericResponse
69
+ from ...transports.responses import GenericResponse, WSGIResponse
66
70
 
67
71
 
68
72
  def _should_count_towards_stop(event: events.ExecutionEvent) -> bool:
@@ -77,6 +81,7 @@ class BaseRunner:
77
81
  targets: Iterable[Target]
78
82
  hypothesis_settings: hypothesis.settings
79
83
  generation_config: GenerationConfig
84
+ probe_config: probes.ProbeConfig
80
85
  override: CaseOverride | None = None
81
86
  auth: RawAuth | None = None
82
87
  auth_type: str | None = None
@@ -104,26 +109,56 @@ class BaseRunner:
104
109
  if self.auth is not None:
105
110
  unregister_auth()
106
111
  results = TestResultSet(seed=self.seed)
107
-
108
- initialized = events.Initialized.from_schema(
109
- schema=self.schema, count_operations=self.count_operations, count_links=self.count_links, seed=self.seed
110
- )
112
+ initialized = None
113
+ __probes = None
114
+ start_time = time.monotonic()
115
+
116
+ def _initialize() -> events.Initialized:
117
+ nonlocal initialized
118
+ initialized = events.Initialized.from_schema(
119
+ schema=self.schema,
120
+ count_operations=self.count_operations,
121
+ count_links=self.count_links,
122
+ seed=self.seed,
123
+ start_time=start_time,
124
+ )
125
+ return initialized
111
126
 
112
127
  def _finish() -> events.Finished:
113
128
  if has_all_not_found(results):
114
129
  results.add_warning(ALL_NOT_FOUND_WARNING_MESSAGE)
115
- return events.Finished.from_results(results=results, running_time=time.monotonic() - initialized.start_time)
130
+ return events.Finished.from_results(results=results, running_time=time.monotonic() - start_time)
116
131
 
117
- if stop_event.is_set():
118
- yield _finish()
119
- return
132
+ def _before_probes() -> events.BeforeProbing:
133
+ return events.BeforeProbing()
120
134
 
121
- yield initialized
135
+ def _run_probes() -> None:
136
+ if not self.dry_run:
137
+ nonlocal __probes
138
+
139
+ __probes = run_probes(self.schema, self.probe_config)
140
+
141
+ def _after_probes() -> events.AfterProbing:
142
+ _probes = cast(List[probes.ProbeRun], __probes)
143
+ return events.AfterProbing(probes=_probes)
122
144
 
123
145
  if stop_event.is_set():
124
146
  yield _finish()
125
147
  return
126
148
 
149
+ for event_factory in (
150
+ _initialize,
151
+ _before_probes,
152
+ _run_probes,
153
+ _after_probes,
154
+ ):
155
+ event = event_factory()
156
+ if event is not None:
157
+ yield event
158
+ if stop_event.is_set():
159
+ yield _finish()
160
+ return
161
+
127
162
  try:
128
163
  yield from self._execute(results, stop_event)
129
164
  except KeyboardInterrupt:
@@ -228,6 +263,20 @@ class BaseRunner:
228
263
  )
229
264
 
230
265
 
266
+ def run_probes(schema: BaseSchema, config: probes.ProbeConfig) -> list[probes.ProbeRun]:
267
+ """Discover capabilities of the tested app."""
268
+ results = probes.run(schema, config)
269
+ for result in results:
270
+ if isinstance(result.probe, probes.NullByteInHeader) and result.is_failure:
271
+ from ...specs.openapi._hypothesis import HEADER_FORMAT, header_values
272
+
273
+ formats.register(
274
+ HEADER_FORMAT,
275
+ header_values(blacklist_characters="\n\r\x00").map(str.lstrip),
276
+ )
277
+ return results
278
+
279
+
231
280
  @dataclass
232
281
  class EventStream:
233
282
  """Schemathesis event stream.