schemathesis 3.39.9__tar.gz → 3.39.11__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 (692) hide show
  1. {schemathesis-3.39.9 → schemathesis-3.39.11}/PKG-INFO +1 -1
  2. {schemathesis-3.39.9 → schemathesis-3.39.11}/docs/changelog.rst +36 -2
  3. {schemathesis-3.39.9 → schemathesis-3.39.11}/docs/contrib.rst +1 -1
  4. {schemathesis-3.39.9 → schemathesis-3.39.11}/pyproject.toml +1 -1
  5. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/_hypothesis.py +194 -54
  6. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/cli/output/default.py +0 -16
  7. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/constants.py +0 -2
  8. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/failures.py +6 -0
  9. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/internal/checks.py +3 -1
  10. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/runner/impl/context.py +0 -16
  11. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/runner/impl/core.py +39 -5
  12. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/specs/openapi/checks.py +6 -1
  13. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/specs/openapi/examples.py +3 -5
  14. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/specs/openapi/patterns.py +18 -3
  15. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/specs/openapi/serialization.py +12 -0
  16. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/__snapshots__/test_dereferencing/test_global_security_schemes_with_custom_scope.raw +0 -3
  17. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/__snapshots__/test_dereferencing/test_missing_file_in_resolution.raw +0 -3
  18. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/__snapshots__/test_hypothesis/test_health_check_failed_large_base_example.raw +0 -3
  19. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/__snapshots__/test_recoverable_errors/test_in_cli[1].raw +0 -3
  20. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/__snapshots__/test_recoverable_errors/test_in_cli[2].raw +0 -3
  21. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/__snapshots__/test_serialization/test_in_cli[Open API 3.0].raw +0 -3
  22. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/apps/openapi/_aiohttp/handlers.py +8 -0
  23. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/apps/openapi/schema.py +2 -0
  24. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/auth/__snapshots__/test_cli/test_conditional[Open API 3.0].raw +0 -3
  25. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/auth/__snapshots__/test_cli/test_custom_auth[Open API 3.0].raw +0 -3
  26. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/auth/__snapshots__/test_cli/test_explicit_auth_precedence[Open API 3.0-args0-Basic dXNlcjpwYXNz].raw +0 -3
  27. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/auth/__snapshots__/test_cli/test_explicit_auth_precedence[Open API 3.0-args1-Bearer EXPLICIT].raw +0 -3
  28. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/auth/__snapshots__/test_cli/test_multiple_auth_mechanisms_with_explicit_auth.raw +0 -3
  29. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/auth/__snapshots__/test_cli/test_multiple_threads[Open API 3.0].raw +1 -2
  30. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/auth/__snapshots__/test_cli/test_requests_auth[Open API 3.0].raw +0 -3
  31. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_checks/test_deduplication_on_sanitized_header.raw +0 -3
  32. schemathesis-3.39.11/test/cli/__snapshots__/test_checks/test_negative_data_rejection_displays_all_cases.raw +103 -0
  33. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args0].raw +1 -4
  34. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args10].raw +0 -5
  35. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args1].raw +1 -4
  36. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args2].raw +0 -5
  37. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args3].raw +1 -4
  38. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args4].raw +0 -5
  39. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args5].raw +1 -4
  40. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args6].raw +0 -5
  41. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args7].raw +1 -4
  42. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance_with_env_vars.raw +0 -5
  43. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_add_case_output[Open API 2.0].raw +0 -3
  44. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_add_case_output[Open API 3.0].raw +0 -3
  45. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 2.0---auth='testwrong'].raw +0 -3
  46. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 2.0--H Authorization Basic J3Rlc3Q6d3Jvbmcn].raw +0 -3
  47. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 3.0---auth='testwrong'].raw +0 -3
  48. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 3.0--H Authorization Basic J3Rlc3Q6d3Jvbmcn].raw +0 -3
  49. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_binary_payload.raw +0 -3
  50. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_chunked_encoding_error[Open API 3.0].raw +0 -3
  51. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 2.0-1].raw +0 -3
  52. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 2.0-2].raw +0 -3
  53. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 3.0-1].raw +0 -3
  54. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 3.0-2].raw +0 -3
  55. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 2.0-1].raw +0 -3
  56. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 2.0-2].raw +0 -3
  57. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 3.0-1].raw +0 -3
  58. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 3.0-2].raw +0 -3
  59. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_complex_urlencoded_example.raw +1 -4
  60. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 2.0-1].raw +0 -3
  61. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 2.0-2].raw +0 -3
  62. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 3.0-1].raw +0 -3
  63. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 3.0-2].raw +0 -3
  64. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 2.0-1].raw +0 -3
  65. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 2.0-2].raw +0 -3
  66. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 3.0-1].raw +0 -3
  67. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 3.0-2].raw +0 -3
  68. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_custom_cli_option[Open API 3.0].raw +0 -3
  69. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_deprecated_filters[Open API 3.0].raw +0 -3
  70. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_explicit_example_failure_output.raw +0 -3
  71. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_explicit_headers_in_output_on_errors[Open API 3.0].raw +0 -3
  72. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_explicit_query_token_sanitization[Open API 3.0].raw +0 -3
  73. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_filter_by[Open API 3.0---exclude-by=x-property != 42].raw +0 -3
  74. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_filter_by[Open API 3.0---include-by=x-property == 42].raw +0 -3
  75. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_get_request_with_body[Open API 2.0].raw +0 -3
  76. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_get_request_with_body[Open API 3.0].raw +0 -3
  77. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_graphql_asgi.raw +0 -3
  78. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_graphql_url[foo-args0].raw +0 -3
  79. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_graphql_url[foo-args1].raw +0 -3
  80. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_graphql_url[graphql-args0].raw +0 -3
  81. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_graphql_url[graphql-args1].raw +0 -3
  82. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_group_errors.raw +0 -3
  83. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 2.0-1].raw +0 -3
  84. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 2.0-2].raw +0 -3
  85. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 3.0-1].raw +0 -3
  86. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 3.0-2].raw +0 -3
  87. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 2.0-1].raw +0 -3
  88. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 2.0-2].raw +0 -3
  89. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 3.0-1].raw +0 -3
  90. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 3.0-2].raw +0 -3
  91. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_invalid_schema_with_disabled_validation[3.0.2].raw +0 -3
  92. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_invalid_schema_with_disabled_validation[3.1.0].raw +0 -3
  93. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_long_payload.raw +0 -3
  94. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_malformed_json_deduplication[real-Open API 3.0].raw +0 -3
  95. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_malformed_json_deduplication[wsgi-Open API 3.0].raw +0 -3
  96. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 2.0-1].raw +0 -3
  97. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 2.0-2].raw +0 -3
  98. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 3.0-1].raw +0 -3
  99. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 3.0-2].raw +0 -3
  100. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[cookie-None].raw +0 -3
  101. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[cookie-http127.0.0.1apiv2].raw +0 -3
  102. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[header-None].raw +0 -3
  103. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[header-http127.0.0.1apiv2].raw +0 -3
  104. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[path-None].raw +0 -3
  105. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[path-http127.0.0.1apiv2].raw +0 -3
  106. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[query-None].raw +0 -3
  107. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[query-http127.0.0.1apiv2].raw +0 -3
  108. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_multiple_errors.raw +0 -3
  109. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_multiple_failures_different_check[Open API 2.0].raw +0 -3
  110. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_multiple_failures_different_check[Open API 3.0].raw +0 -3
  111. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_multiple_failures_in_single_check.raw +0 -3
  112. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_multiple_failures_single_check[Open API 2.0].raw +0 -3
  113. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_multiple_failures_single_check[Open API 3.0].raw +0 -3
  114. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_nested_binary_in_yaml.raw +1 -4
  115. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_new_stateful_runner[Open API 3.0-1].raw +4 -0
  116. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_new_stateful_runner[Open API 3.0-2].raw +4 -0
  117. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_new_stateful_runner_filtered_out[Open API 3.0].raw +0 -3
  118. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_new_stateful_runner_generation_config[Open API 3.0].raw +0 -3
  119. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_new_stateful_runner_keyboard_interrupt[Open API 3.0].raw +0 -3
  120. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_new_stateful_runner_max_failures[Open API 3.0].raw +4 -3
  121. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_new_stateful_runner_proxy_error[Open API 3.0].raw +0 -3
  122. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_new_stateful_runner_stateful_only[Open API 3.0].raw +0 -3
  123. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_new_stateful_runner_stateful_only_with_error[Open API 3.0].raw +0 -3
  124. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_no_schema_in_media_type[Open API 3.0].raw +1 -4
  125. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_no_useless_traceback.raw +0 -3
  126. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_null_byte_in_header_probe.raw +0 -3
  127. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_openapi_links[real-Open API 2.0].raw +3 -2
  128. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_openapi_links[real-Open API 3.0].raw +3 -2
  129. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_openapi_links[wsgi-Open API 2.0].raw +3 -2
  130. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_openapi_links[wsgi-Open API 3.0].raw +3 -2
  131. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_openapi_links_disabled[Open API 2.0].raw +3 -2
  132. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_openapi_links_disabled[Open API 3.0].raw +3 -2
  133. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 2.0-1].raw +3 -2
  134. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 2.0-5].raw +3 -2
  135. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 3.0-1].raw +3 -2
  136. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 3.0-5].raw +3 -2
  137. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 2.0-1].raw +3 -2
  138. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 2.0-5].raw +3 -2
  139. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 3.0-1].raw +3 -2
  140. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 3.0-5].raw +3 -2
  141. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_proxy_error[Open API 3.0].raw +0 -3
  142. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_read_content_timeout[Open API 3.0].raw +0 -3
  143. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_recursive_reference_error_message.raw +0 -3
  144. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError(Custom check failed!)-Open API 2.0].raw +0 -3
  145. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError(Custom check failed!)-Open API 3.0].raw +0 -3
  146. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError-Open API 2.0].raw +0 -3
  147. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError-Open API 3.0].raw +0 -3
  148. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[real-Open API 2.0].raw +0 -3
  149. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[real-Open API 3.0].raw +0 -3
  150. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[wsgi-Open API 2.0].raw +0 -3
  151. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[wsgi-Open API 3.0].raw +0 -3
  152. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[real-Open API 2.0].raw +0 -3
  153. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[real-Open API 3.0].raw +0 -3
  154. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[wsgi-Open API 2.0].raw +0 -3
  155. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[wsgi-Open API 3.0].raw +0 -3
  156. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_stateful_explicit_examples_with_filters[Open API 3.0].raw +1 -2
  157. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 2.0-1].raw +0 -3
  158. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 2.0-2].raw +0 -3
  159. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 3.0-1].raw +0 -3
  160. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 3.0-2].raw +0 -3
  161. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 2.0-1].raw +0 -3
  162. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 2.0-2].raw +0 -3
  163. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 3.0-1].raw +0 -3
  164. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 3.0-2].raw +0 -3
  165. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_unknown_schema_error[Open API 3.0].raw +0 -3
  166. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_unresolvable_links[Open API 3.0].raw +4 -2
  167. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_unresolvable_reference_with_disabled_validation.raw +0 -3
  168. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 2.0-1].raw +0 -3
  169. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 2.0-2].raw +0 -3
  170. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 3.0-1].raw +0 -3
  171. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 3.0-2].raw +0 -3
  172. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 2.0-1].raw +0 -3
  173. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 2.0-2].raw +0 -3
  174. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 3.0-1].raw +0 -3
  175. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 3.0-2].raw +0 -3
  176. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_unsupported_regex.raw +0 -3
  177. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_useful_traceback[Open API 3.0].raw +0 -3
  178. schemathesis-3.39.11/test/cli/__snapshots__/test_commands/test_warning_on_no_2xx.raw +24 -0
  179. schemathesis-3.39.11/test/cli/__snapshots__/test_commands/test_warning_on_no_2xx_options_only.raw +31 -0
  180. schemathesis-3.39.11/test/cli/__snapshots__/test_commands/test_warning_on_unauthorized.raw +24 -0
  181. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_yaml_parsing_of_floats[Open API 3.0].raw +0 -3
  182. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_hooks/test_after_call[real-Open API 3.0].raw +0 -3
  183. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_hooks/test_after_call[wsgi-Open API 3.0].raw +0 -3
  184. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/test_checks.py +76 -0
  185. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/test_commands.py +17 -17
  186. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/code_samples/__snapshots__/test_python/test_cli_output[Open API 2.0].raw +0 -3
  187. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/code_samples/__snapshots__/test_python/test_cli_output[Open API 3.0].raw +0 -3
  188. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/contrib/__snapshots__/test_unique_data/test_cli[None].raw +1 -2
  189. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema0].raw +1 -2
  190. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema1].raw +1 -2
  191. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema2].raw +1 -2
  192. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/contrib/__snapshots__/test_unique_data/test_cli_failure.raw +0 -3
  193. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/contrib/__snapshots__/test_unique_data/test_explicit_headers[1].raw +0 -3
  194. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/contrib/__snapshots__/test_unique_data/test_explicit_headers[2].raw +0 -3
  195. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/contrib/__snapshots__/test_unique_data/test_graphql_url.raw +0 -3
  196. schemathesis-3.39.9/test/service/__snapshots__/test_cli/test_github_suggestion[Open API 3.0].raw → schemathesis-3.39.11/test/contrib/openapi/__snapshots__/test_fill_missing_examples/test_fills_missing_examples.raw +0 -6
  197. schemathesis-3.39.11/test/coverage/__snapshots__/test_phase/test_negative_data_rejection.raw +49 -0
  198. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/coverage/__snapshots__/test_phase/test_unspecified_http_methods.raw +0 -5
  199. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/coverage/test_phase.py +47 -13
  200. schemathesis-3.39.9/test/contrib/openapi/__snapshots__/test_fill_missing_examples/test_fills_missing_examples.raw → schemathesis-3.39.11/test/service/__snapshots__/test_cli/test_github_suggestion[Open API 3.0].raw +2 -2
  201. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/service/__snapshots__/test_extensions/test_custom_format.raw +2 -0
  202. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/service/__snapshots__/test_extensions/test_graphql_scalars.raw +1 -1
  203. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/service/__snapshots__/test_extensions/test_media_type_extension[strategy0].raw +2 -0
  204. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/service/__snapshots__/test_extensions/test_media_type_extension[strategy1].raw +2 -0
  205. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/service/__snapshots__/test_extensions/test_schema_patches[patch0-expected0].raw +2 -0
  206. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/service/__snapshots__/test_extensions/test_schema_patches[patch1-expected1].raw +2 -0
  207. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/service/__snapshots__/test_extensions/test_schema_patches[patch2-expected2].raw +2 -0
  208. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/service/test_cli.py +0 -7
  209. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/graphql/__snapshots__/test_basic/test_disallow_null.raw +0 -3
  210. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/graphql/__snapshots__/test_basic/test_filter_operations[--exclude-name=Query.getBooks].raw +0 -3
  211. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/graphql/__snapshots__/test_basic/test_filter_operations[--include-name=Query.getBooks].raw +0 -3
  212. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/graphql/__snapshots__/test_custom_scalars/test_built_in_scalars_in_cli.raw +0 -3
  213. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/graphql/__snapshots__/test_custom_scalars/test_custom_scalar_in_cli.raw +0 -3
  214. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/openapi/__snapshots__/test_checks/test_method_not_allowed[basic-post].raw +0 -3
  215. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/openapi/__snapshots__/test_checks/test_method_not_allowed[success-get].raw +0 -3
  216. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/openapi/__snapshots__/test_checks/test_missing_required_header[basic-Authorization-406].raw +0 -3
  217. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/openapi/__snapshots__/test_checks/test_missing_required_header[success-Authorization-200].raw +0 -3
  218. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/openapi/__snapshots__/test_checks/test_missing_required_header[success-X-API-Key-1-200].raw +0 -3
  219. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/openapi/__snapshots__/test_checks/test_missing_required_header[success-X-API-Key-1-406].raw +0 -3
  220. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/openapi/__snapshots__/test_examples/test_network_error_with_flaky_generation.raw +0 -3
  221. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/openapi/__snapshots__/test_examples/test_parameter_override.raw +1 -2
  222. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/openapi/__snapshots__/test_ignored_auth/test_auth_via_override_cli[cookie].raw +0 -3
  223. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/openapi/__snapshots__/test_ignored_auth/test_auth_via_override_cli[query].raw +0 -3
  224. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/openapi/__snapshots__/test_ignored_auth/test_explicit_auth_cli[Open API 3.0].raw +0 -3
  225. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/openapi/__snapshots__/test_ignored_auth/test_stateful_in_cli_no_error[Open API 3.0-False].raw +0 -3
  226. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/openapi/__snapshots__/test_ignored_auth/test_stateful_in_cli_no_error[Open API 3.0-True].raw +0 -3
  227. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/openapi/__snapshots__/test_media_types/test_explicit_example_with_custom_media_type.raw +0 -3
  228. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/openapi/test_patterns.py +1 -0
  229. {schemathesis-3.39.9 → schemathesis-3.39.11}/.dockerignore +0 -0
  230. {schemathesis-3.39.9 → schemathesis-3.39.11}/.github/FUNDING.yml +0 -0
  231. {schemathesis-3.39.9 → schemathesis-3.39.11}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  232. {schemathesis-3.39.9 → schemathesis-3.39.11}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  233. {schemathesis-3.39.9 → schemathesis-3.39.11}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  234. {schemathesis-3.39.9 → schemathesis-3.39.11}/.github/dependabot.yml +0 -0
  235. {schemathesis-3.39.9 → schemathesis-3.39.11}/.github/workflows/build.yml +0 -0
  236. {schemathesis-3.39.9 → schemathesis-3.39.11}/.github/workflows/codeql-analysis.yml +0 -0
  237. {schemathesis-3.39.9 → schemathesis-3.39.11}/.github/workflows/codspeed.yml +0 -0
  238. {schemathesis-3.39.9 → schemathesis-3.39.11}/.github/workflows/commit.yml +0 -0
  239. {schemathesis-3.39.9 → schemathesis-3.39.11}/.github/workflows/example-build.yml +0 -0
  240. {schemathesis-3.39.9 → schemathesis-3.39.11}/.github/workflows/example-no-build.yml +0 -0
  241. {schemathesis-3.39.9 → schemathesis-3.39.11}/.github/workflows/release.yml +0 -0
  242. {schemathesis-3.39.9 → schemathesis-3.39.11}/.github/workflows/test-corpus.yml +0 -0
  243. {schemathesis-3.39.9 → schemathesis-3.39.11}/.github/workflows/test-hypothesis.yml +0 -0
  244. {schemathesis-3.39.9 → schemathesis-3.39.11}/.github/workflows/update-pre-commit.yml +0 -0
  245. {schemathesis-3.39.9 → schemathesis-3.39.11}/.gitignore +0 -0
  246. {schemathesis-3.39.9 → schemathesis-3.39.11}/.pre-commit-config.yaml +0 -0
  247. {schemathesis-3.39.9 → schemathesis-3.39.11}/.readthedocs.yml +0 -0
  248. {schemathesis-3.39.9 → schemathesis-3.39.11}/.relint.yml +0 -0
  249. {schemathesis-3.39.9 → schemathesis-3.39.11}/.rstcheck.cfg +0 -0
  250. {schemathesis-3.39.9 → schemathesis-3.39.11}/.yamllint +0 -0
  251. {schemathesis-3.39.9 → schemathesis-3.39.11}/CITATION.cff +0 -0
  252. {schemathesis-3.39.9 → schemathesis-3.39.11}/CODE_OF_CONDUCT.md +0 -0
  253. {schemathesis-3.39.9 → schemathesis-3.39.11}/CONTRIBUTING.rst +0 -0
  254. {schemathesis-3.39.9 → schemathesis-3.39.11}/Dockerfile +0 -0
  255. {schemathesis-3.39.9 → schemathesis-3.39.11}/Dockerfile.bookworm +0 -0
  256. {schemathesis-3.39.9 → schemathesis-3.39.11}/LICENSE +0 -0
  257. {schemathesis-3.39.9 → schemathesis-3.39.11}/README.md +0 -0
  258. {schemathesis-3.39.9 → schemathesis-3.39.11}/SECURITY.md +0 -0
  259. {schemathesis-3.39.9 → schemathesis-3.39.11}/benches/cli.py +0 -0
  260. {schemathesis-3.39.9 → schemathesis-3.39.11}/benches/coverage_phase.py +0 -0
  261. {schemathesis-3.39.9 → schemathesis-3.39.11}/benches/references.py +0 -0
  262. {schemathesis-3.39.9 → schemathesis-3.39.11}/benches/schema.py +0 -0
  263. {schemathesis-3.39.9 → schemathesis-3.39.11}/changelog.py +0 -0
  264. {schemathesis-3.39.9 → schemathesis-3.39.11}/codecov.yml +0 -0
  265. {schemathesis-3.39.9 → schemathesis-3.39.11}/corpus/data/graphql.tar.gz +0 -0
  266. {schemathesis-3.39.9 → schemathesis-3.39.11}/corpus/data/openapi-3.0.tar.gz +0 -0
  267. {schemathesis-3.39.9 → schemathesis-3.39.11}/corpus/data/openapi-3.1.tar.gz +0 -0
  268. {schemathesis-3.39.9 → schemathesis-3.39.11}/corpus/data/swagger-2.0.tar.gz +0 -0
  269. {schemathesis-3.39.9 → schemathesis-3.39.11}/corpus/tools.py +0 -0
  270. {schemathesis-3.39.9 → schemathesis-3.39.11}/docs/Makefile +0 -0
  271. {schemathesis-3.39.9 → schemathesis-3.39.11}/docs/additional-content.rst +0 -0
  272. {schemathesis-3.39.9 → schemathesis-3.39.11}/docs/api.rst +0 -0
  273. {schemathesis-3.39.9 → schemathesis-3.39.11}/docs/auth.rst +0 -0
  274. {schemathesis-3.39.9 → schemathesis-3.39.11}/docs/cli.rst +0 -0
  275. {schemathesis-3.39.9 → schemathesis-3.39.11}/docs/compatibility.rst +0 -0
  276. {schemathesis-3.39.9 → schemathesis-3.39.11}/docs/conf.py +0 -0
  277. {schemathesis-3.39.9 → schemathesis-3.39.11}/docs/continuous_integration.rst +0 -0
  278. {schemathesis-3.39.9 → schemathesis-3.39.11}/docs/data-generation.rst +0 -0
  279. {schemathesis-3.39.9 → schemathesis-3.39.11}/docs/examples.rst +0 -0
  280. {schemathesis-3.39.9 → schemathesis-3.39.11}/docs/experimental.rst +0 -0
  281. {schemathesis-3.39.9 → schemathesis-3.39.11}/docs/extending.rst +0 -0
  282. {schemathesis-3.39.9 → schemathesis-3.39.11}/docs/faq.rst +0 -0
  283. {schemathesis-3.39.9 → schemathesis-3.39.11}/docs/getting-started.rst +0 -0
  284. {schemathesis-3.39.9 → schemathesis-3.39.11}/docs/graphql.rst +0 -0
  285. {schemathesis-3.39.9 → schemathesis-3.39.11}/docs/index.rst +0 -0
  286. {schemathesis-3.39.9 → schemathesis-3.39.11}/docs/python.rst +0 -0
  287. {schemathesis-3.39.9 → schemathesis-3.39.11}/docs/recipes.rst +0 -0
  288. {schemathesis-3.39.9 → schemathesis-3.39.11}/docs/requirements.txt +0 -0
  289. {schemathesis-3.39.9 → schemathesis-3.39.11}/docs/sanitizing.rst +0 -0
  290. {schemathesis-3.39.9 → schemathesis-3.39.11}/docs/service.rst +0 -0
  291. {schemathesis-3.39.9 → schemathesis-3.39.11}/docs/stateful.rst +0 -0
  292. {schemathesis-3.39.9 → schemathesis-3.39.11}/docs/targeted.rst +0 -0
  293. {schemathesis-3.39.9 → schemathesis-3.39.11}/example/Dockerfile +0 -0
  294. {schemathesis-3.39.9 → schemathesis-3.39.11}/example/README.md +0 -0
  295. {schemathesis-3.39.9 → schemathesis-3.39.11}/example/app.py +0 -0
  296. {schemathesis-3.39.9 → schemathesis-3.39.11}/example/compose.yml +0 -0
  297. {schemathesis-3.39.9 → schemathesis-3.39.11}/example/openapi.json +0 -0
  298. {schemathesis-3.39.9 → schemathesis-3.39.11}/example/requirements-app.in +0 -0
  299. {schemathesis-3.39.9 → schemathesis-3.39.11}/example/requirements-app.txt +0 -0
  300. {schemathesis-3.39.9 → schemathesis-3.39.11}/example/requirements-pytest.in +0 -0
  301. {schemathesis-3.39.9 → schemathesis-3.39.11}/example/requirements-pytest.txt +0 -0
  302. {schemathesis-3.39.9 → schemathesis-3.39.11}/example/tests/__init__.py +0 -0
  303. {schemathesis-3.39.9 → schemathesis-3.39.11}/example/tests/conftest.py +0 -0
  304. {schemathesis-3.39.9 → schemathesis-3.39.11}/example/tests/extensions.py +0 -0
  305. {schemathesis-3.39.9 → schemathesis-3.39.11}/example/tests/test_app.py +0 -0
  306. {schemathesis-3.39.9 → schemathesis-3.39.11}/img/demo.gif +0 -0
  307. {schemathesis-3.39.9 → schemathesis-3.39.11}/img/service_github_report.png +0 -0
  308. {schemathesis-3.39.9 → schemathesis-3.39.11}/mypy.ini +0 -0
  309. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/__init__.py +0 -0
  310. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/_compat.py +0 -0
  311. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/_dependency_versions.py +0 -0
  312. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/_lazy_import.py +0 -0
  313. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/_override.py +0 -0
  314. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/_patches.py +0 -0
  315. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/_rate_limiter.py +0 -0
  316. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/_xml.py +0 -0
  317. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/auths.py +0 -0
  318. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/checks.py +0 -0
  319. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/cli/__init__.py +0 -0
  320. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/cli/__main__.py +0 -0
  321. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/cli/callbacks.py +0 -0
  322. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/cli/cassettes.py +0 -0
  323. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/cli/constants.py +0 -0
  324. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/cli/context.py +0 -0
  325. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/cli/debug.py +0 -0
  326. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/cli/handlers.py +0 -0
  327. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/cli/junitxml.py +0 -0
  328. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/cli/options.py +0 -0
  329. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/cli/output/__init__.py +0 -0
  330. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/cli/output/short.py +0 -0
  331. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/cli/reporting.py +0 -0
  332. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/cli/sanitization.py +0 -0
  333. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/code_samples.py +0 -0
  334. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/contrib/__init__.py +0 -0
  335. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/contrib/openapi/__init__.py +0 -0
  336. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/contrib/openapi/fill_missing_examples.py +0 -0
  337. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/contrib/openapi/formats/__init__.py +0 -0
  338. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/contrib/openapi/formats/uuid.py +0 -0
  339. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/contrib/unique_data.py +0 -0
  340. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/exceptions.py +0 -0
  341. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/experimental/__init__.py +0 -0
  342. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/extra/__init__.py +0 -0
  343. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/extra/_aiohttp.py +0 -0
  344. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/extra/_flask.py +0 -0
  345. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/extra/_server.py +0 -0
  346. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/extra/pytest_plugin.py +0 -0
  347. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/filters.py +0 -0
  348. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/fixups/__init__.py +0 -0
  349. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/fixups/fast_api.py +0 -0
  350. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/fixups/utf8_bom.py +0 -0
  351. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/generation/__init__.py +0 -0
  352. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/generation/_hypothesis.py +0 -0
  353. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/generation/_methods.py +0 -0
  354. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/generation/coverage.py +0 -0
  355. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/graphql.py +0 -0
  356. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/hooks.py +0 -0
  357. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/internal/__init__.py +0 -0
  358. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/internal/copy.py +0 -0
  359. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/internal/datetime.py +0 -0
  360. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/internal/deprecation.py +0 -0
  361. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/internal/diff.py +0 -0
  362. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/internal/extensions.py +0 -0
  363. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/internal/jsonschema.py +0 -0
  364. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/internal/output.py +0 -0
  365. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/internal/result.py +0 -0
  366. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/internal/transformation.py +0 -0
  367. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/internal/validation.py +0 -0
  368. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/lazy.py +0 -0
  369. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/loaders.py +0 -0
  370. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/models.py +0 -0
  371. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/parameters.py +0 -0
  372. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/py.typed +0 -0
  373. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/runner/__init__.py +0 -0
  374. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/runner/events.py +0 -0
  375. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/runner/impl/__init__.py +0 -0
  376. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/runner/impl/solo.py +0 -0
  377. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/runner/impl/threadpool.py +0 -0
  378. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/runner/probes.py +0 -0
  379. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/runner/serialization.py +0 -0
  380. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/sanitization.py +0 -0
  381. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/schemas.py +0 -0
  382. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/serializers.py +0 -0
  383. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/service/__init__.py +0 -0
  384. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/service/auth.py +0 -0
  385. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/service/ci.py +0 -0
  386. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/service/client.py +0 -0
  387. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/service/constants.py +0 -0
  388. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/service/events.py +0 -0
  389. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/service/extensions.py +0 -0
  390. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/service/hosts.py +0 -0
  391. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/service/metadata.py +0 -0
  392. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/service/models.py +0 -0
  393. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/service/report.py +0 -0
  394. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/service/serialization.py +0 -0
  395. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/service/usage.py +0 -0
  396. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/specs/__init__.py +0 -0
  397. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/specs/graphql/__init__.py +0 -0
  398. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/specs/graphql/_cache.py +0 -0
  399. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/specs/graphql/loaders.py +0 -0
  400. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/specs/graphql/nodes.py +0 -0
  401. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/specs/graphql/scalars.py +0 -0
  402. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/specs/graphql/schemas.py +0 -0
  403. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/specs/graphql/validation.py +0 -0
  404. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/specs/openapi/__init__.py +0 -0
  405. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/specs/openapi/_cache.py +0 -0
  406. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/specs/openapi/_hypothesis.py +0 -0
  407. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/specs/openapi/constants.py +0 -0
  408. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/specs/openapi/converter.py +0 -0
  409. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/specs/openapi/definitions.py +0 -0
  410. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/specs/openapi/expressions/__init__.py +0 -0
  411. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/specs/openapi/expressions/context.py +0 -0
  412. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/specs/openapi/expressions/errors.py +0 -0
  413. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/specs/openapi/expressions/extractors.py +0 -0
  414. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/specs/openapi/expressions/lexer.py +0 -0
  415. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/specs/openapi/expressions/nodes.py +0 -0
  416. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/specs/openapi/expressions/parser.py +0 -0
  417. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/specs/openapi/formats.py +0 -0
  418. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/specs/openapi/links.py +0 -0
  419. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/specs/openapi/loaders.py +0 -0
  420. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/specs/openapi/media_types.py +0 -0
  421. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/specs/openapi/negative/__init__.py +0 -0
  422. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/specs/openapi/negative/mutations.py +0 -0
  423. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/specs/openapi/negative/types.py +0 -0
  424. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/specs/openapi/negative/utils.py +0 -0
  425. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/specs/openapi/parameters.py +0 -0
  426. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/specs/openapi/references.py +0 -0
  427. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/specs/openapi/schemas.py +0 -0
  428. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/specs/openapi/security.py +0 -0
  429. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/specs/openapi/stateful/__init__.py +0 -0
  430. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/specs/openapi/stateful/statistic.py +0 -0
  431. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/specs/openapi/stateful/types.py +0 -0
  432. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/specs/openapi/utils.py +0 -0
  433. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/specs/openapi/validation.py +0 -0
  434. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/stateful/__init__.py +0 -0
  435. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/stateful/config.py +0 -0
  436. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/stateful/context.py +0 -0
  437. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/stateful/events.py +0 -0
  438. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/stateful/runner.py +0 -0
  439. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/stateful/sink.py +0 -0
  440. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/stateful/state_machine.py +0 -0
  441. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/stateful/statistic.py +0 -0
  442. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/stateful/validation.py +0 -0
  443. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/targets.py +0 -0
  444. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/throttling.py +0 -0
  445. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/transports/__init__.py +0 -0
  446. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/transports/asgi.py +0 -0
  447. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/transports/auth.py +0 -0
  448. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/transports/content_types.py +0 -0
  449. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/transports/headers.py +0 -0
  450. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/transports/responses.py +0 -0
  451. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/types.py +0 -0
  452. {schemathesis-3.39.9 → schemathesis-3.39.11}/src/schemathesis/utils.py +0 -0
  453. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/__init__.py +0 -0
  454. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/apps/__init__.py +0 -0
  455. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/apps/_graphql/__init__.py +0 -0
  456. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/apps/_graphql/_fastapi/__init__.py +0 -0
  457. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/apps/_graphql/_fastapi/app.py +0 -0
  458. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/apps/_graphql/_flask/__init__.py +0 -0
  459. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/apps/_graphql/_flask/app.py +0 -0
  460. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/apps/_graphql/schema.py +0 -0
  461. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/apps/cp1252_app.py +0 -0
  462. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/apps/hooks.py +0 -0
  463. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/apps/openapi/__init__.py +0 -0
  464. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/apps/openapi/_aiohttp/__init__.py +0 -0
  465. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/apps/openapi/_aiohttp/app.py +0 -0
  466. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/apps/openapi/_fastapi/__init__.py +0 -0
  467. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/apps/openapi/_fastapi/app.py +0 -0
  468. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/apps/openapi/_flask/__init__.py +0 -0
  469. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/apps/openapi/_flask/app.py +0 -0
  470. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/auth/__init__.py +0 -0
  471. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/auth/conftest.py +0 -0
  472. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/auth/test_cli.py +0 -0
  473. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/auth/test_provider.py +0 -0
  474. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/auth/test_pytest.py +0 -0
  475. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/checks/__init__.py +0 -0
  476. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/checks/test_checks.py +0 -0
  477. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__init__.py +0 -0
  478. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_cassettes/test_forbid_preserve_exact_bytes_without_cassette_path[Open API 3.0].raw +0 -0
  479. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_cassettes/test_forbid_simultaneous_use_of_deprecated_and_new_options[Open API 3.0].raw +0 -0
  480. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args8].raw +0 -0
  481. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args9].raw +0 -0
  482. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_auth_and_authorization_header_are_disallowed[Open API 3.0-Authorization].raw +0 -0
  483. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_auth_and_authorization_header_are_disallowed[Open API 3.0-authorization].raw +0 -0
  484. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_certificate_only_key.raw +0 -0
  485. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_commands_help.raw +0 -0
  486. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_duplicated_filters[Open API 3.0].raw +0 -0
  487. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_empty_schema_file[args0].raw +0 -0
  488. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_empty_schema_file[args1].raw +0 -0
  489. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_force_color_nocolor[Open API 3.0].raw +0 -0
  490. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_hooks_module_not_found.raw +0 -0
  491. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_hooks_with_inner_import_error.raw +0 -0
  492. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_hypothesis_database_with_derandomize[Open API 3.0].raw +0 -0
  493. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_invalid_filter[Open API 3.0].raw +0 -0
  494. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[real-Open API 2.0].raw +0 -0
  495. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[real-Open API 3.0].raw +0 -0
  496. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[wsgi-Open API 2.0].raw +0 -0
  497. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[wsgi-Open API 3.0].raw +0 -0
  498. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_invalid_yaml.raw +0 -0
  499. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_remote_disconnected_error[Open API 3.0].raw +0 -0
  500. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_run_output[args0].raw +0 -0
  501. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_run_output[args10].raw +0 -0
  502. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_run_output[args11].raw +0 -0
  503. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_run_output[args12].raw +0 -0
  504. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_run_output[args13].raw +0 -0
  505. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_run_output[args14].raw +0 -0
  506. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_run_output[args15].raw +0 -0
  507. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_run_output[args16].raw +0 -0
  508. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_run_output[args17].raw +0 -0
  509. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_run_output[args18].raw +0 -0
  510. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_run_output[args19].raw +0 -0
  511. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_run_output[args1].raw +0 -0
  512. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_run_output[args20].raw +0 -0
  513. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_run_output[args21].raw +0 -0
  514. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_run_output[args22].raw +0 -0
  515. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_run_output[args23].raw +0 -0
  516. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_run_output[args24].raw +0 -0
  517. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_run_output[args25].raw +0 -0
  518. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_run_output[args26].raw +0 -0
  519. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_run_output[args27].raw +0 -0
  520. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_run_output[args28].raw +0 -0
  521. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_run_output[args29].raw +0 -0
  522. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_run_output[args2].raw +0 -0
  523. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_run_output[args30].raw +0 -0
  524. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_run_output[args31].raw +0 -0
  525. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_run_output[args32].raw +0 -0
  526. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_run_output[args33].raw +0 -0
  527. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_run_output[args34].raw +0 -0
  528. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_run_output[args35].raw +0 -0
  529. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_run_output[args36].raw +0 -0
  530. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_run_output[args37].raw +0 -0
  531. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_run_output[args3].raw +0 -0
  532. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_run_output[args4].raw +0 -0
  533. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_run_output[args5].raw +0 -0
  534. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_run_output[args6].raw +0 -0
  535. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_run_output[args7].raw +0 -0
  536. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_run_output[args8].raw +0 -0
  537. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_run_output[args9].raw +0 -0
  538. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_schema_not_available[1].raw +0 -0
  539. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_schema_not_available[2].raw +0 -0
  540. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_schema_not_available_wsgi.raw +0 -0
  541. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/__snapshots__/test_commands/test_wait_for_schema_not_enough.raw +0 -0
  542. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/cert.pem +0 -0
  543. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/conftest.py +0 -0
  544. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/output/__init__.py +0 -0
  545. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/output/test_default.py +0 -0
  546. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/test_asgi.py +0 -0
  547. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/test_callbacks.py +0 -0
  548. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/test_cassettes.py +0 -0
  549. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/test_crashes.py +0 -0
  550. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/test_hooks.py +0 -0
  551. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/test_junitxml.py +0 -0
  552. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/test_options.py +0 -0
  553. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/test_reporting.py +0 -0
  554. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/cli/test_targeted.py +0 -0
  555. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/code_samples/conftest.py +0 -0
  556. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/code_samples/test_curl.py +0 -0
  557. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/code_samples/test_python.py +0 -0
  558. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/conftest.py +0 -0
  559. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/contrib/openapi/formats/test_uuid.py +0 -0
  560. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/contrib/openapi/test_fill_missing_examples.py +0 -0
  561. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/contrib/test_install.py +0 -0
  562. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/contrib/test_unique_data.py +0 -0
  563. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/coverage/__init__.py +0 -0
  564. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/coverage/test_combinations.py +0 -0
  565. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/coverage/test_examples.py +0 -0
  566. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/data/petstore_v2.yaml +0 -0
  567. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/data/petstore_v3.yaml +0 -0
  568. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/data/relative_files/components/parameters.yaml +0 -0
  569. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/data/relative_files/components/responses.yaml +0 -0
  570. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/data/relative_files/components/schemas.yaml +0 -0
  571. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/data/relative_files/main.yaml +0 -0
  572. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/data/relative_files/paths/user-account.yaml +0 -0
  573. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/data/simple_openapi.yaml +0 -0
  574. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/data/simple_swagger.yaml +0 -0
  575. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/experimental/__snapshots__/test_experiments/test_not_enabled.raw +0 -0
  576. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/experimental/conftest.py +0 -0
  577. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/experimental/test_experiments.py +0 -0
  578. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/experimental/test_openapi_3_1.py +0 -0
  579. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/extra/__init__.py +0 -0
  580. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/extra/test_aiohttp.py +0 -0
  581. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/filters/__init__.py +0 -0
  582. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/filters/test_expressions.py +0 -0
  583. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/filters/test_matching.py +0 -0
  584. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/fixtures/__init__.py +0 -0
  585. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/fixtures/ctx.py +0 -0
  586. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/hooks/test_filter_operations.py +0 -0
  587. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/hooks/test_filters.py +0 -0
  588. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/hooks/test_hooks.py +0 -0
  589. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/loaders/conftest.py +0 -0
  590. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/loaders/test_app.py +0 -0
  591. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/loaders/test_common.py +0 -0
  592. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/loaders/test_graphql.py +0 -0
  593. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/loaders/test_openapi.py +0 -0
  594. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/loaders/test_yaml.py +0 -0
  595. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/runner/__init__.py +0 -0
  596. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/runner/test_checks.py +0 -0
  597. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/runner/test_events.py +0 -0
  598. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/runner/test_probes.py +0 -0
  599. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/runner/test_runner.py +0 -0
  600. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/service/__init__.py +0 -0
  601. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/service/__snapshots__/test_cli/test_client_error_on_project_details.raw +0 -0
  602. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/service/__snapshots__/test_cli/test_client_error_on_upload[Open API 3.0].raw +0 -0
  603. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/service/__snapshots__/test_cli/test_error_in_another_handler[Open API 3.0].raw +0 -0
  604. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/service/__snapshots__/test_cli/test_not_authenticated_with_name.raw +0 -0
  605. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/service/__snapshots__/test_cli/test_two_names.raw +0 -0
  606. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/service/__snapshots__/test_cli/test_unauthorized.raw +0 -0
  607. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/service/__snapshots__/test_cli/test_unknown_error_on_upload[Open API 3.0].raw +0 -0
  608. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/service/__snapshots__/test_cli/test_upload_failure[Open API 3.0].raw +0 -0
  609. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/service/__snapshots__/test_cli/test_upload_success[Open API 3.0].raw +0 -0
  610. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/service/__snapshots__/test_extensions/test_connection_error[Open API 3.0].raw +0 -0
  611. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/service/__snapshots__/test_extensions/test_dry_run[Open API 3.0].raw +0 -0
  612. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/service/__snapshots__/test_extensions/test_forbidden[Open API 3.0].raw +0 -0
  613. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/service/__snapshots__/test_extensions/test_internal_server_error[Open API 3.0].raw +0 -0
  614. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/service/__snapshots__/test_extensions/test_invalid_extension[Open API 3.0-42].raw +0 -0
  615. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/service/__snapshots__/test_extensions/test_invalid_extension[Open API 3.0-extension1].raw +0 -0
  616. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/service/__snapshots__/test_extensions/test_invalid_payload[Open API 3.0].raw +0 -0
  617. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/service/__snapshots__/test_extensions/test_oversize_text[Open API 3.0].raw +0 -0
  618. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/service/__snapshots__/test_extensions/test_unknown_extension_in_cli[Open API 3.0].raw +0 -0
  619. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/service/conftest.py +0 -0
  620. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/service/test_auth.py +0 -0
  621. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/service/test_ci.py +0 -0
  622. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/service/test_extensions.py +0 -0
  623. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/service/test_report.py +0 -0
  624. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/service/test_serialization.py +0 -0
  625. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/service/test_usage.py +0 -0
  626. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/graphql/__snapshots__/test_basic/test_schema_error[ntype Query {n 123(created Int!) Int!n}-.whatever].raw +0 -0
  627. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/graphql/__snapshots__/test_basic/test_schema_error[ntype Query {n func(created Unknown!) Int!n}-.gql].raw +0 -0
  628. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/graphql/test_basic.py +0 -0
  629. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/graphql/test_custom_scalars.py +0 -0
  630. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/graphql/test_pytest.py +0 -0
  631. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/openapi/blank.pdf +0 -0
  632. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/openapi/conftest.py +0 -0
  633. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/openapi/parameters/test_forms.py +0 -0
  634. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/openapi/parameters/test_non_payload.py +0 -0
  635. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/openapi/parameters/test_simple_payloads.py +0 -0
  636. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/openapi/stateful/__init__.py +0 -0
  637. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/openapi/stateful/conftest.py +0 -0
  638. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/openapi/stateful/test_config.py +0 -0
  639. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/openapi/stateful/test_runner.py +0 -0
  640. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/openapi/stateful/test_stateful.py +0 -0
  641. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/openapi/test_checks.py +0 -0
  642. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/openapi/test_examples.py +0 -0
  643. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/openapi/test_expressions.py +0 -0
  644. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/openapi/test_hypothesis.py +0 -0
  645. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/openapi/test_ignored_auth.py +0 -0
  646. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/openapi/test_links.py +0 -0
  647. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/openapi/test_media_types.py +0 -0
  648. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/openapi/test_negative.py +0 -0
  649. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/openapi/test_parameters.py +0 -0
  650. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/openapi/test_randomized.py +0 -0
  651. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/openapi/test_schemas.py +0 -0
  652. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/openapi/test_security.py +0 -0
  653. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/openapi/test_serializing.py +0 -0
  654. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/openapi/test_utils.py +0 -0
  655. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/specs/openapi/test_validation.py +0 -0
  656. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/test_app.py +0 -0
  657. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/test_asgi.py +0 -0
  658. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/test_async.py +0 -0
  659. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/test_common_parameters.py +0 -0
  660. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/test_converter.py +0 -0
  661. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/test_dereferencing.py +0 -0
  662. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/test_direct_access.py +0 -0
  663. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/test_examples.py +0 -0
  664. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/test_filters.py +0 -0
  665. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/test_fixups.py +0 -0
  666. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/test_hypothesis.py +0 -0
  667. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/test_internal.py +0 -0
  668. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/test_lazy.py +0 -0
  669. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/test_models.py +0 -0
  670. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/test_output.py +0 -0
  671. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/test_package.py +0 -0
  672. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/test_parameters.py +0 -0
  673. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/test_parametrization.py +0 -0
  674. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/test_petstore.py +0 -0
  675. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/test_pytest.py +0 -0
  676. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/test_rate_limit.py +0 -0
  677. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/test_recoverable_errors.py +0 -0
  678. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/test_required.py +0 -0
  679. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/test_sanitizing_output.py +0 -0
  680. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/test_schemas.py +0 -0
  681. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/test_serialization.py +0 -0
  682. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/test_stateful.py +0 -0
  683. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/test_unittest.py +0 -0
  684. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/test_utils.py +0 -0
  685. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/test_wsgi.py +0 -0
  686. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/transports/test_content_types.py +0 -0
  687. {schemathesis-3.39.9 → schemathesis-3.39.11}/test/utils.py +0 -0
  688. {schemathesis-3.39.9 → schemathesis-3.39.11}/test-corpus/conftest.py +0 -0
  689. {schemathesis-3.39.9 → schemathesis-3.39.11}/test-corpus/test_corpus.py +0 -0
  690. {schemathesis-3.39.9 → schemathesis-3.39.11}/test_server.sh +0 -0
  691. {schemathesis-3.39.9 → schemathesis-3.39.11}/tox.ini +0 -0
  692. {schemathesis-3.39.9 → schemathesis-3.39.11}/typos.toml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: schemathesis
