schemathesis 3.30.4__tar.gz → 3.31.0__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.30.4 → schemathesis-3.31.0}/.pre-commit-config.yaml +3 -3
- {schemathesis-3.30.4 → schemathesis-3.31.0}/PKG-INFO +2 -1
- {schemathesis-3.30.4 → schemathesis-3.31.0}/docs/changelog.rst +18 -1
- {schemathesis-3.30.4 → schemathesis-3.31.0}/docs/cli.rst +37 -2
- {schemathesis-3.30.4 → schemathesis-3.31.0}/docs/recipes.rst +41 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/pyproject.toml +2 -1
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/cli/__init__.py +27 -2
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/cli/callbacks.py +5 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/cli/cassettes.py +150 -12
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/exceptions.py +3 -1
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/generation/__init__.py +2 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/models.py +10 -1
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/runner/events.py +2 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/runner/impl/core.py +43 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/service/serialization.py +24 -1
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/specs/openapi/references.py +19 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/specs/openapi/schemas.py +16 -8
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/specs/openapi/security.py +16 -3
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/stateful/context.py +7 -2
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/stateful/events.py +16 -4
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/stateful/runner.py +6 -11
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/stateful/sink.py +1 -1
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/stateful/validation.py +24 -12
- schemathesis-3.31.0/test/__snapshots__/test_dereferencing/test_global_security_schemes_with_custom_scope.raw +24 -0
- schemathesis-3.31.0/test/__snapshots__/test_dereferencing/test_missing_file_in_resolution.raw +36 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/__snapshots__/test_recoverable_errors/test_in_cli[1].raw +2 -2
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/__snapshots__/test_recoverable_errors/test_in_cli[2].raw +2 -2
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/apps/cp1252_app.py +0 -1
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_run_output[args24].raw +4 -0
- schemathesis-3.31.0/test/cli/__snapshots__/test_commands/test_run_output[args37].raw +7 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_unresolvable_reference_with_disabled_validation.raw +2 -2
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/test_cassettes.py +79 -1
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/test_commands.py +21 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/test_crashes.py +1 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/conftest.py +1 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/runner/test_probes.py +4 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/runner/test_runner.py +2 -0
- schemathesis-3.31.0/test/specs/openapi/__snapshots__/test_examples/test_parameter_override.raw +25 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/specs/openapi/test_examples.py +57 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/specs/openapi/test_security.py +31 -1
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/test_dereferencing.py +45 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/test_sanitizing_output.py +5 -2
- {schemathesis-3.30.4 → schemathesis-3.31.0}/.dockerignore +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/.github/FUNDING.yml +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/.github/dependabot.yml +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/.github/workflows/build.yml +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/.github/workflows/codeql-analysis.yml +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/.github/workflows/codspeed.yml +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/.github/workflows/commit.yml +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/.github/workflows/example-build.yml +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/.github/workflows/example-no-build.yml +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/.github/workflows/master_update.yml +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/.github/workflows/release.yml +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/.github/workflows/test-corpus.yml +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/.github/workflows/test-hypothesis.yml +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/.github/workflows/update-corpus.yml +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/.github/workflows/update-pre-commit.yml +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/.gitignore +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/.gitmodules +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/.readthedocs.yml +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/.relint.yml +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/.rstcheck.cfg +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/.yamllint +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/CITATION.cff +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/CODE_OF_CONDUCT.md +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/CONTRIBUTING.rst +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/Dockerfile +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/Dockerfile.bookworm +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/LICENSE +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/README.md +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/benches/cli.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/benches/references.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/benches/schema.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/changelog.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/codecov.yml +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/corpus/data/graphql.tar.gz +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/corpus/data/openapi-3.0.tar.gz +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/corpus/data/openapi-3.1.tar.gz +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/corpus/data/swagger-2.0.tar.gz +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/corpus/tools.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/docs/Makefile +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/docs/additional-content.rst +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/docs/api.rst +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/docs/auth.rst +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/docs/compatibility.rst +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/docs/conf.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/docs/continuous_integration.rst +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/docs/contrib.rst +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/docs/data-generation.rst +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/docs/examples.rst +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/docs/experimental.rst +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/docs/extending.rst +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/docs/faq.rst +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/docs/getting-started.rst +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/docs/graphql.rst +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/docs/index.rst +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/docs/python.rst +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/docs/requirements.txt +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/docs/sanitizing.rst +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/docs/service.rst +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/docs/stateful.rst +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/docs/targeted.rst +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/example/Dockerfile +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/example/README.md +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/example/app.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/example/compose.yml +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/example/openapi.json +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/example/requirements-app.in +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/example/requirements-app.txt +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/example/requirements-pytest.in +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/example/requirements-pytest.txt +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/example/tests/__init__.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/example/tests/conftest.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/example/tests/extensions.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/example/tests/test_app.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/img/demo.gif +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/img/service_github_report.png +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/mypy.ini +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/__init__.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/_compat.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/_dependency_versions.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/_hypothesis.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/_lazy_import.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/_override.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/_rate_limiter.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/_xml.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/auths.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/checks.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/cli/__main__.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/cli/constants.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/cli/context.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/cli/debug.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/cli/handlers.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/cli/junitxml.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/cli/options.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/cli/output/__init__.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/cli/output/default.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/cli/output/short.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/cli/reporting.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/cli/sanitization.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/code_samples.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/constants.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/contrib/__init__.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/contrib/openapi/__init__.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/contrib/openapi/fill_missing_examples.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/contrib/openapi/formats/__init__.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/contrib/openapi/formats/uuid.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/contrib/unique_data.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/experimental/__init__.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/extra/__init__.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/extra/_aiohttp.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/extra/_flask.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/extra/_server.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/extra/pytest_plugin.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/failures.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/filters.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/fixups/__init__.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/fixups/fast_api.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/fixups/utf8_bom.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/graphql.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/hooks.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/internal/__init__.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/internal/copy.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/internal/datetime.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/internal/deprecation.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/internal/jsonschema.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/internal/output.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/internal/result.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/internal/transformation.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/internal/validation.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/lazy.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/loaders.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/parameters.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/py.typed +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/runner/__init__.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/runner/impl/__init__.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/runner/impl/solo.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/runner/impl/threadpool.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/runner/probes.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/runner/serialization.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/sanitization.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/schemas.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/serializers.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/service/__init__.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/service/auth.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/service/ci.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/service/client.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/service/constants.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/service/events.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/service/extensions.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/service/hosts.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/service/metadata.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/service/models.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/service/report.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/service/usage.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/specs/__init__.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/specs/graphql/__init__.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/specs/graphql/_cache.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/specs/graphql/loaders.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/specs/graphql/nodes.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/specs/graphql/scalars.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/specs/graphql/schemas.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/specs/graphql/validation.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/specs/openapi/__init__.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/specs/openapi/_cache.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/specs/openapi/_hypothesis.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/specs/openapi/checks.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/specs/openapi/constants.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/specs/openapi/converter.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/specs/openapi/definitions.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/specs/openapi/examples.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/specs/openapi/expressions/__init__.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/specs/openapi/expressions/context.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/specs/openapi/expressions/errors.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/specs/openapi/expressions/extractors.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/specs/openapi/expressions/lexer.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/specs/openapi/expressions/nodes.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/specs/openapi/expressions/parser.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/specs/openapi/filters.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/specs/openapi/formats.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/specs/openapi/links.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/specs/openapi/loaders.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/specs/openapi/media_types.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/specs/openapi/negative/__init__.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/specs/openapi/negative/mutations.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/specs/openapi/negative/types.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/specs/openapi/negative/utils.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/specs/openapi/parameters.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/specs/openapi/serialization.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/specs/openapi/stateful/__init__.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/specs/openapi/stateful/statistic.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/specs/openapi/stateful/types.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/specs/openapi/utils.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/specs/openapi/validation.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/stateful/__init__.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/stateful/config.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/stateful/state_machine.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/stateful/statistic.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/targets.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/throttling.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/transports/__init__.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/transports/auth.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/transports/content_types.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/transports/headers.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/transports/responses.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/types.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/src/schemathesis/utils.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/__init__.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/__snapshots__/test_hypothesis/test_health_check_failed_large_base_example.raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/__snapshots__/test_serialization/test_in_cli[Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/apps/__init__.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/apps/_graphql/__init__.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/apps/_graphql/_fastapi/__init__.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/apps/_graphql/_fastapi/app.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/apps/_graphql/_flask/__init__.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/apps/_graphql/_flask/app.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/apps/_graphql/schema.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/apps/hooks.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/apps/openapi/__init__.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/apps/openapi/_aiohttp/__init__.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/apps/openapi/_aiohttp/app.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/apps/openapi/_aiohttp/handlers.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/apps/openapi/_fastapi/__init__.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/apps/openapi/_fastapi/app.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/apps/openapi/_flask/__init__.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/apps/openapi/_flask/app.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/apps/openapi/schema.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/auth/__init__.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/auth/__snapshots__/test_cli/test_conditional[Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/auth/__snapshots__/test_cli/test_custom_auth[Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/auth/__snapshots__/test_cli/test_explicit_auth_precedence[Open API 3.0-args0-Basic dXNlcjpwYXNz].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/auth/__snapshots__/test_cli/test_explicit_auth_precedence[Open API 3.0-args1-Bearer EXPLICIT].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/auth/__snapshots__/test_cli/test_multiple_auth_mechanisms_with_explicit_auth.raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/auth/__snapshots__/test_cli/test_multiple_threads[Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/auth/__snapshots__/test_cli/test_requests_auth[Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/auth/conftest.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/auth/test_cli.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/auth/test_provider.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/auth/test_pytest.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__init__.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_cassettes/test_forbid_preserve_exact_bytes_without_cassette_path[Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_cassettes/test_forbid_simultaneous_use_of_deprecated_and_new_options[Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_checks/test_deduplication_on_sanitized_header.raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_add_case_output[Open API 2.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_add_case_output[Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_auth_and_authorization_header_are_disallowed[Open API 3.0-Authorization].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_auth_and_authorization_header_are_disallowed[Open API 3.0-authorization].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 2.0---auth='testwrong'].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 2.0--H Authorization Basic J3Rlc3Q6d3Jvbmcn].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 3.0---auth='testwrong'].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 3.0--H Authorization Basic J3Rlc3Q6d3Jvbmcn].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_binary_payload.raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_certificate_only_key.raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_chunked_encoding_error[Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 2.0-1].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 2.0-2].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 3.0-1].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 3.0-2].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 2.0-1].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 2.0-2].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 3.0-1].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 3.0-2].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_commands_help.raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_complex_urlencoded_example.raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 2.0-1].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 2.0-2].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 3.0-1].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 3.0-2].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 2.0-1].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 2.0-2].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 3.0-1].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 3.0-2].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_empty_schema_file[args0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_empty_schema_file[args1].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_explicit_example_failure_output.raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_explicit_headers_in_output_on_errors[Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_force_color_nocolor[Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_get_request_with_body[Open API 2.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_get_request_with_body[Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_graphql_asgi.raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_graphql_url[foo-args0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_graphql_url[foo-args1].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_graphql_url[graphql-args0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_graphql_url[graphql-args1].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_group_errors.raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_hooks_module_not_found.raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_hooks_with_inner_import_error.raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_hypothesis_database_with_derandomize[Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 2.0-1].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 2.0-2].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 3.0-1].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 3.0-2].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 2.0-1].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 2.0-2].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 3.0-1].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 3.0-2].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[real-Open API 2.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[real-Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[wsgi-Open API 2.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[wsgi-Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_invalid_schema_with_disabled_validation[3.0.2].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_invalid_schema_with_disabled_validation[3.1.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_invalid_yaml.raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_long_payload.raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_malformed_json_deduplication[real-Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_malformed_json_deduplication[wsgi-Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 2.0-1].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 2.0-2].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 3.0-1].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 3.0-2].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[cookie-None].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[cookie-http127.0.0.1apiv2].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[header-None].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[header-http127.0.0.1apiv2].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[path-None].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[path-http127.0.0.1apiv2].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[query-None].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[query-http127.0.0.1apiv2].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_multiple_errors.raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_multiple_failures_different_check[Open API 2.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_multiple_failures_different_check[Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_multiple_failures_in_single_check.raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_multiple_failures_single_check[Open API 2.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_multiple_failures_single_check[Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_nested_binary_in_yaml.raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_new_stateful_runner[Open API 3.0-1].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_new_stateful_runner[Open API 3.0-2].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_new_stateful_runner_filtered_out[Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_new_stateful_runner_stateful_only[Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_no_schema_in_media_type[Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_no_useless_traceback.raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_null_byte_in_header_probe.raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_openapi_links[real-Open API 2.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_openapi_links[real-Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_openapi_links[wsgi-Open API 2.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_openapi_links[wsgi-Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_openapi_links_disabled[Open API 2.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_openapi_links_disabled[Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 2.0-1].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 2.0-5].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 3.0-1].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 3.0-5].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 2.0-1].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 2.0-5].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 3.0-1].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 3.0-5].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_proxy_error[Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_read_content_timeout[Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_recursive_reference_error_message.raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError(Custom check failed!)-Open API 2.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError(Custom check failed!)-Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError-Open API 2.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError-Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_remote_disconnected_error[Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[real-Open API 2.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[real-Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[wsgi-Open API 2.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[wsgi-Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[real-Open API 2.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[real-Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[wsgi-Open API 2.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[wsgi-Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_run_output[args0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_run_output[args10].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_run_output[args11].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_run_output[args12].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_run_output[args13].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_run_output[args14].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_run_output[args15].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_run_output[args16].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_run_output[args17].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_run_output[args18].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_run_output[args19].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_run_output[args1].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_run_output[args20].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_run_output[args21].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_run_output[args22].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_run_output[args23].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_run_output[args25].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_run_output[args26].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_run_output[args27].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_run_output[args28].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_run_output[args29].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_run_output[args2].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_run_output[args30].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_run_output[args31].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_run_output[args32].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_run_output[args33].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_run_output[args34].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_run_output[args35].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_run_output[args36].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_run_output[args3].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_run_output[args4].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_run_output[args5].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_run_output[args6].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_run_output[args7].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_run_output[args8].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_run_output[args9].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_schema_not_available[1].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_schema_not_available[2].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_schema_not_available_wsgi.raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 2.0-1].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 2.0-2].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 3.0-1].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 3.0-2].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 2.0-1].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 2.0-2].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 3.0-1].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 3.0-2].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_unknown_schema_error[Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_unresolvable_links[Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 2.0-1].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 2.0-2].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 3.0-1].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 3.0-2].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 2.0-1].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 2.0-2].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 3.0-1].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 3.0-2].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_unsupported_regex.raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_useful_traceback[Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_wait_for_schema_not_enough.raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_commands/test_yaml_parsing_of_floats[Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_hooks/test_after_call[real-Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/__snapshots__/test_hooks/test_after_call[wsgi-Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/cert.pem +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/conftest.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/output/__init__.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/output/test_default.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/test_asgi.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/test_callbacks.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/test_checks.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/test_hooks.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/test_junitxml.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/test_options.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/cli/test_targeted.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/code_samples/__snapshots__/test_python/test_cli_output[Open API 2.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/code_samples/__snapshots__/test_python/test_cli_output[Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/code_samples/conftest.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/code_samples/test_curl.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/code_samples/test_python.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/contrib/__snapshots__/test_unique_data/test_cli[None].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema1].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema2].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/contrib/__snapshots__/test_unique_data/test_explicit_headers[1].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/contrib/__snapshots__/test_unique_data/test_explicit_headers[2].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/contrib/openapi/__snapshots__/test_fill_missing_examples/test_fills_missing_examples.raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/contrib/openapi/formats/test_uuid.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/contrib/openapi/test_fill_missing_examples.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/contrib/test_install.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/contrib/test_unique_data.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/data/petstore_v2.yaml +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/data/petstore_v3.yaml +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/data/relative_files/components/parameters.yaml +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/data/relative_files/components/responses.yaml +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/data/relative_files/components/schemas.yaml +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/data/relative_files/main.yaml +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/data/relative_files/paths/user-account.yaml +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/data/simple_openapi.yaml +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/data/simple_swagger.yaml +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/experimental/__snapshots__/test_experiments/test_not_enabled.raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/experimental/conftest.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/experimental/test_experiments.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/experimental/test_openapi_3_1.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/extra/__init__.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/extra/test_aiohttp.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/filters/test_matching.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/hooks/test_filter_operations.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/hooks/test_hooks.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/loaders/conftest.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/loaders/test_app.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/loaders/test_common.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/loaders/test_graphql.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/loaders/test_openapi.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/loaders/test_yaml.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/runner/__init__.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/runner/test_checks.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/runner/test_events.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/service/__init__.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/service/__snapshots__/test_cli/test_client_error_on_project_details[Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/service/__snapshots__/test_cli/test_client_error_on_upload[Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/service/__snapshots__/test_cli/test_error_in_another_handler[Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/service/__snapshots__/test_cli/test_github_suggestion[Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/service/__snapshots__/test_cli/test_not_authenticated_with_name.raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/service/__snapshots__/test_cli/test_two_names.raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/service/__snapshots__/test_cli/test_unauthorized[Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/service/__snapshots__/test_cli/test_unknown_error_on_upload[Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/service/__snapshots__/test_cli/test_upload_failure[Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/service/__snapshots__/test_cli/test_upload_success[Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/service/__snapshots__/test_extensions/test_connection_error[Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/service/__snapshots__/test_extensions/test_custom_format.raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/service/__snapshots__/test_extensions/test_dry_run[Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/service/__snapshots__/test_extensions/test_forbidden[Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/service/__snapshots__/test_extensions/test_graphql_scalars.raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/service/__snapshots__/test_extensions/test_internal_server_error[Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/service/__snapshots__/test_extensions/test_invalid_extension[Open API 3.0-42].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/service/__snapshots__/test_extensions/test_invalid_extension[Open API 3.0-extension1].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/service/__snapshots__/test_extensions/test_invalid_payload[Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/service/__snapshots__/test_extensions/test_media_type_extension[strategy0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/service/__snapshots__/test_extensions/test_media_type_extension[strategy1].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/service/__snapshots__/test_extensions/test_oversize_text[Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/service/__snapshots__/test_extensions/test_schema_patches[patch0-expected0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/service/__snapshots__/test_extensions/test_schema_patches[patch1-expected1].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/service/__snapshots__/test_extensions/test_schema_patches[patch2-expected2].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/service/__snapshots__/test_extensions/test_unknown_extension_in_cli[Open API 3.0].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/service/conftest.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/service/test_auth.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/service/test_ci.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/service/test_cli.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/service/test_extensions.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/service/test_report.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/service/test_serialization.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/service/test_usage.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/specs/graphql/__snapshots__/test_basic/test_schema_error[ntype Query {n 123(created Int!) Int!n}-.whatever].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/specs/graphql/__snapshots__/test_basic/test_schema_error[ntype Query {n func(created Unknown!) Int!n}-.gql].raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/specs/graphql/__snapshots__/test_custom_scalars/test_built_in_scalars_in_cli.raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/specs/graphql/__snapshots__/test_custom_scalars/test_custom_scalar_in_cli.raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/specs/graphql/test_basic.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/specs/graphql/test_custom_scalars.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/specs/graphql/test_pytest.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/specs/openapi/__snapshots__/test_examples/test_network_error_with_flaky_generation.raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/specs/openapi/__snapshots__/test_media_types/test_explicit_example_with_custom_media_type.raw +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/specs/openapi/blank.pdf +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/specs/openapi/conftest.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/specs/openapi/parameters/test_forms.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/specs/openapi/parameters/test_non_payload.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/specs/openapi/parameters/test_simple_payloads.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/specs/openapi/randomized/__init__.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/specs/openapi/randomized/factory.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/specs/openapi/randomized/test_randomized.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/specs/openapi/randomized/types.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/specs/openapi/randomized/v2.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/specs/openapi/stateful/__init__.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/specs/openapi/stateful/conftest.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/specs/openapi/stateful/test_config.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/specs/openapi/stateful/test_runner.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/specs/openapi/stateful/test_stateful.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/specs/openapi/test_checks.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/specs/openapi/test_expressions.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/specs/openapi/test_hypothesis.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/specs/openapi/test_links.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/specs/openapi/test_media_types.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/specs/openapi/test_negative.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/specs/openapi/test_parameters.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/specs/openapi/test_schemas.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/specs/openapi/test_serializing.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/specs/openapi/test_utils.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/specs/openapi/test_validation.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/test_app.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/test_asgi.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/test_async.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/test_common_parameters.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/test_converter.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/test_direct_access.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/test_examples.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/test_filters.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/test_fixups.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/test_hypothesis.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/test_internal.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/test_lazy.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/test_models.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/test_output.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/test_package.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/test_parameters.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/test_parametrization.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/test_petstore.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/test_pytest.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/test_rate_limit.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/test_recoverable_errors.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/test_required.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/test_schemas.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/test_serialization.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/test_stateful.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/test_unittest.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/test_utils.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/test_wsgi.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/transports/test_content_types.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test/utils.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test-corpus/test_corpus.py +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/test_server.sh +0 -0
- {schemathesis-3.30.4 → schemathesis-3.31.0}/tox.ini +0 -0
|
@@ -30,7 +30,7 @@ repos:
|
|
|
30
30
|
- id: relint
|
|
31
31
|
|
|
32
32
|
- repo: https://github.com/pre-commit/mirrors-mypy
|
|
33
|
-
rev: v1.10.
|
|
33
|
+
rev: v1.10.1
|
|
34
34
|
hooks:
|
|
35
35
|
- id: mypy
|
|
36
36
|
exclude: ^(docs/|test/|test-corpus/|example/|benches/).*$
|
|
@@ -38,12 +38,12 @@ repos:
|
|
|
38
38
|
additional_dependencies: [types-click, types-requests, types-PyYAML]
|
|
39
39
|
|
|
40
40
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
41
|
-
rev: v0.
|
|
41
|
+
rev: v0.5.0
|
|
42
42
|
hooks:
|
|
43
43
|
- id: ruff-format
|
|
44
44
|
|
|
45
45
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
46
|
-
rev: v0.
|
|
46
|
+
rev: v0.5.0
|
|
47
47
|
hooks:
|
|
48
48
|
- id: ruff
|
|
49
49
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: schemathesis
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.31.0
|
|
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
|
|
@@ -31,6 +31,7 @@ Requires-Python: >=3.8
|
|
|
31
31
|
Requires-Dist: backoff<3.0,>=2.1.2
|
|
32
32
|
Requires-Dist: click<9.0,>=7.0
|
|
33
33
|
Requires-Dist: colorama<1.0,>=0.4
|
|
34
|
+
Requires-Dist: harfile<1.0,>=0.3.0
|
|
34
35
|
Requires-Dist: httpx<1.0,>=0.22.0
|
|
35
36
|
Requires-Dist: hypothesis-graphql<1,>=0.11.0
|
|
36
37
|
Requires-Dist: hypothesis-jsonschema<0.24,>=0.23.1
|
|
@@ -1,9 +1,26 @@
|
|
|
1
1
|
Changelog
|
|
2
2
|
=========
|
|
3
3
|
|
|
4
|
-
:version:`Unreleased <v3.
|
|
4
|
+
:version:`Unreleased <v3.31.0...HEAD>` - TBD
|
|
5
5
|
--------------------------------------------
|
|
6
6
|
|
|
7
|
+
.. _v3.31.0:
|
|
8
|
+
|
|
9
|
+
:version:`3.31.0 <v3.30.4...v3.31.0>` - 2024-06-30
|
|
10
|
+
--------------------------------------------------
|
|
11
|
+
|
|
12
|
+
**Added**
|
|
13
|
+
|
|
14
|
+
- Storing cassettes in the HAR format via the ``--cassette-format=har`` CLI option. :issue:`2299`
|
|
15
|
+
- Support for cassettes in the new-style stateful test runner.
|
|
16
|
+
- ``--generation-with-security-parameters=false`` CLI option to disable generation of security parameters (like tokens) in test cases.
|
|
17
|
+
|
|
18
|
+
**Fixed**
|
|
19
|
+
|
|
20
|
+
- Incorrect test case ids stored in VCR cassettes. :issue:`2302`
|
|
21
|
+
- Incorrect reference resolution scope for security schemes if the API operation has a different scope than the global security schemes. :issue:`2300`
|
|
22
|
+
- Properly display unresolvable reference if it comes from a missing file.
|
|
23
|
+
|
|
7
24
|
.. _v3.30.4:
|
|
8
25
|
|
|
9
26
|
:version:`3.30.4 <v3.30.3...v3.30.4>` - 2024-06-28
|
|
@@ -291,8 +291,43 @@ Schemathesis allows you to do this with the ``--cassette-path`` command-line opt
|
|
|
291
291
|
|
|
292
292
|
$ st run --cassette-path cassette.yaml http://127.0.0.1/schema.yaml
|
|
293
293
|
|
|
294
|
-
|
|
295
|
-
|
|
294
|
+
Schemathesis supports `VCR <https://relishapp.com/vcr/vcr/v/5-1-0/docs/cassettes/cassette-format>`_ and `HAR <http://www.softwareishard.com/blog/har-12-spec/>`_ formats and stores all network interactions in a YAML file.
|
|
295
|
+
|
|
296
|
+
HAR format
|
|
297
|
+
~~~~~~~~~~
|
|
298
|
+
|
|
299
|
+
HTTP Archive (HAR) is a JSON-based format used for tracking HTTP requests and responses. Schemathesis uses a simplified version of this format that does not include page-related information:
|
|
300
|
+
|
|
301
|
+
.. code:: json
|
|
302
|
+
|
|
303
|
+
{
|
|
304
|
+
"log": {
|
|
305
|
+
"version": "1.2",
|
|
306
|
+
"creator": {
|
|
307
|
+
"name": "harfile",
|
|
308
|
+
"version": "0.2.0"
|
|
309
|
+
},
|
|
310
|
+
"browser": {
|
|
311
|
+
"name": "",
|
|
312
|
+
"version": ""
|
|
313
|
+
},
|
|
314
|
+
"entries": [
|
|
315
|
+
{
|
|
316
|
+
"startedDateTime": "2024-06-29T20:10:29.254107+02:00",
|
|
317
|
+
"time": 0.88,
|
|
318
|
+
"request": {"method": "GET", "url": "http://127.0.0.1:8081/api/basic", "httpVersion": "HTTP/1.1", "cookies": [], "headers": [{"name": "User-Agent", "value": "schemathesis/3.30.4"}, {"name": "Accept-Encoding", "value": "gzip, deflate"}, {"name": "Accept", "value": "*/*"}, {"name": "Connection", "value": "keep-alive"}, {"name": "Authorization", "value": "[Filtered]"}, {"name": "X-Schemathesis-TestCaseId", "value": "ScU88H"}], "queryString": [], "headersSize": 164, "bodySize": 0},
|
|
319
|
+
"response": {"status": 401, "statusText": "Unauthorized", "httpVersion": "HTTP/1.1", "cookies": [], "headers": [{"name": "Content-Type", "value": "application/json; charset=utf-8"}, {"name": "Content-Length", "value": "26"}, {"name": "Date", "value": "Sat, 29 Jun 2024 18:10:29 GMT"}, {"name": "Server", "value": "Python/3.11 aiohttp/3.9.3"}], "content": {"size": 26, "mimeType": "application/json; charset=utf-8", "text": "{\"detail\": \"Unauthorized\"}"}, "redirectURL": "", "headersSize": 139, "bodySize": 26},
|
|
320
|
+
"timings": {"send": 0, "wait": 0, "receive": 0.88, "blocked": 0, "dns": 0, "connect": 0, "ssl": 0},
|
|
321
|
+
"cache": {}
|
|
322
|
+
},
|
|
323
|
+
{
|
|
324
|
+
|
|
325
|
+
To view the content of a HAR file, you can use this `HAR viewer <http://www.softwareishard.com/har/viewer/>`_.
|
|
326
|
+
|
|
327
|
+
VCR format
|
|
328
|
+
~~~~~~~~~~
|
|
329
|
+
|
|
330
|
+
The content of a VCR cassette looks like this:
|
|
296
331
|
|
|
297
332
|
.. code:: yaml
|
|
298
333
|
|
|
@@ -79,3 +79,44 @@ Different API operations may need different timeouts during testing. You could a
|
|
|
79
79
|
case.call_and_validate(timeout=timeout)
|
|
80
80
|
|
|
81
81
|
In the example above, the default timeout is 10 seconds, but for `GET /users` it will be 5 seconds.
|
|
82
|
+
|
|
83
|
+
Generating only required parameters
|
|
84
|
+
-----------------------------------
|
|
85
|
+
|
|
86
|
+
Sometimes you don't need to generate all parameters for your API, and want to limit Schemathesis to only required ones.
|
|
87
|
+
You can do it with the following hook:
|
|
88
|
+
|
|
89
|
+
.. code-block:: python
|
|
90
|
+
|
|
91
|
+
import schemathesis
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
@schemathesis.hook
|
|
95
|
+
def before_init_operation(context, operation):
|
|
96
|
+
for parameter in operation.iter_parameters():
|
|
97
|
+
schema = parameter.definition.get("schema", {})
|
|
98
|
+
traverse_schema(schema, drop_optional_properties)
|
|
99
|
+
for alternative in operation.body:
|
|
100
|
+
schema = alternative.definition.get("schema", {})
|
|
101
|
+
traverse_schema(schema, drop_optional_properties)
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
def traverse_schema(schema, callback):
|
|
105
|
+
if isinstance(schema, dict):
|
|
106
|
+
schema = callback(schema)
|
|
107
|
+
for key, sub_item in schema.items():
|
|
108
|
+
schema[key] = traverse_schema(sub_item, callback)
|
|
109
|
+
elif isinstance(schema, list):
|
|
110
|
+
schema = [traverse_schema(sub_item, callback) for sub_item in schema]
|
|
111
|
+
return schema
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
def drop_optional_properties(schema):
|
|
115
|
+
required = schema.get("required", [])
|
|
116
|
+
properties = schema.get("properties", {})
|
|
117
|
+
for name in list(properties):
|
|
118
|
+
if name not in required:
|
|
119
|
+
del properties[name]
|
|
120
|
+
return schema
|
|
121
|
+
|
|
122
|
+
This hook will remove all optional properties from the parsed API operations.
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "schemathesis"
|
|
7
|
-
version = "3.
|
|
7
|
+
version = "3.31.0"
|
|
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" }]
|
|
@@ -34,6 +34,7 @@ dependencies = [
|
|
|
34
34
|
"backoff>=2.1.2,<3.0",
|
|
35
35
|
"click>=7.0,<9.0",
|
|
36
36
|
"colorama>=0.4,<1.0",
|
|
37
|
+
"harfile>=0.3.0,<1.0",
|
|
37
38
|
"httpx>=0.22.0,<1.0",
|
|
38
39
|
"hypothesis>=6.103.4,<7; python_version > '3.8'",
|
|
39
40
|
"hypothesis[zoneinfo]>=6.103.4,<7; python_version == '3.8'",
|
|
@@ -522,6 +522,13 @@ The report data, consisting of a tar gz file with multiple JSON files, is subjec
|
|
|
522
522
|
type=click.File("w", encoding="utf-8"),
|
|
523
523
|
is_eager=True,
|
|
524
524
|
)
|
|
525
|
+
@click.option(
|
|
526
|
+
"--cassette-format",
|
|
527
|
+
help="Format of the saved cassettes.",
|
|
528
|
+
type=click.Choice([item.name.lower() for item in cassettes.CassetteFormat]),
|
|
529
|
+
default=cassettes.CassetteFormat.VCR.name.lower(),
|
|
530
|
+
callback=callbacks.convert_cassette_format,
|
|
531
|
+
)
|
|
525
532
|
@click.option(
|
|
526
533
|
"--cassette-preserve-exact-body-bytes",
|
|
527
534
|
help="Retains exact byte sequence of payloads in cassettes, encoded as base64.",
|
|
@@ -718,6 +725,14 @@ The report data, consisting of a tar gz file with multiple JSON files, is subjec
|
|
|
718
725
|
default="utf-8",
|
|
719
726
|
callback=callbacks.validate_generation_codec,
|
|
720
727
|
)
|
|
728
|
+
@click.option(
|
|
729
|
+
"--generation-with-security-parameters",
|
|
730
|
+
help="Whether to generate security parameters.",
|
|
731
|
+
type=str,
|
|
732
|
+
default="true",
|
|
733
|
+
show_default=True,
|
|
734
|
+
callback=callbacks.convert_boolean_string,
|
|
735
|
+
)
|
|
721
736
|
@click.option(
|
|
722
737
|
"--schemathesis-io-token",
|
|
723
738
|
help="Schemathesis.io authentication token.",
|
|
@@ -783,6 +798,7 @@ def run(
|
|
|
783
798
|
show_trace: bool = False,
|
|
784
799
|
code_sample_style: CodeSampleStyle = CodeSampleStyle.default(),
|
|
785
800
|
cassette_path: click.utils.LazyFile | None = None,
|
|
801
|
+
cassette_format: cassettes.CassetteFormat = cassettes.CassetteFormat.VCR,
|
|
786
802
|
cassette_preserve_exact_body_bytes: bool = False,
|
|
787
803
|
store_network_log: click.utils.LazyFile | None = None,
|
|
788
804
|
wait_for_schema: float | None = None,
|
|
@@ -810,6 +826,7 @@ def run(
|
|
|
810
826
|
no_color: bool = False,
|
|
811
827
|
report_value: str | None = None,
|
|
812
828
|
generation_allow_x00: bool = True,
|
|
829
|
+
generation_with_security_parameters: bool = True,
|
|
813
830
|
generation_codec: str = "utf-8",
|
|
814
831
|
schemathesis_io_token: str | None = None,
|
|
815
832
|
schemathesis_io_url: str = service.DEFAULT_URL,
|
|
@@ -849,7 +866,11 @@ def run(
|
|
|
849
866
|
|
|
850
867
|
override = CaseOverride(query=set_query, headers=set_header, cookies=set_cookie, path_parameters=set_path)
|
|
851
868
|
|
|
852
|
-
generation_config = generation.GenerationConfig(
|
|
869
|
+
generation_config = generation.GenerationConfig(
|
|
870
|
+
allow_x00=generation_allow_x00,
|
|
871
|
+
codec=generation_codec,
|
|
872
|
+
with_security_parameters=generation_with_security_parameters,
|
|
873
|
+
)
|
|
853
874
|
|
|
854
875
|
report: ReportToService | click.utils.LazyFile | None
|
|
855
876
|
if report_value is None:
|
|
@@ -1006,6 +1027,7 @@ def run(
|
|
|
1006
1027
|
wait_for_schema=wait_for_schema,
|
|
1007
1028
|
validate_schema=validate_schema,
|
|
1008
1029
|
cassette_path=cassette_path,
|
|
1030
|
+
cassette_format=cassette_format,
|
|
1009
1031
|
cassette_preserve_exact_body_bytes=cassette_preserve_exact_body_bytes,
|
|
1010
1032
|
junit_xml=junit_xml,
|
|
1011
1033
|
verbosity=verbosity,
|
|
@@ -1387,6 +1409,7 @@ def execute(
|
|
|
1387
1409
|
wait_for_schema: float | None,
|
|
1388
1410
|
validate_schema: bool,
|
|
1389
1411
|
cassette_path: click.utils.LazyFile | None,
|
|
1412
|
+
cassette_format: cassettes.CassetteFormat,
|
|
1390
1413
|
cassette_preserve_exact_body_bytes: bool,
|
|
1391
1414
|
junit_xml: click.utils.LazyFile | None,
|
|
1392
1415
|
verbosity: int,
|
|
@@ -1449,7 +1472,9 @@ def execute(
|
|
|
1449
1472
|
# This handler should be first to have logs writing completed when the output handler will display statistic
|
|
1450
1473
|
_open_file(cassette_path)
|
|
1451
1474
|
handlers.append(
|
|
1452
|
-
cassettes.CassetteWriter(
|
|
1475
|
+
cassettes.CassetteWriter(
|
|
1476
|
+
cassette_path, format=cassette_format, preserve_exact_body_bytes=cassette_preserve_exact_body_bytes
|
|
1477
|
+
)
|
|
1453
1478
|
)
|
|
1454
1479
|
handlers.append(get_output_handler(workers_num))
|
|
1455
1480
|
if sanitize_output:
|
|
@@ -24,6 +24,7 @@ from ..service.hosts import get_temporary_hosts_file
|
|
|
24
24
|
from ..stateful import Stateful
|
|
25
25
|
from ..transports.headers import has_invalid_characters, is_latin_1_encodable
|
|
26
26
|
from ..types import PathLike
|
|
27
|
+
from .cassettes import CassetteFormat
|
|
27
28
|
from .constants import DEFAULT_WORKERS
|
|
28
29
|
|
|
29
30
|
if TYPE_CHECKING:
|
|
@@ -344,6 +345,10 @@ def convert_code_sample_style(ctx: click.core.Context, param: click.core.Paramet
|
|
|
344
345
|
return CodeSampleStyle.from_str(value)
|
|
345
346
|
|
|
346
347
|
|
|
348
|
+
def convert_cassette_format(ctx: click.core.Context, param: click.core.Parameter, value: str) -> CassetteFormat:
|
|
349
|
+
return CassetteFormat.from_str(value)
|
|
350
|
+
|
|
351
|
+
|
|
347
352
|
def convert_data_generation_method(
|
|
348
353
|
ctx: click.core.Context, param: click.core.Parameter, value: str
|
|
349
354
|
) -> list[DataGenerationMethod]:
|
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import base64
|
|
4
|
+
import enum
|
|
4
5
|
import json
|
|
5
6
|
import re
|
|
6
7
|
import sys
|
|
7
8
|
import threading
|
|
8
9
|
from dataclasses import dataclass, field
|
|
10
|
+
from http.cookies import SimpleCookie
|
|
9
11
|
from queue import Queue
|
|
10
|
-
from typing import IO, TYPE_CHECKING, Any, Generator, Iterator, cast
|
|
12
|
+
from typing import IO, TYPE_CHECKING, Any, Callable, Generator, Iterator, cast
|
|
13
|
+
from urllib.parse import parse_qsl, urlparse
|
|
14
|
+
|
|
15
|
+
import harfile
|
|
11
16
|
|
|
12
17
|
from ..constants import SCHEMATHESIS_VERSION
|
|
13
18
|
from ..runner import events
|
|
@@ -27,6 +32,23 @@ if TYPE_CHECKING:
|
|
|
27
32
|
WRITER_WORKER_JOIN_TIMEOUT = 1
|
|
28
33
|
|
|
29
34
|
|
|
35
|
+
class CassetteFormat(str, enum.Enum):
|
|
36
|
+
"""Type of the cassette."""
|
|
37
|
+
|
|
38
|
+
VCR = "vcr"
|
|
39
|
+
HAR = "har"
|
|
40
|
+
|
|
41
|
+
@classmethod
|
|
42
|
+
def from_str(cls, value: str) -> CassetteFormat:
|
|
43
|
+
try:
|
|
44
|
+
return cls[value.upper()]
|
|
45
|
+
except KeyError:
|
|
46
|
+
available_formats = ", ".join(cls)
|
|
47
|
+
raise ValueError(
|
|
48
|
+
f"Invalid value for cassette format: {value}. Available formats: {available_formats}"
|
|
49
|
+
) from None
|
|
50
|
+
|
|
51
|
+
|
|
30
52
|
@dataclass
|
|
31
53
|
class CassetteWriter(EventHandler):
|
|
32
54
|
"""Write interactions in a YAML cassette.
|
|
@@ -36,26 +58,30 @@ class CassetteWriter(EventHandler):
|
|
|
36
58
|
"""
|
|
37
59
|
|
|
38
60
|
file_handle: click.utils.LazyFile
|
|
61
|
+
format: CassetteFormat
|
|
39
62
|
preserve_exact_body_bytes: bool
|
|
40
63
|
queue: Queue = field(default_factory=Queue)
|
|
41
64
|
worker: threading.Thread = field(init=False)
|
|
42
65
|
|
|
43
66
|
def __post_init__(self) -> None:
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
67
|
+
kwargs = {
|
|
68
|
+
"file_handle": self.file_handle,
|
|
69
|
+
"queue": self.queue,
|
|
70
|
+
"preserve_exact_body_bytes": self.preserve_exact_body_bytes,
|
|
71
|
+
}
|
|
72
|
+
writer: Callable
|
|
73
|
+
if self.format == CassetteFormat.HAR:
|
|
74
|
+
writer = har_writer
|
|
75
|
+
else:
|
|
76
|
+
writer = vcr_writer
|
|
77
|
+
self.worker = threading.Thread(name="SchemathesisCassetteWriter", target=writer, kwargs=kwargs)
|
|
52
78
|
self.worker.start()
|
|
53
79
|
|
|
54
80
|
def handle_event(self, context: ExecutionContext, event: events.ExecutionEvent) -> None:
|
|
55
81
|
if isinstance(event, events.Initialized):
|
|
56
82
|
# In the beginning we write metadata and start `http_interactions` list
|
|
57
83
|
self.queue.put(Initialize())
|
|
58
|
-
|
|
84
|
+
elif isinstance(event, events.AfterExecution):
|
|
59
85
|
# Seed is always present at this point, the original Optional[int] type is there because `TestResult`
|
|
60
86
|
# instance is created before `seed` is generated on the hypothesis side
|
|
61
87
|
seed = cast(int, event.result.seed)
|
|
@@ -71,7 +97,19 @@ class CassetteWriter(EventHandler):
|
|
|
71
97
|
interactions=event.result.interactions,
|
|
72
98
|
)
|
|
73
99
|
)
|
|
74
|
-
|
|
100
|
+
elif isinstance(event, events.AfterStatefulExecution):
|
|
101
|
+
seed = cast(int, event.result.seed)
|
|
102
|
+
self.queue.put(
|
|
103
|
+
Process(
|
|
104
|
+
seed=seed,
|
|
105
|
+
# Correlation ID is not used in stateful testing
|
|
106
|
+
correlation_id="",
|
|
107
|
+
thread_id=event.thread_id,
|
|
108
|
+
data_generation_method=event.data_generation_method[0],
|
|
109
|
+
interactions=event.result.interactions,
|
|
110
|
+
)
|
|
111
|
+
)
|
|
112
|
+
elif isinstance(event, events.Finished):
|
|
75
113
|
self.shutdown()
|
|
76
114
|
|
|
77
115
|
def shutdown(self) -> None:
|
|
@@ -112,7 +150,7 @@ def get_command_representation() -> str:
|
|
|
112
150
|
return f"st {args}"
|
|
113
151
|
|
|
114
152
|
|
|
115
|
-
def
|
|
153
|
+
def vcr_writer(file_handle: click.utils.LazyFile, preserve_exact_body_bytes: bool, queue: Queue) -> None:
|
|
116
154
|
"""Write YAML to a file in an incremental manner.
|
|
117
155
|
|
|
118
156
|
This implementation doesn't use `pyyaml` package and composes YAML manually as string due to the following reasons:
|
|
@@ -278,6 +316,106 @@ def write_double_quoted(stream: IO, text: str) -> None:
|
|
|
278
316
|
stream.write('"')
|
|
279
317
|
|
|
280
318
|
|
|
319
|
+
def har_writer(file_handle: click.utils.LazyFile, preserve_exact_body_bytes: bool, queue: Queue) -> None:
|
|
320
|
+
if preserve_exact_body_bytes:
|
|
321
|
+
|
|
322
|
+
def get_body(body: str) -> str:
|
|
323
|
+
return body
|
|
324
|
+
else:
|
|
325
|
+
|
|
326
|
+
def get_body(body: str) -> str:
|
|
327
|
+
return base64.b64decode(body).decode("utf-8", errors="replace")
|
|
328
|
+
|
|
329
|
+
with harfile.open(file_handle) as har:
|
|
330
|
+
while True:
|
|
331
|
+
item = queue.get()
|
|
332
|
+
if isinstance(item, Process):
|
|
333
|
+
for interaction in item.interactions:
|
|
334
|
+
time = round(interaction.response.elapsed * 1000, 2)
|
|
335
|
+
content_type = interaction.response.headers.get("Content-Type", [""])[0]
|
|
336
|
+
content = harfile.Content(
|
|
337
|
+
size=interaction.response.body_size or 0,
|
|
338
|
+
mimeType=content_type,
|
|
339
|
+
text=get_body(interaction.response.body) if interaction.response.body is not None else None,
|
|
340
|
+
encoding="base64"
|
|
341
|
+
if interaction.response.body is not None and preserve_exact_body_bytes
|
|
342
|
+
else None,
|
|
343
|
+
)
|
|
344
|
+
http_version = f"HTTP/{interaction.response.http_version}"
|
|
345
|
+
query_params = urlparse(interaction.request.uri).query
|
|
346
|
+
if interaction.request.body is not None:
|
|
347
|
+
post_data = harfile.PostData(
|
|
348
|
+
mimeType=content_type,
|
|
349
|
+
text=get_body(interaction.request.body),
|
|
350
|
+
)
|
|
351
|
+
else:
|
|
352
|
+
post_data = None
|
|
353
|
+
har.add_entry(
|
|
354
|
+
startedDateTime=interaction.recorded_at,
|
|
355
|
+
time=time,
|
|
356
|
+
request=harfile.Request(
|
|
357
|
+
method=interaction.request.method.upper(),
|
|
358
|
+
url=interaction.request.uri,
|
|
359
|
+
httpVersion=http_version,
|
|
360
|
+
headers=[
|
|
361
|
+
harfile.Record(name=name, value=values[0])
|
|
362
|
+
for name, values in interaction.request.headers.items()
|
|
363
|
+
],
|
|
364
|
+
queryString=[
|
|
365
|
+
harfile.Record(name=name, value=value)
|
|
366
|
+
for name, value in parse_qsl(query_params, keep_blank_values=True)
|
|
367
|
+
],
|
|
368
|
+
cookies=_extract_cookies(interaction.request.headers.get("Cookie", [])),
|
|
369
|
+
headersSize=_headers_size(interaction.request.headers),
|
|
370
|
+
bodySize=interaction.request.body_size or 0,
|
|
371
|
+
postData=post_data,
|
|
372
|
+
),
|
|
373
|
+
response=harfile.Response(
|
|
374
|
+
status=interaction.response.status_code,
|
|
375
|
+
httpVersion=http_version,
|
|
376
|
+
statusText=interaction.response.message,
|
|
377
|
+
headers=[
|
|
378
|
+
harfile.Record(name=name, value=values[0])
|
|
379
|
+
for name, values in interaction.response.headers.items()
|
|
380
|
+
],
|
|
381
|
+
cookies=_extract_cookies(interaction.response.headers.get("Set-Cookie", [])),
|
|
382
|
+
content=content,
|
|
383
|
+
headersSize=_headers_size(interaction.response.headers),
|
|
384
|
+
bodySize=interaction.response.body_size or 0,
|
|
385
|
+
redirectURL=interaction.response.headers.get("Location", [""])[0],
|
|
386
|
+
),
|
|
387
|
+
timings=harfile.Timings(send=0, wait=0, receive=time, blocked=0, dns=0, connect=0, ssl=0),
|
|
388
|
+
)
|
|
389
|
+
elif isinstance(item, Finalize):
|
|
390
|
+
break
|
|
391
|
+
|
|
392
|
+
|
|
393
|
+
def _headers_size(headers: dict[str, list[str]]) -> int:
|
|
394
|
+
size = 0
|
|
395
|
+
for name, values in headers.items():
|
|
396
|
+
# 4 is for ": " and "\r\n"
|
|
397
|
+
size += len(name) + 4 + len(values[0])
|
|
398
|
+
return size
|
|
399
|
+
|
|
400
|
+
|
|
401
|
+
def _extract_cookies(headers: list[str]) -> list[harfile.Cookie]:
|
|
402
|
+
return [cookie for items in headers for item in items for cookie in _cookie_to_har(item)]
|
|
403
|
+
|
|
404
|
+
|
|
405
|
+
def _cookie_to_har(cookie: str) -> Iterator[harfile.Cookie]:
|
|
406
|
+
parsed = SimpleCookie(cookie)
|
|
407
|
+
for name, data in parsed.items():
|
|
408
|
+
yield harfile.Cookie(
|
|
409
|
+
name=name,
|
|
410
|
+
value=data.value,
|
|
411
|
+
path=data["path"] or None,
|
|
412
|
+
domain=data["domain"] or None,
|
|
413
|
+
expires=data["expires"] or None,
|
|
414
|
+
httpOnly=data["httponly"] or None,
|
|
415
|
+
secure=data["secure"] or None,
|
|
416
|
+
)
|
|
417
|
+
|
|
418
|
+
|
|
281
419
|
@dataclass
|
|
282
420
|
class Replayed:
|
|
283
421
|
interaction: dict[str, Any]
|
|
@@ -222,9 +222,11 @@ class OperationSchemaError(Exception):
|
|
|
222
222
|
def from_reference_resolution_error(
|
|
223
223
|
cls, error: RefResolutionError, path: str | None, method: str | None, full_path: str | None
|
|
224
224
|
) -> OperationSchemaError:
|
|
225
|
+
notes = getattr(error, "__notes__", [])
|
|
226
|
+
# Some exceptions don't have the actual reference in them, hence we add it manually via notes
|
|
227
|
+
pointer = f"'{notes[0]}'"
|
|
225
228
|
message = "Unresolvable JSON pointer in the schema"
|
|
226
229
|
# Get the pointer value from "Unresolvable JSON pointer: 'components/UnknownParameter'"
|
|
227
|
-
pointer = str(error).split(": ", 1)[-1]
|
|
228
230
|
message += f"\n\nError details:\n JSON pointer: {pointer}"
|
|
229
231
|
message += "\n This typically means that the schema is referencing a component that doesn't exist."
|
|
230
232
|
message += f"\n\n{SCHEMA_ERROR_SUGGESTION}"
|
|
@@ -77,5 +77,7 @@ class GenerationConfig:
|
|
|
77
77
|
allow_x00: bool = True
|
|
78
78
|
# Generate strings using the given codec
|
|
79
79
|
codec: str | None = "utf-8"
|
|
80
|
+
# Whether to generate security parameters
|
|
81
|
+
with_security_parameters: bool = True
|
|
80
82
|
# Header generation configuration
|
|
81
83
|
headers: HeaderConfig = field(default_factory=HeaderConfig)
|
|
@@ -492,6 +492,7 @@ class Case:
|
|
|
492
492
|
query=fast_deepcopy(self.query),
|
|
493
493
|
body=fast_deepcopy(self.body),
|
|
494
494
|
generation_time=self.generation_time,
|
|
495
|
+
id=self.id,
|
|
495
496
|
)
|
|
496
497
|
|
|
497
498
|
|
|
@@ -831,6 +832,7 @@ class Request:
|
|
|
831
832
|
method: str
|
|
832
833
|
uri: str
|
|
833
834
|
body: str | None
|
|
835
|
+
body_size: int | None
|
|
834
836
|
headers: Headers
|
|
835
837
|
|
|
836
838
|
@classmethod
|
|
@@ -861,6 +863,7 @@ class Request:
|
|
|
861
863
|
method=method,
|
|
862
864
|
headers={key: [value] for (key, value) in prepared.headers.items()},
|
|
863
865
|
body=serialize_payload(body) if body is not None else body,
|
|
866
|
+
body_size=len(body) if body is not None else None,
|
|
864
867
|
)
|
|
865
868
|
|
|
866
869
|
def deserialize_body(self) -> bytes | None:
|
|
@@ -880,6 +883,7 @@ class Response:
|
|
|
880
883
|
message: str
|
|
881
884
|
headers: dict[str, list[str]]
|
|
882
885
|
body: str | None
|
|
886
|
+
body_size: int | None
|
|
883
887
|
encoding: str | None
|
|
884
888
|
http_version: str
|
|
885
889
|
elapsed: float
|
|
@@ -906,6 +910,7 @@ class Response:
|
|
|
906
910
|
status_code=response.status_code,
|
|
907
911
|
message=response.reason,
|
|
908
912
|
body=body,
|
|
913
|
+
body_size=len(response.content) if body is not None else None,
|
|
909
914
|
encoding=response.encoding,
|
|
910
915
|
headers=headers,
|
|
911
916
|
http_version=http_version,
|
|
@@ -933,6 +938,7 @@ class Response:
|
|
|
933
938
|
status_code=response.status_code,
|
|
934
939
|
message=message,
|
|
935
940
|
body=body,
|
|
941
|
+
body_size=len(data) if body is not None else None,
|
|
936
942
|
encoding=encoding,
|
|
937
943
|
headers=headers,
|
|
938
944
|
http_version="1.1",
|
|
@@ -949,6 +955,9 @@ class Response:
|
|
|
949
955
|
return deserialize_payload(self.body)
|
|
950
956
|
|
|
951
957
|
|
|
958
|
+
TIMEZONE = datetime.datetime.now(datetime.timezone.utc).astimezone().tzinfo
|
|
959
|
+
|
|
960
|
+
|
|
952
961
|
@dataclass
|
|
953
962
|
class Interaction:
|
|
954
963
|
"""A single interaction with the target app."""
|
|
@@ -958,7 +967,7 @@ class Interaction:
|
|
|
958
967
|
checks: list[Check]
|
|
959
968
|
status: Status
|
|
960
969
|
data_generation_method: DataGenerationMethod
|
|
961
|
-
recorded_at: str = field(default_factory=lambda: datetime.datetime.now().isoformat())
|
|
970
|
+
recorded_at: str = field(default_factory=lambda: datetime.datetime.now(TIMEZONE).isoformat())
|
|
962
971
|
|
|
963
972
|
@classmethod
|
|
964
973
|
def from_requests(cls, case: Case, response: requests.Response, status: Status, checks: list[Check]) -> Interaction:
|
|
@@ -236,12 +236,54 @@ class BaseRunner:
|
|
|
236
236
|
state_machine = self.schema.as_state_machine()
|
|
237
237
|
runner = state_machine.runner(config=config)
|
|
238
238
|
status = Status.success
|
|
239
|
+
|
|
240
|
+
def from_step_status(step_status: stateful_events.StepStatus) -> Status:
|
|
241
|
+
return {
|
|
242
|
+
stateful_events.StepStatus.SUCCESS: Status.success,
|
|
243
|
+
stateful_events.StepStatus.FAILURE: Status.failure,
|
|
244
|
+
stateful_events.StepStatus.ERROR: Status.error,
|
|
245
|
+
stateful_events.StepStatus.INTERRUPTED: Status.error,
|
|
246
|
+
}[step_status]
|
|
247
|
+
|
|
248
|
+
if self.store_interactions:
|
|
249
|
+
if isinstance(state_machine.schema.transport, RequestsTransport):
|
|
250
|
+
|
|
251
|
+
def on_step_finished(event: stateful_events.StepFinished) -> None:
|
|
252
|
+
if event.response is not None:
|
|
253
|
+
response = cast(requests.Response, event.response)
|
|
254
|
+
result.store_requests_response(
|
|
255
|
+
status=from_step_status(event.status),
|
|
256
|
+
case=event.case,
|
|
257
|
+
response=response,
|
|
258
|
+
checks=event.checks,
|
|
259
|
+
)
|
|
260
|
+
|
|
261
|
+
else:
|
|
262
|
+
|
|
263
|
+
def on_step_finished(event: stateful_events.StepFinished) -> None:
|
|
264
|
+
if event.response is not None:
|
|
265
|
+
response = cast(WSGIResponse, event.response)
|
|
266
|
+
result.store_wsgi_response(
|
|
267
|
+
status=from_step_status(event.status),
|
|
268
|
+
case=event.case,
|
|
269
|
+
response=response,
|
|
270
|
+
headers=self.headers or {},
|
|
271
|
+
elapsed=response.elapsed.total_seconds(),
|
|
272
|
+
checks=event.checks,
|
|
273
|
+
)
|
|
274
|
+
else:
|
|
275
|
+
|
|
276
|
+
def on_step_finished(event: stateful_events.StepFinished) -> None:
|
|
277
|
+
return None
|
|
278
|
+
|
|
239
279
|
for stateful_event in runner.execute():
|
|
240
280
|
if isinstance(stateful_event, stateful_events.SuiteFinished):
|
|
241
281
|
if stateful_event.failures and status != Status.error:
|
|
242
282
|
status = Status.failure
|
|
243
283
|
for failure in stateful_event.failures:
|
|
244
284
|
result.checks.append(failure)
|
|
285
|
+
elif isinstance(stateful_event, stateful_events.StepFinished):
|
|
286
|
+
on_step_finished(stateful_event)
|
|
245
287
|
elif isinstance(stateful_event, stateful_events.Errored):
|
|
246
288
|
status = Status.error
|
|
247
289
|
yield events.StatefulEvent(data=stateful_event)
|
|
@@ -249,6 +291,7 @@ class BaseRunner:
|
|
|
249
291
|
yield events.AfterStatefulExecution(
|
|
250
292
|
status=status,
|
|
251
293
|
result=SerializedTestResult.from_test_result(result),
|
|
294
|
+
data_generation_method=self.schema.data_generation_methods,
|
|
252
295
|
)
|
|
253
296
|
|
|
254
297
|
def _run_tests(
|