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.
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/.github/workflows/build.yml +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/.github/workflows/codeql-analysis.yml +3 -3
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/.pre-commit-config.yaml +2 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/PKG-INFO +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/docs/changelog.rst +75 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/pyproject.toml +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/cli/__init__.py +3 -3
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/cli/commands/run/__init__.py +148 -94
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/cli/commands/run/context.py +72 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/cli/commands/run/executor.py +32 -12
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/cli/commands/run/filters.py +1 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/cli/commands/run/handlers/cassettes.py +27 -46
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/cli/commands/run/handlers/junitxml.py +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/cli/commands/run/handlers/output.py +72 -16
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/cli/commands/run/hypothesis.py +30 -19
- schemathesis-4.0.0a4/src/schemathesis/cli/commands/run/reports.py +72 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/cli/commands/run/validation.py +18 -12
- schemathesis-4.0.0a4/src/schemathesis/cli/ext/groups.py +84 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/cli/ext/options.py +15 -8
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/core/errors.py +79 -11
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/core/failures.py +2 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/core/transforms.py +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/engine/errors.py +8 -3
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/engine/phases/stateful/_executor.py +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/engine/phases/unit/__init__.py +2 -3
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/engine/phases/unit/_executor.py +16 -13
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/errors.py +6 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/filters.py +8 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/generation/coverage.py +6 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/generation/stateful/state_machine.py +49 -3
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/pytest/lazy.py +2 -3
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/pytest/plugin.py +2 -3
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/schemas.py +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/checks.py +27 -10
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/expressions/__init__.py +22 -6
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/expressions/nodes.py +15 -21
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/expressions/parser.py +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/parameters.py +0 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/schemas.py +13 -13
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/stateful/__init__.py +96 -23
- {schemathesis-4.0.0a3/src/schemathesis/specs/openapi → schemathesis-4.0.0a4/src/schemathesis/specs/openapi/stateful}/links.py +60 -16
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/__snapshots__/test_dereferencing/test_global_security_schemes_with_custom_scope.raw +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/__snapshots__/test_dereferencing/test_missing_file_in_resolution.raw +2 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/__snapshots__/test_hypothesis/test_health_check_failed_large_base_example.raw +2 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/__snapshots__/test_recoverable_errors/test_in_cli[1].raw +3 -3
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/__snapshots__/test_recoverable_errors/test_in_cli[2].raw +3 -3
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/__snapshots__/test_serialization/test_in_cli[Open API 3.0].raw +2 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/auth/__snapshots__/test_cli/test_conditional[Open API 3.0].raw +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/auth/__snapshots__/test_cli/test_custom_auth[Open API 3.0].raw +1 -1
- {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
- {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
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/auth/__snapshots__/test_cli/test_multiple_auth_mechanisms_with_explicit_auth.raw +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/auth/__snapshots__/test_cli/test_multiple_threads[Open API 3.0].raw +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/auth/__snapshots__/test_cli/test_requests_auth[Open API 3.0].raw +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/auth/test_cli.py +2 -4
- schemathesis-4.0.0a4/test/cli/__snapshots__/test_cassettes/test_forbid_preserve_bytes_without_cassette_path[Open API 3.0].raw +7 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_cassettes/test_run_subprocess[Open API 2.0].raw +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_cassettes/test_run_subprocess[Open API 3.0].raw +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args0].raw +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args10].raw +2 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args1].raw +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args2].raw +2 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args3].raw +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args4].raw +2 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args5].raw +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args6].raw +2 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args7].raw +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance_with_env_vars.raw +2 -2
- {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
- {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
- {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
- {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
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_binary_payload.raw +2 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_chunked_encoding_error[Open API 3.0].raw +2 -2
- {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
- {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
- {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
- {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
- {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
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_complex_urlencoded_example.raw +2 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 2.0-1].raw +3 -3
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 2.0-2].raw +3 -3
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 3.0-1].raw +3 -3
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 3.0-2].raw +3 -3
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 2.0-1].raw +2 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 2.0-2].raw +2 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 3.0-1].raw +2 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 3.0-2].raw +2 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_custom_cli_option[Open API 3.0].raw +1 -1
- {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
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_exit_first[Open API 3.0].raw +2 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_explicit_example_failure_output.raw +2 -2
- {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
- {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
- {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
- {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
- schemathesis-4.0.0a4/test/cli/__snapshots__/test_commands/test_filter_case_sensitivity[Open API 3.0].raw +56 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_graphql_url[foo-args0].raw +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_graphql_url[foo-args1].raw +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_graphql_url[graphql-args0].raw +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_graphql_url[graphql-args1].raw +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_group_errors.raw +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_invalid_operation[Open API 2.0-1].raw +2 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_invalid_operation[Open API 3.0-1].raw +2 -2
- {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
- {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
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_keyboard_interrupt[Open API 2.0-1].raw +2 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_keyboard_interrupt[Open API 3.0-1].raw +2 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_keyboard_interrupt_threaded[Open API 2.0].raw +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_keyboard_interrupt_threaded[Open API 3.0].raw +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_long_operation_output.raw +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_long_payload.raw +2 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_malformed_json_deduplication[Open API 3.0].raw +5 -3
- {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
- {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
- {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
- {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
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[cookie].raw +2 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[header].raw +2 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[path].raw +2 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[query].raw +2 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_multiple_errors.raw +1 -1
- {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
- {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
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_multiple_failures_in_single_check.raw +2 -2
- {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
- {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
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_nested_binary_in_yaml.raw +1 -1
- {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
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_no_useless_traceback.raw +2 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_null_byte_in_header_probe.raw +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_proxy_error[Open API 3.0].raw +2 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_read_content_timeout[Open API 3.0].raw +2 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_recursive_reference_error_message.raw +2 -2
- {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
- {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
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError-Open API 2.0].raw +2 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError-Open API 3.0].raw +2 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_reserved_characters_in_operation_name.raw +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[Open API 2.0].raw +2 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[Open API 3.0].raw +2 -2
- {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
- {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
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args15].raw +1 -1
- schemathesis-4.0.0a4/test/cli/__snapshots__/test_commands/test_run_output[args1].raw +7 -0
- schemathesis-4.0.0a4/test/cli/__snapshots__/test_commands/test_run_output[args20].raw +167 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args31].raw +1 -1
- schemathesis-4.0.0a4/test/cli/__snapshots__/test_commands/test_run_output[args33].raw +7 -0
- {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
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_skipped_on_no_explicit_examples.raw +1 -1
- {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
- {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
- {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
- {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
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_unknown_schema_error[Open API 3.0].raw +2 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_unresolvable_reference_with_disabled_validation.raw +3 -3
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_unsatisfiable[Open API 2.0-1].raw +2 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_unsatisfiable[Open API 2.0-2].raw +2 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_unsatisfiable[Open API 3.0-1].raw +2 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_unsatisfiable[Open API 3.0-2].raw +2 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_unsupported_regex.raw +2 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_useful_traceback[Open API 3.0].raw +2 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_warning_on_all_not_found.raw +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_warning_on_unauthorized.raw +2 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_hooks/test_after_call[Open API 3.0].raw +2 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/test_cassettes.py +56 -39
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/test_checks.py +7 -7
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/test_commands.py +62 -56
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/test_crashes.py +3 -3
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/test_junitxml.py +21 -21
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/test_options.py +2 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/test_targeted.py +3 -3
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/code_samples/test_curl.py +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/conftest.py +2 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/contrib/__snapshots__/test_unique_data/test_cli[None].raw +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema0].raw +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema1].raw +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema2].raw +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/contrib/__snapshots__/test_unique_data/test_cli_failure.raw +2 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/contrib/__snapshots__/test_unique_data/test_explicit_headers[1].raw +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/contrib/__snapshots__/test_unique_data/test_explicit_headers[2].raw +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/contrib/__snapshots__/test_unique_data/test_graphql_url.raw +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/contrib/openapi/__snapshots__/test_fill_missing_examples/test_fills_missing_examples.raw +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/contrib/test_unique_data.py +6 -6
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/coverage/__snapshots__/test_phase/test_unspecified_http_methods.raw +2 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/coverage/test_phase.py +69 -3
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/engine/test_engine.py +6 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/hooks/test_filters.py +6 -6
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/graphql/__snapshots__/test_basic/test_disallow_null.raw +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/graphql/__snapshots__/test_basic/test_filter_operations[--exclude-name=Query.getBooks].raw +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/graphql/__snapshots__/test_basic/test_filter_operations[--include-name=Query.getBooks].raw +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/graphql/__snapshots__/test_custom_scalars/test_custom_scalar_in_cli.raw +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/graphql/test_basic.py +3 -3
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/graphql/test_custom_scalars.py +2 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/__snapshots__/test_checks/test_method_not_allowed[basic-post].raw +2 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/__snapshots__/test_checks/test_method_not_allowed[success-get].raw +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/__snapshots__/test_checks/test_missing_required_header[basic-Authorization-406].raw +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/__snapshots__/test_checks/test_missing_required_header[success-Authorization-200].raw +2 -2
- {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
- {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
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/__snapshots__/test_examples/test_network_error_with_flaky_generation.raw +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/__snapshots__/test_examples/test_parameter_override.raw +1 -1
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- schemathesis-4.0.0a4/test/specs/openapi/stateful/__snapshots__/test_cli/test_invalid_parameter_reference.raw +70 -0
- {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
- {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
- schemathesis-4.0.0a4/test/specs/openapi/stateful/__snapshots__/test_cli/test_missing_body_parameter.raw +58 -0
- {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
- schemathesis-4.0.0a4/test/specs/openapi/stateful/__snapshots__/test_cli/test_non_json_response[User data as plain text].raw +58 -0
- schemathesis-4.0.0a4/test/specs/openapi/stateful/__snapshots__/test_cli/test_non_json_response[].raw +58 -0
- {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
- {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
- {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
- {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
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/stateful/conftest.py +97 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/stateful/test_cli.py +34 -14
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/stateful/test_engine.py +39 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/stateful/test_stateful.py +31 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/test_checks.py +55 -4
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/test_examples.py +5 -5
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/test_expressions.py +12 -10
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/test_ignored_auth.py +3 -3
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/test_media_types.py +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_async.py +4 -4
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_common_parameters.py +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_dereferencing.py +2 -2
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_filters.py +17 -14
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_hypothesis.py +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_lazy.py +11 -13
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_parametrization.py +13 -13
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_pytest.py +10 -10
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_recoverable_errors.py +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_serialization.py +1 -1
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_stateful.py +6 -13
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test-corpus/test_corpus.py +5 -4
- schemathesis-4.0.0a3/src/schemathesis/cli/ext/groups.py +0 -55
- schemathesis-4.0.0a3/test/cli/__snapshots__/test_cassettes/test_forbid_preserve_exact_bytes_without_cassette_path[Open API 3.0].raw +0 -7
- schemathesis-4.0.0a3/test/cli/__snapshots__/test_commands/test_run_output[args1].raw +0 -7
- schemathesis-4.0.0a3/test/cli/__snapshots__/test_commands/test_run_output[args20].raw +0 -203
- schemathesis-4.0.0a3/test/cli/__snapshots__/test_commands/test_run_output[args33].raw +0 -7
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/.dockerignore +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/.github/FUNDING.yml +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/.github/dependabot.yml +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/.github/workflows/codspeed.yml +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/.github/workflows/commit.yml +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/.github/workflows/example-build.yml +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/.github/workflows/example-no-build.yml +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/.github/workflows/master_update.yml +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/.github/workflows/release.yml +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/.github/workflows/test-corpus.yml +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/.github/workflows/test-hypothesis.yml +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/.github/workflows/update-pre-commit.yml +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/.gitignore +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/.readthedocs.yml +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/.rstcheck.cfg +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/.yamllint +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/ARCHITECTURE.md +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/CITATION.cff +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/CODE_OF_CONDUCT.md +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/CONTRIBUTING.rst +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/Dockerfile +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/Dockerfile.bookworm +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/LICENSE +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/README.md +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/SECURITY.md +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/benches/cli.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/benches/coverage_phase.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/benches/references.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/benches/schema.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/changelog.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/codecov.yml +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/corpus/data/graphql.tar.gz +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/corpus/data/openapi-3.0.tar.gz +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/corpus/data/openapi-3.1.tar.gz +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/corpus/data/swagger-2.0.tar.gz +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/corpus/tools.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/docs/Makefile +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/docs/additional-content.rst +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/docs/api.rst +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/docs/auth.rst +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/docs/cli.rst +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/docs/conf.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/docs/continuous_integration.rst +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/docs/contrib.rst +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/docs/data-generation.rst +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/docs/examples.rst +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/docs/experimental.rst +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/docs/extending.rst +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/docs/faq.rst +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/docs/getting-started.rst +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/docs/graphql.rst +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/docs/index.rst +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/docs/python.rst +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/docs/recipes.rst +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/docs/requirements.txt +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/docs/sanitizing.rst +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/docs/service.rst +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/docs/stateful.rst +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/docs/targeted.rst +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/example/Dockerfile +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/example/README.md +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/example/app.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/example/compose.yml +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/example/openapi.json +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/example/requirements-app.in +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/example/requirements-app.txt +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/example/requirements-pytest.in +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/example/requirements-pytest.txt +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/example/tests/__init__.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/example/tests/conftest.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/example/tests/extensions.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/example/tests/test_app.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/img/demo.gif +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/mypy.ini +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/__init__.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/auths.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/checks.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/cli/__main__.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/cli/commands/__init__.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/cli/commands/run/checks.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/cli/commands/run/events.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/cli/commands/run/handlers/__init__.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/cli/commands/run/handlers/base.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/cli/commands/run/loaders.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/cli/constants.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/cli/core.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/cli/ext/__init__.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/cli/ext/fs.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/cli/hooks.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/contrib/__init__.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/contrib/openapi/__init__.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/contrib/openapi/fill_missing_examples.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/core/__init__.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/core/compat.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/core/control.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/core/curl.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/core/deserialization.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/core/fs.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/core/lazy_import.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/core/loaders.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/core/marks.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/core/media_types.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/core/output/__init__.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/core/output/sanitization.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/core/rate_limit.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/core/registries.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/core/result.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/core/transport.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/core/validation.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/core/version.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/engine/__init__.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/engine/config.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/engine/context.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/engine/control.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/engine/core.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/engine/events.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/engine/phases/__init__.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/engine/phases/probes.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/engine/phases/stateful/__init__.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/engine/phases/stateful/context.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/engine/phases/unit/_pool.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/engine/recorder.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/experimental/__init__.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/generation/__init__.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/generation/case.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/generation/hypothesis/__init__.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/generation/hypothesis/builder.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/generation/hypothesis/examples.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/generation/hypothesis/given.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/generation/hypothesis/reporting.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/generation/hypothesis/strategies.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/generation/meta.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/generation/modes.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/generation/overrides.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/generation/stateful/__init__.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/generation/targets.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/graphql/__init__.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/graphql/checks.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/graphql/loaders.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/hooks.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/openapi/__init__.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/openapi/checks.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/openapi/generation/__init__.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/openapi/generation/filters.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/openapi/loaders.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/py.typed +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/pytest/__init__.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/pytest/control_flow.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/pytest/loaders.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/python/__init__.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/python/asgi.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/python/wsgi.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/__init__.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/graphql/__init__.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/graphql/_cache.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/graphql/nodes.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/graphql/scalars.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/graphql/schemas.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/graphql/validation.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/__init__.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/_cache.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/_hypothesis.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/constants.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/converter.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/definitions.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/examples.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/expressions/errors.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/expressions/extractors.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/expressions/lexer.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/formats.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/media_types.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/negative/__init__.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/negative/mutations.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/negative/types.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/negative/utils.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/patterns.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/references.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/security.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/serialization.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/stateful/control.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/specs/openapi/utils.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/transport/__init__.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/transport/asgi.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/transport/prepare.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/transport/requests.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/transport/serialization.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/src/schemathesis/transport/wsgi.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/__init__.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/_pytest/__init__.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/_pytest/test_markers.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/apps/__init__.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/apps/_graphql/__init__.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/apps/_graphql/_fastapi/__init__.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/apps/_graphql/_fastapi/app.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/apps/_graphql/_flask/__init__.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/apps/_graphql/_flask/app.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/apps/_graphql/schema.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/apps/cp1252_app.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/apps/hooks.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/apps/openapi/__init__.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/apps/openapi/_aiohttp/__init__.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/apps/openapi/_aiohttp/app.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/apps/openapi/_aiohttp/handlers.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/apps/openapi/_fastapi/__init__.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/apps/openapi/_fastapi/app.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/apps/openapi/_flask/__init__.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/apps/openapi/_flask/app.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/apps/openapi/schema.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/auth/__init__.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/auth/conftest.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/auth/test_provider.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/auth/test_pytest.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__init__.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args8].raw +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args9].raw +0 -0
- {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
- {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
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_certificate_only_key.raw +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_commands_help.raw +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_duplicated_filters[Open API 3.0].raw +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_empty_schema_file.raw +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_force_color_nocolor[Open API 3.0].raw +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_hooks_module_not_found.raw +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_hooks_with_inner_import_error.raw +0 -0
- {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
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_invalid_filter[Open API 3.0].raw +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_invalid_yaml.raw +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_keyboard_interrupt_during_schema_loading.raw +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_remote_disconnected_error[Open API 3.0].raw +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args0].raw +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args10].raw +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args11].raw +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args12].raw +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args13].raw +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args14].raw +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args16].raw +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args17].raw +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args18].raw +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args19].raw +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args21].raw +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args22].raw +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args23].raw +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args24].raw +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args25].raw +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args26].raw +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args27].raw +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args28].raw +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args29].raw +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args2].raw +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args30].raw +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args32].raw +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args3].raw +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args4].raw +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args5].raw +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args6].raw +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args7].raw +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args8].raw +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_run_output[args9].raw +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_schema_not_available[1].raw +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_schema_not_available[2].raw +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/__snapshots__/test_commands/test_wait_for_schema_not_enough.raw +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/cert.pem +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/test_hooks.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/cli/test_validation.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/contrib/openapi/test_fill_missing_examples.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/core/__init__.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/core/test_deserialization.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/core/test_media_types.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/coverage/__init__.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/coverage/test_combinations.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/coverage/test_examples.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/data/petstore_v2.yaml +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/data/petstore_v3.yaml +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/data/relative_files/components/parameters.yaml +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/data/relative_files/components/responses.yaml +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/data/relative_files/components/schemas.yaml +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/data/relative_files/main.yaml +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/data/relative_files/paths/user-account.yaml +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/data/simple_openapi.yaml +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/data/simple_swagger.yaml +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/engine/__init__.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/engine/test_checks.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/engine/test_errors.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/engine/test_probes.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/engine/test_simulation.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/experimental/__snapshots__/test_experiments/test_not_enabled.raw +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/experimental/conftest.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/experimental/test_experiments.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/experimental/test_openapi_3_1.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/filters/__init__.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/filters/test_expressions.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/filters/test_matching.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/fixtures/__init__.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/fixtures/app_runner.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/fixtures/ctx.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/hooks/test_hooks.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/loaders/conftest.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/loaders/test_common.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/loaders/test_graphql.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/loaders/test_openapi.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/openapi/__init__.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/openapi/test_filters.py +0 -0
- {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
- {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
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/graphql/test_pytest.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/blank.pdf +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/conftest.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/parameters/test_forms.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/parameters/test_non_payload.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/parameters/test_simple_payloads.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/stateful/__init__.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/test_hypothesis.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/test_negative.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/test_parameters.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/test_patterns.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/test_randomized.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/test_schemas.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/test_security.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/test_serializing.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/specs/openapi/test_utils.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_app.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_asgi.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_converter.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_direct_access.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_examples.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_models.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_output.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_package.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_parameters.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_petstore.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_rate_limit.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_required.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_sanitizing_output.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_schemas.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_unittest.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/test_wsgi.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test/utils.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test-corpus/conftest.py +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/test_server.sh +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/tox.ini +0 -0
- {schemathesis-4.0.0a3 → schemathesis-4.0.0a4}/typos.toml +0 -0
@@ -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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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
|
25
|
+
GROUPS[name] = OptionGroup(name=name, order=index)
|
26
26
|
else:
|
27
|
-
GROUPS
|
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
|
-
"--
|
52
|
-
|
53
|
-
|
54
|
-
|
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
|
-
@
|
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
|
-
|
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
|
-
|
164
|
+
metavar="EXPR",
|
165
|
+
help="Exclude using custom expression",
|
143
166
|
)
|
144
167
|
@grouped_option(
|
145
168
|
"--exclude-deprecated",
|
146
|
-
help="
|
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
|
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="
|
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
|
-
"--
|
179
|
-
|
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
|
-
"--
|
190
|
-
|
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
|
-
"--
|
215
|
-
|
216
|
-
"
|
217
|
-
type=
|
218
|
-
|
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
|
-
"--
|
223
|
-
help="
|
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
|
-
"--
|
228
|
-
help="
|
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
|
-
"--
|
234
|
-
help="
|
235
|
-
type=click.
|
236
|
-
|
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
|
-
"--
|
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
|
-
|
279
|
+
default=False,
|
280
|
+
callback=validation.validate_preserve_bytes,
|
245
281
|
)
|
246
282
|
@grouped_option(
|
247
283
|
"--output-sanitize",
|
248
|
-
type=
|
249
|
-
default=
|
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
|
-
"--
|
348
|
+
"--mode",
|
349
|
+
"-m",
|
310
350
|
"generation_modes",
|
311
|
-
help="
|
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
|
-
"--
|
321
|
-
|
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
|
-
"--
|
326
|
-
|
327
|
-
|
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
|
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-
|
354
|
-
"
|
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
|
-
|
509
|
-
|
510
|
-
|
511
|
-
|
512
|
-
|
513
|
-
|
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
|
-
|
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
|
-
|
595
|
-
if
|
596
|
-
|
597
|
-
|
598
|
-
|
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(
|
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
|
-
|
658
|
-
junit_xml=junit_xml,
|
712
|
+
report=report_config,
|
659
713
|
args=ctx.args,
|
660
714
|
params=ctx.params,
|
661
715
|
)
|