schemathesis 3.27.1__tar.gz → 3.28.1__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.27.1 → schemathesis-3.28.1}/.github/workflows/build.yml +1 -1
- {schemathesis-3.27.1 → schemathesis-3.28.1}/.pre-commit-config.yaml +2 -2
- {schemathesis-3.27.1 → schemathesis-3.28.1}/PKG-INFO +37 -14
- {schemathesis-3.27.1 → schemathesis-3.28.1}/README.md +36 -13
- {schemathesis-3.27.1 → schemathesis-3.28.1}/docs/auth.rst +6 -4
- {schemathesis-3.27.1 → schemathesis-3.28.1}/docs/changelog.rst +37 -1
- {schemathesis-3.27.1 → schemathesis-3.28.1}/docs/cli.rst +12 -8
- {schemathesis-3.27.1 → schemathesis-3.28.1}/docs/extending.rst +23 -6
- {schemathesis-3.27.1 → schemathesis-3.28.1}/docs/index.rst +29 -7
- {schemathesis-3.27.1 → schemathesis-3.28.1}/example/requirements-app.txt +2 -2
- {schemathesis-3.27.1 → schemathesis-3.28.1}/example/requirements-pytest.txt +1 -1
- {schemathesis-3.27.1 → schemathesis-3.28.1}/pyproject.toml +1 -1
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/cli/context.py +2 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/cli/junitxml.py +8 -8
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/cli/output/default.py +34 -8
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/cli/reporting.py +1 -3
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/exceptions.py +8 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/models.py +18 -2
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/runner/impl/core.py +17 -13
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/runner/serialization.py +16 -1
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/serializers.py +1 -1
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/specs/openapi/links.py +17 -16
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/specs/openapi/references.py +1 -1
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/specs/openapi/schemas.py +4 -4
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/specs/openapi/stateful/__init__.py +1 -2
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/stateful/__init__.py +10 -2
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/transports/__init__.py +6 -0
- schemathesis-3.28.1/test/cli/__snapshots__/test_commands/test_no_schema_in_media_type[Open API 3.0].raw +27 -0
- schemathesis-3.28.1/test/cli/__snapshots__/test_commands/test_recursive_reference_error_message.raw +32 -0
- schemathesis-3.28.1/test/cli/__snapshots__/test_commands/test_unknown_schema_error[Open API 3.0].raw +35 -0
- schemathesis-3.28.1/test/cli/__snapshots__/test_commands/test_unresolvable_links[Open API 3.0].raw +29 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 2.0-1].raw +1 -2
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 2.0-2].raw +1 -2
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 3.0-1].raw +1 -2
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 3.0-2].raw +1 -2
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 2.0-1].raw +1 -2
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 2.0-2].raw +1 -2
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 3.0-1].raw +1 -2
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 3.0-2].raw +1 -2
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/test_commands.py +147 -20
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/test_junitxml.py +1 -1
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/runner/test_runner.py +1 -9
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/specs/openapi/test_stateful.py +1 -1
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/test_dereferencing.py +61 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/test_models.py +12 -10
- {schemathesis-3.27.1 → schemathesis-3.28.1}/.dockerignore +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/.github/FUNDING.yml +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/.github/dependabot.yml +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/.github/workflows/codeql-analysis.yml +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/.github/workflows/codspeed.yml +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/.github/workflows/commit.yml +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/.github/workflows/example-build.yml +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/.github/workflows/example-no-build.yml +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/.github/workflows/master_update.yml +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/.github/workflows/release.yml +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/.github/workflows/test-corpus.yml +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/.github/workflows/test-hypothesis.yml +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/.github/workflows/update-corpus.yml +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/.github/workflows/update-pre-commit.yml +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/.gitignore +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/.gitmodules +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/.readthedocs.yml +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/.relint.yml +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/.rstcheck.cfg +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/.yamllint +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/CITATION.cff +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/CODE_OF_CONDUCT.md +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/CONTRIBUTING.rst +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/Dockerfile +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/Dockerfile.bookworm +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/LICENSE +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/benches/cli.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/benches/references.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/changelog.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/codecov.yml +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/docs/Makefile +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/docs/additional-content.rst +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/docs/api.rst +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/docs/compatibility.rst +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/docs/conf.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/docs/continuous_integration.rst +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/docs/contrib.rst +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/docs/data-generation.rst +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/docs/examples.rst +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/docs/experimental.rst +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/docs/faq.rst +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/docs/getting-started.rst +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/docs/graphql.rst +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/docs/python.rst +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/docs/recipes.rst +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/docs/requirements.txt +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/docs/sanitizing.rst +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/docs/service.rst +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/docs/stateful.rst +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/docs/targeted.rst +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/example/Dockerfile +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/example/README.md +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/example/app.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/example/compose.yml +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/example/openapi.json +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/example/requirements-app.in +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/example/requirements-pytest.in +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/example/tests/__init__.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/example/tests/conftest.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/example/tests/extensions.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/example/tests/test_app.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/img/demo.gif +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/img/service_github_report.png +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/mypy.ini +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/__init__.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/_compat.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/_dependency_versions.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/_hypothesis.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/_lazy_import.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/_override.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/_rate_limiter.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/_xml.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/auths.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/checks.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/cli/__init__.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/cli/__main__.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/cli/callbacks.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/cli/cassettes.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/cli/constants.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/cli/debug.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/cli/handlers.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/cli/options.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/cli/output/__init__.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/cli/output/short.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/cli/sanitization.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/code_samples.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/constants.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/contrib/__init__.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/contrib/openapi/__init__.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/contrib/openapi/fill_missing_examples.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/contrib/openapi/formats/__init__.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/contrib/openapi/formats/uuid.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/contrib/unique_data.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/experimental/__init__.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/extra/__init__.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/extra/_aiohttp.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/extra/_flask.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/extra/_server.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/extra/pytest_plugin.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/failures.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/filters.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/fixups/__init__.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/fixups/fast_api.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/fixups/utf8_bom.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/generation/__init__.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/graphql.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/hooks.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/internal/__init__.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/internal/copy.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/internal/datetime.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/internal/deprecation.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/internal/jsonschema.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/internal/result.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/internal/transformation.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/internal/validation.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/lazy.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/loaders.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/parameters.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/py.typed +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/runner/__init__.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/runner/events.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/runner/impl/__init__.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/runner/impl/solo.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/runner/impl/threadpool.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/runner/probes.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/sanitization.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/schemas.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/service/__init__.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/service/auth.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/service/ci.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/service/client.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/service/constants.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/service/events.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/service/extensions.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/service/hosts.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/service/metadata.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/service/models.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/service/report.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/service/serialization.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/service/usage.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/specs/__init__.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/specs/graphql/__init__.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/specs/graphql/loaders.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/specs/graphql/nodes.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/specs/graphql/scalars.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/specs/graphql/schemas.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/specs/graphql/validation.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/specs/openapi/__init__.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/specs/openapi/_hypothesis.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/specs/openapi/checks.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/specs/openapi/constants.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/specs/openapi/converter.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/specs/openapi/definitions.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/specs/openapi/examples.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/specs/openapi/expressions/__init__.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/specs/openapi/expressions/context.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/specs/openapi/expressions/errors.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/specs/openapi/expressions/lexer.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/specs/openapi/expressions/nodes.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/specs/openapi/expressions/parser.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/specs/openapi/filters.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/specs/openapi/formats.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/specs/openapi/loaders.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/specs/openapi/media_types.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/specs/openapi/negative/__init__.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/specs/openapi/negative/mutations.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/specs/openapi/negative/types.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/specs/openapi/negative/utils.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/specs/openapi/parameters.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/specs/openapi/security.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/specs/openapi/serialization.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/specs/openapi/stateful/links.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/specs/openapi/utils.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/specs/openapi/validation.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/stateful/state_machine.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/targets.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/throttling.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/transports/auth.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/transports/content_types.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/transports/headers.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/transports/responses.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/types.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/src/schemathesis/utils.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/__init__.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/__snapshots__/test_hypothesis/test_health_check_failed_large_base_example.raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/__snapshots__/test_recoverable_errors/test_in_cli[1].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/__snapshots__/test_recoverable_errors/test_in_cli[2].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/__snapshots__/test_serialization/test_in_cli[Open API 3.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/apps/__init__.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/apps/_graphql/__init__.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/apps/_graphql/_fastapi/__init__.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/apps/_graphql/_fastapi/app.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/apps/_graphql/_flask/__init__.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/apps/_graphql/_flask/app.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/apps/_graphql/schema.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/apps/openapi/__init__.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/apps/openapi/_aiohttp/__init__.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/apps/openapi/_aiohttp/app.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/apps/openapi/_aiohttp/handlers.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/apps/openapi/_fastapi/__init__.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/apps/openapi/_fastapi/app.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/apps/openapi/_flask/__init__.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/apps/openapi/_flask/app.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/apps/openapi/schema.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/auth/__init__.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/auth/__snapshots__/test_cli/test_conditional[Open API 3.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/auth/__snapshots__/test_cli/test_custom_auth[Open API 3.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/auth/__snapshots__/test_cli/test_explicit_auth_precedence[Open API 3.0-args0-Basic dXNlcjpwYXNz].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/auth/__snapshots__/test_cli/test_explicit_auth_precedence[Open API 3.0-args1-Bearer EXPLICIT].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/auth/__snapshots__/test_cli/test_multiple_auth_mechanisms_with_explicit_auth.raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/auth/__snapshots__/test_cli/test_multiple_threads[Open API 3.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/auth/__snapshots__/test_cli/test_requests_auth[Open API 3.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/auth/conftest.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/auth/test_cli.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/auth/test_provider.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/auth/test_pytest.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__init__.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_cassettes/test_forbid_preserve_exact_bytes_without_cassette_path[Open API 3.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_cassettes/test_forbid_simultaneous_use_of_deprecated_and_new_options[Open API 3.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_add_case_output[Open API 2.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_add_case_output[Open API 3.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_auth_and_authorization_header_are_disallowed[Open API 3.0-Authorization].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_auth_and_authorization_header_are_disallowed[Open API 3.0-authorization].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 2.0---auth='testwrong'].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 2.0--H Authorization Basic J3Rlc3Q6d3Jvbmcn].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 3.0---auth='testwrong'].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 3.0--H Authorization Basic J3Rlc3Q6d3Jvbmcn].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_binary_payload.raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_certificate_only_key.raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_chunked_encoding_error[Open API 3.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 2.0-1].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 2.0-2].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 3.0-1].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 3.0-2].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 2.0-1].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 2.0-2].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 3.0-1].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 3.0-2].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_commands_help.raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_complex_urlencoded_example.raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 2.0-1].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 2.0-2].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 3.0-1].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 3.0-2].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 2.0-1].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 2.0-2].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 3.0-1].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 3.0-2].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_empty_schema_file[args0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_empty_schema_file[args1].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_explicit_example_failure_output.raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_explicit_headers_in_output_on_errors[Open API 3.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_force_color_nocolor[Open API 3.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_get_request_with_body[Open API 2.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_get_request_with_body[Open API 3.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_graphql_asgi.raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_graphql_url[foo-args0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_graphql_url[foo-args1].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_graphql_url[graphql-args0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_graphql_url[graphql-args1].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_group_errors.raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_hooks_module_not_found.raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_hooks_with_inner_import_error.raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_hypothesis_database_with_derandomize[Open API 3.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 2.0-1].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 2.0-2].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 3.0-1].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 3.0-2].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 2.0-1].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 2.0-2].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 3.0-1].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 3.0-2].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[real-Open API 2.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[real-Open API 3.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[wsgi-Open API 2.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[wsgi-Open API 3.0].raw +0 -0
- /schemathesis-3.27.1/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 → /schemathesis-3.28.1/test/cli/__snapshots__/test_commands/test_invalid_schema_with_disabled_validation[3.0.2].raw +0 -0
- /schemathesis-3.27.1/test/cli/__snapshots__/test_commands/test_invalid_schema_with_disabled_validation[3.1.0-'type' is a required property].raw → /schemathesis-3.28.1/test/cli/__snapshots__/test_commands/test_invalid_schema_with_disabled_validation[3.1.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_invalid_yaml.raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_long_payload.raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_malformed_json_deduplication[real-Open API 3.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_malformed_json_deduplication[wsgi-Open API 3.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 2.0-1].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 2.0-2].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 3.0-1].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 3.0-2].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[cookie-None].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[cookie-http127.0.0.1apiv2].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[header-None].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[header-http127.0.0.1apiv2].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[path-None].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[path-http127.0.0.1apiv2].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[query-None].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[query-http127.0.0.1apiv2].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_multiple_errors.raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_multiple_failures_different_check[Open API 2.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_multiple_failures_different_check[Open API 3.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_multiple_failures_in_single_check.raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_multiple_failures_single_check[Open API 2.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_multiple_failures_single_check[Open API 3.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_nested_binary_in_yaml.raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_no_useless_traceback.raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_null_byte_in_header_probe.raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_openapi_links[real-Open API 2.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_openapi_links[real-Open API 3.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_openapi_links[wsgi-Open API 2.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_openapi_links[wsgi-Open API 3.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_openapi_links_disabled[Open API 2.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_openapi_links_disabled[Open API 3.0].raw +0 -0
- /schemathesis-3.27.1/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 2.0-1-.....].raw → /schemathesis-3.28.1/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 2.0-1].raw +0 -0
- /schemathesis-3.27.1/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 2.0-5-......].raw → /schemathesis-3.28.1/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 2.0-5].raw +0 -0
- /schemathesis-3.27.1/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 3.0-1-.....].raw → /schemathesis-3.28.1/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 3.0-1].raw +0 -0
- /schemathesis-3.27.1/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 3.0-5-......].raw → /schemathesis-3.28.1/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 3.0-5].raw +0 -0
- /schemathesis-3.27.1/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 2.0-1-.....].raw → /schemathesis-3.28.1/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 2.0-1].raw +0 -0
- /schemathesis-3.27.1/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 2.0-5-......].raw → /schemathesis-3.28.1/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 2.0-5].raw +0 -0
- /schemathesis-3.27.1/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 3.0-1-.....].raw → /schemathesis-3.28.1/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 3.0-1].raw +0 -0
- /schemathesis-3.27.1/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 3.0-5-......].raw → /schemathesis-3.28.1/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 3.0-5].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_proxy_error[Open API 3.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_read_content_timeout[Open API 3.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError(Custom check failed!)-Open API 2.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError(Custom check failed!)-Open API 3.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError-Open API 2.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError-Open API 3.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_remote_disconnected_error[Open API 3.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[real-Open API 2.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[real-Open API 3.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[wsgi-Open API 2.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[wsgi-Open API 3.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[real-Open API 2.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[real-Open API 3.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[wsgi-Open API 2.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[wsgi-Open API 3.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_run_output[args0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_run_output[args10].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_run_output[args11].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_run_output[args12].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_run_output[args13].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_run_output[args14].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_run_output[args15].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_run_output[args16].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_run_output[args17].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_run_output[args18].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_run_output[args19].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_run_output[args1].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_run_output[args20].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_run_output[args21].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_run_output[args22].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_run_output[args23].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_run_output[args24].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_run_output[args25].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_run_output[args26].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_run_output[args27].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_run_output[args28].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_run_output[args29].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_run_output[args2].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_run_output[args30].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_run_output[args31].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_run_output[args32].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_run_output[args33].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_run_output[args34].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_run_output[args35].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_run_output[args36].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_run_output[args3].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_run_output[args4].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_run_output[args5].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_run_output[args6].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_run_output[args7].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_run_output[args8].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_run_output[args9].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_schema_not_available[1].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_schema_not_available[2].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_schema_not_available_wsgi.raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 2.0-1].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 2.0-2].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 3.0-1].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 3.0-2].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 2.0-1].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 2.0-2].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 3.0-1].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 3.0-2].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_unresolvable_reference_with_disabled_validation.raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_unsupported_regex.raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_useful_traceback[Open API 3.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_wait_for_schema_not_enough.raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_commands/test_yaml_parsing_of_floats[Open API 3.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_hooks/test_after_call[real-Open API 3.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/__snapshots__/test_hooks/test_after_call[wsgi-Open API 3.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/cert.pem +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/conftest.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/output/__init__.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/output/test_default.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/test_asgi.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/test_callbacks.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/test_cassettes.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/test_checks.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/test_crashes.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/test_hooks.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/test_options.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/cli/test_targeted.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/code_samples/__snapshots__/test_python/test_cli_output[Open API 2.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/code_samples/__snapshots__/test_python/test_cli_output[Open API 3.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/code_samples/conftest.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/code_samples/test_curl.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/code_samples/test_python.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/conftest.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/contrib/__snapshots__/test_unique_data/test_cli[None].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema1].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema2].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/contrib/__snapshots__/test_unique_data/test_explicit_headers[1].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/contrib/__snapshots__/test_unique_data/test_explicit_headers[2].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/contrib/openapi/__snapshots__/test_fill_missing_examples/test_fills_missing_examples.raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/contrib/openapi/formats/test_uuid.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/contrib/openapi/test_fill_missing_examples.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/contrib/test_install.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/contrib/test_unique_data.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/data/petstore_v2.yaml +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/data/petstore_v3.yaml +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/data/simple_openapi.yaml +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/data/simple_swagger.yaml +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/experimental/__snapshots__/test_experiments/test_not_enabled.raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/experimental/conftest.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/experimental/test_experiments.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/experimental/test_openapi_3_1.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/extra/__init__.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/extra/test_aiohttp.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/filters/test_matching.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/hooks/test_filter_operations.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/hooks/test_hooks.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/loaders/conftest.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/loaders/test_app.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/loaders/test_common.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/loaders/test_graphql.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/loaders/test_openapi.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/loaders/test_yaml.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/runner/test_checks.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/runner/test_events.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/runner/test_probes.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/service/__init__.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/service/__snapshots__/test_cli/test_client_error_on_project_details[Open API 3.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/service/__snapshots__/test_cli/test_client_error_on_upload[Open API 3.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/service/__snapshots__/test_cli/test_error_in_another_handler[Open API 3.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/service/__snapshots__/test_cli/test_github_suggestion[Open API 3.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/service/__snapshots__/test_cli/test_not_authenticated_with_name.raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/service/__snapshots__/test_cli/test_two_names.raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/service/__snapshots__/test_cli/test_unauthorized[Open API 3.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/service/__snapshots__/test_cli/test_unknown_error_on_upload[Open API 3.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/service/__snapshots__/test_cli/test_upload_failure[Open API 3.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/service/__snapshots__/test_cli/test_upload_success[Open API 3.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/service/__snapshots__/test_extensions/test_connection_error[Open API 3.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/service/__snapshots__/test_extensions/test_custom_format.raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/service/__snapshots__/test_extensions/test_dry_run[Open API 3.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/service/__snapshots__/test_extensions/test_forbidden[Open API 3.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/service/__snapshots__/test_extensions/test_graphql_scalars.raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/service/__snapshots__/test_extensions/test_internal_server_error[Open API 3.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/service/__snapshots__/test_extensions/test_invalid_extension[Open API 3.0-42].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/service/__snapshots__/test_extensions/test_invalid_extension[Open API 3.0-extension1].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/service/__snapshots__/test_extensions/test_invalid_payload[Open API 3.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/service/__snapshots__/test_extensions/test_media_type_extension[strategy0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/service/__snapshots__/test_extensions/test_media_type_extension[strategy1].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/service/__snapshots__/test_extensions/test_oversize_text[Open API 3.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/service/__snapshots__/test_extensions/test_schema_patches[patch0-expected0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/service/__snapshots__/test_extensions/test_schema_patches[patch1-expected1].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/service/__snapshots__/test_extensions/test_schema_patches[patch2-expected2].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/service/__snapshots__/test_extensions/test_unknown_extension_in_cli[Open API 3.0].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/service/conftest.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/service/test_auth.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/service/test_ci.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/service/test_cli.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/service/test_extensions.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/service/test_report.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/service/test_serialization.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/service/test_usage.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/specs/graphql/__snapshots__/test_basic/test_schema_error[ntype Query {n 123(created Int!) Int!n}-.whatever].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/specs/graphql/__snapshots__/test_basic/test_schema_error[ntype Query {n func(created Unknown!) Int!n}-.gql].raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/specs/graphql/__snapshots__/test_custom_scalars/test_built_in_scalars_in_cli.raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/specs/graphql/__snapshots__/test_custom_scalars/test_custom_scalar_in_cli.raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/specs/graphql/test_basic.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/specs/graphql/test_custom_scalars.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/specs/graphql/test_pytest.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/specs/openapi/__snapshots__/test_examples/test_network_error_with_flaky_generation.raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/specs/openapi/__snapshots__/test_media_types/test_explicit_example_with_custom_media_type.raw +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/specs/openapi/blank.pdf +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/specs/openapi/conftest.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/specs/openapi/parameters/test_forms.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/specs/openapi/parameters/test_non_payload.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/specs/openapi/parameters/test_simple_payloads.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/specs/openapi/test_examples.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/specs/openapi/test_expressions.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/specs/openapi/test_hypothesis.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/specs/openapi/test_links.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/specs/openapi/test_media_types.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/specs/openapi/test_negative.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/specs/openapi/test_parameters.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/specs/openapi/test_schemas.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/specs/openapi/test_security.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/specs/openapi/test_serializing.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/specs/openapi/test_utils.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/specs/openapi/test_validation.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/test_app.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/test_asgi.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/test_async.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/test_common_parameters.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/test_converter.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/test_direct_access.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/test_errors.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/test_examples.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/test_filters.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/test_fixups.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/test_hypothesis.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/test_internal.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/test_lazy.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/test_package.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/test_parameters.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/test_parametrization.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/test_petstore.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/test_pytest.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/test_rate_limit.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/test_recoverable_errors.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/test_required.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/test_sanitizing_output.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/test_schemas.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/test_serialization.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/test_stateful.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/test_unittest.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/test_utils.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/test_wsgi.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/transports/test_content_types.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test/utils.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test-corpus/test_corpus.py +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/test_server.sh +0 -0
- {schemathesis-3.27.1 → schemathesis-3.28.1}/tox.ini +0 -0
|
@@ -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.4.
|
|
41
|
+
rev: v0.4.3
|
|
42
42
|
hooks:
|
|
43
43
|
- id: ruff-format
|
|
44
44
|
|
|
45
45
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
46
|
-
rev: v0.4.
|
|
46
|
+
rev: v0.4.3
|
|
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.28.1
|
|
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
|
|
@@ -77,7 +77,7 @@ Requires-Dist: trustme<1.0,>=0.9.0; extra == 'tests'
|
|
|
77
77
|
Description-Content-Type: text/markdown
|
|
78
78
|
|
|
79
79
|
<p align="center">
|
|
80
|
-
<em>Schemathesis:
|
|
80
|
+
<em>Schemathesis: Supercharge your API testing, catch bugs, and ensure compliance</em>
|
|
81
81
|
</p>
|
|
82
82
|
|
|
83
83
|
<p align="center">
|
|
@@ -109,29 +109,34 @@ Description-Content-Type: text/markdown
|
|
|
109
109
|
|
|
110
110
|
---
|
|
111
111
|
|
|
112
|
-
##
|
|
112
|
+
## What is Schemathesis?
|
|
113
113
|
|
|
114
|
-
Schemathesis is a tool that
|
|
114
|
+
Schemathesis is a tool that levels-up your API testing by automating the process of finding crashes, uncovering bugs, and validating spec compliance. With Schemathesis, you can:
|
|
115
115
|
|
|
116
|
-
|
|
116
|
+
🎯 **Catch Hard-to-Find Bugs**
|
|
117
117
|
|
|
118
|
-
|
|
118
|
+
- Uncover hidden crashes and edge cases that manual testing might miss
|
|
119
|
+
- Identify spec violations and ensure your API adheres to its defined contract
|
|
119
120
|
|
|
120
|
-
|
|
121
|
+
⚡ **Accelerate Testing Cycles**
|
|
121
122
|
|
|
122
|
-
|
|
123
|
+
- Automatically generate a wide range of test cases based on your API schema
|
|
124
|
+
- Save time and effort by eliminating the need for manual test case creation
|
|
123
125
|
|
|
124
|
-
|
|
126
|
+
🧩 **Integrate Seamlessly**
|
|
125
127
|
|
|
126
|
-
|
|
128
|
+
- Works with popular API formats such as OpenAPI, GraphQL.
|
|
129
|
+
- Easily integrate into your existing testing pipeline and CI/CD workflows
|
|
127
130
|
|
|
128
|
-
|
|
131
|
+
🔧 **Customize and Extend**
|
|
129
132
|
|
|
130
|
-
|
|
133
|
+
- Tune the testing process to your specific requirements using Python extensions
|
|
134
|
+
- Modify and enhance various aspects of the testing flow to suit your needs with rich configuration options
|
|
131
135
|
|
|
132
|
-
|
|
136
|
+
📊 **Gain Valuable Insights**
|
|
133
137
|
|
|
134
|
-
|
|
138
|
+
- Get detailed reports and actionable insights to help you identify and fix issues quickly
|
|
139
|
+
- Reproduce failing test cases effortlessly with generated code samples and cURL commands
|
|
135
140
|
|
|
136
141
|
## Quick Demo
|
|
137
142
|
|
|
@@ -309,6 +314,24 @@ This includes:
|
|
|
309
314
|
|
|
310
315
|
To discuss a custom support arrangement that best suits your organization, please contact our support team at <a href="mailto:support@schemathesis.io">support@schemathesis.io</a>.
|
|
311
316
|
|
|
317
|
+
## Acknowledgements
|
|
318
|
+
|
|
319
|
+
Schemathesis is built on top of <a href="https://hypothesis.works/" target="_blank">Hypothesis</a>, a powerful property-based testing library for Python.
|
|
320
|
+
|
|
321
|
+
## Who's Using Schemathesis?
|
|
322
|
+
|
|
323
|
+
Schemathesis is used by a number of project and companies, including direct usage or integration into other tools:
|
|
324
|
+
|
|
325
|
+
- Abstract Machines ([Magistrala](https://github.com/absmach/magistrala))
|
|
326
|
+
- Bundesstelle für Open Data ([smard-api](https://github.com/bundesAPI/smard-api))
|
|
327
|
+
- [CheckMK](https://github.com/Checkmk/checkmk)
|
|
328
|
+
- HXSecurity ([DongTai](https://github.com/HXSecurity/DongTai))
|
|
329
|
+
- Netflix ([Dispatch](https://github.com/Netflix/dispatch))
|
|
330
|
+
- [Pixie](https://github.com/pixie-io/pixie)
|
|
331
|
+
- [Qdrant](https://github.com/qdrant/qdrant)
|
|
332
|
+
- Spotify ([Backstage](https://github.com/backstage/backstage))
|
|
333
|
+
- WordPress ([OpenVerse](https://github.com/WordPress/openverse))
|
|
334
|
+
|
|
312
335
|
## Additional content
|
|
313
336
|
|
|
314
337
|
### Papers
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<em>Schemathesis:
|
|
2
|
+
<em>Schemathesis: Supercharge your API testing, catch bugs, and ensure compliance</em>
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
5
|
<p align="center">
|
|
@@ -31,29 +31,34 @@
|
|
|
31
31
|
|
|
32
32
|
---
|
|
33
33
|
|
|
34
|
-
##
|
|
34
|
+
## What is Schemathesis?
|
|
35
35
|
|
|
36
|
-
Schemathesis is a tool that
|
|
36
|
+
Schemathesis is a tool that levels-up your API testing by automating the process of finding crashes, uncovering bugs, and validating spec compliance. With Schemathesis, you can:
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
🎯 **Catch Hard-to-Find Bugs**
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
- Uncover hidden crashes and edge cases that manual testing might miss
|
|
41
|
+
- Identify spec violations and ensure your API adheres to its defined contract
|
|
41
42
|
|
|
42
|
-
|
|
43
|
+
⚡ **Accelerate Testing Cycles**
|
|
43
44
|
|
|
44
|
-
|
|
45
|
+
- Automatically generate a wide range of test cases based on your API schema
|
|
46
|
+
- Save time and effort by eliminating the need for manual test case creation
|
|
45
47
|
|
|
46
|
-
|
|
48
|
+
🧩 **Integrate Seamlessly**
|
|
47
49
|
|
|
48
|
-
|
|
50
|
+
- Works with popular API formats such as OpenAPI, GraphQL.
|
|
51
|
+
- Easily integrate into your existing testing pipeline and CI/CD workflows
|
|
49
52
|
|
|
50
|
-
|
|
53
|
+
🔧 **Customize and Extend**
|
|
51
54
|
|
|
52
|
-
|
|
55
|
+
- Tune the testing process to your specific requirements using Python extensions
|
|
56
|
+
- Modify and enhance various aspects of the testing flow to suit your needs with rich configuration options
|
|
53
57
|
|
|
54
|
-
|
|
58
|
+
📊 **Gain Valuable Insights**
|
|
55
59
|
|
|
56
|
-
|
|
60
|
+
- Get detailed reports and actionable insights to help you identify and fix issues quickly
|
|
61
|
+
- Reproduce failing test cases effortlessly with generated code samples and cURL commands
|
|
57
62
|
|
|
58
63
|
## Quick Demo
|
|
59
64
|
|
|
@@ -231,6 +236,24 @@ This includes:
|
|
|
231
236
|
|
|
232
237
|
To discuss a custom support arrangement that best suits your organization, please contact our support team at <a href="mailto:support@schemathesis.io">support@schemathesis.io</a>.
|
|
233
238
|
|
|
239
|
+
## Acknowledgements
|
|
240
|
+
|
|
241
|
+
Schemathesis is built on top of <a href="https://hypothesis.works/" target="_blank">Hypothesis</a>, a powerful property-based testing library for Python.
|
|
242
|
+
|
|
243
|
+
## Who's Using Schemathesis?
|
|
244
|
+
|
|
245
|
+
Schemathesis is used by a number of project and companies, including direct usage or integration into other tools:
|
|
246
|
+
|
|
247
|
+
- Abstract Machines ([Magistrala](https://github.com/absmach/magistrala))
|
|
248
|
+
- Bundesstelle für Open Data ([smard-api](https://github.com/bundesAPI/smard-api))
|
|
249
|
+
- [CheckMK](https://github.com/Checkmk/checkmk)
|
|
250
|
+
- HXSecurity ([DongTai](https://github.com/HXSecurity/DongTai))
|
|
251
|
+
- Netflix ([Dispatch](https://github.com/Netflix/dispatch))
|
|
252
|
+
- [Pixie](https://github.com/pixie-io/pixie)
|
|
253
|
+
- [Qdrant](https://github.com/qdrant/qdrant)
|
|
254
|
+
- Spotify ([Backstage](https://github.com/backstage/backstage))
|
|
255
|
+
- WordPress ([OpenVerse](https://github.com/WordPress/openverse))
|
|
256
|
+
|
|
234
257
|
## Additional content
|
|
235
258
|
|
|
236
259
|
### Papers
|
|
@@ -139,16 +139,18 @@ To use your custom authentication mechanism in the Schemathesis CLI, you need to
|
|
|
139
139
|
# Here goes your implementation
|
|
140
140
|
...
|
|
141
141
|
|
|
142
|
-
|
|
142
|
+
Then put your code into a Python file (for example, ``my_file.py``) and set the ``SCHEMATHESIS_HOOKS`` environment variable to point to it:
|
|
143
143
|
|
|
144
144
|
.. code:: bash
|
|
145
145
|
|
|
146
|
-
|
|
147
|
-
|
|
146
|
+
SCHEMATHESIS_HOOKS=my_file
|
|
147
|
+
st run http://127.0.0.1/openapi.yaml
|
|
148
|
+
|
|
149
|
+
That is it! Now Schemathesis will use your custom authentication mechanism for all tests.
|
|
148
150
|
|
|
149
151
|
.. note::
|
|
150
152
|
|
|
151
|
-
|
|
153
|
+
The registration process is the same as for any other extension, and you can find more details on how to extend Schemathesis in the :ref:`Extending Schemathesis <enabling-extensions>` section.
|
|
152
154
|
|
|
153
155
|
Using in Python tests
|
|
154
156
|
~~~~~~~~~~~~~~~~~~~~~
|
|
@@ -1,9 +1,45 @@
|
|
|
1
1
|
Changelog
|
|
2
2
|
=========
|
|
3
3
|
|
|
4
|
-
:version:`Unreleased <v3.
|
|
4
|
+
:version:`Unreleased <v3.28.1...HEAD>` - TBD
|
|
5
5
|
--------------------------------------------
|
|
6
6
|
|
|
7
|
+
.. _v3.28.1:
|
|
8
|
+
|
|
9
|
+
:version:`3.28.1 <v3.28.0...v3.28.1>` - 2024-05-11
|
|
10
|
+
--------------------------------------------------
|
|
11
|
+
|
|
12
|
+
**Fixed**
|
|
13
|
+
|
|
14
|
+
- Internal error on unresolvable Open API links during stateful testing.
|
|
15
|
+
- Internal error when media type definition has only ``example`` or ``examples`` keys.
|
|
16
|
+
|
|
17
|
+
**Performance**
|
|
18
|
+
|
|
19
|
+
- Improve performance of ``add_link`` by avoiding unnecessary reference resolving.
|
|
20
|
+
|
|
21
|
+
.. _v3.28.0:
|
|
22
|
+
|
|
23
|
+
:version:`3.28.0 <v3.27.1...v3.28.0>` - 2024-05-10
|
|
24
|
+
--------------------------------------------------
|
|
25
|
+
|
|
26
|
+
**Added**
|
|
27
|
+
|
|
28
|
+
- ``Request.deserialize_body`` and ``Response.deserialize_body`` helper methods to deserialize payloads to bytes from Base 64.
|
|
29
|
+
- Support for ``multipart/mixed`` media type.
|
|
30
|
+
|
|
31
|
+
**Changed**
|
|
32
|
+
|
|
33
|
+
- Do not show suggestion to show a traceback on Hypothesis' ``Unsatisfiable`` error.
|
|
34
|
+
- Clarify error message on unsupported recursive references.
|
|
35
|
+
- Report more details on some internal errors instead of "Unknown Schema Error".
|
|
36
|
+
- Update error message on why Schemathesis can't generate test cases for some API operations.
|
|
37
|
+
|
|
38
|
+
**Fixed**
|
|
39
|
+
|
|
40
|
+
- Internal error on Windows when the CLI output is redirected to a file and code samples contain non CP1252 characters.
|
|
41
|
+
- Properly check for nested recursive references inside combinators. This makes Schemathesis work with more schemas with recursive references.
|
|
42
|
+
|
|
7
43
|
.. _v3.27.1:
|
|
8
44
|
|
|
9
45
|
:version:`3.27.1 <v3.27.0...v3.27.1>` - 2024-04-29
|
|
@@ -531,25 +531,29 @@ Extending CLI
|
|
|
531
531
|
-------------
|
|
532
532
|
|
|
533
533
|
To fit Schemathesis to your workflows, you might want to extend it with your custom checks or setup environment before the test run.
|
|
534
|
-
Schemathesis can load your Python code via the ``SCHEMATHESIS_HOOKS`` environment variable:
|
|
535
534
|
|
|
536
|
-
|
|
535
|
+
Extensions should be placed in a separate Python module.
|
|
536
|
+
Then, Schemathesis should be informed about this module via the ``SCHEMATHESIS_HOOKS`` environment variable:
|
|
537
537
|
|
|
538
|
-
|
|
539
|
-
$ st run https://example.com/api/swagger.json
|
|
538
|
+
.. code:: bash
|
|
540
539
|
|
|
541
|
-
|
|
540
|
+
export SCHEMATHESIS_HOOKS=myproject.tests.hooks
|
|
541
|
+
st run http://127.0.0.1/openapi.yaml
|
|
542
542
|
|
|
543
543
|
Also, depending on your setup, you might need to run this command with a custom ``PYTHONPATH`` environment variable like this:
|
|
544
544
|
|
|
545
545
|
.. code:: bash
|
|
546
546
|
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
547
|
+
export PYTHONPATH=$(pwd)
|
|
548
|
+
export SCHEMATHESIS_HOOKS=myproject.tests.hooks
|
|
549
|
+
st run https://example.com/api/swagger.json
|
|
550
550
|
|
|
551
551
|
The passed value will be treated as an importable Python path and imported before the test run.
|
|
552
552
|
|
|
553
|
+
.. note::
|
|
554
|
+
|
|
555
|
+
You can find more details on how to extend Schemathesis in the :ref:`Extending Schemathesis <enabling-extensions>` section.
|
|
556
|
+
|
|
553
557
|
Registering custom checks
|
|
554
558
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
555
559
|
|
|
@@ -97,19 +97,36 @@ They execute in the order they are defined, with globally defined hooks executin
|
|
|
97
97
|
Be mindful of the sequence in which hooks are applied. The order can significantly impact the generated test data and subsequent API calls during testing.
|
|
98
98
|
Always validate the test data and requests to ensure that hooks are applied in the intended order and manner.
|
|
99
99
|
|
|
100
|
-
|
|
101
|
-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
100
|
+
.. _enabling-extensions:
|
|
102
101
|
|
|
103
|
-
|
|
102
|
+
Enabling Extensions
|
|
103
|
+
~~~~~~~~~~~~~~~~~~~
|
|
104
104
|
|
|
105
|
-
For
|
|
106
|
-
|
|
105
|
+
For Schemathesis to utilize your custom hooks or other extensions, they need to be properly enabled.
|
|
106
|
+
|
|
107
|
+
For **CLI** usage, extensions should be placed in a separate Python module.
|
|
108
|
+
Then, Schemathesis should be informed about this module via the ``SCHEMATHESIS_HOOKS`` environment variable:
|
|
107
109
|
|
|
108
110
|
.. code:: bash
|
|
109
111
|
|
|
110
|
-
SCHEMATHESIS_HOOKS=myproject.tests.hooks
|
|
112
|
+
export SCHEMATHESIS_HOOKS=myproject.tests.hooks
|
|
111
113
|
st run http://127.0.0.1/openapi.yaml
|
|
112
114
|
|
|
115
|
+
Also, depending on your setup, you might need to run this command with a custom ``PYTHONPATH`` environment variable like this:
|
|
116
|
+
|
|
117
|
+
.. code:: bash
|
|
118
|
+
|
|
119
|
+
export PYTHONPATH=$(pwd)
|
|
120
|
+
export SCHEMATHESIS_HOOKS=myproject.tests.hooks
|
|
121
|
+
st run https://example.com/api/swagger.json
|
|
122
|
+
|
|
123
|
+
In the example above, the module is located at ``myproject/tests/hooks.py`` and the environment variable contains
|
|
124
|
+
a path that could be used as an import in Python.
|
|
125
|
+
|
|
126
|
+
.. note::
|
|
127
|
+
|
|
128
|
+
The name of the module is arbitrary but make sure it is a valid Python module name. Usually it is sufficient to put all your extensions in the ``hooks.py`` file in the current directory.
|
|
129
|
+
|
|
113
130
|
If you're using Schemathesis in Python tests, ensure to define your hooks in the test setup code.
|
|
114
131
|
|
|
115
132
|
Filtering Data
|
|
@@ -1,18 +1,40 @@
|
|
|
1
1
|
Welcome to Schemathesis!
|
|
2
2
|
========================
|
|
3
3
|
|
|
4
|
-
Schemathesis is a tool that
|
|
4
|
+
Schemathesis is a tool that levels-up your API testing by leveraging API specs as a blueprints for generating test cases.
|
|
5
5
|
It focuses on testing for general properties — such as ensuring no input leads to server errors and all responses adhere to the API spec — rather than just checking specific input-output combinations.
|
|
6
6
|
|
|
7
7
|
This approach broadens your testing suite's capability to detect a wide range of potential issues, from trivial bugs to critical vulnerabilities.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
With Schemathesis, you can:
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
|
|
11
|
+
🎯 **Catch Hard-to-Find Bugs**
|
|
12
|
+
|
|
13
|
+
- Uncover hidden crashes and edge cases that manual testing might miss
|
|
14
|
+
- Identify spec violations and ensure your API adheres to its defined contract
|
|
15
|
+
|
|
16
|
+
⚡ **Accelerate Testing Cycles**
|
|
17
|
+
|
|
18
|
+
- Automatically generate a wide range of test cases based on your API schema
|
|
19
|
+
- Save time and effort by eliminating the need for manual test case creation
|
|
20
|
+
|
|
21
|
+
🧩 **Integrate Seamlessly**
|
|
22
|
+
|
|
23
|
+
- Works with popular API formats such as OpenAPI, GraphQL.
|
|
24
|
+
- Easily integrate into your existing testing pipeline and CI/CD workflows
|
|
25
|
+
|
|
26
|
+
🔧 **Customize and Extend**
|
|
27
|
+
|
|
28
|
+
- Tune the testing process to your specific requirements using Python extensions
|
|
29
|
+
- Modify and enhance various aspects of the testing flow to suit your needs with rich configuration options
|
|
30
|
+
|
|
31
|
+
📊 **Gain Valuable Insights**
|
|
32
|
+
|
|
33
|
+
- Get detailed reports and actionable insights to help you identify and fix issues quickly
|
|
34
|
+
- Reproduce failing test cases effortlessly with generated code samples and cURL commands
|
|
35
|
+
|
|
36
|
+
How it works?
|
|
37
|
+
-------------
|
|
16
38
|
|
|
17
39
|
Here’s a simplified overview of how Schemathesis works:
|
|
18
40
|
|
|
@@ -18,7 +18,7 @@ greenlet==3.0.1
|
|
|
18
18
|
# via sqlalchemy
|
|
19
19
|
itsdangerous==2.1.2
|
|
20
20
|
# via flask
|
|
21
|
-
jinja2==3.1.
|
|
21
|
+
jinja2==3.1.4
|
|
22
22
|
# via flask
|
|
23
23
|
markupsafe==2.1.3
|
|
24
24
|
# via
|
|
@@ -28,5 +28,5 @@ sqlalchemy==1.4.50
|
|
|
28
28
|
# via
|
|
29
29
|
# -r requirements-app.in
|
|
30
30
|
# flask-sqlalchemy
|
|
31
|
-
werkzeug==3.0.
|
|
31
|
+
werkzeug==3.0.3
|
|
32
32
|
# via flask
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "schemathesis"
|
|
7
|
-
version = "3.
|
|
7
|
+
version = "3.28.1"
|
|
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" }]
|
|
@@ -55,6 +55,8 @@ class ExecutionContext:
|
|
|
55
55
|
report: ServiceReportContext | FileReportContext | None = None
|
|
56
56
|
probes: list[ProbeRun] | None = None
|
|
57
57
|
analysis: Result[AnalysisResult, Exception] | None = None
|
|
58
|
+
# Special flag to display a warning about Windows-specific encoding issue
|
|
59
|
+
encountered_windows_encoding_issue: bool = False
|
|
58
60
|
|
|
59
61
|
@deprecated_property(removed_in="4.0", replacement="show_trace")
|
|
60
62
|
def show_errors_tracebacks(self) -> bool:
|
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
import base64
|
|
4
3
|
import platform
|
|
5
4
|
import textwrap
|
|
6
5
|
from dataclasses import dataclass, field
|
|
7
|
-
from typing import TYPE_CHECKING
|
|
6
|
+
from typing import TYPE_CHECKING, cast
|
|
8
7
|
|
|
9
8
|
from junit_xml import TestCase, TestSuite, to_xml_report_file
|
|
10
9
|
|
|
10
|
+
from ..exceptions import RuntimeErrorType, prepare_response_payload
|
|
11
11
|
from ..models import Status
|
|
12
12
|
from ..runner import events
|
|
13
13
|
from ..runner.serialization import SerializedCheck, SerializedError
|
|
14
|
-
from ..exceptions import prepare_response_payload, RuntimeErrorType
|
|
15
14
|
from .handlers import EventHandler
|
|
16
|
-
from .reporting import
|
|
15
|
+
from .reporting import TEST_CASE_ID_TITLE, get_runtime_error_suggestion, group_by_case, split_traceback
|
|
17
16
|
|
|
18
17
|
if TYPE_CHECKING:
|
|
19
18
|
from click.utils import LazyFile
|
|
@@ -65,14 +64,15 @@ def build_failure_message(idx: int, code_sample: str, checks: list[SerializedChe
|
|
|
65
64
|
status_code = check.response.status_code
|
|
66
65
|
reason = get_reason(status_code)
|
|
67
66
|
message += f"\n[{check.response.status_code}] {reason}:\n"
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
if not response_body:
|
|
67
|
+
if check.response.body is not None:
|
|
68
|
+
if not check.response.body:
|
|
71
69
|
message += "\n <EMPTY>\n"
|
|
72
70
|
else:
|
|
73
71
|
encoding = check.response.encoding or "utf8"
|
|
74
72
|
try:
|
|
75
|
-
|
|
73
|
+
# Checked that is not None
|
|
74
|
+
body = cast(bytes, check.response.deserialize_body())
|
|
75
|
+
payload = body.decode(encoding)
|
|
76
76
|
payload = prepare_response_payload(payload)
|
|
77
77
|
payload = textwrap.indent(f"\n`{payload}`\n", prefix=" ")
|
|
78
78
|
message += payload
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
import base64
|
|
4
3
|
import os
|
|
5
4
|
import platform
|
|
6
5
|
import shutil
|
|
@@ -200,6 +199,7 @@ def display_full_traceback_message(error: SerializedError) -> bool:
|
|
|
200
199
|
"hypothesis.errors.FailedHealthCheck",
|
|
201
200
|
"hypothesis.errors.InvalidArgument: Scalar ",
|
|
202
201
|
"hypothesis.errors.InvalidArgument: min_size=",
|
|
202
|
+
"hypothesis.errors.Unsatisfiable",
|
|
203
203
|
)
|
|
204
204
|
)
|
|
205
205
|
and "can never generate an example, because min_size is larger than Hypothesis supports." not in error.exception
|
|
@@ -303,23 +303,38 @@ def display_failures_for_single_test(context: ExecutionContext, result: Serializ
|
|
|
303
303
|
reason = get_reason(status_code)
|
|
304
304
|
response = bold(f"[{check.response.status_code}] {reason}")
|
|
305
305
|
click.echo(f"\n{response}:")
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
if not response_body:
|
|
306
|
+
if check.response.body is not None:
|
|
307
|
+
if not check.response.body:
|
|
309
308
|
click.echo("\n <EMPTY>")
|
|
310
309
|
else:
|
|
311
310
|
encoding = check.response.encoding or "utf8"
|
|
312
311
|
try:
|
|
313
|
-
|
|
312
|
+
# Checked that is not None
|
|
313
|
+
body = cast(bytes, check.response.deserialize_body())
|
|
314
|
+
payload = body.decode(encoding)
|
|
314
315
|
payload = prepare_response_payload(payload)
|
|
315
316
|
payload = textwrap.indent(f"\n`{payload}`", prefix=" ")
|
|
316
317
|
click.echo(payload)
|
|
317
318
|
except UnicodeDecodeError:
|
|
318
319
|
click.echo("\n <BINARY>")
|
|
319
320
|
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
321
|
+
try:
|
|
322
|
+
click.echo(
|
|
323
|
+
f"\n{bold('Reproduce with')}: \n\n {code_sample}\n",
|
|
324
|
+
)
|
|
325
|
+
except UnicodeEncodeError:
|
|
326
|
+
# On Windows it may fail when redirecting the output to a file
|
|
327
|
+
# because it uses a different encoding than the console encoding and the default
|
|
328
|
+
# is cp1252, which doesn't support some Unicode characters.
|
|
329
|
+
# In this case, display a stub message and set a flag to display a warning at the end
|
|
330
|
+
if platform.system() != "Windows":
|
|
331
|
+
raise
|
|
332
|
+
click.echo(
|
|
333
|
+
f"\n{bold('Reproduce with')}: \n\n"
|
|
334
|
+
" CAN NOT DISPLAY THIS CODE SAMPLE DUE TO TERMINAL LIMITATIONS.\n"
|
|
335
|
+
" SEE DETAILS AT THE END OF THE OUTPUT\n",
|
|
336
|
+
)
|
|
337
|
+
context.encountered_windows_encoding_issue = True
|
|
323
338
|
|
|
324
339
|
|
|
325
340
|
def display_application_logs(context: ExecutionContext, event: events.Finished) -> None:
|
|
@@ -465,6 +480,17 @@ def display_statistic(context: ExecutionContext, event: events.Finished) -> None
|
|
|
465
480
|
seed_option = f"`--hypothesis-seed={context.seed}`"
|
|
466
481
|
click.secho(f"\n{bold('Note')}: To replicate these test failures, rerun with {bold(seed_option)}")
|
|
467
482
|
|
|
483
|
+
if context.encountered_windows_encoding_issue:
|
|
484
|
+
click.echo()
|
|
485
|
+
title = click.style("WARNING:", bold=True, fg="yellow")
|
|
486
|
+
name = click.style("PYTHONIOENCODING", bold=True)
|
|
487
|
+
value = click.style("utf8", bold=True)
|
|
488
|
+
warning = (
|
|
489
|
+
"Some code samples could not be displayed due to terminal limitations on Windows.\n"
|
|
490
|
+
f"To resolve this set the '{name}' environment variable to '{value}' and rerun your command."
|
|
491
|
+
)
|
|
492
|
+
click.secho(f"{title} {warning}")
|
|
493
|
+
|
|
468
494
|
if context.report is not None and not context.is_interrupted:
|
|
469
495
|
if isinstance(context.report, FileReportContext):
|
|
470
496
|
click.echo()
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
import base64
|
|
4
3
|
from itertools import groupby
|
|
5
4
|
from typing import Callable, Generator
|
|
6
5
|
|
|
@@ -22,11 +21,10 @@ def group_by_case(
|
|
|
22
21
|
|
|
23
22
|
|
|
24
23
|
def _by_unique_code_sample(check: SerializedCheck, code_sample_style: CodeSampleStyle) -> str:
|
|
25
|
-
request_body = base64.b64decode(check.example.body).decode() if check.example.body is not None else None
|
|
26
24
|
return code_sample_style.generate(
|
|
27
25
|
method=check.example.method,
|
|
28
26
|
url=check.example.url,
|
|
29
|
-
body=
|
|
27
|
+
body=check.example.deserialize_body(),
|
|
30
28
|
headers=check.example.headers,
|
|
31
29
|
verify=check.example.verify,
|
|
32
30
|
extra_headers=check.example.extra_headers,
|
|
@@ -336,6 +336,12 @@ class DeadlineExceeded(Exception):
|
|
|
336
336
|
)
|
|
337
337
|
|
|
338
338
|
|
|
339
|
+
class RecursiveReferenceError(Exception):
|
|
340
|
+
"""Recursive reference is impossible to resolve due to current limitations."""
|
|
341
|
+
|
|
342
|
+
__module__ = "builtins"
|
|
343
|
+
|
|
344
|
+
|
|
339
345
|
@enum.unique
|
|
340
346
|
class RuntimeErrorType(str, enum.Enum):
|
|
341
347
|
# Connection related issues
|
|
@@ -354,6 +360,7 @@ class RuntimeErrorType(str, enum.Enum):
|
|
|
354
360
|
|
|
355
361
|
SCHEMA_BODY_IN_GET_REQUEST = "schema_body_in_get_request"
|
|
356
362
|
SCHEMA_INVALID_REGULAR_EXPRESSION = "schema_invalid_regular_expression"
|
|
363
|
+
SCHEMA_UNSUPPORTED = "schema_unsupported"
|
|
357
364
|
SCHEMA_GENERIC = "schema_generic"
|
|
358
365
|
|
|
359
366
|
SERIALIZATION_NOT_POSSIBLE = "serialization_not_possible"
|
|
@@ -367,6 +374,7 @@ class RuntimeErrorType(str, enum.Enum):
|
|
|
367
374
|
return self not in (
|
|
368
375
|
RuntimeErrorType.SCHEMA_BODY_IN_GET_REQUEST,
|
|
369
376
|
RuntimeErrorType.SCHEMA_INVALID_REGULAR_EXPRESSION,
|
|
377
|
+
RuntimeErrorType.SCHEMA_UNSUPPORTED,
|
|
370
378
|
RuntimeErrorType.SCHEMA_GENERIC,
|
|
371
379
|
RuntimeErrorType.SERIALIZATION_NOT_POSSIBLE,
|
|
372
380
|
)
|