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