3
- Version: 3.39.9
3
+ Version: 3.39.11
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,8 +1,42 @@
1
1
  Changelog
2
2
  =========
3
3
 
4
- :version:`Unreleased <v3.39.9...HEAD>` - TBD
5
- --------------------------------------------
4
+ :version:`Unreleased <v3.39.11...HEAD>` - TBD
5
+ ---------------------------------------------
6
+
7
+ .. _v3.39.11:
8
+
9
+ :version:`3.39.11 <v3.39.10...v3.39.11>` - 2025-02-23
10
+ -----------------------------------------------------
11
+
12
+ **Fixed**
13
+
14
+ - Deduplicate failures from ``negative_data_rejection`` by response status code.
15
+ It makes Schemathesis display more different failures for this check.
16
+ - Query parameter serialization during the coverage phase.
17
+ - Apply custom auth data correctly during the coverage phase.
18
+ - Apply parameter overrides during the coverage phase.
19
+ - Incorrect quantifiers merging for some patterns. :issue:`2732`
20
+
21
+ **Changed**
22
+
23
+ - Do not report ``unsupported_method`` failure if the API returned HTTP 200 on OPTIONS request.
24
+ - More precise warning about missing 2xx responses for positive test cases.
25
+ - Add HTTP 406 status to the list of status codes that are expected for negative test cases.
26
+
27
+ .. _v3.39.10:
28
+
29
+ :version:`3.39.10 <v3.39.9...v3.39.10>` - 2025-02-10
30
+ ----------------------------------------------------
31
+
32
+ **Added**
33
+
34
+ - Warning for operations that return only 4xx responses during unit tests to help identify potential base URL or data generation issues.
35
+
36
+ **Fixed**
37
+
38
+ - Missing metadata for test case components generated during the coverage phase.
39
+ It lead to false negative results of the ``negative_data_rejection`` check.
6
40
 
