schemathesis 3.26.1__tar.gz → 3.27.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.26.1 → schemathesis-3.27.0}/.github/workflows/build.yml +1 -1
- {schemathesis-3.26.1 → schemathesis-3.27.0}/.github/workflows/codeql-analysis.yml +3 -3
- {schemathesis-3.26.1 → schemathesis-3.27.0}/.pre-commit-config.yaml +3 -3
- {schemathesis-3.26.1 → schemathesis-3.27.0}/PKG-INFO +2 -2
- {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/api.rst +3 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/changelog.rst +33 -1
- {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/cli.rst +94 -33
- {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/extending.rst +8 -2
- {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/python.rst +41 -27
- {schemathesis-3.26.1 → schemathesis-3.27.0}/example/requirements-pytest.txt +1 -1
- {schemathesis-3.26.1 → schemathesis-3.27.0}/pyproject.toml +3 -2
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/_dependency_versions.py +3 -0
- schemathesis-3.27.0/src/schemathesis/_rate_limiter.py +6 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/cli/__init__.py +1 -1
- schemathesis-3.27.0/src/schemathesis/cli/junitxml.py +112 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/cli/output/default.py +9 -47
- schemathesis-3.27.0/src/schemathesis/cli/reporting.py +72 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/models.py +51 -143
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/runner/impl/core.py +10 -8
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/runner/serialization.py +32 -10
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/schemas.py +15 -7
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/graphql/loaders.py +2 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/graphql/schemas.py +7 -40
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/_hypothesis.py +3 -1
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/loaders.py +3 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/stateful/state_machine.py +3 -13
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/throttling.py +2 -2
- schemathesis-3.27.0/src/schemathesis/transports/__init__.py +311 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/transports/responses.py +2 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/auth/test_pytest.py +2 -2
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/test_commands.py +4 -7
- schemathesis-3.27.0/test/cli/test_junitxml.py +199 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/code_samples/test_python.py +4 -4
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/experimental/test_openapi_3_1.py +1 -2
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/hooks/test_hooks.py +7 -2
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/loaders/conftest.py +3 -12
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/loaders/test_graphql.py +8 -8
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/loaders/test_openapi.py +6 -6
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/runner/test_runner.py +1 -1
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/graphql/test_basic.py +7 -4
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/graphql/test_pytest.py +1 -2
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/openapi/test_examples.py +2 -1
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/openapi/test_media_types.py +3 -2
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/openapi/test_negative.py +1 -1
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/openapi/test_serializing.py +4 -4
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_asgi.py +7 -6
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_hypothesis.py +5 -5
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_lazy.py +20 -9
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_models.py +15 -13
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_parameters.py +4 -10
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_pytest.py +4 -7
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_rate_limit.py +13 -5
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_serialization.py +20 -24
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_wsgi.py +5 -4
- schemathesis-3.26.1/src/schemathesis/cli/junitxml.py +0 -43
- schemathesis-3.26.1/src/schemathesis/transports/__init__.py +0 -5
- schemathesis-3.26.1/test/cli/test_junitxml.py +0 -78
- {schemathesis-3.26.1 → schemathesis-3.27.0}/.dockerignore +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/.github/FUNDING.yml +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/.github/dependabot.yml +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/.github/workflows/codspeed.yml +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/.github/workflows/commit.yml +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/.github/workflows/example-build.yml +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/.github/workflows/example-no-build.yml +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/.github/workflows/master_update.yml +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/.github/workflows/release.yml +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/.github/workflows/test-corpus.yml +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/.github/workflows/test-hypothesis.yml +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/.github/workflows/update-corpus.yml +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/.github/workflows/update-pre-commit.yml +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/.gitignore +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/.gitmodules +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/.readthedocs.yml +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/.relint.yml +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/.rstcheck.cfg +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/.yamllint +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/CITATION.cff +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/CODE_OF_CONDUCT.md +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/CONTRIBUTING.rst +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/Dockerfile +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/Dockerfile.bookworm +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/LICENSE +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/README.md +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/benches/cli.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/benches/references.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/changelog.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/codecov.yml +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/Makefile +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/additional-content.rst +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/auth.rst +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/compatibility.rst +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/conf.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/continuous_integration.rst +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/contrib.rst +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/data-generation.rst +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/examples.rst +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/experimental.rst +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/faq.rst +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/getting-started.rst +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/graphql.rst +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/index.rst +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/recipes.rst +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/requirements.txt +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/sanitizing.rst +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/service.rst +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/stateful.rst +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/targeted.rst +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/example/Dockerfile +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/example/README.md +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/example/app.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/example/compose.yml +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/example/openapi.json +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/example/requirements-app.in +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/example/requirements-app.txt +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/example/requirements-pytest.in +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/example/tests/__init__.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/example/tests/conftest.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/example/tests/extensions.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/example/tests/test_app.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/img/demo.gif +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/img/service_github_report.png +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/mypy.ini +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/__init__.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/_compat.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/_hypothesis.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/_lazy_import.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/_override.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/_xml.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/auths.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/checks.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/cli/callbacks.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/cli/cassettes.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/cli/constants.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/cli/context.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/cli/debug.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/cli/handlers.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/cli/options.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/cli/output/__init__.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/cli/output/short.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/cli/sanitization.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/code_samples.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/constants.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/contrib/__init__.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/contrib/openapi/__init__.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/contrib/openapi/fill_missing_examples.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/contrib/openapi/formats/__init__.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/contrib/openapi/formats/uuid.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/contrib/unique_data.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/exceptions.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/experimental/__init__.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/extra/__init__.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/extra/_aiohttp.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/extra/_flask.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/extra/_server.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/extra/pytest_plugin.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/failures.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/filters.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/fixups/__init__.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/fixups/fast_api.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/fixups/utf8_bom.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/generation/__init__.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/graphql.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/hooks.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/internal/__init__.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/internal/copy.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/internal/datetime.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/internal/deprecation.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/internal/jsonschema.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/internal/result.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/internal/transformation.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/internal/validation.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/lazy.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/loaders.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/parameters.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/py.typed +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/runner/__init__.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/runner/events.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/runner/impl/__init__.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/runner/impl/solo.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/runner/impl/threadpool.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/runner/probes.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/sanitization.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/serializers.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/service/__init__.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/service/auth.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/service/ci.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/service/client.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/service/constants.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/service/events.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/service/extensions.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/service/hosts.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/service/metadata.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/service/models.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/service/report.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/service/serialization.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/service/usage.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/__init__.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/graphql/__init__.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/graphql/nodes.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/graphql/scalars.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/graphql/validation.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/__init__.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/checks.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/constants.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/converter.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/definitions.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/examples.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/expressions/__init__.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/expressions/context.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/expressions/errors.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/expressions/lexer.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/expressions/nodes.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/expressions/parser.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/filters.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/formats.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/links.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/media_types.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/negative/__init__.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/negative/mutations.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/negative/types.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/negative/utils.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/parameters.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/references.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/schemas.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/security.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/serialization.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/stateful/__init__.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/stateful/links.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/utils.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/validation.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/stateful/__init__.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/targets.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/transports/auth.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/transports/content_types.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/transports/headers.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/types.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/utils.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/__init__.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/__snapshots__/test_hypothesis/test_health_check_failed_large_base_example.raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/__snapshots__/test_recoverable_errors/test_in_cli[1].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/__snapshots__/test_recoverable_errors/test_in_cli[2].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/__snapshots__/test_serialization/test_in_cli[Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/apps/__init__.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/apps/_graphql/__init__.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/apps/_graphql/_fastapi/__init__.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/apps/_graphql/_fastapi/app.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/apps/_graphql/_flask/__init__.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/apps/_graphql/_flask/app.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/apps/_graphql/schema.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/apps/openapi/__init__.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/apps/openapi/_aiohttp/__init__.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/apps/openapi/_aiohttp/app.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/apps/openapi/_aiohttp/handlers.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/apps/openapi/_fastapi/__init__.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/apps/openapi/_fastapi/app.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/apps/openapi/_flask/__init__.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/apps/openapi/_flask/app.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/apps/openapi/schema.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/auth/__init__.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/auth/__snapshots__/test_cli/test_conditional[Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/auth/__snapshots__/test_cli/test_custom_auth[Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/auth/__snapshots__/test_cli/test_explicit_auth_precedence[Open API 3.0-args0-Basic dXNlcjpwYXNz].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/auth/__snapshots__/test_cli/test_explicit_auth_precedence[Open API 3.0-args1-Bearer EXPLICIT].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/auth/__snapshots__/test_cli/test_multiple_auth_mechanisms_with_explicit_auth.raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/auth/__snapshots__/test_cli/test_multiple_threads[Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/auth/__snapshots__/test_cli/test_requests_auth[Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/auth/conftest.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/auth/test_cli.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/auth/test_provider.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__init__.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_cassettes/test_forbid_preserve_exact_bytes_without_cassette_path[Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_cassettes/test_forbid_simultaneous_use_of_deprecated_and_new_options[Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_add_case_output[Open API 2.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_add_case_output[Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_auth_and_authorization_header_are_disallowed[Open API 3.0-Authorization].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_auth_and_authorization_header_are_disallowed[Open API 3.0-authorization].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 2.0---auth='testwrong'].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.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.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 3.0---auth='testwrong'].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.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.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_binary_payload.raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_certificate_only_key.raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_chunked_encoding_error[Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 2.0-1].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 2.0-2].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 3.0-1].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 3.0-2].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 2.0-1].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 2.0-2].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 3.0-1].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 3.0-2].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_commands_help.raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_complex_urlencoded_example.raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 2.0-1].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 2.0-2].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 3.0-1].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 3.0-2].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 2.0-1].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 2.0-2].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 3.0-1].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 3.0-2].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_empty_schema_file[args0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_empty_schema_file[args1].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_explicit_example_failure_output.raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_explicit_headers_in_output_on_errors[Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_force_color_nocolor[Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_get_request_with_body[Open API 2.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_get_request_with_body[Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_graphql_asgi.raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_graphql_url[foo-args0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_graphql_url[foo-args1].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_graphql_url[graphql-args0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_graphql_url[graphql-args1].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_group_errors.raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_hooks_module_not_found.raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_hooks_with_inner_import_error.raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_hypothesis_database_with_derandomize[Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 2.0-1].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 2.0-2].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 3.0-1].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 3.0-2].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 2.0-1].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 2.0-2].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 3.0-1].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 3.0-2].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[real-Open API 2.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[real-Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[wsgi-Open API 2.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[wsgi-Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_invalid_schema_with_disabled_validation[3.0.2-The provided definition doesn't match any of the expected formats or types.].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_invalid_schema_with_disabled_validation[3.1.0-'type' is a required property].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_invalid_yaml.raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_long_payload.raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_malformed_json_deduplication[real-Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_malformed_json_deduplication[wsgi-Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 2.0-1].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 2.0-2].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 3.0-1].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 3.0-2].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[cookie-None].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[cookie-http127.0.0.1apiv2].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[header-None].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[header-http127.0.0.1apiv2].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[path-None].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[path-http127.0.0.1apiv2].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[query-None].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[query-http127.0.0.1apiv2].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_multiple_errors.raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_multiple_failures_different_check[Open API 2.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_multiple_failures_different_check[Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_multiple_failures_in_single_check.raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_multiple_failures_single_check[Open API 2.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_multiple_failures_single_check[Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_nested_binary_in_yaml.raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_no_useless_traceback.raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_null_byte_in_header_probe.raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_openapi_links[real-Open API 2.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_openapi_links[real-Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_openapi_links[wsgi-Open API 2.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_openapi_links[wsgi-Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_openapi_links_disabled[Open API 2.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_openapi_links_disabled[Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 2.0-1-.....].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 2.0-5-......].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 3.0-1-.....].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 3.0-5-......].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 2.0-1-.....].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 2.0-5-......].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 3.0-1-.....].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 3.0-5-......].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_proxy_error[Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_read_content_timeout[Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError(Custom check failed!)-Open API 2.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError(Custom check failed!)-Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError-Open API 2.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError-Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_remote_disconnected_error[Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[real-Open API 2.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[real-Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[wsgi-Open API 2.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[wsgi-Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[real-Open API 2.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[real-Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[wsgi-Open API 2.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[wsgi-Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args10].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args11].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args12].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args13].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args14].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args15].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args16].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args17].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args18].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args19].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args1].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args20].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args21].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args22].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args23].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args24].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args25].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args26].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args27].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args28].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args29].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args2].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args30].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args31].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args32].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args33].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args34].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args35].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args36].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args3].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args4].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args5].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args6].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args7].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args8].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args9].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_schema_not_available[1].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_schema_not_available[2].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_schema_not_available_wsgi.raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 2.0-1].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 2.0-2].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 3.0-1].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 3.0-2].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 2.0-1].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 2.0-2].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 3.0-1].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 3.0-2].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_unresolvable_reference_with_disabled_validation.raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 2.0-1].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 2.0-2].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 3.0-1].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 3.0-2].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 2.0-1].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 2.0-2].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 3.0-1].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 3.0-2].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_unsupported_regex.raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_useful_traceback[Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_wait_for_schema_not_enough.raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_yaml_parsing_of_floats[Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_hooks/test_after_call[real-Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_hooks/test_after_call[wsgi-Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/cert.pem +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/conftest.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/output/__init__.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/output/test_default.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/test_asgi.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/test_callbacks.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/test_cassettes.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/test_checks.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/test_crashes.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/test_hooks.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/test_options.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/test_targeted.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/code_samples/__snapshots__/test_python/test_cli_output[Open API 2.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/code_samples/__snapshots__/test_python/test_cli_output[Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/code_samples/conftest.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/code_samples/test_curl.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/conftest.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/contrib/__snapshots__/test_unique_data/test_cli[None].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema1].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema2].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/contrib/__snapshots__/test_unique_data/test_explicit_headers[1].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/contrib/__snapshots__/test_unique_data/test_explicit_headers[2].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/contrib/openapi/__snapshots__/test_fill_missing_examples/test_fills_missing_examples.raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/contrib/openapi/formats/test_uuid.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/contrib/openapi/test_fill_missing_examples.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/contrib/test_install.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/contrib/test_unique_data.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/data/petstore_v2.yaml +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/data/petstore_v3.yaml +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/data/simple_openapi.yaml +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/data/simple_swagger.yaml +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/experimental/__snapshots__/test_experiments/test_not_enabled.raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/experimental/conftest.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/experimental/test_experiments.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/extra/__init__.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/extra/test_aiohttp.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/filters/test_matching.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/hooks/test_filter_operations.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/loaders/test_app.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/loaders/test_common.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/loaders/test_yaml.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/runner/test_checks.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/runner/test_events.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/runner/test_probes.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__init__.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_cli/test_client_error_on_project_details[Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_cli/test_client_error_on_upload[Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_cli/test_error_in_another_handler[Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_cli/test_github_suggestion[Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_cli/test_not_authenticated_with_name.raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_cli/test_two_names.raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_cli/test_unauthorized[Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_cli/test_unknown_error_on_upload[Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_cli/test_upload_failure[Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_cli/test_upload_success[Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_extensions/test_connection_error[Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_extensions/test_custom_format.raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_extensions/test_dry_run[Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_extensions/test_forbidden[Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_extensions/test_graphql_scalars.raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_extensions/test_internal_server_error[Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_extensions/test_invalid_extension[Open API 3.0-42].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_extensions/test_invalid_extension[Open API 3.0-extension1].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_extensions/test_invalid_payload[Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_extensions/test_media_type_extension[strategy0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_extensions/test_media_type_extension[strategy1].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_extensions/test_oversize_text[Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_extensions/test_schema_patches[patch0-expected0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_extensions/test_schema_patches[patch1-expected1].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_extensions/test_schema_patches[patch2-expected2].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_extensions/test_unknown_extension_in_cli[Open API 3.0].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/conftest.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/test_auth.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/test_ci.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/test_cli.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/test_extensions.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/test_report.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/test_serialization.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/test_usage.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/graphql/__snapshots__/test_basic/test_schema_error[ntype Query {n 123(created Int!) Int!n}-.whatever].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/graphql/__snapshots__/test_basic/test_schema_error[ntype Query {n func(created Unknown!) Int!n}-.gql].raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/graphql/__snapshots__/test_custom_scalars/test_built_in_scalars_in_cli.raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/graphql/__snapshots__/test_custom_scalars/test_custom_scalar_in_cli.raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/graphql/test_custom_scalars.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/openapi/__snapshots__/test_examples/test_network_error_with_flaky_generation.raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/openapi/__snapshots__/test_media_types/test_explicit_example_with_custom_media_type.raw +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/openapi/blank.pdf +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/openapi/conftest.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/openapi/parameters/test_forms.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/openapi/parameters/test_non_payload.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/openapi/parameters/test_simple_payloads.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/openapi/test_expressions.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/openapi/test_hypothesis.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/openapi/test_links.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/openapi/test_parameters.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/openapi/test_schemas.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/openapi/test_security.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/openapi/test_stateful.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/openapi/test_utils.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/openapi/test_validation.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_app.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_async.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_common_parameters.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_converter.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_dereferencing.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_direct_access.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_errors.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_examples.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_filters.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_fixups.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_internal.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_package.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_parametrization.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_petstore.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_recoverable_errors.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_required.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_sanitizing_output.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_schemas.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_stateful.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_unittest.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_utils.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/transports/test_content_types.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test/utils.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test-corpus/test_corpus.py +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/test_server.sh +0 -0
- {schemathesis-3.26.1 → schemathesis-3.27.0}/tox.ini +0 -0
|
@@ -38,7 +38,7 @@ jobs:
|
|
|
38
38
|
|
|
39
39
|
# Initializes the CodeQL tools for scanning.
|
|
40
40
|
- name: Initialize CodeQL
|
|
41
|
-
uses: github/codeql-action/init@v3.24.
|
|
41
|
+
uses: github/codeql-action/init@v3.24.10
|
|
42
42
|
with:
|
|
43
43
|
languages: ${{ matrix.language }}
|
|
44
44
|
# If you wish to specify custom queries, you can do so here or in a config file.
|
|
@@ -49,7 +49,7 @@ jobs:
|
|
|
49
49
|
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
|
50
50
|
# If this step fails, then you should remove it and run the build manually (see below)
|
|
51
51
|
- name: Autobuild
|
|
52
|
-
uses: github/codeql-action/autobuild@v3.24.
|
|
52
|
+
uses: github/codeql-action/autobuild@v3.24.10
|
|
53
53
|
|
|
54
54
|
# ℹ️ Command-line programs to run using the OS shell.
|
|
55
55
|
# 📚 https://git.io/JvXDl
|
|
@@ -63,4 +63,4 @@ jobs:
|
|
|
63
63
|
# make release
|
|
64
64
|
|
|
65
65
|
- name: Perform CodeQL Analysis
|
|
66
|
-
uses: github/codeql-action/analyze@v3.24.
|
|
66
|
+
uses: github/codeql-action/analyze@v3.24.10
|
|
@@ -3,7 +3,7 @@ default_language_version:
|
|
|
3
3
|
|
|
4
4
|
repos:
|
|
5
5
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
6
|
-
rev: v4.
|
|
6
|
+
rev: v4.6.0
|
|
7
7
|
hooks:
|
|
8
8
|
- id: check-yaml
|
|
9
9
|
- id: end-of-file-fixer
|
|
@@ -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.3.
|
|
41
|
+
rev: v0.3.7
|
|
42
42
|
hooks:
|
|
43
43
|
- id: ruff-format
|
|
44
44
|
|
|
45
45
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
46
|
-
rev: v0.3.
|
|
46
|
+
rev: v0.3.7
|
|
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.27.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
|
|
@@ -39,7 +39,7 @@ Requires-Dist: hypothesis<7,>=6.84.3; python_version > '3.8'
|
|
|
39
39
|
Requires-Dist: hypothesis[zoneinfo]<7,>=6.84.3; python_version == '3.8'
|
|
40
40
|
Requires-Dist: jsonschema<5.0,>=4.18.0
|
|
41
41
|
Requires-Dist: junit-xml<2.0,>=1.9
|
|
42
|
-
Requires-Dist: pyrate-limiter<
|
|
42
|
+
Requires-Dist: pyrate-limiter<4.0,>=2.10
|
|
43
43
|
Requires-Dist: pytest-subtests<0.8.0,>=0.2.1
|
|
44
44
|
Requires-Dist: pytest<9,>=4.6.4
|
|
45
45
|
Requires-Dist: pyyaml<7.0,>=5.1
|
|
@@ -113,8 +113,11 @@ Loaders
|
|
|
113
113
|
.. autofunction:: schemathesis.from_pytest_fixture
|
|
114
114
|
.. autofunction:: schemathesis.from_uri
|
|
115
115
|
.. autofunction:: schemathesis.from_wsgi
|
|
116
|
+
.. autofunction:: schemathesis.graphql.from_path
|
|
116
117
|
.. autofunction:: schemathesis.graphql.from_dict
|
|
118
|
+
.. autofunction:: schemathesis.graphql.from_file
|
|
117
119
|
.. autofunction:: schemathesis.graphql.from_url
|
|
120
|
+
.. autofunction:: schemathesis.graphql.from_asgi
|
|
118
121
|
.. autofunction:: schemathesis.graphql.from_wsgi
|
|
119
122
|
|
|
120
123
|
Sanitizing Output
|
|
@@ -1,9 +1,41 @@
|
|
|
1
1
|
Changelog
|
|
2
2
|
=========
|
|
3
3
|
|
|
4
|
-
:version:`Unreleased <v3.
|
|
4
|
+
:version:`Unreleased <v3.27.0...HEAD>` - TBD
|
|
5
5
|
--------------------------------------------
|
|
6
6
|
|
|
7
|
+
.. _v3.27.0:
|
|
8
|
+
|
|
9
|
+
:version:`3.27.0 <v3.26.2...v3.27.0>` - 2024-04-14
|
|
10
|
+
--------------------------------------------------
|
|
11
|
+
|
|
12
|
+
**Added**
|
|
13
|
+
|
|
14
|
+
- ``Case.as_transport_kwargs`` method to simplify the creation of transport-specific keyword arguments for sending requests.
|
|
15
|
+
|
|
16
|
+
**Changed**
|
|
17
|
+
|
|
18
|
+
- Make ``Case.call`` work with ``ASGI`` & ``WSGI`` applications.
|
|
19
|
+
- Extend the JUnit XML report format to match CLI output including skipped tests, code samples, and more.
|
|
20
|
+
|
|
21
|
+
**Deprecated**
|
|
22
|
+
|
|
23
|
+
- ``Case.call_wsgi`` & ``Case.call_asgi`` in favor of ``Case.call``.
|
|
24
|
+
- ``Case.as_requests_kwargs`` & ``Case.as_werkzeug_kwargs`` in favor of ``Case.as_transport_kwargs``.
|
|
25
|
+
|
|
26
|
+
.. _v3.26.2:
|
|
27
|
+
|
|
28
|
+
:version:`3.26.2 <v3.26.1...v3.26.2>` - 2024-04-06
|
|
29
|
+
--------------------------------------------------
|
|
30
|
+
|
|
31
|
+
**Added**
|
|
32
|
+
|
|
33
|
+
- Support for ``pyrate-limiter>=3.0``.
|
|
34
|
+
|
|
35
|
+
**Fixed**
|
|
36
|
+
|
|
37
|
+
- Excluding ``\x00`` bytes as a result of probes.
|
|
38
|
+
|
|
7
39
|
.. _v3.26.1:
|
|
8
40
|
|
|
9
41
|
:version:`3.26.1 <v3.26.0...v3.26.1>` - 2024-04-04
|
|
@@ -398,39 +398,100 @@ This command will create an XML at a given path, as in the example below.
|
|
|
398
398
|
.. code:: xml
|
|
399
399
|
|
|
400
400
|
<?xml version="1.0" ?>
|
|
401
|
-
<testsuites disabled="0" errors="
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
401
|
+
<testsuites disabled="0" errors="0" failures="4" tests="4" time="1.7481054730014876">
|
|
402
|
+
<testsuite disabled="0" errors="0" failures="4" name="schemathesis" skipped="0" tests="4" time="1.7481054730014876" hostname="midgard">
|
|
403
|
+
<testcase name="GET /response-conformance/missing-field" time="0.859204">
|
|
404
|
+
<failure type="failure" message="1. Test Case ID: JA63GZ
|
|
405
|
+
|
|
406
|
+
- Response violates schema
|
|
407
|
+
|
|
408
|
+
'age' is a required property
|
|
409
|
+
|
|
410
|
+
Schema:
|
|
411
|
+
|
|
412
|
+
{
|
|
413
|
+
"type": "object",
|
|
414
|
+
"properties": {
|
|
415
|
+
"id": {
|
|
416
|
+
"type": "string"
|
|
417
|
+
},
|
|
418
|
+
"name": {
|
|
419
|
+
"type": "string"
|
|
420
|
+
},
|
|
421
|
+
"age": {
|
|
422
|
+
"type": "integer"
|
|
423
|
+
}
|
|
424
|
+
},
|
|
425
|
+
"required": [
|
|
426
|
+
"id",
|
|
427
|
+
"name",
|
|
428
|
+
"age"
|
|
429
|
+
]
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
Value:
|
|
433
|
+
|
|
434
|
+
{
|
|
435
|
+
"id": "123",
|
|
436
|
+
"name": "Alice"
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
[200] OK:
|
|
440
|
+
|
|
441
|
+
`{"id":"123","name":"Alice"}`
|
|
442
|
+
|
|
443
|
+
Reproduce with:
|
|
444
|
+
|
|
445
|
+
curl -X GET https://example.schemathesis.io/response-conformance/missing-field"/>
|
|
446
|
+
</testcase>
|
|
447
|
+
<testcase name="GET /response-conformance/malformed-json" time="0.068179">
|
|
448
|
+
<failure type="failure" message="1. Test Case ID: Vn5hfI
|
|
449
|
+
|
|
450
|
+
- JSON deserialization error
|
|
451
|
+
|
|
452
|
+
Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
|
|
453
|
+
|
|
454
|
+
[200] OK:
|
|
455
|
+
|
|
456
|
+
`{success: true}`
|
|
457
|
+
|
|
458
|
+
Reproduce with:
|
|
459
|
+
|
|
460
|
+
curl -X GET https://example.schemathesis.io/response-conformance/malformed-json"/>
|
|
461
|
+
</testcase>
|
|
462
|
+
<testcase name="GET /response-conformance/undocumented-status-code" time="0.756355">
|
|
463
|
+
<failure type="failure" message="1. Test Case ID: jm2nOs
|
|
464
|
+
|
|
465
|
+
- Undocumented HTTP status code
|
|
466
|
+
|
|
467
|
+
Received: 404
|
|
468
|
+
Documented: 200, 400
|
|
469
|
+
|
|
470
|
+
[404] Not Found:
|
|
471
|
+
|
|
472
|
+
`{"error":"Not Found"}`
|
|
473
|
+
|
|
474
|
+
Reproduce with:
|
|
475
|
+
|
|
476
|
+
curl -X GET 'https://example.schemathesis.io/response-conformance/undocumented-status-code?id=1'"/>
|
|
477
|
+
</testcase>
|
|
478
|
+
<testcase name="GET /response-conformance/incorrect-content-type" time="0.064367">
|
|
479
|
+
<failure type="failure" message="1. Test Case ID: Sveexo
|
|
480
|
+
|
|
481
|
+
- Undocumented Content-Type
|
|
482
|
+
|
|
483
|
+
Received: text/plain
|
|
484
|
+
Documented: application/json
|
|
485
|
+
|
|
486
|
+
[200] OK:
|
|
487
|
+
|
|
488
|
+
`Success!`
|
|
489
|
+
|
|
490
|
+
Reproduce with:
|
|
491
|
+
|
|
492
|
+
curl -X GET https://example.schemathesis.io/response-conformance/incorrect-content-type"/>
|
|
493
|
+
</testcase>
|
|
494
|
+
</testsuite>
|
|
434
495
|
</testsuites>
|
|
435
496
|
|
|
436
497
|
Base URL configuration
|
|
@@ -24,7 +24,13 @@ They can be used to limit the test input to certain criteria, modify the generat
|
|
|
24
24
|
return query["key"] != "42"
|
|
25
25
|
|
|
26
26
|
Hooks are identified and applied based on their function name, utilized through a decorator, like ``@schemathesis.hook``.
|
|
27
|
-
The function name, such as ``filter_query``, indicates it's a hook to filter query parameters.
|
|
27
|
+
The function name, such as ``filter_query``, indicates it's a hook to filter query parameters.
|
|
28
|
+
|
|
29
|
+
.. note::
|
|
30
|
+
|
|
31
|
+
The second argument could be ``None`` if there are no parameters of such a kind or if it is optional.
|
|
32
|
+
Keep it in mind when acessing the keys of the dictionary.
|
|
33
|
+
|
|
28
34
|
When dealing with multiple hooks that serve similar purposes, especially across different schemas within the same file, custom names can be assigned as the first argument in the decorator to avoid conflicts and maintain clarity.
|
|
29
35
|
|
|
30
36
|
.. code:: python
|
|
@@ -552,7 +558,7 @@ For the WSGI case, it will be ``schemathesis.utils.WSGIResponse``.
|
|
|
552
558
|
``process_call_kwargs``
|
|
553
559
|
~~~~~~~~~~~~~~~~~~~~~~~
|
|
554
560
|
|
|
555
|
-
If you want to modify what keyword arguments will be given to ``case.call``
|
|
561
|
+
If you want to modify what keyword arguments will be given to ``case.call`` in CLI, then you can use this hook:
|
|
556
562
|
|
|
557
563
|
.. code:: python
|
|
558
564
|
|
|
@@ -226,7 +226,7 @@ If you maintain your API schema in Python code or your web framework (for exampl
|
|
|
226
226
|
Web applications
|
|
227
227
|
~~~~~~~~~~~~~~~~
|
|
228
228
|
|
|
229
|
-
Schemathesis natively supports testing of ASGI and WSGI compatible apps (e.g.,
|
|
229
|
+
Schemathesis natively supports testing of ASGI and WSGI compatible apps (e.g., FastAPI or Flask),
|
|
230
230
|
which is significantly faster since it doesn't involve the network.
|
|
231
231
|
|
|
232
232
|
.. code:: python
|
|
@@ -272,7 +272,7 @@ This approach requires an initialized application instance to generate the API s
|
|
|
272
272
|
yield
|
|
273
273
|
await db.disconnect()
|
|
274
274
|
|
|
275
|
-
return schemathesis.from_dict(app.openapi())
|
|
275
|
+
return schemathesis.from_dict(app.openapi(), app)
|
|
276
276
|
|
|
277
277
|
|
|
278
278
|
schema = schemathesis.from_pytest_fixture("web_app")
|
|
@@ -300,7 +300,7 @@ When the received response is validated, Schemathesis runs the following checks:
|
|
|
300
300
|
- ``response_schema_conformance``. The response content does not conform to the schema defined for this specific response;
|
|
301
301
|
- ``response_headers_conformance``. The response headers does not contain all defined headers.
|
|
302
302
|
|
|
303
|
-
Validation happens in the ``case.
|
|
303
|
+
Validation happens in the ``case.call_and_validate`` function, but you can add your code to verify the response conformance as you do in regular Python tests.
|
|
304
304
|
By default, all available checks will be applied, but you can customize it by passing a tuple of checks explicitly:
|
|
305
305
|
|
|
306
306
|
.. code-block:: python
|
|
@@ -312,8 +312,7 @@ By default, all available checks will be applied, but you can customize it by pa
|
|
|
312
312
|
|
|
313
313
|
@schema.parametrize()
|
|
314
314
|
def test_api(case):
|
|
315
|
-
|
|
316
|
-
case.validate_response(response, checks=(not_a_server_error,))
|
|
315
|
+
case.call_and_validate(checks=(not_a_server_error,))
|
|
317
316
|
|
|
318
317
|
The code above will run only the ``not_a_server_error`` check. Or a tuple of additional checks will be executed after ones from the ``checks`` argument:
|
|
319
318
|
|
|
@@ -328,8 +327,7 @@ The code above will run only the ``not_a_server_error`` check. Or a tuple of add
|
|
|
328
327
|
|
|
329
328
|
@schema.parametrize()
|
|
330
329
|
def test_api(case):
|
|
331
|
-
|
|
332
|
-
case.validate_response(response, additional_checks=(my_check,))
|
|
330
|
+
case.call_and_validate(additional_checks=(my_check,))
|
|
333
331
|
|
|
334
332
|
.. note::
|
|
335
333
|
|
|
@@ -346,8 +344,7 @@ You can also use the ``excluded_checks`` argument to exclude chhecks from runnin
|
|
|
346
344
|
|
|
347
345
|
@schema.parametrize()
|
|
348
346
|
def test_api(case):
|
|
349
|
-
|
|
350
|
-
case.validate_response(response, excluded_checks=(not_a_server_error,))
|
|
347
|
+
case.call_and_validate(excluded_checks=(not_a_server_error,))
|
|
351
348
|
|
|
352
349
|
The code above will run the default checks, and any additional checks, excluding the ``not_a_server_error`` check.
|
|
353
350
|
|
|
@@ -398,8 +395,7 @@ In the following example we test a hypothetical ``/api/auth/password/reset/`` op
|
|
|
398
395
|
case.body["token"] = data.draw(
|
|
399
396
|
(st.emails() | st.just(user.email)).map(create_reset_password_token)
|
|
400
397
|
)
|
|
401
|
-
|
|
402
|
-
case.validate_response(response)
|
|
398
|
+
case.call_and_validate()
|
|
403
399
|
|
|
404
400
|
Here we use the special `data strategy <https://hypothesis.readthedocs.io/en/latest/data.html#drawing-interactively-in-tests>`_ to change the ``case`` data in ~50% cases.
|
|
405
401
|
The additional strategy in the conditional branch creates a valid password reset token from the given email.
|
|
@@ -449,11 +445,13 @@ This approach ensures that both types of tests can be executed, albeit in separa
|
|
|
449
445
|
def test_explicit_examples(data, case, user):
|
|
450
446
|
...
|
|
451
447
|
|
|
452
|
-
ASGI
|
|
448
|
+
ASGI & WSGI support
|
|
453
449
|
-------------------
|
|
454
450
|
|
|
455
|
-
Schemathesis supports making calls to ASGI and WSGI-compliant applications instead of real network calls
|
|
456
|
-
|
|
451
|
+
Schemathesis supports making calls to `ASGI <https://asgi.readthedocs.io/en/latest/>`_ and `WSGI-compliant <https://docs.python.org/3/library/wsgiref.html>`_ applications instead of through real network calls,
|
|
452
|
+
significantly speeding up test execution.
|
|
453
|
+
|
|
454
|
+
Using Schemathesis with a Flask application (WSGI):
|
|
457
455
|
|
|
458
456
|
.. code:: python
|
|
459
457
|
|
|
@@ -470,34 +468,50 @@ in this case, the test execution will go much faster.
|
|
|
470
468
|
|
|
471
469
|
@app.route("/v1/users", methods=["GET"])
|
|
472
470
|
def users():
|
|
473
|
-
return
|
|
471
|
+
return [{"name": "Robin"}]
|
|
474
472
|
|
|
475
473
|
|
|
474
|
+
# Load the schema from the WSGI app
|
|
476
475
|
schema = schemathesis.from_wsgi("/schema.json", app)
|
|
477
476
|
|
|
478
477
|
|
|
479
478
|
@schema.parametrize()
|
|
480
479
|
def test_api(case):
|
|
481
|
-
|
|
482
|
-
|
|
480
|
+
# The test case will make a call to the application and validate the response
|
|
481
|
+
# against the defined schema automatically.
|
|
482
|
+
case.call_and_validate()
|
|
483
483
|
|
|
484
|
-
|
|
484
|
+
Running the example above with ``pytest`` will execute property-based tests against the Flask application.
|
|
485
485
|
|
|
486
|
-
|
|
486
|
+
Using Schemathesis with a FastAPI application (ASGI):
|
|
487
487
|
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
488
|
+
.. code:: python
|
|
489
|
+
|
|
490
|
+
from fastapi import FastAPI
|
|
491
|
+
import schemathesis
|
|
492
492
|
|
|
493
|
+
# Enable the experimental Open API 3.1 support
|
|
494
|
+
schemathesis.experimental.OPEN_API_3_1.enable()
|
|
493
495
|
|
|
494
|
-
|
|
496
|
+
app = FastAPI()
|
|
497
|
+
|
|
498
|
+
|
|
499
|
+
@app.get("/v1/users")
|
|
500
|
+
async def users():
|
|
501
|
+
return [{"name": "Robin"}]
|
|
502
|
+
|
|
503
|
+
|
|
504
|
+
# Load the schema from the ASGI app
|
|
505
|
+
schema = schemathesis.from_asgi("/openapi.json", app)
|
|
495
506
|
|
|
496
507
|
|
|
497
508
|
@schema.parametrize()
|
|
498
|
-
def test_api(case
|
|
499
|
-
# The
|
|
500
|
-
|
|
509
|
+
def test_api(case):
|
|
510
|
+
# The test case will make a call to the application and validate the response
|
|
511
|
+
# against the defined schema automatically.
|
|
512
|
+
case.call_and_validate()
|
|
513
|
+
|
|
514
|
+
Note that Schemathesis currently tests ASGI applications synchronously.
|
|
501
515
|
|
|
502
516
|
Async support
|
|
503
517
|
-------------
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "schemathesis"
|
|
7
|
-
version = "3.
|
|
7
|
+
version = "3.27.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" }]
|
|
@@ -42,7 +42,7 @@ dependencies = [
|
|
|
42
42
|
"hypothesis_jsonschema>=0.23.1,<0.24",
|
|
43
43
|
"jsonschema>=4.18.0,<5.0",
|
|
44
44
|
"junit-xml>=1.9,<2.0",
|
|
45
|
-
"pyrate-limiter>=2.10,<
|
|
45
|
+
"pyrate-limiter>=2.10,<4.0",
|
|
46
46
|
"pytest-subtests>=0.2.1,<0.8.0",
|
|
47
47
|
"pytest>=4.6.4,<9",
|
|
48
48
|
"PyYAML>=5.1,<7.0",
|
|
@@ -160,6 +160,7 @@ known-third-party = ["_pytest", "aiohttp", "click", "fastapi", "flask", "graphen
|
|
|
160
160
|
[tool.ruff.lint.per-file-ignores]
|
|
161
161
|
"__init__.py" = ["F401"]
|
|
162
162
|
"_compat.py" = ["F401"]
|
|
163
|
+
"_rate_limiter.py" = ["F401"]
|
|
163
164
|
|
|
164
165
|
[tool.ruff.format]
|
|
165
166
|
skip-magic-trailing-comma = false
|
|
@@ -16,3 +16,6 @@ IS_PYTEST_ABOVE_8 = PYTEST_VERSION >= version.parse("8.0.0")
|
|
|
16
16
|
|
|
17
17
|
HYPOTHESIS_VERSION = version.parse(metadata.version("hypothesis"))
|
|
18
18
|
HYPOTHESIS_HAS_STATEFUL_NAMING_IMPROVEMENTS = HYPOTHESIS_VERSION >= version.parse("6.98.14")
|
|
19
|
+
|
|
20
|
+
PYRATE_LIMITER_VERSION = version.parse(metadata.version("pyrate-limiter"))
|
|
21
|
+
IS_PYRATE_LIMITER_ABOVE_3 = PYRATE_LIMITER_VERSION >= version.parse("3.0")
|
|
@@ -1769,6 +1769,6 @@ def after_init_cli_run_handlers(
|
|
|
1769
1769
|
def process_call_kwargs(context: HookContext, case: Case, kwargs: dict[str, Any]) -> None:
|
|
1770
1770
|
"""Called before every network call in CLI tests.
|
|
1771
1771
|
|
|
1772
|
-
Aims to modify the argument passed to `case.call
|
|
1772
|
+
Aims to modify the argument passed to `case.call`.
|
|
1773
1773
|
Note that you need to modify `kwargs` in-place.
|
|
1774
1774
|
"""
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import base64
|
|
4
|
+
import platform
|
|
5
|
+
import textwrap
|
|
6
|
+
from dataclasses import dataclass, field
|
|
7
|
+
from typing import TYPE_CHECKING
|
|
8
|
+
|
|
9
|
+
from junit_xml import TestCase, TestSuite, to_xml_report_file
|
|
10
|
+
|
|
11
|
+
from ..models import Status
|
|
12
|
+
from ..runner import events
|
|
13
|
+
from ..runner.serialization import SerializedCheck, SerializedError
|
|
14
|
+
from ..exceptions import prepare_response_payload, RuntimeErrorType
|
|
15
|
+
from .handlers import EventHandler
|
|
16
|
+
from .reporting import group_by_case, TEST_CASE_ID_TITLE, split_traceback, get_runtime_error_suggestion
|
|
17
|
+
|
|
18
|
+
if TYPE_CHECKING:
|
|
19
|
+
from click.utils import LazyFile
|
|
20
|
+
|
|
21
|
+
from .context import ExecutionContext
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
@dataclass
|
|
25
|
+
class JunitXMLHandler(EventHandler):
|
|
26
|
+
file_handle: LazyFile
|
|
27
|
+
test_cases: list = field(default_factory=list)
|
|
28
|
+
|
|
29
|
+
def handle_event(self, context: ExecutionContext, event: events.ExecutionEvent) -> None:
|
|
30
|
+
if isinstance(event, events.AfterExecution):
|
|
31
|
+
test_case = TestCase(
|
|
32
|
+
f"{event.result.method} {event.result.path}",
|
|
33
|
+
elapsed_sec=event.elapsed_time,
|
|
34
|
+
allow_multiple_subelements=True,
|
|
35
|
+
)
|
|
36
|
+
if event.status == Status.failure:
|
|
37
|
+
for idx, (code_sample, group) in enumerate(
|
|
38
|
+
group_by_case(event.result.checks, context.code_sample_style), 1
|
|
39
|
+
):
|
|
40
|
+
checks = sorted(group, key=lambda c: c.name != "not_a_server_error")
|
|
41
|
+
test_case.add_failure_info(message=build_failure_message(idx, code_sample, checks))
|
|
42
|
+
elif event.status == Status.error:
|
|
43
|
+
test_case.add_error_info(message=build_error_message(context, event.result.errors[-1]))
|
|
44
|
+
elif event.status == Status.skip:
|
|
45
|
+
test_case.add_skipped_info(message=event.result.skip_reason)
|
|
46
|
+
self.test_cases.append(test_case)
|
|
47
|
+
if isinstance(event, events.Finished):
|
|
48
|
+
test_suites = [TestSuite("schemathesis", test_cases=self.test_cases, hostname=platform.node())]
|
|
49
|
+
to_xml_report_file(file_descriptor=self.file_handle, test_suites=test_suites, prettyprint=True)
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def build_failure_message(idx: int, code_sample: str, checks: list[SerializedCheck]) -> str:
|
|
53
|
+
from ..transports.responses import get_reason
|
|
54
|
+
|
|
55
|
+
message = ""
|
|
56
|
+
for check_idx, check in enumerate(checks):
|
|
57
|
+
if check_idx == 0:
|
|
58
|
+
message += f"{idx}. {TEST_CASE_ID_TITLE}: {check.example.id}\n"
|
|
59
|
+
message += f"\n- {check.title}\n"
|
|
60
|
+
formatted_message = check.formatted_message
|
|
61
|
+
if formatted_message:
|
|
62
|
+
message += f"\n{formatted_message}\n"
|
|
63
|
+
if check_idx + 1 == len(checks):
|
|
64
|
+
if check.response is not None:
|
|
65
|
+
status_code = check.response.status_code
|
|
66
|
+
reason = get_reason(status_code)
|
|
67
|
+
message += f"\n[{check.response.status_code}] {reason}:\n"
|
|
68
|
+
response_body = check.response.body
|
|
69
|
+
if response_body is not None:
|
|
70
|
+
if not response_body:
|
|
71
|
+
message += "\n <EMPTY>\n"
|
|
72
|
+
else:
|
|
73
|
+
encoding = check.response.encoding or "utf8"
|
|
74
|
+
try:
|
|
75
|
+
payload = base64.b64decode(response_body).decode(encoding)
|
|
76
|
+
payload = prepare_response_payload(payload)
|
|
77
|
+
payload = textwrap.indent(f"\n`{payload}`\n", prefix=" ")
|
|
78
|
+
message += payload
|
|
79
|
+
except UnicodeDecodeError:
|
|
80
|
+
message += "\n <BINARY>\n"
|
|
81
|
+
|
|
82
|
+
message += f"\nReproduce with: \n\n {code_sample}"
|
|
83
|
+
return message
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
def build_error_message(context: ExecutionContext, error: SerializedError) -> str:
|
|
87
|
+
message = ""
|
|
88
|
+
if error.title:
|
|
89
|
+
if error.type == RuntimeErrorType.SCHEMA_GENERIC:
|
|
90
|
+
message = "Schema Error\n"
|
|
91
|
+
else:
|
|
92
|
+
message = f"{error.title}\n"
|
|
93
|
+
if error.message:
|
|
94
|
+
message += f"\n{error.message}\n"
|
|
95
|
+
elif error.message:
|
|
96
|
+
message = error.message
|
|
97
|
+
else:
|
|
98
|
+
message = error.exception
|
|
99
|
+
if error.extras:
|
|
100
|
+
extras = error.extras
|
|
101
|
+
elif context.show_trace and error.type.has_useful_traceback:
|
|
102
|
+
extras = split_traceback(error.exception_with_traceback)
|
|
103
|
+
else:
|
|
104
|
+
extras = []
|
|
105
|
+
if extras:
|
|
106
|
+
message += "\n"
|
|
107
|
+
for extra in extras:
|
|
108
|
+
message += f" {extra}\n"
|
|
109
|
+
suggestion = get_runtime_error_suggestion(error.type, bold=str)
|
|
110
|
+
if suggestion is not None:
|
|
111
|
+
message += f"\nTip: {suggestion}"
|
|
112
|
+
return message
|