schemathesis 4.0.0a3__tar.gz → 4.0.0a4__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 (591) hide show
  1. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/.github/workflows/build.yml +1 -1
  2. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/.github/workflows/codeql-analysis.yml +3 -3
  3. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/.pre-commit-config.yaml +2 -2
  4. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/PKG-INFO +1 -1
  5. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/docs/changelog.rst +75 -2
  6. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/pyproject.toml +1 -1
  7. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/cli/__init__.py +3 -3
  8. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/cli/commands/run/__init__.py +148 -94
  9. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/cli/commands/run/context.py +72 -2
  10. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/cli/commands/run/executor.py +32 -12
  11. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/cli/commands/run/filters.py +1 -0
  12. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/cli/commands/run/handlers/cassettes.py +27 -46
  13. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/cli/commands/run/handlers/junitxml.py +1 -1
  14. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/cli/commands/run/handlers/output.py +72 -16
  15. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/cli/commands/run/hypothesis.py +30 -19
  16. schemathesis-4.0.0a4/src/schemathesis/cli/commands/run/reports.py +72 -0
  17. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/cli/commands/run/validation.py +18 -12
  18. schemathesis-4.0.0a4/src/schemathesis/cli/ext/groups.py +84 -0
  19. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/cli/ext/options.py +15 -8
  20. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/core/errors.py +79 -11
  21. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/core/failures.py +2 -1
  22. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/core/transforms.py +1 -1
  23. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/engine/errors.py +8 -3
  24. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/engine/phases/stateful/_executor.py +1 -1
  25. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/engine/phases/unit/__init__.py +2 -3
  26. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/engine/phases/unit/_executor.py +16 -13
  27. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/errors.py +6 -2
  28. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/filters.py +8 -0
  29. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/generation/coverage.py +6 -1
  30. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/generation/stateful/state_machine.py +49 -3
  31. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/pytest/lazy.py +2 -3
  32. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/pytest/plugin.py +2 -3
  33. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/schemas.py +1 -1
  34. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/checks.py +27 -10
  35. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/expressions/__init__.py +22 -6
  36. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/expressions/nodes.py +15 -21
  37. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/expressions/parser.py +1 -1
  38. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/parameters.py +0 -2
  39. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/schemas.py +13 -13
  40. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/stateful/__init__.py +96 -23
  41. {schemathesis-4.0.0a3/src/schemathesis/specs/openapi → schemathesis-4.0.0a4/src/schemathesis/specs/openapi/stateful}/links.py +60 -16
  42. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/__snapshots__/test_dereferencing/test_global_security_schemes_with_custom_scope.raw +1 -1
  43. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/__snapshots__/test_dereferencing/test_missing_file_in_resolution.raw +2 -2
  44. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/__snapshots__/test_hypothesis/test_health_check_failed_large_base_example.raw +2 -2
  45. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/__snapshots__/test_recoverable_errors/test_in_cli[1].raw +3 -3
  46. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/__snapshots__/test_recoverable_errors/test_in_cli[2].raw +3 -3
  47. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/__snapshots__/test_serialization/test_in_cli[Open API 3.0].raw +2 -2
  48. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/auth/__snapshots__/test_cli/test_conditional[Open API 3.0].raw +1 -1
  49. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/auth/__snapshots__/test_cli/test_custom_auth[Open API 3.0].raw +1 -1
  50. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/auth/__snapshots__/test_cli/test_explicit_auth_precedence[Open API 3.0-args0-Basic dXNlcjpwYXNz].raw +1 -1
  51. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/auth/__snapshots__/test_cli/test_explicit_auth_precedence[Open API 3.0-args1-Bearer EXPLICIT].raw +1 -1
  52. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/auth/__snapshots__/test_cli/test_multiple_auth_mechanisms_with_explicit_auth.raw +1 -1
  53. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/auth/__snapshots__/test_cli/test_multiple_threads[Open API 3.0].raw +1 -1
  54. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/auth/__snapshots__/test_cli/test_requests_auth[Open API 3.0].raw +1 -1
  55. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/auth/test_cli.py +2 -4
  56. schemathesis-4.0.0a4/test/cli/__snapshots__/test_cassettes/test_forbid_preserve_bytes_without_cassette_path[Open API 3.0].raw +7 -0
  57. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_cassettes/test_run_subprocess[Open API 2.0].raw +1 -1
  58. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_cassettes/test_run_subprocess[Open API 3.0].raw +1 -1
  59. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args0].raw +1 -1
  60. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args10].raw +2 -2
  61. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args1].raw +1 -1
  62. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args2].raw +2 -2
  63. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args3].raw +1 -1
  64. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args4].raw +2 -2
  65. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args5].raw +1 -1
  66. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args6].raw +2 -2
  67. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args7].raw +1 -1
  68. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance_with_env_vars.raw +2 -2
  69. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 2.0---auth='testwrong'].raw +3 -3
  70. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 2.0--H Authorization Basic J3Rlc3Q6d3Jvbmcn].raw +3 -3
  71. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 3.0---auth='testwrong'].raw +3 -3
  72. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 3.0--H Authorization Basic J3Rlc3Q6d3Jvbmcn].raw +3 -3
  73. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_binary_payload.raw +2 -2
  74. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_chunked_encoding_error[Open API 3.0].raw +2 -2
  75. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_cli_run_changed_base_url[Open API 3.0].raw +2 -2
  76. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[Open API 2.0-1].raw +2 -2
  77. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[Open API 2.0-2].raw +2 -2
  78. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[Open API 3.0-1].raw +2 -2
  79. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[Open API 3.0-2].raw +2 -2
  80. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_complex_urlencoded_example.raw +2 -2
  81. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 2.0-1].raw +3 -3
  82. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 2.0-2].raw +3 -3
  83. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 3.0-1].raw +3 -3
  84. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 3.0-2].raw +3 -3
  85. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 2.0-1].raw +2 -2
  86. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 2.0-2].raw +2 -2
  87. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 3.0-1].raw +2 -2
  88. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 3.0-2].raw +2 -2
  89. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_custom_cli_option[Open API 3.0].raw +1 -1
  90. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_dont_skip_when_generation_is_possible[Open API 3.0].raw +1 -1
  91. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_exit_first[Open API 3.0].raw +2 -2
  92. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_explicit_example_failure_output.raw +2 -2
  93. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_explicit_headers_in_output_on_errors[Open API 3.0].raw +2 -2
  94. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_explicit_query_token_sanitization[Open API 3.0].raw +2 -2
  95. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_filter_by[Open API 3.0---exclude-by=x-property != 42].raw +1 -1
  96. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_filter_by[Open API 3.0---include-by=x-property == 42].raw +1 -1
  97. schemathesis-4.0.0a4/test/cli/__snapshots__/test_commands/test_filter_case_sensitivity[Open API 3.0].raw +56 -0
  98. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_graphql_url[foo-args0].raw +1 -1
  99. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_graphql_url[foo-args1].raw +1 -1
  100. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_graphql_url[graphql-args0].raw +1 -1
  101. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_graphql_url[graphql-args1].raw +1 -1
  102. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_group_errors.raw +1 -1
  103. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_invalid_operation[Open API 2.0-1].raw +2 -2
  104. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_invalid_operation[Open API 3.0-1].raw +2 -2
  105. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_invalid_schema_with_disabled_validation[3.0.2].raw +2 -2
  106. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_invalid_schema_with_disabled_validation[3.1.0].raw +2 -2
  107. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_keyboard_interrupt[Open API 2.0-1].raw +2 -2
  108. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_keyboard_interrupt[Open API 3.0-1].raw +2 -2
  109. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_keyboard_interrupt_threaded[Open API 2.0].raw +1 -1
  110. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_keyboard_interrupt_threaded[Open API 3.0].raw +1 -1
  111. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_long_operation_output.raw +1 -1
  112. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_long_payload.raw +2 -2
  113. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_malformed_json_deduplication[Open API 3.0].raw +5 -3
  114. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 2.0-1].raw +2 -2
  115. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 2.0-2].raw +2 -2
  116. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 3.0-1].raw +2 -2
  117. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 3.0-2].raw +2 -2
  118. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[cookie].raw +2 -2
  119. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[header].raw +2 -2
  120. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[path].raw +2 -2
  121. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[query].raw +2 -2
  122. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_multiple_errors.raw +1 -1
  123. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_multiple_failures_different_check[Open API 2.0].raw +2 -2
  124. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_multiple_failures_different_check[Open API 3.0].raw +2 -2
  125. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_multiple_failures_in_single_check.raw +2 -2
  126. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_multiple_failures_single_check[Open API 2.0].raw +2 -2
  127. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_multiple_failures_single_check[Open API 3.0].raw +2 -2
  128. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_nested_binary_in_yaml.raw +1 -1
  129. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_no_schema_in_media_type[Open API 3.0].raw +1 -1
  130. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_no_useless_traceback.raw +2 -2
  131. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_null_byte_in_header_probe.raw +1 -1
  132. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_proxy_error[Open API 3.0].raw +2 -2
  133. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_read_content_timeout[Open API 3.0].raw +2 -2
  134. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_recursive_reference_error_message.raw +2 -2
  135. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError(Custom check failed!)-Open API 2.0].raw +2 -2
  136. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError(Custom check failed!)-Open API 3.0].raw +2 -2
  137. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError-Open API 2.0].raw +2 -2
  138. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError-Open API 3.0].raw +2 -2
  139. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_reserved_characters_in_operation_name.raw +1 -1
  140. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[Open API 2.0].raw +2 -2
  141. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[Open API 3.0].raw +2 -2
  142. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[Open API 2.0].raw +2 -2
  143. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[Open API 3.0].raw +2 -2
  144. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args15].raw +1 -1
  145. schemathesis-4.0.0a4/test/cli/__snapshots__/test_commands/test_run_output[args1].raw +7 -0
  146. schemathesis-4.0.0a4/test/cli/__snapshots__/test_commands/test_run_output[args20].raw +167 -0
  147. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args31].raw +1 -1
  148. schemathesis-4.0.0a4/test/cli/__snapshots__/test_commands/test_run_output[args33].raw +7 -0
  149. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_skip_not_negated_tests[Open API 3.0].raw +1 -1
  150. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_skipped_on_no_explicit_examples.raw +1 -1
  151. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_status_code_conformance[Open API 2.0-1].raw +2 -2
  152. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_status_code_conformance[Open API 2.0-2].raw +2 -2
  153. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_status_code_conformance[Open API 3.0-1].raw +2 -2
  154. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_status_code_conformance[Open API 3.0-2].raw +2 -2
  155. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_unknown_schema_error[Open API 3.0].raw +2 -2
  156. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_unresolvable_reference_with_disabled_validation.raw +3 -3
  157. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_unsatisfiable[Open API 2.0-1].raw +2 -2
  158. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_unsatisfiable[Open API 2.0-2].raw +2 -2
  159. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_unsatisfiable[Open API 3.0-1].raw +2 -2
  160. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_unsatisfiable[Open API 3.0-2].raw +2 -2
  161. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_unsupported_regex.raw +2 -2
  162. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_useful_traceback[Open API 3.0].raw +2 -2
  163. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_warning_on_all_not_found.raw +1 -1
  164. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_warning_on_unauthorized.raw +2 -2
  165. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_hooks/test_after_call[Open API 3.0].raw +2 -2
  166. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/test_cassettes.py +56 -39
  167. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/test_checks.py +7 -7
  168. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/test_commands.py +62 -56
  169. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/test_crashes.py +3 -3
  170. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/test_junitxml.py +21 -21
  171. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/test_options.py +2 -2
  172. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/test_targeted.py +3 -3
  173. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/code_samples/test_curl.py +1 -1
  174. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/conftest.py +2 -2
  175. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/contrib/__snapshots__/test_unique_data/test_cli[None].raw +1 -1
  176. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema0].raw +1 -1
  177. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema1].raw +1 -1
  178. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema2].raw +1 -1
  179. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/contrib/__snapshots__/test_unique_data/test_cli_failure.raw +2 -2
  180. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/contrib/__snapshots__/test_unique_data/test_explicit_headers[1].raw +1 -1
  181. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/contrib/__snapshots__/test_unique_data/test_explicit_headers[2].raw +1 -1
  182. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/contrib/__snapshots__/test_unique_data/test_graphql_url.raw +1 -1
  183. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/contrib/openapi/__snapshots__/test_fill_missing_examples/test_fills_missing_examples.raw +1 -1
  184. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/contrib/test_unique_data.py +6 -6
  185. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/coverage/__snapshots__/test_phase/test_unspecified_http_methods.raw +2 -2
  186. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/coverage/test_phase.py +69 -3
  187. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/engine/test_engine.py +6 -1
  188. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/hooks/test_filters.py +6 -6
  189. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/graphql/__snapshots__/test_basic/test_disallow_null.raw +1 -1
  190. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/graphql/__snapshots__/test_basic/test_filter_operations[--exclude-name=Query.getBooks].raw +1 -1
  191. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/graphql/__snapshots__/test_basic/test_filter_operations[--include-name=Query.getBooks].raw +1 -1
  192. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/graphql/__snapshots__/test_custom_scalars/test_custom_scalar_in_cli.raw +1 -1
  193. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/graphql/test_basic.py +3 -3
  194. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/graphql/test_custom_scalars.py +2 -2
  195. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/__snapshots__/test_checks/test_method_not_allowed[basic-post].raw +2 -2
  196. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/__snapshots__/test_checks/test_method_not_allowed[success-get].raw +1 -1
  197. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/__snapshots__/test_checks/test_missing_required_header[basic-Authorization-406].raw +1 -1
  198. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/__snapshots__/test_checks/test_missing_required_header[success-Authorization-200].raw +2 -2
  199. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/__snapshots__/test_checks/test_missing_required_header[success-X-API-Key-1-200].raw +1 -1
  200. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/__snapshots__/test_checks/test_missing_required_header[success-X-API-Key-1-406].raw +2 -2
  201. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/__snapshots__/test_examples/test_network_error_with_flaky_generation.raw +1 -1
  202. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/__snapshots__/test_examples/test_parameter_override.raw +1 -1
  203. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/__snapshots__/test_ignored_auth/test_explicit_auth_cli[Open API 3.0].raw +1 -1
  204. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/__snapshots__/test_ignored_auth/test_stateful_in_cli_no_error[Open API 3.0-False].raw +1 -1
  205. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/__snapshots__/test_ignored_auth/test_stateful_in_cli_no_error[Open API 3.0-True].raw +2 -2
  206. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/__snapshots__/test_media_types/test_explicit_example_with_custom_media_type.raw +2 -2
  207. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/stateful/__snapshots__/test_cli/test_default[Open API 3.0-1].raw +1 -1
  208. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/stateful/__snapshots__/test_cli/test_default[Open API 3.0-2].raw +1 -1
  209. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/stateful/__snapshots__/test_cli/test_filtered_out[Open API 3.0].raw +1 -1
  210. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/stateful/__snapshots__/test_cli/test_generation_config[Open API 3.0].raw +1 -1
  211. schemathesis-4.0.0a4/test/specs/openapi/stateful/__snapshots__/test_cli/test_invalid_parameter_reference.raw +70 -0
  212. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/stateful/__snapshots__/test_cli/test_keyboard_interrupt[Open API 3.0].raw +1 -1
  213. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/stateful/__snapshots__/test_cli/test_max_failures[Open API 3.0].raw +2 -2
  214. schemathesis-4.0.0a4/test/specs/openapi/stateful/__snapshots__/test_cli/test_missing_body_parameter.raw +58 -0
  215. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/stateful/__snapshots__/test_cli/test_missing_link[Open API 3.0].raw +12 -4
  216. schemathesis-4.0.0a4/test/specs/openapi/stateful/__snapshots__/test_cli/test_non_json_response[User data as plain text].raw +58 -0
  217. schemathesis-4.0.0a4/test/specs/openapi/stateful/__snapshots__/test_cli/test_non_json_response[].raw +58 -0
  218. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/stateful/__snapshots__/test_cli/test_not_enough_links[Open API 3.0].raw +1 -1
  219. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/stateful/__snapshots__/test_cli/test_proxy_error[Open API 3.0].raw +1 -1
  220. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/stateful/__snapshots__/test_cli/test_stateful_only[Open API 3.0].raw +1 -1
  221. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/stateful/__snapshots__/test_cli/test_stateful_only_with_error[Open API 3.0].raw +1 -1
  222. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/stateful/conftest.py +97 -2
  223. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/stateful/test_cli.py +34 -14
  224. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/stateful/test_engine.py +39 -2
  225. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/stateful/test_stateful.py +31 -0
  226. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/test_checks.py +55 -4
  227. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/test_examples.py +5 -5
  228. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/test_expressions.py +12 -10
  229. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/test_ignored_auth.py +3 -3
  230. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/test_media_types.py +1 -1
  231. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_async.py +4 -4
  232. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_common_parameters.py +1 -1
  233. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_dereferencing.py +2 -2
  234. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_filters.py +17 -14
  235. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_hypothesis.py +1 -1
  236. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_lazy.py +11 -13
  237. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_parametrization.py +13 -13
  238. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_pytest.py +10 -10
  239. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_recoverable_errors.py +1 -1
  240. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_serialization.py +1 -1
  241. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_stateful.py +6 -13
  242. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test-corpus/test_corpus.py +5 -4
  243. schemathesis-4.0.0a3/src/schemathesis/cli/ext/groups.py +0 -55
  244. schemathesis-4.0.0a3/test/cli/__snapshots__/test_cassettes/test_forbid_preserve_exact_bytes_without_cassette_path[Open API 3.0].raw +0 -7
  245. schemathesis-4.0.0a3/test/cli/__snapshots__/test_commands/test_run_output[args1].raw +0 -7
  246. schemathesis-4.0.0a3/test/cli/__snapshots__/test_commands/test_run_output[args20].raw +0 -203
  247. schemathesis-4.0.0a3/test/cli/__snapshots__/test_commands/test_run_output[args33].raw +0 -7
  248. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/.dockerignore +0 -0
  249. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/.github/FUNDING.yml +0 -0
  250. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  251. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  252. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  253. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/.github/dependabot.yml +0 -0
  254. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/.github/workflows/codspeed.yml +0 -0
  255. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/.github/workflows/commit.yml +0 -0
  256. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/.github/workflows/example-build.yml +0 -0
  257. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/.github/workflows/example-no-build.yml +0 -0
  258. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/.github/workflows/master_update.yml +0 -0
  259. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/.github/workflows/release.yml +0 -0
  260. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/.github/workflows/test-corpus.yml +0 -0
  261. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/.github/workflows/test-hypothesis.yml +0 -0
  262. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/.github/workflows/update-pre-commit.yml +0 -0
  263. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/.gitignore +0 -0
  264. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/.readthedocs.yml +0 -0
  265. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/.rstcheck.cfg +0 -0
  266. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/.yamllint +0 -0
  267. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/ARCHITECTURE.md +0 -0
  268. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/CITATION.cff +0 -0
  269. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/CODE_OF_CONDUCT.md +0 -0
  270. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/CONTRIBUTING.rst +0 -0
  271. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/Dockerfile +0 -0
  272. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/Dockerfile.bookworm +0 -0
  273. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/LICENSE +0 -0
  274. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/README.md +0 -0
  275. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/SECURITY.md +0 -0
  276. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/benches/cli.py +0 -0
  277. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/benches/coverage_phase.py +0 -0
  278. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/benches/references.py +0 -0
  279. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/benches/schema.py +0 -0
  280. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/changelog.py +0 -0
  281. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/codecov.yml +0 -0
  282. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/corpus/data/graphql.tar.gz +0 -0
  283. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/corpus/data/openapi-3.0.tar.gz +0 -0
  284. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/corpus/data/openapi-3.1.tar.gz +0 -0
  285. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/corpus/data/swagger-2.0.tar.gz +0 -0
  286. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/corpus/tools.py +0 -0
  287. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/docs/Makefile +0 -0
  288. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/docs/additional-content.rst +0 -0
  289. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/docs/api.rst +0 -0
  290. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/docs/auth.rst +0 -0
  291. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/docs/cli.rst +0 -0
  292. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/docs/conf.py +0 -0
  293. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/docs/continuous_integration.rst +0 -0
  294. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/docs/contrib.rst +0 -0
  295. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/docs/data-generation.rst +0 -0
  296. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/docs/examples.rst +0 -0
  297. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/docs/experimental.rst +0 -0
  298. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/docs/extending.rst +0 -0
  299. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/docs/faq.rst +0 -0
  300. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/docs/getting-started.rst +0 -0
  301. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/docs/graphql.rst +0 -0
  302. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/docs/index.rst +0 -0
  303. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/docs/python.rst +0 -0
  304. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/docs/recipes.rst +0 -0
  305. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/docs/requirements.txt +0 -0
  306. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/docs/sanitizing.rst +0 -0
  307. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/docs/service.rst +0 -0
  308. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/docs/stateful.rst +0 -0
  309. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/docs/targeted.rst +0 -0
  310. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/example/Dockerfile +0 -0
  311. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/example/README.md +0 -0
  312. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/example/app.py +0 -0
  313. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/example/compose.yml +0 -0
  314. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/example/openapi.json +0 -0
  315. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/example/requirements-app.in +0 -0
  316. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/example/requirements-app.txt +0 -0
  317. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/example/requirements-pytest.in +0 -0
  318. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/example/requirements-pytest.txt +0 -0
  319. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/example/tests/__init__.py +0 -0
  320. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/example/tests/conftest.py +0 -0
  321. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/example/tests/extensions.py +0 -0
  322. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/example/tests/test_app.py +0 -0
  323. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/img/demo.gif +0 -0
  324. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/mypy.ini +0 -0
  325. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/__init__.py +0 -0
  326. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/auths.py +0 -0
  327. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/checks.py +0 -0
  328. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/cli/__main__.py +0 -0
  329. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/cli/commands/__init__.py +0 -0
  330. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/cli/commands/run/checks.py +0 -0
  331. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/cli/commands/run/events.py +0 -0
  332. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/cli/commands/run/handlers/__init__.py +0 -0
  333. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/cli/commands/run/handlers/base.py +0 -0
  334. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/cli/commands/run/loaders.py +0 -0
  335. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/cli/constants.py +0 -0
  336. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/cli/core.py +0 -0
  337. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/cli/ext/__init__.py +0 -0
  338. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/cli/ext/fs.py +0 -0
  339. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/cli/hooks.py +0 -0
  340. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/contrib/__init__.py +0 -0
  341. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/contrib/openapi/__init__.py +0 -0
  342. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/contrib/openapi/fill_missing_examples.py +0 -0
  343. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/core/__init__.py +0 -0
  344. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/core/compat.py +0 -0
  345. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/core/control.py +0 -0
  346. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/core/curl.py +0 -0
  347. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/core/deserialization.py +0 -0
  348. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/core/fs.py +0 -0
  349. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/core/lazy_import.py +0 -0
  350. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/core/loaders.py +0 -0
  351. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/core/marks.py +0 -0
  352. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/core/media_types.py +0 -0
  353. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/core/output/__init__.py +0 -0
  354. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/core/output/sanitization.py +0 -0
  355. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/core/rate_limit.py +0 -0
  356. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/core/registries.py +0 -0
  357. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/core/result.py +0 -0
  358. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/core/transport.py +0 -0
  359. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/core/validation.py +0 -0
  360. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/core/version.py +0 -0
  361. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/engine/__init__.py +0 -0
  362. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/engine/config.py +0 -0
  363. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/engine/context.py +0 -0
  364. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/engine/control.py +0 -0
  365. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/engine/core.py +0 -0
  366. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/engine/events.py +0 -0
  367. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/engine/phases/__init__.py +0 -0
  368. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/engine/phases/probes.py +0 -0
  369. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/engine/phases/stateful/__init__.py +0 -0
  370. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/engine/phases/stateful/context.py +0 -0
  371. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/engine/phases/unit/_pool.py +0 -0
  372. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/engine/recorder.py +0 -0
  373. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/experimental/__init__.py +0 -0
  374. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/generation/__init__.py +0 -0
  375. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/generation/case.py +0 -0
  376. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/generation/hypothesis/__init__.py +0 -0
  377. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/generation/hypothesis/builder.py +0 -0
  378. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/generation/hypothesis/examples.py +0 -0
  379. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/generation/hypothesis/given.py +0 -0
  380. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/generation/hypothesis/reporting.py +0 -0
  381. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/generation/hypothesis/strategies.py +0 -0
  382. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/generation/meta.py +0 -0
  383. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/generation/modes.py +0 -0
  384. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/generation/overrides.py +0 -0
  385. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/generation/stateful/__init__.py +0 -0
  386. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/generation/targets.py +0 -0
  387. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/graphql/__init__.py +0 -0
  388. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/graphql/checks.py +0 -0
  389. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/graphql/loaders.py +0 -0
  390. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/hooks.py +0 -0
  391. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/openapi/__init__.py +0 -0
  392. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/openapi/checks.py +0 -0
  393. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/openapi/generation/__init__.py +0 -0
  394. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/openapi/generation/filters.py +0 -0
  395. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/openapi/loaders.py +0 -0
  396. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/py.typed +0 -0
  397. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/pytest/__init__.py +0 -0
  398. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/pytest/control_flow.py +0 -0
  399. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/pytest/loaders.py +0 -0
  400. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/python/__init__.py +0 -0
  401. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/python/asgi.py +0 -0
  402. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/python/wsgi.py +0 -0
  403. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/__init__.py +0 -0
  404. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/graphql/__init__.py +0 -0
  405. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/graphql/_cache.py +0 -0
  406. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/graphql/nodes.py +0 -0
  407. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/graphql/scalars.py +0 -0
  408. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/graphql/schemas.py +0 -0
  409. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/graphql/validation.py +0 -0
  410. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/__init__.py +0 -0
  411. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/_cache.py +0 -0
  412. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/_hypothesis.py +0 -0
  413. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/constants.py +0 -0
  414. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/converter.py +0 -0
  415. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/definitions.py +0 -0
  416. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/examples.py +0 -0
  417. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/expressions/errors.py +0 -0
  418. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/expressions/extractors.py +0 -0
  419. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/expressions/lexer.py +0 -0
  420. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/formats.py +0 -0
  421. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/media_types.py +0 -0
  422. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/negative/__init__.py +0 -0
  423. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/negative/mutations.py +0 -0
  424. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/negative/types.py +0 -0
  425. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/negative/utils.py +0 -0
  426. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/patterns.py +0 -0
  427. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/references.py +0 -0
  428. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/security.py +0 -0
  429. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/serialization.py +0 -0
  430. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/stateful/control.py +0 -0
  431. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/utils.py +0 -0
  432. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/transport/__init__.py +0 -0
  433. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/transport/asgi.py +0 -0
  434. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/transport/prepare.py +0 -0
  435. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/transport/requests.py +0 -0
  436. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/transport/serialization.py +0 -0
  437. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/transport/wsgi.py +0 -0
  438. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/__init__.py +0 -0
  439. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/_pytest/__init__.py +0 -0
  440. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/_pytest/test_markers.py +0 -0
  441. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/apps/__init__.py +0 -0
  442. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/apps/_graphql/__init__.py +0 -0
  443. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/apps/_graphql/_fastapi/__init__.py +0 -0
  444. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/apps/_graphql/_fastapi/app.py +0 -0
  445. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/apps/_graphql/_flask/__init__.py +0 -0
  446. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/apps/_graphql/_flask/app.py +0 -0
  447. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/apps/_graphql/schema.py +0 -0
  448. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/apps/cp1252_app.py +0 -0
  449. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/apps/hooks.py +0 -0
  450. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/apps/openapi/__init__.py +0 -0
  451. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/apps/openapi/_aiohttp/__init__.py +0 -0
  452. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/apps/openapi/_aiohttp/app.py +0 -0
  453. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/apps/openapi/_aiohttp/handlers.py +0 -0
  454. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/apps/openapi/_fastapi/__init__.py +0 -0
  455. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/apps/openapi/_fastapi/app.py +0 -0
  456. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/apps/openapi/_flask/__init__.py +0 -0
  457. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/apps/openapi/_flask/app.py +0 -0
  458. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/apps/openapi/schema.py +0 -0
  459. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/auth/__init__.py +0 -0
  460. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/auth/conftest.py +0 -0
  461. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/auth/test_provider.py +0 -0
  462. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/auth/test_pytest.py +0 -0
  463. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__init__.py +0 -0
  464. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args8].raw +0 -0
  465. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args9].raw +0 -0
  466. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_auth_and_authorization_header_are_disallowed[Open API 3.0-Authorization].raw +0 -0
  467. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_auth_and_authorization_header_are_disallowed[Open API 3.0-authorization].raw +0 -0
  468. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_certificate_only_key.raw +0 -0
  469. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_commands_help.raw +0 -0
  470. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_duplicated_filters[Open API 3.0].raw +0 -0
  471. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_empty_schema_file.raw +0 -0
  472. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_force_color_nocolor[Open API 3.0].raw +0 -0
  473. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_hooks_module_not_found.raw +0 -0
  474. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_hooks_with_inner_import_error.raw +0 -0
  475. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_hypothesis_database_with_derandomize[Open API 3.0].raw +0 -0
  476. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_invalid_filter[Open API 3.0].raw +0 -0
  477. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_invalid_yaml.raw +0 -0
  478. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_keyboard_interrupt_during_schema_loading.raw +0 -0
  479. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_remote_disconnected_error[Open API 3.0].raw +0 -0
  480. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args0].raw +0 -0
  481. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args10].raw +0 -0
  482. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args11].raw +0 -0
  483. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args12].raw +0 -0
  484. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args13].raw +0 -0
  485. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args14].raw +0 -0
  486. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args16].raw +0 -0
  487. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args17].raw +0 -0
  488. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args18].raw +0 -0
  489. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args19].raw +0 -0
  490. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args21].raw +0 -0
  491. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args22].raw +0 -0
  492. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args23].raw +0 -0
  493. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args24].raw +0 -0
  494. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args25].raw +0 -0
  495. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args26].raw +0 -0
  496. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args27].raw +0 -0
  497. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args28].raw +0 -0
  498. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args29].raw +0 -0
  499. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args2].raw +0 -0
  500. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args30].raw +0 -0
  501. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args32].raw +0 -0
  502. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args3].raw +0 -0
  503. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args4].raw +0 -0
  504. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args5].raw +0 -0
  505. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args6].raw +0 -0
  506. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args7].raw +0 -0
  507. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args8].raw +0 -0
  508. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args9].raw +0 -0
  509. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_schema_not_available[1].raw +0 -0
  510. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_schema_not_available[2].raw +0 -0
  511. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_wait_for_schema_not_enough.raw +0 -0
  512. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/cert.pem +0 -0
  513. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/test_hooks.py +0 -0
  514. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/test_validation.py +0 -0
  515. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/contrib/openapi/test_fill_missing_examples.py +0 -0
  516. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/core/__init__.py +0 -0
  517. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/core/test_deserialization.py +0 -0
  518. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/core/test_media_types.py +0 -0
  519. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/coverage/__init__.py +0 -0
  520. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/coverage/test_combinations.py +0 -0
  521. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/coverage/test_examples.py +0 -0
  522. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/data/petstore_v2.yaml +0 -0
  523. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/data/petstore_v3.yaml +0 -0
  524. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/data/relative_files/components/parameters.yaml +0 -0
  525. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/data/relative_files/components/responses.yaml +0 -0
  526. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/data/relative_files/components/schemas.yaml +0 -0
  527. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/data/relative_files/main.yaml +0 -0
  528. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/data/relative_files/paths/user-account.yaml +0 -0
  529. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/data/simple_openapi.yaml +0 -0
  530. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/data/simple_swagger.yaml +0 -0
  531. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/engine/__init__.py +0 -0
  532. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/engine/test_checks.py +0 -0
  533. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/engine/test_errors.py +0 -0
  534. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/engine/test_probes.py +0 -0
  535. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/engine/test_simulation.py +0 -0
  536. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/experimental/__snapshots__/test_experiments/test_not_enabled.raw +0 -0
  537. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/experimental/conftest.py +0 -0
  538. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/experimental/test_experiments.py +0 -0
  539. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/experimental/test_openapi_3_1.py +0 -0
  540. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/filters/__init__.py +0 -0
  541. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/filters/test_expressions.py +0 -0
  542. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/filters/test_matching.py +0 -0
  543. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/fixtures/__init__.py +0 -0
  544. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/fixtures/app_runner.py +0 -0
  545. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/fixtures/ctx.py +0 -0
  546. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/hooks/test_hooks.py +0 -0
  547. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/loaders/conftest.py +0 -0
  548. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/loaders/test_common.py +0 -0
  549. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/loaders/test_graphql.py +0 -0
  550. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/loaders/test_openapi.py +0 -0
  551. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/openapi/__init__.py +0 -0
  552. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/openapi/test_filters.py +0 -0
  553. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/graphql/__snapshots__/test_basic/test_schema_error[ntype Query {n 123(created Int!) Int!n}-.whatever].raw +0 -0
  554. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/graphql/__snapshots__/test_basic/test_schema_error[ntype Query {n func(created Unknown!) Int!n}-.gql].raw +0 -0
  555. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/graphql/test_pytest.py +0 -0
  556. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/blank.pdf +0 -0
  557. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/conftest.py +0 -0
  558. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/parameters/test_forms.py +0 -0
  559. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/parameters/test_non_payload.py +0 -0
  560. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/parameters/test_simple_payloads.py +0 -0
  561. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/stateful/__init__.py +0 -0
  562. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/test_hypothesis.py +0 -0
  563. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/test_negative.py +0 -0
  564. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/test_parameters.py +0 -0
  565. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/test_patterns.py +0 -0
  566. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/test_randomized.py +0 -0
  567. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/test_schemas.py +0 -0
  568. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/test_security.py +0 -0
  569. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/test_serializing.py +0 -0
  570. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/test_utils.py +0 -0
  571. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_app.py +0 -0
  572. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_asgi.py +0 -0
  573. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_converter.py +0 -0
  574. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_direct_access.py +0 -0
  575. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_examples.py +0 -0
  576. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_models.py +0 -0
  577. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_output.py +0 -0
  578. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_package.py +0 -0
  579. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_parameters.py +0 -0
  580. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_petstore.py +0 -0
  581. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_rate_limit.py +0 -0
  582. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_required.py +0 -0
  583. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_sanitizing_output.py +0 -0
  584. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_schemas.py +0 -0
  585. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_unittest.py +0 -0
  586. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_wsgi.py +0 -0
  587. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/utils.py +0 -0
  588. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test-corpus/conftest.py +0 -0
  589. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test_server.sh +0 -0
  590. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/tox.ini +0 -0
  591. {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/typos.toml +0 -0
@@ -75,7 +75,7 @@ jobs:
75
75
  run: uvx --with="tox" --with="tox-gh-actions" --with="tox-uv" tox
76
76
 
77
77
  - name: Upload coverage to Codecov
78
- uses: codecov/codecov-action@v5.1.2
78
+ uses: codecov/codecov-action@v5.3.1
79
79
  with:
80
80
  token: ${{ secrets.CODECOV_TOKEN }}
81
81
 
@@ -38,7 +38,7 @@ jobs:
38
38
 
39
39
  # Initializes the CodeQL tools for scanning.
40
40
  - name: Initialize CodeQL
41
- uses: github/codeql-action/init@v3.28.1
41
+ uses: github/codeql-action/init@v3.28.5
42
42
  with:
43
43
  languages: ${{ matrix.language }}
44
44
  # If you wish to specify custom queries, you can do so here or in a config file.
@@ -49,7 +49,7 @@ jobs:
49
49
  # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
50
50
  # If this step fails, then you should remove it and run the build manually (see below)
51
51
  - name: Autobuild
52
- uses: github/codeql-action/autobuild@v3.28.1
52
+ uses: github/codeql-action/autobuild@v3.28.5
53
53
 
54
54
  # ℹ️ Command-line programs to run using the OS shell.
55
55
  # 📚 https://git.io/JvXDl
@@ -63,4 +63,4 @@ jobs:
63
63
  # make release
64
64
 
65
65
  - name: Perform CodeQL Analysis
66
- uses: github/codeql-action/analyze@v3.28.1
66
+ uses: github/codeql-action/analyze@v3.28.5
@@ -33,12 +33,12 @@ repos:
33
33
  additional_dependencies: [types-requests, types-PyYAML]
34
34
 
35
35
  - repo: https://github.com/astral-sh/ruff-pre-commit
36
- rev: v0.9.3
36
+ rev: v0.9.4
37
37
  hooks:
38
38
  - id: ruff-format
39
39
 
40
40
  - repo: https://github.com/astral-sh/ruff-pre-commit
41
- rev: v0.9.3
41
+ rev: v0.9.4
42
42
  hooks:
43
43
  - id: ruff
44
44
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: schemathesis
3
- Version: 4.0.0a3
3
+ Version: 4.0.0a4
4
4
  Summary: Property-based testing framework for Open API and GraphQL based apps
5
5
  Project-URL: Documentation, https://schemathesis.readthedocs.io/en/stable/
6
6
  Project-URL: Changelog, https://schemathesis.readthedocs.io/en/stable/changelog.html
@@ -1,9 +1,50 @@
1
1
  Changelog
2
2
  =========
3
3
 
4
- :version:`Unreleased <v4.0.0-alpha.3...HEAD>` - TBD
4
+ :version:`Unreleased <v4.0.0-alpha.4...HEAD>` - TBD
5
5
  ---------------------------------------------------
6
6
 
7
+ .. _v4.0.0-alpha.4:
8
+
9
+ :version:`4.0.0-alpha.4 <v4.0.0-alpha.3...v4.0.0-alpha.4>` - 2025-02-03
10
+ -----------------------------------------------------------------------
11
+
12
+ **Added**
13
+
14
+ - ``--report`` unified reporting system with multiple format support.
15
+ - ``--report-dir`` for centralized report storage.
16
+ - Display Open API link definition & extraction errors in CLI output.
17
+
18
+ **Changed**
19
+
20
+ - Rename ``--generation-optimize`` to ``--generation-maximize``
21
+ - Rename ``--generation-mode`` to ``-m/--mode``
22
+ - Rename ``--generation-max-examples`` to ``-n/--max-examples``
23
+ - Rename ``--junit-xml`` to ``--report=junit``
24
+ - Rename ``--cassette-*`` options to ``--report=vcr/har`` with format-specific paths
25
+ - Replace ``shrink`` in ``--hypothesis-phases`` with a separate ``--no-shrink`` option
26
+ - Simplify help messages for filtering options.
27
+ - Add display of selected operations count in CLI.
28
+ - Improve state machine generation by prioritizing reliable API entry points over random operations.
29
+ - Make operation filtering independent of API base path for more predictable behavior.
30
+ - Improve error message for malformed JSON responses.
31
+ - Return ``UNRESOLVABLE`` sentinel instead of an empty string when Open API runtime expressions can't be evaluated (e.g., when ``$response.body#/id`` is not found)
32
+ - **BREAKING**: The ``validate_response`` method in state machines now accepts the same keyword arguments as ``call``.
33
+ If you've overridden this method, update its signature to include ``**kwargs``.
34
+
35
+ **Fixed**
36
+
37
+ - Handling of multiple API links pointing to the same operation with different parameters.
38
+ - **CLI**: Make exact method filters case-insensitive.
39
+ - Internal error in coverage phase when a parameter mixes keywords for different types.
40
+ - Skip irrelevant checks for "Unspecified HTTP method" coverage scenarios.
41
+ - Handle ``verify=False`` properly when specified via ``get_call_kwargs`` on a state machine. :issue:`2713`
42
+ - Preserve test data when unit tests are interrupted via CTRL-C.
43
+
44
+ **Removed**
45
+
46
+ - ``--cassette-format`` (replaced by ``--report``).
47
+
7
48
  .. _v4.0.0-alpha.3:
8
49
 
9
50
  :version:`4.0.0-alpha.3 <v4.0.0-alpha.2...v4.0.0-alpha.3>` - 2025-01-27
@@ -14,7 +55,7 @@ Changelog
14
55
  - Add ``LoadingStarted`` & ``LoadingFinished`` to the public API.
15
56
  - Display the random generator seed in CLI output.
16
57
 
17
- **Changed**:
58
+ **Changed**
18
59
 
19
60
  - Improve control over API calls in stateful testing to make test scenarios more diverse.
20
61
  - Improve error message in CLI when the schema has no Open API links.
@@ -121,6 +162,38 @@ A detailed migration guide and complete changelog will follow.
121
162
  - Stateful testing summary (coming later).
122
163
  - ``SCHEMA_ANALYSIS`` experimental feature.
123
164
 
165
+ .. _v3.39.9:
166
+
167
+ :version:`3.39.9 <v3.39.8...v3.39.9>` - 2025-02-01
168
+ --------------------------------------------------
169
+
170
+ **Fixed**
171
+
172
+ - Internal error in coverage phase when a parameter is mixing keywords for different types.
173
+ - Do not run irrelevant checks on "Unspecified HTTP method" type of coverage scenarios.
174
+ - Ignoring ``verify=False`` when specified via ``get_call_kwargs`` on a state machine. :issue:`2713`
175
+
176
+ **Changed**
177
+
178
+ - Slightly improve the error message on malformed JSON.
179
+
180
+ .. _v3.39.8:
181
+
182
+ :version:`3.39.8 <v3.39.7...v3.39.8>` - 2025-01-25
183
+ --------------------------------------------------
184
+
185
+ **Fixed**
186
+
187
+ - Handling of complex regex patterns with multiple quantifiers to respect length constraints during test generation.
188
+ - Internal error during the coverage phase if negated parameter has no ``type``.
189
+
190
+ :version:`3.39.7 <v3.39.6...v3.39.7>` - 2025-01-16
191
+ --------------------------------------------------
192
+
193
+ **Changed**
194
+
195
+ - Rebuild Docker ``stable`` with the v3 branch.
196
+
124
197
  .. _v3.39.6:
125
198
 
126
199
  :version:`3.39.6 <v3.39.5...v3.39.6>` - 2025-01-12
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "schemathesis"
7
- version = "4.0.0-alpha.3"
7
+ version = "4.0.0-alpha.4"
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" }]
@@ -5,7 +5,7 @@ from schemathesis.cli.commands.run.context import ExecutionContext
5
5
  from schemathesis.cli.commands.run.events import LoadingFinished, LoadingStarted
6
6
  from schemathesis.cli.commands.run.executor import handler
7
7
  from schemathesis.cli.commands.run.handlers import EventHandler
8
- from schemathesis.cli.ext.groups import GROUPS
8
+ from schemathesis.cli.ext.groups import GROUPS, OptionGroup
9
9
 
10
10
  __all__ = [
11
11
  "schemathesis",
@@ -22,7 +22,7 @@ __all__ = [
22
22
  def add_group(name: str, *, index: int | None = None) -> Group:
23
23
  """Add a custom options group to `st run`."""
24
24
  if index is not None:
25
- GROUPS.insert(index, name)
25
+ GROUPS[name] = OptionGroup(name=name, order=index)
26
26
  else:
27
- GROUPS.append(name)
27
+ GROUPS[name] = OptionGroup(name=name)
28
28
  return Group(name)
@@ -1,16 +1,17 @@
1
1
  from __future__ import annotations
2
2
 
3
+ from pathlib import Path
3
4
  from random import Random
4
5
  from typing import Any, Sequence
5
6
 
6
7
  import click
8
+ from click.utils import LazyFile
7
9
 
8
10
  from schemathesis import contrib, experimental
9
11
  from schemathesis.checks import CHECKS
10
12
  from schemathesis.cli.commands.run import executor, validation
11
13
  from schemathesis.cli.commands.run.checks import CheckArguments
12
14
  from schemathesis.cli.commands.run.filters import FilterArguments, with_filters
13
- from schemathesis.cli.commands.run.handlers.cassettes import CassetteConfig, CassetteFormat
14
15
  from schemathesis.cli.commands.run.hypothesis import (
15
16
  HYPOTHESIS_IN_MEMORY_DATABASE_IDENTIFIER,
16
17
  HealthCheck,
@@ -19,6 +20,7 @@ from schemathesis.cli.commands.run.hypothesis import (
19
20
  prepare_phases,
20
21
  prepare_settings,
21
22
  )
23
+ from schemathesis.cli.commands.run.reports import DEFAULT_REPORT_DIRECTORY, ReportConfig, ReportFormat
22
24
  from schemathesis.cli.constants import DEFAULT_WORKERS, MAX_WORKERS, MIN_WORKERS
23
25
  from schemathesis.cli.core import ensure_color
24
26
  from schemathesis.cli.ext.groups import group, grouped_option
@@ -48,26 +50,15 @@ DEFAULT_PHASES = ("unit", "stateful")
48
50
  @click.argument("schema", type=str) # type: ignore[misc]
49
51
  @group("Options")
50
52
  @grouped_option(
51
- "--phases",
52
- help="A comma-separated list of test phases to run",
53
- type=CsvChoice(["unit", "stateful"]),
54
- default=",".join(DEFAULT_PHASES),
55
- metavar="",
56
- )
57
- @grouped_option(
58
- "--base-url",
59
- "-b",
60
- help="Base URL of the API, required when schema is provided as a file",
53
+ "--url",
54
+ "-u",
55
+ "base_url",
56
+ help="API base URL (required for file-based schemas)",
57
+ metavar="URL",
61
58
  type=str,
62
59
  callback=validation.validate_base_url,
63
60
  envvar="SCHEMATHESIS_BASE_URL",
64
61
  )
65
- @grouped_option(
66
- "--suppress-health-check",
67
- help="A comma-separated list of Schemathesis health checks to disable",
68
- type=CsvEnumChoice(HealthCheck),
69
- metavar="",
70
- )
71
62
  @grouped_option(
72
63
  "--workers",
73
64
  "-w",
@@ -82,6 +73,26 @@ DEFAULT_PHASES = ("unit", "stateful")
82
73
  callback=validation.convert_workers,
83
74
  metavar="",
84
75
  )
76
+ @grouped_option(
77
+ "--phases",
78
+ help="A comma-separated list of test phases to run",
79
+ type=CsvChoice(["unit", "stateful"]),
80
+ default=",".join(DEFAULT_PHASES),
81
+ metavar="",
82
+ )
83
+ @grouped_option(
84
+ "--suppress-health-check",
85
+ help="A comma-separated list of Schemathesis health checks to disable",
86
+ type=CsvEnumChoice(HealthCheck),
87
+ metavar="",
88
+ )
89
+ @grouped_option(
90
+ "--wait-for-schema",
91
+ help="Maximum duration, in seconds, to wait for the API schema to become available. Disabled by default",
92
+ type=click.FloatRange(1.0),
93
+ default=None,
94
+ envvar="SCHEMATHESIS_WAIT_FOR_SCHEMA",
95
+ )
85
96
  @group("API validation options")
86
97
  @grouped_option(
87
98
  "--checks",
@@ -106,11 +117,6 @@ DEFAULT_PHASES = ("unit", "stateful")
106
117
  show_default=True,
107
118
  metavar="",
108
119
  )
109
- @grouped_option(
110
- "--max-response-time",
111
- help="Time limit in seconds for API response times. The test will fail if a response time exceeds this limit",
112
- type=click.FloatRange(min=0.0, min_open=True),
113
- )
114
120
  @grouped_option(
115
121
  "-x",
116
122
  "--exitfirst",
@@ -127,42 +133,52 @@ DEFAULT_PHASES = ("unit", "stateful")
127
133
  help="Terminate the test suite after reaching a specified number of failures or errors",
128
134
  show_default=True,
129
135
  )
130
- @group("Filtering options")
136
+ @grouped_option(
137
+ "--max-response-time",
138
+ help="Maximum allowed API response time in seconds",
139
+ type=click.FloatRange(min=0.0, min_open=True),
140
+ metavar="SECONDS",
141
+ )
142
+ @group(
143
+ "Filtering options",
144
+ description=(
145
+ "Filter operations by path, method, name, tag, or operation-id using:\n\n"
146
+ "--include-TYPE VALUE Match operations with exact VALUE\n"
147
+ "--include-TYPE-regex PATTERN Match operations using regular expression\n"
148
+ "--exclude-TYPE VALUE Exclude operations with exact VALUE\n"
149
+ "--exclude-TYPE-regex PATTERN Exclude operations using regular expression"
150
+ ),
151
+ )
131
152
  @with_filters
132
153
  @grouped_option(
133
154
  "--include-by",
134
155
  "include_by",
135
156
  type=str,
136
- help="Include API operations by expression",
157
+ metavar="EXPR",
158
+ help="Include using custom expression",
137
159
  )
138
160
  @grouped_option(
139
161
  "--exclude-by",
140
162
  "exclude_by",
141
163
  type=str,
142
- help="Exclude API operations by expression",
164
+ metavar="EXPR",
165
+ help="Exclude using custom expression",
143
166
  )
144
167
  @grouped_option(
145
168
  "--exclude-deprecated",
146
- help="Exclude deprecated API operations from testing",
169
+ help="Skip deprecated operations",
147
170
  is_flag=True,
148
171
  is_eager=True,
149
172
  default=False,
150
173
  show_default=True,
151
174
  )
152
- @group("Loader options")
153
- @grouped_option(
154
- "--wait-for-schema",
155
- help="Maximum duration, in seconds, to wait for the API schema to become available. Disabled by default",
156
- type=click.FloatRange(1.0),
157
- default=None,
158
- envvar="SCHEMATHESIS_WAIT_FOR_SCHEMA",
159
- )
160
175
  @group("Network requests options")
161
176
  @grouped_option(
162
177
  "--header",
163
178
  "-H",
164
179
  "headers",
165
- help=r"Add a custom HTTP header to all API requests. Format: 'Header-Name: Value'",
180
+ help=r"Add a custom HTTP header to all API requests",
181
+ metavar="NAME:VALUE",
166
182
  multiple=True,
167
183
  type=str,
168
184
  callback=validation.validate_headers,
@@ -170,29 +186,40 @@ DEFAULT_PHASES = ("unit", "stateful")
170
186
  @grouped_option(
171
187
  "--auth",
172
188
  "-a",
173
- help="Provide the server authentication details in the 'USER:PASSWORD' format",
189
+ help="Authenticate all API requests with basic authentication",
190
+ metavar="USER:PASS",
174
191
  type=str,
175
192
  callback=validation.validate_auth,
176
193
  )
177
194
  @grouped_option(
178
- "--request-timeout",
179
- help="Timeout limit, in seconds, for each network request during tests",
180
- type=click.FloatRange(min=0.0, min_open=True),
181
- default=DEFAULT_RESPONSE_TIMEOUT,
182
- )
183
- @grouped_option(
184
- "--request-proxy",
195
+ "--proxy",
196
+ "request_proxy",
185
197
  help="Set the proxy for all network requests",
198
+ metavar="URL",
186
199
  type=str,
187
200
  )
188
201
  @grouped_option(
189
- "--request-tls-verify",
190
- help="Configures TLS certificate verification for server requests. Can specify path to CA_BUNDLE for custom certs",
202
+ "--tls-verify",
203
+ "request_tls_verify",
204
+ help="Path to CA bundle for TLS verification, or 'false' to disable",
191
205
  type=str,
192
206
  default="true",
193
207
  show_default=True,
194
208
  callback=validation.convert_boolean_string,
195
209
  )
210
+ @grouped_option(
211
+ "--rate-limit",
212
+ help="Specify a rate limit for test requests in '<limit>/<duration>' format. "
213
+ "Example - `100/m` for 100 requests per minute",
214
+ type=str,
215
+ callback=validation.validate_rate_limit,
216
+ )
217
+ @grouped_option(
218
+ "--request-timeout",
219
+ help="Timeout limit, in seconds, for each network request during tests",
220
+ type=click.FloatRange(min=0.0, min_open=True),
221
+ default=DEFAULT_RESPONSE_TIMEOUT,
222
+ )
196
223
  @grouped_option(
197
224
  "--request-cert",
198
225
  help="File path of unencrypted client certificate for authentication. "
@@ -210,45 +237,56 @@ DEFAULT_PHASES = ("unit", "stateful")
210
237
  show_default=False,
211
238
  callback=validation.validate_request_cert_key,
212
239
  )
240
+ @group("Output options")
213
241
  @grouped_option(
214
- "--rate-limit",
215
- help="Specify a rate limit for test requests in '<limit>/<duration>' format. "
216
- "Example - `100/m` for 100 requests per minute",
217
- type=str,
218
- callback=validation.validate_rate_limit,
242
+ "--report",
243
+ "report_formats",
244
+ help="Generate test reports in specified formats",
245
+ type=CsvEnumChoice(ReportFormat),
246
+ is_eager=True,
247
+ metavar="FORMAT",
219
248
  )
220
- @group("Output options")
221
249
  @grouped_option(
222
- "--junit-xml",
223
- help="Output a JUnit-XML style report at the specified file path",
250
+ "--report-dir",
251
+ help="Directory to store all report files",
252
+ type=click.Path(file_okay=False, dir_okay=True),
253
+ default=DEFAULT_REPORT_DIRECTORY,
254
+ show_default=True,
255
+ )
256
+ @grouped_option(
257
+ "--report-junit-path",
258
+ help="Custom path for JUnit XML report",
224
259
  type=click.File("w", encoding="utf-8"),
260
+ is_eager=True,
225
261
  )
226
262
  @grouped_option(
227
- "--cassette-path",
228
- help="Save the test outcomes in a VCR-compatible format",
263
+ "--report-vcr-path",
264
+ help="Custom path for VCR cassette",
229
265
  type=click.File("w", encoding="utf-8"),
230
266
  is_eager=True,
231
267
  )
232
268
  @grouped_option(
233
- "--cassette-format",
234
- help="Format of the saved cassettes",
235
- type=click.Choice([item.name.lower() for item in CassetteFormat]),
236
- default=CassetteFormat.VCR.name.lower(),
237
- callback=validation.convert_cassette_format,
238
- metavar="",
269
+ "--report-har-path",
270
+ help="Custom path for HAR file",
271
+ type=click.File("w", encoding="utf-8"),
272
+ is_eager=True,
239
273
  )
240
274
  @grouped_option(
241
- "--cassette-preserve-exact-body-bytes",
275
+ "--report-preserve-bytes",
242
276
  help="Retain exact byte sequence of payloads in cassettes, encoded as base64",
277
+ type=bool,
243
278
  is_flag=True,
244
- callback=validation.validate_preserve_exact_body_bytes,
279
+ default=False,
280
+ callback=validation.validate_preserve_bytes,
245
281
  )
246
282
  @grouped_option(
247
283
  "--output-sanitize",
248
- type=bool,
249
- default=True,
284
+ type=str,
285
+ default="true",
250
286
  show_default=True,
251
287
  help="Enable or disable automatic output sanitization to obscure sensitive data",
288
+ metavar="BOOLEAN",
289
+ callback=validation.convert_boolean_string,
252
290
  )
253
291
  @grouped_option(
254
292
  "--output-truncate",
@@ -256,6 +294,7 @@ DEFAULT_PHASES = ("unit", "stateful")
256
294
  type=str,
257
295
  default="true",
258
296
  show_default=True,
297
+ metavar="BOOLEAN",
259
298
  callback=validation.convert_boolean_string,
260
299
  )
261
300
  @group("Experimental options")
@@ -306,10 +345,10 @@ DEFAULT_PHASES = ("unit", "stateful")
306
345
  )
307
346
  @group("Data generation options")
308
347
  @grouped_option(
309
- "--generation-mode",
348
+ "--mode",
349
+ "-m",
310
350
  "generation_modes",
311
- help="Specify the approach Schemathesis uses to generate test data. "
312
- "Use 'positive' for valid data, 'negative' for invalid data, or 'all' for both",
351
+ help="Test data generation mode",
313
352
  type=click.Choice([item.value for item in GenerationMode] + ["all"]),
314
353
  default=GenerationMode.default().value,
315
354
  callback=validation.convert_generation_mode,
@@ -317,14 +356,23 @@ DEFAULT_PHASES = ("unit", "stateful")
317
356
  metavar="",
318
357
  )
319
358
  @grouped_option(
320
- "--generation-seed",
321
- help="Seed value for Schemathesis, ensuring reproducibility across test runs",
359
+ "--max-examples",
360
+ "-n",
361
+ "generation_max_examples",
362
+ help="Maximum number of test cases per API operation",
363
+ type=click.IntRange(1),
364
+ )
365
+ @grouped_option(
366
+ "--seed",
367
+ "generation_seed",
368
+ help="Random seed for reproducible test runs",
322
369
  type=int,
323
370
  )
324
371
  @grouped_option(
325
- "--generation-max-examples",
326
- help="The cap on the number of examples generated by Schemathesis for each API operation",
327
- type=click.IntRange(1),
372
+ "--no-shrink",
373
+ "generation_no_shrink",
374
+ help="Disable test case shrinking. Makes test failures harder to debug but improves performance",
375
+ is_flag=True,
328
376
  )
329
377
  @grouped_option(
330
378
  "--generation-deterministic",
@@ -336,10 +384,11 @@ DEFAULT_PHASES = ("unit", "stateful")
336
384
  )
337
385
  @grouped_option(
338
386
  "--generation-allow-x00",
339
- help="Whether to allow the generation of `\x00` bytes within strings",
387
+ help="Whether to allow the generation of 'NULL' bytes within strings",
340
388
  type=str,
341
389
  default="true",
342
390
  show_default=True,
391
+ metavar="BOOLEAN",
343
392
  callback=validation.convert_boolean_string,
344
393
  )
345
394
  @grouped_option(
@@ -350,8 +399,8 @@ DEFAULT_PHASES = ("unit", "stateful")
350
399
  callback=validation.validate_generation_codec,
351
400
  )
352
401
  @grouped_option(
353
- "--generation-optimize",
354
- "generation_optimize",
402
+ "--generation-maximize",
403
+ "generation_maximize",
355
404
  multiple=True,
356
405
  help="Guide input generation to values more likely to expose bugs via targeted property-based testing",
357
406
  type=RegistryChoice(TARGETS),
@@ -470,8 +519,8 @@ def run(
470
519
  negative_data_rejection_allowed_statuses: list[str],
471
520
  included_check_names: Sequence[str],
472
521
  excluded_check_names: Sequence[str],
473
- phases: Sequence[str] = DEFAULT_PHASES,
474
522
  max_response_time: float | None = None,
523
+ phases: Sequence[str] = DEFAULT_PHASES,
475
524
  exit_first: bool = False,
476
525
  max_failures: int | None = None,
477
526
  include_path: Sequence[str] = (),
@@ -499,18 +548,20 @@ def run(
499
548
  exclude_deprecated: bool = False,
500
549
  workers_num: int = DEFAULT_WORKERS,
501
550
  base_url: str | None = None,
551
+ wait_for_schema: float | None = None,
552
+ rate_limit: str | None = None,
502
553
  suppress_health_check: list[HealthCheck] | None = None,
503
554
  request_timeout: int | None = None,
504
555
  request_tls_verify: bool = True,
505
556
  request_cert: str | None = None,
506
557
  request_cert_key: str | None = None,
507
558
  request_proxy: str | None = None,
508
- junit_xml: click.utils.LazyFile | None = None,
509
- cassette_path: click.utils.LazyFile | None = None,
510
- cassette_format: CassetteFormat = CassetteFormat.VCR,
511
- cassette_preserve_exact_body_bytes: bool = False,
512
- wait_for_schema: float | None = None,
513
- rate_limit: str | None = None,
559
+ report_formats: list[ReportFormat] | None = None,
560
+ report_dir: Path = DEFAULT_REPORT_DIRECTORY,
561
+ report_junit_path: LazyFile | None = None,
562
+ report_vcr_path: LazyFile | None = None,
563
+ report_har_path: LazyFile | None = None,
564
+ report_preserve_bytes: bool = False,
514
565
  output_sanitize: bool = True,
515
566
  output_truncate: bool = True,
516
567
  contrib_openapi_fill_missing_examples: bool = False,
@@ -519,7 +570,7 @@ def run(
519
570
  generation_modes: tuple[GenerationMode, ...] = DEFAULT_GENERATOR_MODES,
520
571
  generation_seed: int | None = None,
521
572
  generation_max_examples: int | None = None,
522
- generation_optimize: Sequence[str] | None = None,
573
+ generation_maximize: Sequence[str] | None = None,
523
574
  generation_deterministic: bool | None = None,
524
575
  generation_database: str | None = None,
525
576
  generation_unique_inputs: bool = False,
@@ -527,6 +578,7 @@ def run(
527
578
  generation_graphql_allow_null: bool = True,
528
579
  generation_with_security_parameters: bool = True,
529
580
  generation_codec: str = "utf-8",
581
+ generation_no_shrink: bool = False,
530
582
  force_color: bool = False,
531
583
  no_color: bool = False,
532
584
  **__kwargs: Any,
@@ -541,7 +593,7 @@ def run(
541
593
 
542
594
  validation.validate_schema(schema, base_url)
543
595
 
544
- _hypothesis_phases = prepare_phases(hypothesis_phases, hypothesis_no_phases)
596
+ _hypothesis_phases = prepare_phases(hypothesis_phases, hypothesis_no_phases, generation_no_shrink)
545
597
  _hypothesis_suppress_health_check = prepare_health_checks(suppress_health_check)
546
598
 
547
599
  for experiment in experiments:
@@ -591,13 +643,16 @@ def run(
591
643
  if exit_first and max_failures is None:
592
644
  max_failures = 1
593
645
 
594
- cassette_config = None
595
- if cassette_path is not None:
596
- cassette_config = CassetteConfig(
597
- path=cassette_path,
598
- format=cassette_format,
646
+ report_config = None
647
+ if report_formats or report_junit_path or report_vcr_path or report_har_path:
648
+ report_config = ReportConfig(
649
+ formats=report_formats,
650
+ directory=Path(report_dir),
651
+ junit_path=report_junit_path if report_junit_path else None,
652
+ vcr_path=report_vcr_path if report_vcr_path else None,
653
+ har_path=report_har_path if report_har_path else None,
654
+ preserve_bytes=report_preserve_bytes,
599
655
  sanitize_output=output_sanitize,
600
- preserve_exact_body_bytes=cassette_preserve_exact_body_bytes,
601
656
  )
602
657
 
603
658
  # Use the same seed for all tests unless `derandomize=True` is used
@@ -616,7 +671,7 @@ def run(
616
671
  execution=ExecutionConfig(
617
672
  phases=phases_,
618
673
  checks=selected_checks,
619
- targets=TARGETS.get_by_names(generation_optimize or []),
674
+ targets=TARGETS.get_by_names(generation_maximize or []),
620
675
  hypothesis_settings=prepare_settings(
621
676
  database=generation_database,
622
677
  derandomize=generation_deterministic,
@@ -654,8 +709,7 @@ def run(
654
709
  wait_for_schema=wait_for_schema,
655
710
  rate_limit=rate_limit,
656
711
  output=OutputConfig(sanitize=output_sanitize, truncate=output_truncate),
657
- cassette=cassette_config,
658
- junit_xml=junit_xml,
712
+ report=report_config,
659
713
  args=ctx.args,
660
714
  params=ctx.params,
661
715
  )