7
41
  .. _v3.39.9:
8
42
 
@@ -7,7 +7,7 @@ Unique data generation
7
7
  ~~~~~~~~~~~~~~~~~~~~~~
8
8
 
9
9
  By default, Schemathesis may generate the same test cases as all data is randomized. If this behavior does not match your expectations, or
10
- your test budges, you can force Schemathesis to generate unique test cases.
10
+ your test budgets, you can force Schemathesis to generate unique test cases.
11
11
 
12
12
  In CLI:
13
13
 
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "schemathesis"
7
- version = "3.39.9"
7
+ version = "3.39.11"
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 = "dmitry@dygalo.dev" }]
@@ -3,7 +3,7 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  import asyncio
6
- import json
6
+ from dataclasses import dataclass
7
7
  import warnings
8
8
  from functools import wraps
9
9
  from itertools import combinations
@@ -15,8 +15,10 @@ from hypothesis.errors import HypothesisWarning, Unsatisfiable
15
15
  from hypothesis.internal.entropy import deterministic_PRNG
16
16
  from jsonschema.exceptions import SchemaError
17
17
 
18
+ from schemathesis.serializers import get_first_matching_media_type
19
+
18
20
  from . import _patches
19
- from .auths import get_auth_storage_from_test
21
+ from .auths import AuthStorage, get_auth_storage_from_test
20
22
  from .constants import DEFAULT_DEADLINE, NOT_SET
