schemathesis 3.38.6__tar.gz → 3.38.8__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.38.6 → schemathesis-3.38.8}/.github/workflows/codeql-analysis.yml +3 -3
- {schemathesis-3.38.6 → schemathesis-3.38.8}/.pre-commit-config.yaml +2 -2
- {schemathesis-3.38.6 → schemathesis-3.38.8}/PKG-INFO +1 -1
- {schemathesis-3.38.6 → schemathesis-3.38.8}/benches/coverage_phase.py +1 -1
- {schemathesis-3.38.6 → schemathesis-3.38.8}/docs/changelog.rst +27 -1
- {schemathesis-3.38.6 → schemathesis-3.38.8}/pyproject.toml +1 -1
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/_hypothesis.py +84 -24
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/cli/__init__.py +15 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/generation/coverage.py +64 -44
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/internal/checks.py +6 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/models.py +3 -1
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/specs/openapi/checks.py +14 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_run_output[args24].raw +4 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/test_cassettes.py +3 -1
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/test_commands.py +0 -1
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/coverage/test_combinations.py +4 -8
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/coverage/test_phase.py +337 -139
- schemathesis-3.38.8/test/specs/openapi/__snapshots__/test_checks/test_missing_required_header[200].raw +32 -0
- schemathesis-3.38.8/test/specs/openapi/__snapshots__/test_checks/test_missing_required_header[406].raw +52 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/specs/openapi/test_checks.py +30 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/test_lazy.py +1 -1
- schemathesis-3.38.8/typos.toml +2 -0
- schemathesis-3.38.6/typos.toml +0 -2
- {schemathesis-3.38.6 → schemathesis-3.38.8}/.dockerignore +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/.github/FUNDING.yml +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/.github/dependabot.yml +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/.github/workflows/build.yml +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/.github/workflows/codspeed.yml +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/.github/workflows/commit.yml +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/.github/workflows/example-build.yml +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/.github/workflows/example-no-build.yml +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/.github/workflows/master_update.yml +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/.github/workflows/release.yml +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/.github/workflows/test-corpus.yml +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/.github/workflows/test-hypothesis.yml +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/.github/workflows/update-pre-commit.yml +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/.gitignore +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/.readthedocs.yml +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/.relint.yml +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/.rstcheck.cfg +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/.yamllint +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/CITATION.cff +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/CODE_OF_CONDUCT.md +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/CONTRIBUTING.rst +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/Dockerfile +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/Dockerfile.bookworm +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/LICENSE +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/README.md +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/SECURITY.md +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/benches/cli.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/benches/references.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/benches/schema.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/changelog.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/codecov.yml +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/corpus/data/graphql.tar.gz +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/corpus/data/openapi-3.0.tar.gz +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/corpus/data/openapi-3.1.tar.gz +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/corpus/data/swagger-2.0.tar.gz +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/corpus/tools.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/docs/Makefile +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/docs/additional-content.rst +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/docs/api.rst +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/docs/auth.rst +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/docs/cli.rst +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/docs/compatibility.rst +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/docs/conf.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/docs/continuous_integration.rst +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/docs/contrib.rst +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/docs/data-generation.rst +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/docs/examples.rst +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/docs/experimental.rst +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/docs/extending.rst +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/docs/faq.rst +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/docs/getting-started.rst +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/docs/graphql.rst +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/docs/index.rst +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/docs/python.rst +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/docs/recipes.rst +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/docs/requirements.txt +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/docs/sanitizing.rst +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/docs/service.rst +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/docs/stateful.rst +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/docs/targeted.rst +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/example/Dockerfile +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/example/README.md +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/example/app.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/example/compose.yml +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/example/openapi.json +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/example/requirements-app.in +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/example/requirements-app.txt +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/example/requirements-pytest.in +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/example/requirements-pytest.txt +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/example/tests/__init__.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/example/tests/conftest.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/example/tests/extensions.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/example/tests/test_app.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/img/demo.gif +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/img/service_github_report.png +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/mypy.ini +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/__init__.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/_compat.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/_dependency_versions.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/_lazy_import.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/_override.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/_patches.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/_rate_limiter.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/_xml.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/auths.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/checks.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/cli/__main__.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/cli/callbacks.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/cli/cassettes.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/cli/constants.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/cli/context.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/cli/debug.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/cli/handlers.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/cli/junitxml.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/cli/options.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/cli/output/__init__.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/cli/output/default.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/cli/output/short.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/cli/reporting.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/cli/sanitization.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/code_samples.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/constants.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/contrib/__init__.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/contrib/openapi/__init__.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/contrib/openapi/fill_missing_examples.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/contrib/openapi/formats/__init__.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/contrib/openapi/formats/uuid.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/contrib/unique_data.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/exceptions.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/experimental/__init__.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/extra/__init__.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/extra/_aiohttp.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/extra/_flask.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/extra/_server.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/extra/pytest_plugin.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/failures.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/filters.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/fixups/__init__.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/fixups/fast_api.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/fixups/utf8_bom.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/generation/__init__.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/generation/_hypothesis.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/generation/_methods.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/graphql.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/hooks.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/internal/__init__.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/internal/copy.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/internal/datetime.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/internal/deprecation.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/internal/diff.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/internal/extensions.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/internal/jsonschema.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/internal/output.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/internal/result.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/internal/transformation.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/internal/validation.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/lazy.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/loaders.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/parameters.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/py.typed +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/runner/__init__.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/runner/events.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/runner/impl/__init__.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/runner/impl/context.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/runner/impl/core.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/runner/impl/solo.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/runner/impl/threadpool.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/runner/probes.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/runner/serialization.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/sanitization.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/schemas.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/serializers.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/service/__init__.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/service/auth.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/service/ci.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/service/client.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/service/constants.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/service/events.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/service/extensions.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/service/hosts.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/service/metadata.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/service/models.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/service/report.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/service/serialization.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/service/usage.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/specs/__init__.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/specs/graphql/__init__.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/specs/graphql/_cache.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/specs/graphql/loaders.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/specs/graphql/nodes.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/specs/graphql/scalars.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/specs/graphql/schemas.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/specs/graphql/validation.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/specs/openapi/__init__.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/specs/openapi/_cache.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/specs/openapi/_hypothesis.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/specs/openapi/constants.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/specs/openapi/converter.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/specs/openapi/definitions.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/specs/openapi/examples.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/specs/openapi/expressions/__init__.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/specs/openapi/expressions/context.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/specs/openapi/expressions/errors.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/specs/openapi/expressions/extractors.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/specs/openapi/expressions/lexer.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/specs/openapi/expressions/nodes.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/specs/openapi/expressions/parser.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/specs/openapi/formats.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/specs/openapi/links.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/specs/openapi/loaders.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/specs/openapi/media_types.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/specs/openapi/negative/__init__.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/specs/openapi/negative/mutations.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/specs/openapi/negative/types.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/specs/openapi/negative/utils.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/specs/openapi/parameters.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/specs/openapi/patterns.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/specs/openapi/references.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/specs/openapi/schemas.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/specs/openapi/security.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/specs/openapi/serialization.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/specs/openapi/stateful/__init__.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/specs/openapi/stateful/statistic.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/specs/openapi/stateful/types.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/specs/openapi/utils.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/specs/openapi/validation.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/stateful/__init__.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/stateful/config.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/stateful/context.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/stateful/events.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/stateful/runner.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/stateful/sink.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/stateful/state_machine.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/stateful/statistic.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/stateful/validation.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/targets.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/throttling.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/transports/__init__.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/transports/asgi.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/transports/auth.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/transports/content_types.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/transports/headers.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/transports/responses.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/types.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/src/schemathesis/utils.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/__init__.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/__snapshots__/test_dereferencing/test_global_security_schemes_with_custom_scope.raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/__snapshots__/test_dereferencing/test_missing_file_in_resolution.raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/__snapshots__/test_hypothesis/test_health_check_failed_large_base_example.raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/__snapshots__/test_recoverable_errors/test_in_cli[1].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/__snapshots__/test_recoverable_errors/test_in_cli[2].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/__snapshots__/test_serialization/test_in_cli[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/apps/__init__.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/apps/_graphql/__init__.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/apps/_graphql/_fastapi/__init__.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/apps/_graphql/_fastapi/app.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/apps/_graphql/_flask/__init__.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/apps/_graphql/_flask/app.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/apps/_graphql/schema.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/apps/cp1252_app.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/apps/hooks.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/apps/openapi/__init__.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/apps/openapi/_aiohttp/__init__.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/apps/openapi/_aiohttp/app.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/apps/openapi/_aiohttp/handlers.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/apps/openapi/_fastapi/__init__.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/apps/openapi/_fastapi/app.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/apps/openapi/_flask/__init__.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/apps/openapi/_flask/app.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/apps/openapi/schema.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/auth/__init__.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/auth/__snapshots__/test_cli/test_conditional[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/auth/__snapshots__/test_cli/test_custom_auth[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/auth/__snapshots__/test_cli/test_explicit_auth_precedence[Open API 3.0-args0-Basic dXNlcjpwYXNz].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/auth/__snapshots__/test_cli/test_explicit_auth_precedence[Open API 3.0-args1-Bearer EXPLICIT].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/auth/__snapshots__/test_cli/test_multiple_auth_mechanisms_with_explicit_auth.raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/auth/__snapshots__/test_cli/test_multiple_threads[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/auth/__snapshots__/test_cli/test_requests_auth[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/auth/conftest.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/auth/test_cli.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/auth/test_provider.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/auth/test_pytest.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/checks/__init__.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/checks/test_checks.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__init__.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_cassettes/test_forbid_preserve_exact_bytes_without_cassette_path[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_cassettes/test_forbid_simultaneous_use_of_deprecated_and_new_options[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_checks/test_deduplication_on_sanitized_header.raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args10].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args1].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args2].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args3].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args4].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args5].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args6].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args7].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args8].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args9].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance_with_env_vars.raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_add_case_output[Open API 2.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_add_case_output[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_auth_and_authorization_header_are_disallowed[Open API 3.0-Authorization].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_auth_and_authorization_header_are_disallowed[Open API 3.0-authorization].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 2.0---auth='testwrong'].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 2.0--H Authorization Basic J3Rlc3Q6d3Jvbmcn].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 3.0---auth='testwrong'].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 3.0--H Authorization Basic J3Rlc3Q6d3Jvbmcn].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_binary_payload.raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_certificate_only_key.raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_chunked_encoding_error[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 2.0-1].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 2.0-2].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 3.0-1].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 3.0-2].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 2.0-1].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 2.0-2].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 3.0-1].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 3.0-2].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_commands_help.raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_complex_urlencoded_example.raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 2.0-1].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 2.0-2].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 3.0-1].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 3.0-2].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 2.0-1].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 2.0-2].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 3.0-1].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 3.0-2].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_custom_cli_option[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_deprecated_filters[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_duplicated_filters[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_empty_schema_file[args0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_empty_schema_file[args1].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_explicit_example_failure_output.raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_explicit_headers_in_output_on_errors[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_explicit_query_token_sanitization[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_filter_by[Open API 3.0---exclude-by=x-property != 42].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_filter_by[Open API 3.0---include-by=x-property == 42].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_force_color_nocolor[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_get_request_with_body[Open API 2.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_get_request_with_body[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_graphql_asgi.raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_graphql_url[foo-args0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_graphql_url[foo-args1].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_graphql_url[graphql-args0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_graphql_url[graphql-args1].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_group_errors.raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_hooks_module_not_found.raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_hooks_with_inner_import_error.raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_hypothesis_database_with_derandomize[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 2.0-1].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 2.0-2].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 3.0-1].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 3.0-2].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 2.0-1].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 2.0-2].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 3.0-1].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 3.0-2].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_invalid_filter[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[real-Open API 2.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[real-Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[wsgi-Open API 2.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[wsgi-Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_invalid_schema_with_disabled_validation[3.0.2].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_invalid_schema_with_disabled_validation[3.1.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_invalid_yaml.raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_long_payload.raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_malformed_json_deduplication[real-Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_malformed_json_deduplication[wsgi-Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 2.0-1].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 2.0-2].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 3.0-1].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 3.0-2].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[cookie-None].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[cookie-http127.0.0.1apiv2].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[header-None].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[header-http127.0.0.1apiv2].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[path-None].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[path-http127.0.0.1apiv2].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[query-None].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[query-http127.0.0.1apiv2].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_multiple_errors.raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_multiple_failures_different_check[Open API 2.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_multiple_failures_different_check[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_multiple_failures_in_single_check.raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_multiple_failures_single_check[Open API 2.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_multiple_failures_single_check[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_nested_binary_in_yaml.raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_new_stateful_runner[Open API 3.0-1].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_new_stateful_runner[Open API 3.0-2].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_new_stateful_runner_filtered_out[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_new_stateful_runner_generation_config[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_new_stateful_runner_keyboard_interrupt[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_new_stateful_runner_max_failures[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_new_stateful_runner_proxy_error[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_new_stateful_runner_stateful_only[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_new_stateful_runner_stateful_only_with_error[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_no_schema_in_media_type[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_no_useless_traceback.raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_null_byte_in_header_probe.raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_openapi_links[real-Open API 2.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_openapi_links[real-Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_openapi_links[wsgi-Open API 2.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_openapi_links[wsgi-Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_openapi_links_disabled[Open API 2.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_openapi_links_disabled[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 2.0-1].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 2.0-5].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 3.0-1].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 3.0-5].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 2.0-1].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 2.0-5].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 3.0-1].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 3.0-5].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_proxy_error[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_read_content_timeout[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_recursive_reference_error_message.raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError(Custom check failed!)-Open API 2.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError(Custom check failed!)-Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError-Open API 2.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError-Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_remote_disconnected_error[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[real-Open API 2.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[real-Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[wsgi-Open API 2.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[wsgi-Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[real-Open API 2.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[real-Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[wsgi-Open API 2.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[wsgi-Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_run_output[args0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_run_output[args10].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_run_output[args11].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_run_output[args12].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_run_output[args13].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_run_output[args14].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_run_output[args15].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_run_output[args16].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_run_output[args17].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_run_output[args18].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_run_output[args19].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_run_output[args1].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_run_output[args20].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_run_output[args21].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_run_output[args22].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_run_output[args23].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_run_output[args25].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_run_output[args26].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_run_output[args27].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_run_output[args28].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_run_output[args29].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_run_output[args2].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_run_output[args30].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_run_output[args31].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_run_output[args32].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_run_output[args33].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_run_output[args34].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_run_output[args35].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_run_output[args36].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_run_output[args37].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_run_output[args3].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_run_output[args4].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_run_output[args5].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_run_output[args6].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_run_output[args7].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_run_output[args8].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_run_output[args9].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_schema_not_available[1].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_schema_not_available[2].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_schema_not_available_wsgi.raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_stateful_explicit_examples_with_filters[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 2.0-1].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 2.0-2].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 3.0-1].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 3.0-2].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 2.0-1].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 2.0-2].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 3.0-1].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 3.0-2].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_unknown_schema_error[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_unresolvable_links[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_unresolvable_reference_with_disabled_validation.raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 2.0-1].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 2.0-2].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 3.0-1].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 3.0-2].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 2.0-1].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 2.0-2].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 3.0-1].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 3.0-2].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_unsupported_regex.raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_useful_traceback[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_wait_for_schema_not_enough.raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_commands/test_yaml_parsing_of_floats[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_hooks/test_after_call[real-Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/__snapshots__/test_hooks/test_after_call[wsgi-Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/cert.pem +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/conftest.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/output/__init__.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/output/test_default.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/test_asgi.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/test_callbacks.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/test_checks.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/test_crashes.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/test_hooks.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/test_junitxml.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/test_options.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/test_reporting.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/cli/test_targeted.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/code_samples/__snapshots__/test_python/test_cli_output[Open API 2.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/code_samples/__snapshots__/test_python/test_cli_output[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/code_samples/conftest.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/code_samples/test_curl.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/code_samples/test_python.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/conftest.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/contrib/__snapshots__/test_unique_data/test_cli[None].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema1].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema2].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/contrib/__snapshots__/test_unique_data/test_cli_failure.raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/contrib/__snapshots__/test_unique_data/test_explicit_headers[1].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/contrib/__snapshots__/test_unique_data/test_explicit_headers[2].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/contrib/__snapshots__/test_unique_data/test_graphql_url.raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/contrib/openapi/__snapshots__/test_fill_missing_examples/test_fills_missing_examples.raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/contrib/openapi/formats/test_uuid.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/contrib/openapi/test_fill_missing_examples.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/contrib/test_install.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/contrib/test_unique_data.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/coverage/__init__.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/coverage/test_examples.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/data/petstore_v2.yaml +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/data/petstore_v3.yaml +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/data/relative_files/components/parameters.yaml +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/data/relative_files/components/responses.yaml +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/data/relative_files/components/schemas.yaml +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/data/relative_files/main.yaml +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/data/relative_files/paths/user-account.yaml +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/data/simple_openapi.yaml +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/data/simple_swagger.yaml +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/experimental/__snapshots__/test_experiments/test_not_enabled.raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/experimental/conftest.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/experimental/test_experiments.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/experimental/test_openapi_3_1.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/extra/__init__.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/extra/test_aiohttp.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/filters/__init__.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/filters/test_expressions.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/filters/test_matching.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/fixtures/__init__.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/fixtures/ctx.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/hooks/test_filter_operations.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/hooks/test_filters.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/hooks/test_hooks.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/loaders/conftest.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/loaders/test_app.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/loaders/test_common.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/loaders/test_graphql.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/loaders/test_openapi.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/loaders/test_yaml.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/runner/__init__.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/runner/test_checks.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/runner/test_events.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/runner/test_probes.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/runner/test_runner.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/service/__init__.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/service/__snapshots__/test_cli/test_client_error_on_project_details.raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/service/__snapshots__/test_cli/test_client_error_on_upload[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/service/__snapshots__/test_cli/test_error_in_another_handler[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/service/__snapshots__/test_cli/test_github_suggestion[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/service/__snapshots__/test_cli/test_not_authenticated_with_name.raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/service/__snapshots__/test_cli/test_two_names.raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/service/__snapshots__/test_cli/test_unauthorized.raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/service/__snapshots__/test_cli/test_unknown_error_on_upload[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/service/__snapshots__/test_cli/test_upload_failure[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/service/__snapshots__/test_cli/test_upload_success[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/service/__snapshots__/test_extensions/test_connection_error[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/service/__snapshots__/test_extensions/test_custom_format.raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/service/__snapshots__/test_extensions/test_dry_run[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/service/__snapshots__/test_extensions/test_forbidden[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/service/__snapshots__/test_extensions/test_graphql_scalars.raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/service/__snapshots__/test_extensions/test_internal_server_error[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/service/__snapshots__/test_extensions/test_invalid_extension[Open API 3.0-42].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/service/__snapshots__/test_extensions/test_invalid_extension[Open API 3.0-extension1].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/service/__snapshots__/test_extensions/test_invalid_payload[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/service/__snapshots__/test_extensions/test_media_type_extension[strategy0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/service/__snapshots__/test_extensions/test_media_type_extension[strategy1].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/service/__snapshots__/test_extensions/test_oversize_text[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/service/__snapshots__/test_extensions/test_schema_patches[patch0-expected0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/service/__snapshots__/test_extensions/test_schema_patches[patch1-expected1].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/service/__snapshots__/test_extensions/test_schema_patches[patch2-expected2].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/service/__snapshots__/test_extensions/test_unknown_extension_in_cli[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/service/conftest.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/service/test_auth.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/service/test_ci.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/service/test_cli.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/service/test_extensions.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/service/test_report.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/service/test_serialization.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/service/test_usage.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/specs/graphql/__snapshots__/test_basic/test_disallow_null.raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/specs/graphql/__snapshots__/test_basic/test_filter_operations[--exclude-name=Query.getBooks].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/specs/graphql/__snapshots__/test_basic/test_filter_operations[--include-name=Query.getBooks].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/specs/graphql/__snapshots__/test_basic/test_schema_error[ntype Query {n 123(created Int!) Int!n}-.whatever].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/specs/graphql/__snapshots__/test_basic/test_schema_error[ntype Query {n func(created Unknown!) Int!n}-.gql].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/specs/graphql/__snapshots__/test_custom_scalars/test_built_in_scalars_in_cli.raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/specs/graphql/__snapshots__/test_custom_scalars/test_custom_scalar_in_cli.raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/specs/graphql/test_basic.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/specs/graphql/test_custom_scalars.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/specs/graphql/test_pytest.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/specs/openapi/__snapshots__/test_examples/test_network_error_with_flaky_generation.raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/specs/openapi/__snapshots__/test_examples/test_parameter_override.raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/specs/openapi/__snapshots__/test_ignored_auth/test_auth_via_override_cli[cookie].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/specs/openapi/__snapshots__/test_ignored_auth/test_auth_via_override_cli[query].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/specs/openapi/__snapshots__/test_ignored_auth/test_explicit_auth_cli[Open API 3.0].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/specs/openapi/__snapshots__/test_ignored_auth/test_stateful_in_cli_no_error[Open API 3.0-False].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/specs/openapi/__snapshots__/test_ignored_auth/test_stateful_in_cli_no_error[Open API 3.0-True].raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/specs/openapi/__snapshots__/test_media_types/test_explicit_example_with_custom_media_type.raw +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/specs/openapi/blank.pdf +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/specs/openapi/conftest.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/specs/openapi/parameters/test_forms.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/specs/openapi/parameters/test_non_payload.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/specs/openapi/parameters/test_simple_payloads.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/specs/openapi/stateful/__init__.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/specs/openapi/stateful/conftest.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/specs/openapi/stateful/test_config.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/specs/openapi/stateful/test_runner.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/specs/openapi/stateful/test_stateful.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/specs/openapi/test_examples.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/specs/openapi/test_expressions.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/specs/openapi/test_hypothesis.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/specs/openapi/test_ignored_auth.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/specs/openapi/test_links.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/specs/openapi/test_media_types.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/specs/openapi/test_negative.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/specs/openapi/test_parameters.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/specs/openapi/test_patterns.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/specs/openapi/test_randomized.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/specs/openapi/test_schemas.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/specs/openapi/test_security.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/specs/openapi/test_serializing.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/specs/openapi/test_utils.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/specs/openapi/test_validation.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/test_app.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/test_asgi.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/test_async.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/test_common_parameters.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/test_converter.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/test_dereferencing.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/test_direct_access.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/test_examples.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/test_filters.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/test_fixups.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/test_hypothesis.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/test_internal.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/test_models.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/test_output.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/test_package.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/test_parameters.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/test_parametrization.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/test_petstore.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/test_pytest.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/test_rate_limit.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/test_recoverable_errors.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/test_required.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/test_sanitizing_output.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/test_schemas.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/test_serialization.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/test_stateful.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/test_unittest.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/test_utils.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/test_wsgi.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/transports/test_content_types.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test/utils.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test-corpus/conftest.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test-corpus/test_corpus.py +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/test_server.sh +0 -0
- {schemathesis-3.38.6 → schemathesis-3.38.8}/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.27.
|
|
41
|
+
uses: github/codeql-action/init@v3.27.5
|
|
42
42
|
with:
|
|
43
43
|
languages: ${{ matrix.language }}
|
|
44
44
|
# If you wish to specify custom queries, you can do so here or in a config file.
|
|
@@ -49,7 +49,7 @@ jobs:
|
|
|
49
49
|
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
|
50
50
|
# If this step fails, then you should remove it and run the build manually (see below)
|
|
51
51
|
- name: Autobuild
|
|
52
|
-
uses: github/codeql-action/autobuild@v3.27.
|
|
52
|
+
uses: github/codeql-action/autobuild@v3.27.5
|
|
53
53
|
|
|
54
54
|
# ℹ️ Command-line programs to run using the OS shell.
|
|
55
55
|
# 📚 https://git.io/JvXDl
|
|
@@ -63,4 +63,4 @@ jobs:
|
|
|
63
63
|
# make release
|
|
64
64
|
|
|
65
65
|
- name: Perform CodeQL Analysis
|
|
66
|
-
uses: github/codeql-action/analyze@v3.27.
|
|
66
|
+
uses: github/codeql-action/analyze@v3.27.5
|
|
@@ -38,12 +38,12 @@ repos:
|
|
|
38
38
|
additional_dependencies: [types-click, types-requests, types-PyYAML]
|
|
39
39
|
|
|
40
40
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
41
|
-
rev: v0.
|
|
41
|
+
rev: v0.8.0
|
|
42
42
|
hooks:
|
|
43
43
|
- id: ruff-format
|
|
44
44
|
|
|
45
45
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
46
|
-
rev: v0.
|
|
46
|
+
rev: v0.8.0
|
|
47
47
|
hooks:
|
|
48
48
|
- id: ruff
|
|
49
49
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: schemathesis
|
|
3
|
-
Version: 3.38.
|
|
3
|
+
Version: 3.38.8
|
|
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
|
|
@@ -4,7 +4,7 @@ import pytest
|
|
|
4
4
|
|
|
5
5
|
from schemathesis.generation.coverage import cover_schema_iter, CoverageContext
|
|
6
6
|
|
|
7
|
-
CONTEXTS = [CoverageContext().with_positive(), CoverageContext().with_negative()]
|
|
7
|
+
CONTEXTS = [CoverageContext(location="body").with_positive(), CoverageContext(location="body").with_negative()]
|
|
8
8
|
CONTEXT_NAMES = [",".join([m.value for m in ctx.data_generation_methods]) for ctx in CONTEXTS]
|
|
9
9
|
|
|
10
10
|
BASIC_TYPES = [
|
|
@@ -1,9 +1,35 @@
|
|
|
1
1
|
Changelog
|
|
2
2
|
=========
|
|
3
3
|
|
|
4
|
-
:version:`Unreleased <v3.38.
|
|
4
|
+
:version:`Unreleased <v3.38.8...HEAD>` - TBD
|
|
5
5
|
--------------------------------------------
|
|
6
6
|
|
|
7
|
+
.. _v3.38.8:
|
|
8
|
+
|
|
9
|
+
:version:`3.38.8 <v3.38.7...v3.38.8>` - 2024-11-28
|
|
10
|
+
--------------------------------------------------
|
|
11
|
+
|
|
12
|
+
**Fixed**
|
|
13
|
+
|
|
14
|
+
- ``UnicodeEncodeError`` when sending a request during the coverage phase.
|
|
15
|
+
- Duplicated test cases for missing required headers during the coverage phase.
|
|
16
|
+
- Generating positive test cases when they are explicitly excluded via configuration during the coverage phase.
|
|
17
|
+
|
|
18
|
+
.. _v3.38.7:
|
|
19
|
+
|
|
20
|
+
:version:`3.38.7 <v3.38.6...v3.38.7>` - 2024-11-16
|
|
21
|
+
--------------------------------------------------
|
|
22
|
+
|
|
23
|
+
**Added**
|
|
24
|
+
|
|
25
|
+
- Generating duplicate query parameters during the coverage phase.
|
|
26
|
+
- Generating cases with arbitrary HTTP methods during the coverage phase.
|
|
27
|
+
|
|
28
|
+
**Fixed**
|
|
29
|
+
|
|
30
|
+
- Not sending negated query parameters in some cases during the coverage phase.
|
|
31
|
+
- Incorrect ``data_generation_method`` reported during the coverage phase in some cases.
|
|
32
|
+
|
|
7
33
|
.. _v3.38.6:
|
|
8
34
|
|
|
9
35
|
:version:`3.38.6 <v3.38.5...v3.38.6>` - 2024-11-12
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "schemathesis"
|
|
7
|
-
version = "3.38.
|
|
7
|
+
version = "3.38.8"
|
|
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" }]
|
|
@@ -224,8 +224,11 @@ def _iter_coverage_cases(
|
|
|
224
224
|
from .specs.openapi.constants import LOCATION_TO_CONTAINER
|
|
225
225
|
from .specs.openapi.examples import find_in_responses, find_matching_in_responses
|
|
226
226
|
|
|
227
|
-
def _stringify_value(val: Any) -> str:
|
|
227
|
+
def _stringify_value(val: Any, location: str) -> str | list[str]:
|
|
228
228
|
if isinstance(val, list):
|
|
229
|
+
if location == "query":
|
|
230
|
+
# Having a list here ensures there will be multiple query parameters wit the same name
|
|
231
|
+
return [json.dumps(item) for item in val]
|
|
229
232
|
# use comma-separated values style for arrays
|
|
230
233
|
return ",".join(json.dumps(sub) for sub in val)
|
|
231
234
|
return json.dumps(val)
|
|
@@ -234,20 +237,20 @@ def _iter_coverage_cases(
|
|
|
234
237
|
template: dict[str, Any] = {}
|
|
235
238
|
responses = find_in_responses(operation)
|
|
236
239
|
for parameter in operation.iter_parameters():
|
|
240
|
+
location = parameter.location
|
|
241
|
+
name = parameter.name
|
|
237
242
|
schema = parameter.as_json_schema(operation, update_quantifiers=False)
|
|
238
243
|
for value in find_matching_in_responses(responses, parameter.name):
|
|
239
244
|
schema.setdefault("examples", []).append(value)
|
|
240
245
|
gen = coverage.cover_schema_iter(
|
|
241
|
-
coverage.CoverageContext(data_generation_methods=data_generation_methods), schema
|
|
246
|
+
coverage.CoverageContext(location=location, data_generation_methods=data_generation_methods), schema
|
|
242
247
|
)
|
|
243
248
|
value = next(gen, NOT_SET)
|
|
244
249
|
if isinstance(value, NotSet):
|
|
245
250
|
continue
|
|
246
|
-
location = parameter.location
|
|
247
|
-
name = parameter.name
|
|
248
251
|
container = template.setdefault(LOCATION_TO_CONTAINER[location], {})
|
|
249
|
-
if location in ("header", "cookie", "path") and not isinstance(value.value, str):
|
|
250
|
-
container[name] = _stringify_value(value.value)
|
|
252
|
+
if location in ("header", "cookie", "path", "query") and not isinstance(value.value, str):
|
|
253
|
+
container[name] = _stringify_value(value.value, location)
|
|
251
254
|
else:
|
|
252
255
|
container[name] = value.value
|
|
253
256
|
generators[(location, name)] = gen
|
|
@@ -260,7 +263,7 @@ def _iter_coverage_cases(
|
|
|
260
263
|
if examples:
|
|
261
264
|
schema.setdefault("examples", []).extend(examples)
|
|
262
265
|
gen = coverage.cover_schema_iter(
|
|
263
|
-
coverage.CoverageContext(data_generation_methods=data_generation_methods), schema
|
|
266
|
+
coverage.CoverageContext(location="body", data_generation_methods=data_generation_methods), schema
|
|
264
267
|
)
|
|
265
268
|
value = next(gen, NOT_SET)
|
|
266
269
|
if isinstance(value, NotSet):
|
|
@@ -297,8 +300,8 @@ def _iter_coverage_cases(
|
|
|
297
300
|
container_name = LOCATION_TO_CONTAINER[location]
|
|
298
301
|
container = template[container_name]
|
|
299
302
|
for value in gen:
|
|
300
|
-
if location in ("header", "cookie", "path") and not isinstance(value.value, str):
|
|
301
|
-
generated = _stringify_value(value.value)
|
|
303
|
+
if location in ("header", "cookie", "path", "query") and not isinstance(value.value, str):
|
|
304
|
+
generated = _stringify_value(value.value, location)
|
|
302
305
|
else:
|
|
303
306
|
generated = value.value
|
|
304
307
|
case = operation.make_case(**{**template, container_name: {**container, name: generated}})
|
|
@@ -310,8 +313,32 @@ def _iter_coverage_cases(
|
|
|
310
313
|
parameter_location=location,
|
|
311
314
|
)
|
|
312
315
|
yield case
|
|
313
|
-
# Generate missing required parameters
|
|
314
316
|
if DataGenerationMethod.negative in data_generation_methods:
|
|
317
|
+
# Generate HTTP methods that are not specified in the spec
|
|
318
|
+
methods = {"get", "put", "post", "delete", "options", "head", "patch", "trace"} - set(
|
|
319
|
+
operation.schema[operation.path]
|
|
320
|
+
)
|
|
321
|
+
for method in methods:
|
|
322
|
+
case = operation.make_case(**template)
|
|
323
|
+
case._explicit_method = method
|
|
324
|
+
case.data_generation_method = DataGenerationMethod.negative
|
|
325
|
+
case.meta = _make_meta(description=f"Unspecified HTTP method: {method}")
|
|
326
|
+
yield case
|
|
327
|
+
# Generate duplicate query parameters
|
|
328
|
+
if operation.query:
|
|
329
|
+
container = template["query"]
|
|
330
|
+
for parameter in operation.query:
|
|
331
|
+
value = container[parameter.name]
|
|
332
|
+
case = operation.make_case(**{**template, "query": {**container, parameter.name: [value, value]}})
|
|
333
|
+
case.data_generation_method = DataGenerationMethod.negative
|
|
334
|
+
case.meta = _make_meta(
|
|
335
|
+
description=f"Duplicate `{parameter.name}` query parameter",
|
|
336
|
+
location=None,
|
|
337
|
+
parameter=parameter.name,
|
|
338
|
+
parameter_location="query",
|
|
339
|
+
)
|
|
340
|
+
yield case
|
|
341
|
+
# Generate missing required parameters
|
|
315
342
|
for parameter in operation.iter_parameters():
|
|
316
343
|
if parameter.is_required and parameter.location != "path":
|
|
317
344
|
name = parameter.name
|
|
@@ -324,7 +351,7 @@ def _iter_coverage_cases(
|
|
|
324
351
|
case.data_generation_method = DataGenerationMethod.negative
|
|
325
352
|
case.meta = _make_meta(
|
|
326
353
|
description=f"Missing `{name}` at {location}",
|
|
327
|
-
location=
|
|
354
|
+
location=None,
|
|
328
355
|
parameter=name,
|
|
329
356
|
parameter_location=location,
|
|
330
357
|
)
|
|
@@ -348,21 +375,26 @@ def _iter_coverage_cases(
|
|
|
348
375
|
|
|
349
376
|
# Helper function to create and yield a case
|
|
350
377
|
def make_case(
|
|
351
|
-
container_values: dict,
|
|
378
|
+
container_values: dict,
|
|
379
|
+
description: str,
|
|
380
|
+
_location: str,
|
|
381
|
+
_container_name: str,
|
|
382
|
+
_parameter: str | None,
|
|
383
|
+
_data_generation_method: DataGenerationMethod,
|
|
352
384
|
) -> Case:
|
|
353
|
-
if _location in ("header", "cookie", "path"):
|
|
385
|
+
if _location in ("header", "cookie", "path", "query"):
|
|
354
386
|
container = {
|
|
355
|
-
name: _stringify_value(val) if not isinstance(val, str) else val
|
|
387
|
+
name: _stringify_value(val, _location) if not isinstance(val, str) else val
|
|
356
388
|
for name, val in container_values.items()
|
|
357
389
|
}
|
|
358
390
|
else:
|
|
359
391
|
container = container_values
|
|
360
392
|
|
|
361
393
|
case = operation.make_case(**{**template, _container_name: container})
|
|
362
|
-
case.data_generation_method =
|
|
394
|
+
case.data_generation_method = _data_generation_method
|
|
363
395
|
case.meta = _make_meta(
|
|
364
396
|
description=description,
|
|
365
|
-
location=
|
|
397
|
+
location=None,
|
|
366
398
|
parameter=_parameter,
|
|
367
399
|
parameter_location=_location,
|
|
368
400
|
)
|
|
@@ -385,38 +417,66 @@ def _iter_coverage_cases(
|
|
|
385
417
|
subschema: dict[str, Any], _location: str, _container_name: str
|
|
386
418
|
) -> Generator[Case, None, None]:
|
|
387
419
|
for more in coverage.cover_schema_iter(
|
|
388
|
-
coverage.CoverageContext(data_generation_methods=[DataGenerationMethod.negative]),
|
|
420
|
+
coverage.CoverageContext(location=_location, data_generation_methods=[DataGenerationMethod.negative]),
|
|
389
421
|
subschema,
|
|
390
422
|
):
|
|
391
|
-
yield make_case(
|
|
423
|
+
yield make_case(
|
|
424
|
+
more.value,
|
|
425
|
+
more.description,
|
|
426
|
+
_location,
|
|
427
|
+
_container_name,
|
|
428
|
+
more.parameter,
|
|
429
|
+
DataGenerationMethod.negative,
|
|
430
|
+
)
|
|
392
431
|
|
|
393
432
|
# 1. Generate only required properties
|
|
394
433
|
if required and all_params != required:
|
|
395
434
|
only_required = {k: v for k, v in base_container.items() if k in required}
|
|
396
|
-
|
|
435
|
+
if DataGenerationMethod.positive in data_generation_methods:
|
|
436
|
+
yield make_case(
|
|
437
|
+
only_required,
|
|
438
|
+
"Only required properties",
|
|
439
|
+
location,
|
|
440
|
+
container_name,
|
|
441
|
+
None,
|
|
442
|
+
DataGenerationMethod.positive,
|
|
443
|
+
)
|
|
397
444
|
if DataGenerationMethod.negative in data_generation_methods:
|
|
398
445
|
subschema = _combination_schema(only_required, required, parameter_set)
|
|
399
|
-
|
|
446
|
+
for case in _yield_negative(subschema, location, container_name):
|
|
447
|
+
# Already generated in one of the blocks above
|
|
448
|
+
if location != "path" and not case.meta.description.startswith("Missing required property"):
|
|
449
|
+
yield case
|
|
400
450
|
|
|
401
451
|
# 2. Generate combinations with required properties and one optional property
|
|
402
452
|
for opt_param in optional:
|
|
403
453
|
combo = {k: v for k, v in base_container.items() if k in required or k == opt_param}
|
|
404
|
-
if combo != base_container:
|
|
454
|
+
if combo != base_container and DataGenerationMethod.positive in data_generation_methods:
|
|
405
455
|
yield make_case(
|
|
406
|
-
combo,
|
|
456
|
+
combo,
|
|
457
|
+
f"All required properties and optional '{opt_param}'",
|
|
458
|
+
location,
|
|
459
|
+
container_name,
|
|
460
|
+
None,
|
|
461
|
+
DataGenerationMethod.positive,
|
|
407
462
|
)
|
|
408
463
|
if DataGenerationMethod.negative in data_generation_methods:
|
|
409
464
|
subschema = _combination_schema(combo, required, parameter_set)
|
|
410
465
|
yield from _yield_negative(subschema, location, container_name)
|
|
411
466
|
|
|
412
467
|
# 3. Generate one combination for each size from 2 to N-1 of optional parameters
|
|
413
|
-
if len(optional) > 1:
|
|
468
|
+
if len(optional) > 1 and DataGenerationMethod.positive in data_generation_methods:
|
|
414
469
|
for size in range(2, len(optional)):
|
|
415
470
|
for combination in combinations(optional, size):
|
|
416
471
|
combo = {k: v for k, v in base_container.items() if k in required or k in combination}
|
|
417
472
|
if combo != base_container:
|
|
418
473
|
yield make_case(
|
|
419
|
-
combo,
|
|
474
|
+
combo,
|
|
475
|
+
f"All required and {size} optional properties",
|
|
476
|
+
location,
|
|
477
|
+
container_name,
|
|
478
|
+
None,
|
|
479
|
+
DataGenerationMethod.positive,
|
|
420
480
|
)
|
|
421
481
|
|
|
422
482
|
|
|
@@ -323,6 +323,15 @@ REPORT_TO_SERVICE = ReportToService()
|
|
|
323
323
|
multiple=True,
|
|
324
324
|
metavar="",
|
|
325
325
|
)
|
|
326
|
+
@grouped_option(
|
|
327
|
+
"--experimental-missing-required-header-allowed-statuses",
|
|
328
|
+
"missing_required_header_allowed_statuses",
|
|
329
|
+
help="Comma-separated list of status codes expected for test cases with a missing required header",
|
|
330
|
+
type=CsvListChoice(),
|
|
331
|
+
callback=callbacks.convert_status_codes,
|
|
332
|
+
metavar="",
|
|
333
|
+
envvar="SCHEMATHESIS_EXPERIMENTAL_MISSING_REQUIRED_HEADER_ALLOWED_STATUSES",
|
|
334
|
+
)
|
|
326
335
|
@grouped_option(
|
|
327
336
|
"--experimental-positive-data-acceptance-allowed-statuses",
|
|
328
337
|
"positive_data_acceptance_allowed_statuses",
|
|
@@ -855,6 +864,7 @@ def run(
|
|
|
855
864
|
set_cookie: dict[str, str],
|
|
856
865
|
set_path: dict[str, str],
|
|
857
866
|
experiments: list,
|
|
867
|
+
missing_required_header_allowed_statuses: list[str],
|
|
858
868
|
positive_data_acceptance_allowed_statuses: list[str],
|
|
859
869
|
negative_data_rejection_allowed_statuses: list[str],
|
|
860
870
|
checks: Iterable[str] = DEFAULT_CHECKS_NAMES,
|
|
@@ -1172,6 +1182,11 @@ def run(
|
|
|
1172
1182
|
selected_checks += (positive_data_acceptance,)
|
|
1173
1183
|
if positive_data_acceptance_allowed_statuses:
|
|
1174
1184
|
checks_config.positive_data_acceptance.allowed_statuses = positive_data_acceptance_allowed_statuses
|
|
1185
|
+
if missing_required_header_allowed_statuses:
|
|
1186
|
+
from ..specs.openapi.checks import missing_required_header
|
|
1187
|
+
|
|
1188
|
+
selected_checks += (missing_required_header,)
|
|
1189
|
+
checks_config.missing_required_header.allowed_statuses = missing_required_header_allowed_statuses
|
|
1175
1190
|
if negative_data_rejection_allowed_statuses:
|
|
1176
1191
|
checks_config.negative_data_rejection.allowed_statuses = negative_data_rejection_allowed_statuses
|
|
1177
1192
|
|
|
@@ -21,6 +21,7 @@ from ..internal.copy import fast_deepcopy
|
|
|
21
21
|
from ..specs.openapi.converter import update_pattern_in_schema
|
|
22
22
|
from ..specs.openapi.formats import STRING_FORMATS, get_default_format_strategies
|
|
23
23
|
from ..specs.openapi.patterns import update_quantifier
|
|
24
|
+
from ..transports.headers import has_invalid_characters, is_latin_1_encodable
|
|
24
25
|
from ._hypothesis import get_single_example
|
|
25
26
|
from ._methods import DataGenerationMethod
|
|
26
27
|
|
|
@@ -103,42 +104,55 @@ def cached_draw(strategy: st.SearchStrategy) -> Any:
|
|
|
103
104
|
@dataclass
|
|
104
105
|
class CoverageContext:
|
|
105
106
|
data_generation_methods: list[DataGenerationMethod]
|
|
106
|
-
|
|
107
|
+
location: str
|
|
108
|
+
path: list[str | int]
|
|
107
109
|
|
|
108
|
-
__slots__ = ("data_generation_methods", "
|
|
110
|
+
__slots__ = ("location", "data_generation_methods", "path")
|
|
109
111
|
|
|
110
112
|
def __init__(
|
|
111
113
|
self,
|
|
114
|
+
*,
|
|
115
|
+
location: str,
|
|
112
116
|
data_generation_methods: list[DataGenerationMethod] | None = None,
|
|
113
|
-
|
|
117
|
+
path: list[str | int] | None = None,
|
|
114
118
|
) -> None:
|
|
119
|
+
self.location = location
|
|
115
120
|
self.data_generation_methods = (
|
|
116
121
|
data_generation_methods if data_generation_methods is not None else DataGenerationMethod.all()
|
|
117
122
|
)
|
|
118
|
-
self.
|
|
123
|
+
self.path = path or []
|
|
119
124
|
|
|
120
125
|
@contextmanager
|
|
121
|
-
def
|
|
122
|
-
self.
|
|
126
|
+
def at(self, key: str | int) -> Generator[None, None, None]:
|
|
127
|
+
self.path.append(key)
|
|
123
128
|
try:
|
|
124
129
|
yield
|
|
125
130
|
finally:
|
|
126
|
-
self.
|
|
131
|
+
self.path.pop()
|
|
127
132
|
|
|
128
133
|
@property
|
|
129
|
-
def
|
|
130
|
-
return "/" + "/".join(str(key) for key in self.
|
|
134
|
+
def current_path(self) -> str:
|
|
135
|
+
return "/" + "/".join(str(key) for key in self.path)
|
|
131
136
|
|
|
132
137
|
def with_positive(self) -> CoverageContext:
|
|
133
138
|
return CoverageContext(
|
|
134
|
-
|
|
139
|
+
location=self.location,
|
|
140
|
+
data_generation_methods=[DataGenerationMethod.positive],
|
|
141
|
+
path=self.path,
|
|
135
142
|
)
|
|
136
143
|
|
|
137
144
|
def with_negative(self) -> CoverageContext:
|
|
138
145
|
return CoverageContext(
|
|
139
|
-
|
|
146
|
+
location=self.location,
|
|
147
|
+
data_generation_methods=[DataGenerationMethod.negative],
|
|
148
|
+
path=self.path,
|
|
140
149
|
)
|
|
141
150
|
|
|
151
|
+
def is_valid_for_location(self, value: Any) -> bool:
|
|
152
|
+
if self.location in ("header", "cookie") and isinstance(value, str):
|
|
153
|
+
return is_latin_1_encodable(value) and not has_invalid_characters("", value)
|
|
154
|
+
return True
|
|
155
|
+
|
|
142
156
|
def generate_from(self, strategy: st.SearchStrategy) -> Any:
|
|
143
157
|
return cached_draw(strategy)
|
|
144
158
|
|
|
@@ -322,11 +336,11 @@ def cover_schema_iter(
|
|
|
322
336
|
if DataGenerationMethod.negative in ctx.data_generation_methods:
|
|
323
337
|
template = None
|
|
324
338
|
for key, value in schema.items():
|
|
325
|
-
with _ignore_unfixable(), ctx.
|
|
339
|
+
with _ignore_unfixable(), ctx.at(key):
|
|
326
340
|
if key == "enum":
|
|
327
|
-
yield from _negative_enum(ctx, value)
|
|
341
|
+
yield from _negative_enum(ctx, value, seen)
|
|
328
342
|
elif key == "const":
|
|
329
|
-
for value_ in _negative_enum(ctx, [value]):
|
|
343
|
+
for value_ in _negative_enum(ctx, [value], seen):
|
|
330
344
|
k = _to_hashable_key(value_.value)
|
|
331
345
|
if k not in seen:
|
|
332
346
|
yield value_
|
|
@@ -350,21 +364,17 @@ def cover_schema_iter(
|
|
|
350
364
|
elif key == "maximum":
|
|
351
365
|
next = value + 1
|
|
352
366
|
if next not in seen:
|
|
353
|
-
yield NegativeValue(
|
|
354
|
-
next, description="Value greater than maximum", location=ctx.current_location
|
|
355
|
-
)
|
|
367
|
+
yield NegativeValue(next, description="Value greater than maximum", location=ctx.current_path)
|
|
356
368
|
seen.add(next)
|
|
357
369
|
elif key == "minimum":
|
|
358
370
|
next = value - 1
|
|
359
371
|
if next not in seen:
|
|
360
|
-
yield NegativeValue(
|
|
361
|
-
next, description="Value smaller than minimum", location=ctx.current_location
|
|
362
|
-
)
|
|
372
|
+
yield NegativeValue(next, description="Value smaller than minimum", location=ctx.current_path)
|
|
363
373
|
seen.add(next)
|
|
364
374
|
elif key == "exclusiveMaximum" or key == "exclusiveMinimum" and value not in seen:
|
|
365
375
|
verb = "greater" if key == "exclusiveMaximum" else "smaller"
|
|
366
376
|
limit = "maximum" if key == "exclusiveMaximum" else "minimum"
|
|
367
|
-
yield NegativeValue(value, description=f"Value {verb} than {limit}", location=ctx.
|
|
377
|
+
yield NegativeValue(value, description=f"Value {verb} than {limit}", location=ctx.current_path)
|
|
368
378
|
seen.add(value)
|
|
369
379
|
elif key == "multipleOf":
|
|
370
380
|
for value_ in _negative_multiple_of(ctx, schema, value):
|
|
@@ -391,7 +401,7 @@ def cover_schema_iter(
|
|
|
391
401
|
k = _to_hashable_key(value)
|
|
392
402
|
if k not in seen:
|
|
393
403
|
yield NegativeValue(
|
|
394
|
-
value, description="String smaller than minLength", location=ctx.
|
|
404
|
+
value, description="String smaller than minLength", location=ctx.current_path
|
|
395
405
|
)
|
|
396
406
|
seen.add(k)
|
|
397
407
|
elif key == "maxLength" and value < BUFFER_SIZE:
|
|
@@ -413,7 +423,7 @@ def cover_schema_iter(
|
|
|
413
423
|
k = _to_hashable_key(value)
|
|
414
424
|
if k not in seen:
|
|
415
425
|
yield NegativeValue(
|
|
416
|
-
value, description="String larger than maxLength", location=ctx.
|
|
426
|
+
value, description="String larger than maxLength", location=ctx.current_path
|
|
417
427
|
)
|
|
418
428
|
seen.add(k)
|
|
419
429
|
except (InvalidArgument, Unsatisfiable):
|
|
@@ -428,12 +438,12 @@ def cover_schema_iter(
|
|
|
428
438
|
yield NegativeValue(
|
|
429
439
|
{**template, UNKNOWN_PROPERTY_KEY: UNKNOWN_PROPERTY_VALUE},
|
|
430
440
|
description="Object with unexpected properties",
|
|
431
|
-
location=ctx.
|
|
441
|
+
location=ctx.current_path,
|
|
432
442
|
)
|
|
433
443
|
elif key == "allOf":
|
|
434
444
|
nctx = ctx.with_negative()
|
|
435
445
|
if len(value) == 1:
|
|
436
|
-
with nctx.
|
|
446
|
+
with nctx.at(0):
|
|
437
447
|
yield from cover_schema_iter(nctx, value[0], seen)
|
|
438
448
|
else:
|
|
439
449
|
with _ignore_unfixable():
|
|
@@ -443,7 +453,7 @@ def cover_schema_iter(
|
|
|
443
453
|
nctx = ctx.with_negative()
|
|
444
454
|
# NOTE: Other sub-schemas are not filtered out
|
|
445
455
|
for idx, sub_schema in enumerate(value):
|
|
446
|
-
with nctx.
|
|
456
|
+
with nctx.at(idx):
|
|
447
457
|
yield from cover_schema_iter(nctx, sub_schema, seen)
|
|
448
458
|
|
|
449
459
|
|
|
@@ -487,15 +497,17 @@ def _positive_string(ctx: CoverageContext, schema: dict) -> Generator[GeneratedV
|
|
|
487
497
|
examples = schema.get("examples")
|
|
488
498
|
default = schema.get("default")
|
|
489
499
|
if example or examples or default:
|
|
490
|
-
if example:
|
|
500
|
+
if example and ctx.is_valid_for_location(example):
|
|
491
501
|
yield PositiveValue(example, description="Example value")
|
|
492
502
|
if examples:
|
|
493
503
|
for example in examples:
|
|
494
|
-
|
|
504
|
+
if ctx.is_valid_for_location(example):
|
|
505
|
+
yield PositiveValue(example, description="Example value")
|
|
495
506
|
if (
|
|
496
507
|
default
|
|
497
508
|
and not (example is not None and default == example)
|
|
498
509
|
and not (examples is not None and any(default == ex for ex in examples))
|
|
510
|
+
and ctx.is_valid_for_location(default)
|
|
499
511
|
):
|
|
500
512
|
yield PositiveValue(default, description="Default value")
|
|
501
513
|
elif not min_length and not max_length:
|
|
@@ -744,13 +756,20 @@ def select_combinations(optional: list[str]) -> Iterator[tuple[str, ...]]:
|
|
|
744
756
|
yield next(combinations(optional, size))
|
|
745
757
|
|
|
746
758
|
|
|
747
|
-
def _negative_enum(
|
|
759
|
+
def _negative_enum(
|
|
760
|
+
ctx: CoverageContext, value: list, seen: set[Any | tuple[type, str]]
|
|
761
|
+
) -> Generator[GeneratedValue, None, None]:
|
|
748
762
|
def is_not_in_value(x: Any) -> bool:
|
|
749
|
-
|
|
763
|
+
if x in value:
|
|
764
|
+
return False
|
|
765
|
+
_hashed = _to_hashable_key(x)
|
|
766
|
+
return _hashed not in seen
|
|
750
767
|
|
|
751
|
-
strategy =
|
|
752
|
-
|
|
753
|
-
yield NegativeValue(
|
|
768
|
+
strategy = (st.none() | st.booleans() | NUMERIC_STRATEGY | st.text()).filter(is_not_in_value)
|
|
769
|
+
value = ctx.generate_from(strategy)
|
|
770
|
+
yield NegativeValue(value, description="Invalid enum value", location=ctx.current_path)
|
|
771
|
+
hashed = _to_hashable_key(value)
|
|
772
|
+
seen.add(hashed)
|
|
754
773
|
|
|
755
774
|
|
|
756
775
|
def _negative_properties(
|
|
@@ -758,12 +777,12 @@ def _negative_properties(
|
|
|
758
777
|
) -> Generator[GeneratedValue, None, None]:
|
|
759
778
|
nctx = ctx.with_negative()
|
|
760
779
|
for key, sub_schema in properties.items():
|
|
761
|
-
with nctx.
|
|
780
|
+
with nctx.at(key):
|
|
762
781
|
for value in cover_schema_iter(nctx, sub_schema):
|
|
763
782
|
yield NegativeValue(
|
|
764
783
|
{**template, key: value.value},
|
|
765
784
|
description=f"Object with invalid '{key}' value: {value.description}",
|
|
766
|
-
location=nctx.
|
|
785
|
+
location=nctx.current_path,
|
|
767
786
|
parameter=key,
|
|
768
787
|
)
|
|
769
788
|
|
|
@@ -777,12 +796,12 @@ def _negative_pattern_properties(
|
|
|
777
796
|
key = ctx.generate_from(st.from_regex(pattern))
|
|
778
797
|
except re.error:
|
|
779
798
|
continue
|
|
780
|
-
with nctx.
|
|
799
|
+
with nctx.at(pattern):
|
|
781
800
|
for value in cover_schema_iter(nctx, sub_schema):
|
|
782
801
|
yield NegativeValue(
|
|
783
802
|
{**template, key: value.value},
|
|
784
803
|
description=f"Object with invalid pattern key '{key}' ('{pattern}') value: {value.description}",
|
|
785
|
-
location=nctx.
|
|
804
|
+
location=nctx.current_path,
|
|
786
805
|
)
|
|
787
806
|
|
|
788
807
|
|
|
@@ -793,7 +812,7 @@ def _negative_items(ctx: CoverageContext, schema: dict[str, Any] | bool) -> Gene
|
|
|
793
812
|
yield NegativeValue(
|
|
794
813
|
[value.value],
|
|
795
814
|
description=f"Array with invalid items: {value.description}",
|
|
796
|
-
location=nctx.
|
|
815
|
+
location=nctx.current_path,
|
|
797
816
|
)
|
|
798
817
|
|
|
799
818
|
|
|
@@ -815,7 +834,7 @@ def _negative_pattern(
|
|
|
815
834
|
)
|
|
816
835
|
),
|
|
817
836
|
description=f"Value not matching the '{pattern}' pattern",
|
|
818
|
-
location=ctx.
|
|
837
|
+
location=ctx.current_path,
|
|
819
838
|
)
|
|
820
839
|
|
|
821
840
|
|
|
@@ -829,13 +848,13 @@ def _negative_multiple_of(
|
|
|
829
848
|
yield NegativeValue(
|
|
830
849
|
ctx.generate_from_schema(_with_negated_key(schema, "multipleOf", multiple_of)),
|
|
831
850
|
description=f"Non-multiple of {multiple_of}",
|
|
832
|
-
location=ctx.
|
|
851
|
+
location=ctx.current_path,
|
|
833
852
|
)
|
|
834
853
|
|
|
835
854
|
|
|
836
855
|
def _negative_unique_items(ctx: CoverageContext, schema: dict) -> Generator[GeneratedValue, None, None]:
|
|
837
856
|
unique = ctx.generate_from_schema({**schema, "type": "array", "minItems": 1, "maxItems": 1})
|
|
838
|
-
yield NegativeValue(unique + unique, description="Non-unique items", location=ctx.
|
|
857
|
+
yield NegativeValue(unique + unique, description="Non-unique items", location=ctx.current_path)
|
|
839
858
|
|
|
840
859
|
|
|
841
860
|
def _negative_required(
|
|
@@ -845,7 +864,8 @@ def _negative_required(
|
|
|
845
864
|
yield NegativeValue(
|
|
846
865
|
{k: v for k, v in template.items() if k != key},
|
|
847
866
|
description=f"Missing required property: {key}",
|
|
848
|
-
location=ctx.
|
|
867
|
+
location=ctx.current_path,
|
|
868
|
+
parameter=key,
|
|
849
869
|
)
|
|
850
870
|
|
|
851
871
|
|
|
@@ -870,7 +890,7 @@ def _negative_format(ctx: CoverageContext, schema: dict, format: str) -> Generat
|
|
|
870
890
|
yield NegativeValue(
|
|
871
891
|
ctx.generate_from(strategy),
|
|
872
892
|
description=f"Value not matching the '{format}' format",
|
|
873
|
-
location=ctx.
|
|
893
|
+
location=ctx.current_path,
|
|
874
894
|
)
|
|
875
895
|
|
|
876
896
|
|
|
@@ -893,7 +913,7 @@ def _negative_type(ctx: CoverageContext, seen: set, ty: str | list[str]) -> Gene
|
|
|
893
913
|
hashed = _to_hashable_key(value)
|
|
894
914
|
if hashed in seen:
|
|
895
915
|
continue
|
|
896
|
-
yield NegativeValue(value, description="Incorrect type", location=ctx.
|
|
916
|
+
yield NegativeValue(value, description="Incorrect type", location=ctx.current_path)
|
|
897
917
|
seen.add(hashed)
|
|
898
918
|
|
|
899
919
|
|
|
@@ -29,8 +29,14 @@ class PositiveDataAcceptanceConfig:
|
|
|
29
29
|
allowed_statuses: list[str] = field(default_factory=lambda: ["2xx", "401", "403", "404"])
|
|
30
30
|
|
|
31
31
|
|
|
32
|
+
@dataclass
|
|
33
|
+
class MissingRequiredHeaderConfig:
|
|
34
|
+
allowed_statuses: list[str] = field(default_factory=lambda: ["406"])
|
|
35
|
+
|
|
36
|
+
|
|
32
37
|
@dataclass
|
|
33
38
|
class CheckConfig:
|
|
39
|
+
missing_required_header: MissingRequiredHeaderConfig = field(default_factory=MissingRequiredHeaderConfig)
|
|
34
40
|
negative_data_rejection: NegativeDataRejectionConfig = field(default_factory=NegativeDataRejectionConfig)
|
|
35
41
|
positive_data_acceptance: PositiveDataAcceptanceConfig = field(default_factory=PositiveDataAcceptanceConfig)
|
|
36
42
|
|