21
23
  from .exceptions import OperationSchemaError, SerializationNotPossible
22
24
  from .experimental import COVERAGE_PHASE
@@ -27,6 +29,7 @@ from .parameters import ParameterSet
27
29
  from .transports.content_types import parse_content_type
28
30
  from .transports.headers import has_invalid_characters, is_latin_1_encodable
29
31
  from .types import NotSet
32
+ from schemathesis import auths
30
33
 
31
34
  if TYPE_CHECKING:
32
35
  from .utils import GivenInput
@@ -111,7 +114,9 @@ def create_test(
111
114
  wrapped_test, operation, hook_dispatcher=hook_dispatcher, as_strategy_kwargs=as_strategy_kwargs
112
115
  )
113
116
  if COVERAGE_PHASE.is_enabled:
114
- wrapped_test = add_coverage(wrapped_test, operation, data_generation_methods)
117
+ wrapped_test = add_coverage(
118
+ wrapped_test, operation, data_generation_methods, auth_storage, as_strategy_kwargs
119
+ )
115
120
  return wrapped_test
116
121
 
117
122
 
@@ -215,31 +220,158 @@ def adjust_urlencoded_payload(case: Case) -> None:
215
220
 
216
221
 
217
222
  def add_coverage(
218
- test: Callable, operation: APIOperation, data_generation_methods: list[DataGenerationMethod]
223
+ test: Callable,
224
+ operation: APIOperation,
225
+ data_generation_methods: list[DataGenerationMethod],
226
+ auth_storage: AuthStorage | None,
227
+ as_strategy_kwargs: dict[str, Any],
219
228
  ) -> Callable:
220
- for example in _iter_coverage_cases(operation, data_generation_methods):
221
- adjust_urlencoded_payload(example)
222
- test = hypothesis.example(case=example)(test)
229
+ from schemathesis.specs.openapi.constants import LOCATION_TO_CONTAINER
230
+
231
+ auth_context = auths.AuthContext(
232
+ operation=operation,
233
+ app=operation.app,
234
+ )
235
+ overrides = {
236
+ container: as_strategy_kwargs[container]
237
+ for container in LOCATION_TO_CONTAINER.values()
238
+ if container in as_strategy_kwargs
239
+ }
240
+ for case in _iter_coverage_cases(operation, data_generation_methods):
241
+ if case.media_type and get_first_matching_media_type(case.media_type) is None:
242
+ continue
243
+ adjust_urlencoded_payload(case)
244
+ auths.set_on_case(case, auth_context, auth_storage)
245
+ for container_name, value in overrides.items():
246
+ container = getattr(case, container_name)
247
+ if container is None:
248
+ setattr(case, container_name, value)
249
+ else:
250
+ container.update(value)
251
+ test = hypothesis.example(case=case)(test)
223
252
  return test
224
253
 
225
254
 
255
+ class Template:
256
+ __slots__ = ("_components", "_template", "_serializers")
257
+
258
+ def __init__(self, serializers: dict[str, Callable]) -> None:
259
+ self._components: dict[str, DataGenerationMethod] = {}
260
+ self._template: dict[str, Any] = {}
261
+ self._serializers = serializers
262
+
263
+ def __contains__(self, key: str) -> bool:
264
+ return key in self._template
265
+
266
+ def __getitem__(self, key: str) -> dict:
267
+ return self._template[key]
268
+
269
+ def get(self, key: str, default: Any = None) -> dict:
270
+ return self._template.get(key, default)
271
+
272
+ def add_parameter(self, location: str, name: str, value: coverage.GeneratedValue) -> None:
273
+ from .specs.openapi.constants import LOCATION_TO_CONTAINER
274
+
275
+ component_name = LOCATION_TO_CONTAINER[location]
276
+ method = self._components.get(component_name)
277
+ if method is None:
278
+ self._components[component_name] = value.data_generation_method
279
+ elif value.data_generation_method == DataGenerationMethod.negative:
280
+ self._components[component_name] = DataGenerationMethod.negative
281
+
282
+ container = self._template.setdefault(component_name, {})
283
+ container[name] = value.value
284
+
285
+ def set_body(self, body: coverage.GeneratedValue, media_type: str) -> None:
286
+ self._template["body"] = body.value
287
+ self._template["media_type"] = media_type
288
+ self._components["body"] = body.data_generation_method
289
+
290
+ def _serialize(self, kwargs: dict[str, Any]) -> dict[str, Any]:
291
+ from schemathesis.specs.openapi._hypothesis import quote_all
292
+
293
+ output = {}
294
+ for container_name, value in kwargs.items():
295
+ serializer = self._serializers.get(container_name)
296
+ if container_name in ("headers", "cookies") and isinstance(value, dict):
297
+ value = _stringify_value(value, container_name)
298
+ if serializer is not None:
299
+ value = serializer(value)
300
+ if container_name == "query" and isinstance(value, dict):
301
+ value = _stringify_value(value, container_name)
302
+ if container_name == "path_parameters" and isinstance(value, dict):
303
+ value = _stringify_value(quote_all(value), container_name)
304
+ output[container_name] = value
305
+ return output
306
+
307
+ def unmodified(self) -> TemplateValue:
308
+ kwargs = self._template.copy()
309
+ kwargs = self._serialize(kwargs)
310
+ return TemplateValue(kwargs=kwargs, components=self._components.copy())
311
+
312
+ def with_body(self, *, media_type: str, value: coverage.GeneratedValue) -> TemplateValue:
313
+ kwargs = {**self._template, "media_type": media_type, "body": value.value}
314
+ kwargs = self._serialize(kwargs)
315
+ components = {**self._components, "body": value.data_generation_method}
316
+ return TemplateValue(kwargs=kwargs, components=components)
317
+
318
+ def with_parameter(self, *, location: str, name: str, value: coverage.GeneratedValue) -> TemplateValue:
319
+ from .specs.openapi.constants import LOCATION_TO_CONTAINER
320
+
321
+ container_name = LOCATION_TO_CONTAINER[location]
322
+ container = self._template[container_name]
323
+ return self.with_container(
324
+ container_name=container_name,
325
+ value={**container, name: value.value},
326
+ data_generation_method=value.data_generation_method,
327
+ )
328
+
329
+ def with_container(
330
+ self, *, container_name: str, value: Any, data_generation_method: DataGenerationMethod
331
+ ) -> TemplateValue:
332
+ kwargs = {**self._template, container_name: value}
333
+ kwargs = self._serialize(kwargs)
334
+ components = {**self._components, container_name: data_generation_method}
335
+ return TemplateValue(kwargs=kwargs, components=components)
336
+
337
+
338
+ @dataclass
339
+ class TemplateValue:
340
+ kwargs: dict[str, Any]
341
+ components: dict[str, DataGenerationMethod]
342
+ __slots__ = ("kwargs", "components")
343
+
344
+
345
+ def _stringify_value(val: Any, container_name: str) -> Any:
346
+ if val is None:
347
+ return "null"
348
+ if val is True:
349
+ return "true"
350
+ if val is False:
351
+ return "false"
352
+ if isinstance(val, (int, float)):
353
+ return str(val)
354
+ if isinstance(val, list):
355
+ if container_name == "query":
356
+ # Having a list here ensures there will be multiple query parameters wit the same name
357
+ return [_stringify_value(item, container_name) for item in val]
358
+ # use comma-separated values style for arrays
359
+ return ",".join(_stringify_value(sub, container_name) for sub in val)
360
+ if isinstance(val, dict):
361
+ return {key: _stringify_value(sub, container_name) for key, sub in val.items()}
362
+ return val
363
+
364
+
226
365
  def _iter_coverage_cases(
227
366
  operation: APIOperation, data_generation_methods: list[DataGenerationMethod]
228
367
  ) -> Generator[Case, None, None]:
229
368
  from .specs.openapi.constants import LOCATION_TO_CONTAINER
230
369
  from .specs.openapi.examples import find_in_responses, find_matching_in_responses
231
-
232
- def _stringify_value(val: Any, location: str) -> str | list[str]:
233
- if isinstance(val, list):
234
- if location == "query":
235
- # Having a list here ensures there will be multiple query parameters wit the same name
236
- return [json.dumps(item) for item in val]
237
- # use comma-separated values style for arrays
238
- return ",".join(json.dumps(sub) for sub in val)
239
- return json.dumps(val)
370
+ from schemathesis.specs.openapi.serialization import get_serializers_for_operation
240
371
 
241
372
  generators: dict[tuple[str, str], Generator[coverage.GeneratedValue, None, None]] = {}
242
- template: dict[str, Any] = {}
373
+ serializers = get_serializers_for_operation(operation)
374
+ template = Template(serializers)
243
375
  responses = find_in_responses(operation)
244
376
  for parameter in operation.iter_parameters():
245
377
  location = parameter.location
@@ -253,11 +385,7 @@ def _iter_coverage_cases(
253
385
  value = next(gen, NOT_SET)
254
386
  if isinstance(value, NotSet):
255
387
  continue
256
- container = template.setdefault(LOCATION_TO_CONTAINER[location], {})
257
- if location in ("header", "cookie", "path", "query") and not isinstance(value.value, str):
258
- container[name] = _stringify_value(value.value, location)
259
- else:
260
- container[name] = value.value
388
+ template.add_parameter(location, name, value)
261
389
  generators[(location, name)] = gen
262
390
  if operation.body:
263
391
  for body in operation.body:
@@ -274,48 +402,48 @@ def _iter_coverage_cases(
274
402
  if isinstance(value, NotSet):
275
403
  continue
276
404
  if "body" not in template:
277
- template["body"] = value.value
278
- template["media_type"] = body.media_type
279
- case = operation.make_case(**{**template, "body": value.value, "media_type": body.media_type})
405
+ template.set_body(value, body.media_type)
406
+ data = template.with_body(value=value, media_type=body.media_type)
407
+ case = operation.make_case(**data.kwargs)
280
408
  case.data_generation_method = value.data_generation_method
281
409
  case.meta = _make_meta(
282
410
  description=value.description,
283
411
  location=value.location,
284
412
  parameter=body.media_type,
285
413
  parameter_location="body",
414
+ **data.components,
286
415
  )
287
416
  yield case
288
417
  for next_value in gen:
289
- case = operation.make_case(**{**template, "body": next_value.value, "media_type": body.media_type})
418
+ data = template.with_body(value=next_value, media_type=body.media_type)
419
+ case = operation.make_case(**data.kwargs)
290
420
  case.data_generation_method = next_value.data_generation_method
291
421
  case.meta = _make_meta(
292
422
  description=next_value.description,
293
423
  location=next_value.location,
294
424
  parameter=body.media_type,
295
425
  parameter_location="body",
426
+ **data.components,
296
427
  )
297
428
  yield case
298
429
  elif DataGenerationMethod.positive in data_generation_methods:
299
- case = operation.make_case(**template)
430
+ data = template.unmodified()
431
+ case = operation.make_case(**data.kwargs)
300
432
  case.data_generation_method = DataGenerationMethod.positive
301
- case.meta = _make_meta(description="Default positive test case")
433
+ case.meta = _make_meta(description="Default positive test case", **data.components)
302
434
  yield case
303
435
 
304
436
  for (location, name), gen in generators.items():
305
- container_name = LOCATION_TO_CONTAINER[location]
306
- container = template[container_name]
307
437
  for value in gen:
308
- if location in ("header", "cookie", "path", "query") and not isinstance(value.value, str):
309
- generated = _stringify_value(value.value, location)
310
- else:
311
- generated = value.value
312
- case = operation.make_case(**{**template, container_name: {**container, name: generated}})
438
+ data = template.with_parameter(location=location, name=name, value=value)
439
+ case = operation.make_case(**data.kwargs)
313
440
  case.data_generation_method = value.data_generation_method
314
441
  case.meta = _make_meta(
315
442
  description=value.description,
316
443
  location=value.location,
317
444
  parameter=name,
318
445
  parameter_location=location,
446
+ **data.components,
319
447
  )
320
448
  yield case
321
449
  if DataGenerationMethod.negative in data_generation_methods:
@@ -323,10 +451,11 @@ def _iter_coverage_cases(
323
451
  # NOTE: The HEAD method is excluded
324
452
  methods = {"get", "put", "post", "delete", "options", "patch", "trace"} - set(operation.schema[operation.path])
325
453
  for method in sorted(methods):
326
- case = operation.make_case(**template)
454
+ data = template.unmodified()
455
+ case = operation.make_case(**data.kwargs)
327
456
  case._explicit_method = method
328
457
  case.data_generation_method = DataGenerationMethod.negative
329
- case.meta = _make_meta(description=f"Unspecified HTTP method: {method.upper()}")
458
+ case.meta = _make_meta(description=f"Unspecified HTTP method: {method.upper()}", **data.components)
330
459
  yield case
331
460
  # Generate duplicate query parameters
332
461
  if operation.query:
@@ -336,13 +465,19 @@ def _iter_coverage_cases(
336
465
  # I.e. contains just `default` value without any other keywords
337
466
  value = container.get(parameter.name, NOT_SET)
338
467
  if value is not NOT_SET:
339
- case = operation.make_case(**{**template, "query": {**container, parameter.name: [value, value]}})
468
+ data = template.with_container(
469
+ container_name="query",
470
+ value={**container, parameter.name: [value, value]},
471
+ data_generation_method=DataGenerationMethod.negative,
472
+ )
473
+ case = operation.make_case(**data.kwargs)
340
474
  case.data_generation_method = DataGenerationMethod.negative
341
475
  case.meta = _make_meta(
342
476
  description=f"Duplicate `{parameter.name}` query parameter",
343
477
  location=None,
344
478
  parameter=parameter.name,
345
479
  parameter_location="query",
480
+ **data.components,
346
481
  )
347
482
  yield case
348
483
  # Generate missing required parameters
@@ -352,15 +487,19 @@ def _iter_coverage_cases(
352
487
  location = parameter.location
353
488
  container_name = LOCATION_TO_CONTAINER[location]
354
489
  container = template[container_name]
355
- case = operation.make_case(
356
- **{**template, container_name: {k: v for k, v in container.items() if k != name}}
490
+ data = template.with_container(
491
+ container_name=container_name,
492
+ value={k: v for k, v in container.items() if k != name},
493
+ data_generation_method=DataGenerationMethod.negative,
357
494
  )
495
+ case = operation.make_case(**data.kwargs)
358
496
  case.data_generation_method = DataGenerationMethod.negative
359
497
  case.meta = _make_meta(
360
498
  description=f"Missing `{name}` at {location}",
361
499
  location=None,
362
500
  parameter=name,
363
501
  parameter_location=location,
502
+ **data.components,
364
503
  )
365
504
  yield case
366
505
  # Generate combinations for each location
@@ -389,21 +528,17 @@ def _iter_coverage_cases(
389
528
  _parameter: str | None,
390
529
  _data_generation_method: DataGenerationMethod,
391
530
  ) -> Case:
392
- if _location in ("header", "cookie", "path", "query"):
393
- container = {
394
- name: _stringify_value(val, _location) if not isinstance(val, str) else val
395
- for name, val in container_values.items()
396
- }
397
- else:
398
- container = container_values
399
-
400
- case = operation.make_case(**{**template, _container_name: container})
531
+ data = template.with_container(
532
+ container_name=_container_name, value=container_values, data_generation_method=_data_generation_method
533
+ )
534
+ case = operation.make_case(**data.kwargs)
401
535
  case.data_generation_method = _data_generation_method
402
536
  case.meta = _make_meta(
403
537
  description=description,
404
538
  location=None,
405
539
  parameter=_parameter,
406
540
  parameter_location=_location,
541
+ **data.components,
407
542
  )
408
543
  return case
409
544
 
@@ -496,13 +631,18 @@ def _make_meta(
496
631
  location: str | None = None,
497
632
  parameter: str | None = None,
498
633
  parameter_location: str | None = None,
634
+ query: DataGenerationMethod | None = None,
635
+ path_parameters: DataGenerationMethod | None = None,
636
+ headers: DataGenerationMethod | None = None,
637
+ cookies: DataGenerationMethod | None = None,
638
+ body: DataGenerationMethod | None = None,
499
639
  ) -> GenerationMetadata:
500
640
  return GenerationMetadata(
501
- query=None,
502
- path_parameters=None,
503
- headers=None,
504
- cookies=None,
505
- body=None,
641
+ query=query,
642
+ path_parameters=path_parameters,
643
+ headers=headers,
644
+ cookies=cookies,
645
+ body=body,
506
646
  phase=TestPhase.COVERAGE,
507
647
  description=description,
508
648
  location=location,
@@ -14,11 +14,8 @@ import click
14
14
  from ... import experimental, service
15
15
  from ...constants import (
16
16
  DISCORD_LINK,
17
- FALSE_VALUES,
18
17
  FLAKY_FAILURE_MESSAGE,
19
- GITHUB_APP_LINK,
20
18
  ISSUE_TRACKER_URL,
21
- REPORT_SUGGESTION_ENV_VAR,
22
19
  SCHEMATHESIS_TEST_CASE_HEADER,
23
20
  SCHEMATHESIS_VERSION,
24
21
  )
@@ -499,19 +496,6 @@ def display_statistic(context: ExecutionContext, event: events.Finished) -> None
499
496
  elif isinstance(context.report, ServiceReportContext):
500
497
  click.echo()
501
498
  handle_service_integration(context.report)
502
- else:
503
- env_var = os.getenv(REPORT_SUGGESTION_ENV_VAR)
504
- if env_var is not None and env_var.lower() in FALSE_VALUES:
505
- return
506
- click.echo(
507
- f"\n{bold('Tip')}: Use the {bold('`--report`')} CLI option to visualize test results via Schemathesis.io.\n"
508
- "We run additional conformance checks on reports from public repos."
509
- )
510
- if service.ci.detect() == service.ci.CIProvider.GITHUB:
511
- click.echo(
512
- "Optionally, for reporting results as PR comments, install the Schemathesis GitHub App:\n\n"
513
- f" {GITHUB_APP_LINK}"
514
- )
515
499
 
516
500
 
517
501
  def handle_service_integration(context: ServiceReportContext) -> None:
@@ -13,7 +13,6 @@ USER_AGENT = f"schemathesis/{SCHEMATHESIS_VERSION}"
13
13
  SCHEMATHESIS_TEST_CASE_HEADER = "X-Schemathesis-TestCaseId"
14
14
  HYPOTHESIS_IN_MEMORY_DATABASE_IDENTIFIER = ":memory:"
15
15
  DISCORD_LINK = "https://discord.gg/R9ASRAmHnA"
16
- GITHUB_APP_LINK = "https://github.com/apps/schemathesis"
17
16
  # Maximum test running time
18
17
  DEFAULT_DEADLINE = 15000
19
18
  DEFAULT_RESPONSE_TIMEOUT = 10000
@@ -50,7 +49,6 @@ HOOKS_MODULE_ENV_VAR = "SCHEMATHESIS_HOOKS"
50
49
  API_NAME_ENV_VAR = "SCHEMATHESIS_API_NAME"
51
50
  BASE_URL_ENV_VAR = "SCHEMATHESIS_BASE_URL"
52
51
  WAIT_FOR_SCHEMA_ENV_VAR = "SCHEMATHESIS_WAIT_FOR_SCHEMA"
53
- REPORT_SUGGESTION_ENV_VAR = "SCHEMATHESIS_REPORT_SUGGESTION"
54
52
 
55
53
  TRUE_VALUES = ("y", "yes", "t", "true", "on", "1")
56
54
  FALSE_VALUES = ("n", "no", "f", "false", "off", "0")
@@ -143,6 +143,12 @@ class AcceptedNegativeData(FailureContext):
143
143
  title: str = "Accepted negative data"
144
144
  type: str = "accepted_negative_data"
145
145
 
146
+ def unique_by_key(self, check_message: str | None) -> tuple[str, ...]:
147
+ return (
148
+ check_message or self.message,
149
+ str(self.status_code),
150
+ )
151
+
146
152
 
147
153
  @dataclass(repr=False)
148
154
  class RejectedPositiveData(FailureContext):
@@ -21,7 +21,9 @@ CheckFunction = Callable[["CheckContext", "GenericResponse", "Case"], Optional[b
21
21
  @dataclass
22
22
  class NegativeDataRejectionConfig:
23
23
  # 5xx will pass through
24
- allowed_statuses: list[str] = field(default_factory=lambda: ["400", "401", "403", "404", "422", "428", "5xx"])
24
+ allowed_statuses: list[str] = field(
25
+ default_factory=lambda: ["400", "401", "403", "404", "406", "422", "428", "5xx"]
26
+ )
25
27
 
26
28
 
27
29
  @dataclass
@@ -69,22 +69,6 @@ class RunnerContext:
69
69
  def is_stopped(self) -> bool:
70
70
  return self.stop_event.is_set()
71
71
 
72
- @property
73
- def has_all_not_found(self) -> bool:
74
- """Check if all responses are 404."""
75
- has_not_found = False
76
- for entry in self.data.results:
77
- for check in entry.checks:
78
- if check.response is not None:
79
- if check.response.status_code == 404:
80
- has_not_found = True
81
- else:
82
- # There are non-404 responses, no reason to check any other response
83
- return False
84
- # Only happens if all responses are 404, or there are no responses at all.
85
- # In the first case, it returns True, for the latter - False
86
- return has_not_found
87
-
88
72
  def add_result(self, result: TestResult) -> None:
89
73
  self.data.append(result)
90
74
 
@@ -147,6 +147,44 @@ class BaseRunner:
147
147
  __probes = None
148
148
  __analysis: Result[AnalysisResult, Exception] | None = None
149
149
 
150
+ def _should_warn_about_only_4xx(result: TestResult) -> bool:
151
+ if all(check.response is None for check in result.checks):
152
+ return False
153
+ # Don't duplicate auth warnings
154
+ if {check.response.status_code for check in result.checks if check.response is not None} <= {401, 403}:
155
+ return False
156
+ # At this point we know we only have 4xx responses
157
+ return True
158
+
159
+ def _check_warnings() -> None:
160
+ # Warn if all positive test cases got 4xx in return and no failure was found
161
+ def all_positive_are_rejected(result: TestResult) -> bool:
162
+ seen_positive = False
163
+ for check in result.checks:
164
+ if check.example.data_generation_method != DataGenerationMethod.positive:
165
+ continue
166
+ seen_positive = True
167
+ if check.response is None:
168
+ continue
169
+ # At least one positive response for positive test case
170
+ if 200 <= check.response.status_code < 300:
171
+ return False
172
+ # If there are positive test cases, and we ended up here, then there are no 2xx responses for them
173
+ # Otherwise, there are no positive test cases at all and this check should pass
174
+ return seen_positive
175
+
176
+ for result in ctx.data.results:
177
+ # Only warn about 4xx responses in successful positive test scenarios
178
+ if (
179
+ all(check.value == Status.success for check in result.checks)
180
+ and DataGenerationMethod.positive in result.data_generation_method
181
+ and all_positive_are_rejected(result)
182
+ and _should_warn_about_only_4xx(result)
183
+ ):
184
+ ctx.add_warning(
185
+ f"`{result.verbose_name}` returned only 4xx responses during unit tests. Check base URL or adjust data generation settings"
186
+ )
187
+
150
188
  def _initialize() -> events.Initialized:
151
189
  nonlocal initialized
152
190
  initialized = events.Initialized.from_schema(
@@ -159,8 +197,7 @@ class BaseRunner:
159
197
  return initialized
160
198
 
161
199
  def _finish() -> events.Finished:
162
- if ctx.has_all_not_found:
163
- ctx.add_warning(ALL_NOT_FOUND_WARNING_MESSAGE)
200
+ _check_warnings()
164
201
  return events.Finished.from_results(results=ctx.data, running_time=time.monotonic() - start_time)
165
202
 
166
203
  def _before_probes() -> events.BeforeProbing:
@@ -742,9 +779,6 @@ def has_too_many_responses_with_status(result: TestResult, status_code: int) ->
742
779
  return unauthorized_count / total >= TOO_MANY_RESPONSES_THRESHOLD
743
780
 
744
781
 
745
- ALL_NOT_FOUND_WARNING_MESSAGE = "All API responses have a 404 status code. Did you specify the proper API location?"
746
-
747
-
748
782
  def setup_hypothesis_database_key(test: Callable, operation: APIOperation) -> None:
749
783
  """Make Hypothesis use separate database entries for every API operation.
750
784
 
@@ -294,7 +294,12 @@ def missing_required_header(ctx: CheckContext, response: GenericResponse, case:
294
294
 
295
295
 
296
296
  def unsupported_method(ctx: CheckContext, response: GenericResponse, case: Case) -> bool | None:
297
- if case.meta and case.meta.description and case.meta.description.startswith("Unspecified HTTP method:"):
297
+ if (
298
+ case.meta
299
+ and case.meta.description
300
+ and case.meta.description.startswith("Unspecified HTTP method:")
301
+ and response.request.method != "OPTIONS"
302
+ ):
298
303
  if response.status_code != 405:
299
304
  raise AssertionError(
300
305
  f"Unexpected response status for unspecified HTTP method: {response.status_code}\nExpected: 405"
@@ -9,6 +9,8 @@ from typing import TYPE_CHECKING, Any, Generator, Iterator, Union, cast
9
9
  import requests
10
10
  from hypothesis_jsonschema import from_schema
11
11
 
12
+ from schemathesis.specs.openapi.serialization import get_serializers_for_operation
13
+
12
14
  from ...constants import DEFAULT_RESPONSE_TIMEOUT
13
15
  from ...generation import get_single_example
14
16
  from ...internal.copy import fast_deepcopy
@@ -48,11 +50,7 @@ def get_strategies_from_examples(
48
50
  operation: APIOperation[OpenAPIParameter, Case], as_strategy_kwargs: dict[str, Any] | None = None
49
51
  ) -> list[SearchStrategy[Case]]:
50
52
  """Build a set of strategies that generate test cases based on explicit examples in the schema."""
51
- maps = {}
52
- for location, container in LOCATION_TO_CONTAINER.items():
53
- serializer = operation.get_parameter_serializer(location)
54
- if serializer is not None:
55
- maps[container] = serializer
53
+ maps = get_serializers_for_operation(operation)
56
54
 
57
55
  def serialize_components(case: Case) -> Case:
58
56
  """Applies special serialization rules for case components.