schemathesis 3.28.1__tar.gz → 3.29.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {schemathesis-3.28.1 → schemathesis-3.29.0}/.github/workflows/build.yml +4 -4
- {schemathesis-3.28.1 → schemathesis-3.29.0}/.github/workflows/codeql-analysis.yml +4 -4
- {schemathesis-3.28.1 → schemathesis-3.29.0}/.github/workflows/codspeed.yml +1 -1
- {schemathesis-3.28.1 → schemathesis-3.29.0}/.github/workflows/commit.yml +1 -1
- {schemathesis-3.28.1 → schemathesis-3.29.0}/.github/workflows/example-build.yml +1 -1
- {schemathesis-3.28.1 → schemathesis-3.29.0}/.github/workflows/master_update.yml +1 -1
- {schemathesis-3.28.1 → schemathesis-3.29.0}/.github/workflows/release.yml +2 -2
- {schemathesis-3.28.1 → schemathesis-3.29.0}/.github/workflows/test-corpus.yml +1 -1
- {schemathesis-3.28.1 → schemathesis-3.29.0}/.github/workflows/test-hypothesis.yml +1 -1
- {schemathesis-3.28.1 → schemathesis-3.29.0}/.github/workflows/update-corpus.yml +1 -1
- {schemathesis-3.28.1 → schemathesis-3.29.0}/.github/workflows/update-pre-commit.yml +1 -1
- {schemathesis-3.28.1 → schemathesis-3.29.0}/.pre-commit-config.yaml +2 -2
- {schemathesis-3.28.1 → schemathesis-3.29.0}/PKG-INFO +6 -2
- {schemathesis-3.28.1 → schemathesis-3.29.0}/README.md +4 -0
- schemathesis-3.29.0/benches/references.py +49 -0
- schemathesis-3.29.0/benches/schema.py +224 -0
- schemathesis-3.29.0/corpus/data/graphql.tar.gz +0 -0
- schemathesis-3.29.0/corpus/data/openapi-3.0.tar.gz +0 -0
- schemathesis-3.29.0/corpus/data/openapi-3.1.tar.gz +0 -0
- schemathesis-3.29.0/corpus/data/swagger-2.0.tar.gz +0 -0
- schemathesis-3.29.0/corpus/tools.py +160 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/docs/changelog.rst +26 -1
- {schemathesis-3.28.1 → schemathesis-3.29.0}/example/requirements-pytest.txt +1 -1
- {schemathesis-3.28.1 → schemathesis-3.29.0}/pyproject.toml +2 -2
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/exceptions.py +4 -3
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/models.py +2 -10
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/runner/impl/core.py +1 -1
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/schemas.py +19 -33
- schemathesis-3.29.0/src/schemathesis/specs/graphql/_cache.py +26 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/specs/graphql/schemas.py +79 -46
- schemathesis-3.29.0/src/schemathesis/specs/openapi/_cache.py +123 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/_hypothesis.py +2 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/links.py +19 -10
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/references.py +17 -6
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/schemas.py +227 -156
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/security.py +3 -5
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/stateful/links.py +5 -5
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/transports/content_types.py +2 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/filters/test_matching.py +1 -1
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/loaders/test_app.py +2 -1
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/runner/test_checks.py +1 -1
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/specs/graphql/test_basic.py +0 -2
- schemathesis-3.29.0/test/specs/openapi/randomized/__init__.py +0 -0
- schemathesis-3.29.0/test/specs/openapi/randomized/factory.py +24 -0
- schemathesis-3.29.0/test/specs/openapi/randomized/test_randomized.py +27 -0
- schemathesis-3.29.0/test/specs/openapi/randomized/types.py +28 -0
- schemathesis-3.29.0/test/specs/openapi/randomized/v2.py +202 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/specs/openapi/test_hypothesis.py +26 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/specs/openapi/test_links.py +8 -6
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/specs/openapi/test_schemas.py +37 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/test_asgi.py +33 -1
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/test_dereferencing.py +3 -4
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/test_direct_access.py +2 -11
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/test_hypothesis.py +5 -6
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/test_models.py +27 -16
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/test_parametrization.py +43 -2
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/test_recoverable_errors.py +1 -1
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/test_schemas.py +58 -9
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/test_stateful.py +21 -21
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/utils.py +2 -1
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test-corpus/test_corpus.py +75 -77
- schemathesis-3.28.1/benches/references.py +0 -43
- {schemathesis-3.28.1 → schemathesis-3.29.0}/.dockerignore +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/.github/FUNDING.yml +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/.github/dependabot.yml +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/.github/workflows/example-no-build.yml +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/.gitignore +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/.gitmodules +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/.readthedocs.yml +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/.relint.yml +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/.rstcheck.cfg +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/.yamllint +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/CITATION.cff +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/CODE_OF_CONDUCT.md +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/CONTRIBUTING.rst +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/Dockerfile +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/Dockerfile.bookworm +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/LICENSE +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/benches/cli.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/changelog.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/codecov.yml +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/docs/Makefile +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/docs/additional-content.rst +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/docs/api.rst +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/docs/auth.rst +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/docs/cli.rst +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/docs/compatibility.rst +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/docs/conf.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/docs/continuous_integration.rst +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/docs/contrib.rst +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/docs/data-generation.rst +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/docs/examples.rst +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/docs/experimental.rst +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/docs/extending.rst +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/docs/faq.rst +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/docs/getting-started.rst +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/docs/graphql.rst +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/docs/index.rst +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/docs/python.rst +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/docs/recipes.rst +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/docs/requirements.txt +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/docs/sanitizing.rst +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/docs/service.rst +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/docs/stateful.rst +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/docs/targeted.rst +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/example/Dockerfile +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/example/README.md +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/example/app.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/example/compose.yml +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/example/openapi.json +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/example/requirements-app.in +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/example/requirements-app.txt +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/example/requirements-pytest.in +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/example/tests/__init__.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/example/tests/conftest.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/example/tests/extensions.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/example/tests/test_app.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/img/demo.gif +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/img/service_github_report.png +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/mypy.ini +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/__init__.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/_compat.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/_dependency_versions.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/_hypothesis.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/_lazy_import.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/_override.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/_rate_limiter.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/_xml.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/auths.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/checks.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/cli/__init__.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/cli/__main__.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/cli/callbacks.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/cli/cassettes.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/cli/constants.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/cli/context.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/cli/debug.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/cli/handlers.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/cli/junitxml.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/cli/options.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/cli/output/__init__.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/cli/output/default.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/cli/output/short.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/cli/reporting.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/cli/sanitization.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/code_samples.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/constants.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/contrib/__init__.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/contrib/openapi/__init__.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/contrib/openapi/fill_missing_examples.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/contrib/openapi/formats/__init__.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/contrib/openapi/formats/uuid.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/contrib/unique_data.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/experimental/__init__.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/extra/__init__.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/extra/_aiohttp.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/extra/_flask.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/extra/_server.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/extra/pytest_plugin.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/failures.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/filters.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/fixups/__init__.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/fixups/fast_api.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/fixups/utf8_bom.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/generation/__init__.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/graphql.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/hooks.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/internal/__init__.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/internal/copy.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/internal/datetime.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/internal/deprecation.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/internal/jsonschema.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/internal/result.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/internal/transformation.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/internal/validation.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/lazy.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/loaders.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/parameters.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/py.typed +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/runner/__init__.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/runner/events.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/runner/impl/__init__.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/runner/impl/solo.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/runner/impl/threadpool.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/runner/probes.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/runner/serialization.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/sanitization.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/serializers.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/service/__init__.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/service/auth.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/service/ci.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/service/client.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/service/constants.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/service/events.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/service/extensions.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/service/hosts.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/service/metadata.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/service/models.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/service/report.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/service/serialization.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/service/usage.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/specs/__init__.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/specs/graphql/__init__.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/specs/graphql/loaders.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/specs/graphql/nodes.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/specs/graphql/scalars.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/specs/graphql/validation.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/__init__.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/checks.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/constants.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/converter.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/definitions.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/examples.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/expressions/__init__.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/expressions/context.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/expressions/errors.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/expressions/lexer.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/expressions/nodes.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/expressions/parser.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/filters.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/formats.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/loaders.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/media_types.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/negative/__init__.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/negative/mutations.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/negative/types.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/negative/utils.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/parameters.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/serialization.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/stateful/__init__.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/utils.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/validation.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/stateful/__init__.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/stateful/state_machine.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/targets.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/throttling.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/transports/__init__.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/transports/auth.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/transports/headers.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/transports/responses.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/types.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/src/schemathesis/utils.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/__init__.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/__snapshots__/test_hypothesis/test_health_check_failed_large_base_example.raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/__snapshots__/test_recoverable_errors/test_in_cli[1].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/__snapshots__/test_recoverable_errors/test_in_cli[2].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/__snapshots__/test_serialization/test_in_cli[Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/apps/__init__.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/apps/_graphql/__init__.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/apps/_graphql/_fastapi/__init__.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/apps/_graphql/_fastapi/app.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/apps/_graphql/_flask/__init__.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/apps/_graphql/_flask/app.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/apps/_graphql/schema.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/apps/openapi/__init__.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/apps/openapi/_aiohttp/__init__.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/apps/openapi/_aiohttp/app.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/apps/openapi/_aiohttp/handlers.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/apps/openapi/_fastapi/__init__.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/apps/openapi/_fastapi/app.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/apps/openapi/_flask/__init__.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/apps/openapi/_flask/app.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/apps/openapi/schema.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/auth/__init__.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/auth/__snapshots__/test_cli/test_conditional[Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/auth/__snapshots__/test_cli/test_custom_auth[Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/auth/__snapshots__/test_cli/test_explicit_auth_precedence[Open API 3.0-args0-Basic dXNlcjpwYXNz].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/auth/__snapshots__/test_cli/test_explicit_auth_precedence[Open API 3.0-args1-Bearer EXPLICIT].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/auth/__snapshots__/test_cli/test_multiple_auth_mechanisms_with_explicit_auth.raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/auth/__snapshots__/test_cli/test_multiple_threads[Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/auth/__snapshots__/test_cli/test_requests_auth[Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/auth/conftest.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/auth/test_cli.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/auth/test_provider.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/auth/test_pytest.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__init__.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_cassettes/test_forbid_preserve_exact_bytes_without_cassette_path[Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_cassettes/test_forbid_simultaneous_use_of_deprecated_and_new_options[Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_add_case_output[Open API 2.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_add_case_output[Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_auth_and_authorization_header_are_disallowed[Open API 3.0-Authorization].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_auth_and_authorization_header_are_disallowed[Open API 3.0-authorization].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 2.0---auth='testwrong'].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 2.0--H Authorization Basic J3Rlc3Q6d3Jvbmcn].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 3.0---auth='testwrong'].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 3.0--H Authorization Basic J3Rlc3Q6d3Jvbmcn].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_binary_payload.raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_certificate_only_key.raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_chunked_encoding_error[Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 2.0-1].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 2.0-2].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 3.0-1].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 3.0-2].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 2.0-1].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 2.0-2].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 3.0-1].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 3.0-2].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_commands_help.raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_complex_urlencoded_example.raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 2.0-1].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 2.0-2].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 3.0-1].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 3.0-2].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 2.0-1].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 2.0-2].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 3.0-1].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 3.0-2].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_empty_schema_file[args0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_empty_schema_file[args1].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_explicit_example_failure_output.raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_explicit_headers_in_output_on_errors[Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_force_color_nocolor[Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_get_request_with_body[Open API 2.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_get_request_with_body[Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_graphql_asgi.raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_graphql_url[foo-args0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_graphql_url[foo-args1].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_graphql_url[graphql-args0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_graphql_url[graphql-args1].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_group_errors.raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_hooks_module_not_found.raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_hooks_with_inner_import_error.raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_hypothesis_database_with_derandomize[Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 2.0-1].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 2.0-2].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 3.0-1].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 3.0-2].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 2.0-1].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 2.0-2].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 3.0-1].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 3.0-2].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[real-Open API 2.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[real-Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[wsgi-Open API 2.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[wsgi-Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_invalid_schema_with_disabled_validation[3.0.2].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_invalid_schema_with_disabled_validation[3.1.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_invalid_yaml.raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_long_payload.raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_malformed_json_deduplication[real-Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_malformed_json_deduplication[wsgi-Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 2.0-1].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 2.0-2].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 3.0-1].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 3.0-2].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[cookie-None].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[cookie-http127.0.0.1apiv2].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[header-None].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[header-http127.0.0.1apiv2].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[path-None].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[path-http127.0.0.1apiv2].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[query-None].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[query-http127.0.0.1apiv2].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_multiple_errors.raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_multiple_failures_different_check[Open API 2.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_multiple_failures_different_check[Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_multiple_failures_in_single_check.raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_multiple_failures_single_check[Open API 2.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_multiple_failures_single_check[Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_nested_binary_in_yaml.raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_no_schema_in_media_type[Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_no_useless_traceback.raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_null_byte_in_header_probe.raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_openapi_links[real-Open API 2.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_openapi_links[real-Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_openapi_links[wsgi-Open API 2.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_openapi_links[wsgi-Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_openapi_links_disabled[Open API 2.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_openapi_links_disabled[Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 2.0-1].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 2.0-5].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 3.0-1].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 3.0-5].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 2.0-1].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 2.0-5].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 3.0-1].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 3.0-5].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_proxy_error[Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_read_content_timeout[Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_recursive_reference_error_message.raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError(Custom check failed!)-Open API 2.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError(Custom check failed!)-Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError-Open API 2.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError-Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_remote_disconnected_error[Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[real-Open API 2.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[real-Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[wsgi-Open API 2.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[wsgi-Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[real-Open API 2.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[real-Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[wsgi-Open API 2.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[wsgi-Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args10].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args11].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args12].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args13].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args14].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args15].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args16].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args17].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args18].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args19].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args1].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args20].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args21].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args22].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args23].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args24].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args25].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args26].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args27].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args28].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args29].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args2].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args30].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args31].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args32].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args33].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args34].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args35].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args36].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args3].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args4].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args5].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args6].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args7].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args8].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args9].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_schema_not_available[1].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_schema_not_available[2].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_schema_not_available_wsgi.raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 2.0-1].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 2.0-2].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 3.0-1].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 3.0-2].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 2.0-1].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 2.0-2].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 3.0-1].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 3.0-2].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_unknown_schema_error[Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_unresolvable_links[Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_unresolvable_reference_with_disabled_validation.raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 2.0-1].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 2.0-2].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 3.0-1].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 3.0-2].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 2.0-1].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 2.0-2].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 3.0-1].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 3.0-2].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_unsupported_regex.raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_useful_traceback[Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_wait_for_schema_not_enough.raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_yaml_parsing_of_floats[Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_hooks/test_after_call[real-Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/__snapshots__/test_hooks/test_after_call[wsgi-Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/cert.pem +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/conftest.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/output/__init__.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/output/test_default.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/test_asgi.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/test_callbacks.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/test_cassettes.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/test_checks.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/test_commands.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/test_crashes.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/test_hooks.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/test_junitxml.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/test_options.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/cli/test_targeted.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/code_samples/__snapshots__/test_python/test_cli_output[Open API 2.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/code_samples/__snapshots__/test_python/test_cli_output[Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/code_samples/conftest.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/code_samples/test_curl.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/code_samples/test_python.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/conftest.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/contrib/__snapshots__/test_unique_data/test_cli[None].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema1].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema2].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/contrib/__snapshots__/test_unique_data/test_explicit_headers[1].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/contrib/__snapshots__/test_unique_data/test_explicit_headers[2].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/contrib/openapi/__snapshots__/test_fill_missing_examples/test_fills_missing_examples.raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/contrib/openapi/formats/test_uuid.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/contrib/openapi/test_fill_missing_examples.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/contrib/test_install.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/contrib/test_unique_data.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/data/petstore_v2.yaml +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/data/petstore_v3.yaml +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/data/simple_openapi.yaml +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/data/simple_swagger.yaml +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/experimental/__snapshots__/test_experiments/test_not_enabled.raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/experimental/conftest.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/experimental/test_experiments.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/experimental/test_openapi_3_1.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/extra/__init__.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/extra/test_aiohttp.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/hooks/test_filter_operations.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/hooks/test_hooks.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/loaders/conftest.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/loaders/test_common.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/loaders/test_graphql.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/loaders/test_openapi.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/loaders/test_yaml.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/runner/test_events.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/runner/test_probes.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/runner/test_runner.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/service/__init__.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/service/__snapshots__/test_cli/test_client_error_on_project_details[Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/service/__snapshots__/test_cli/test_client_error_on_upload[Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/service/__snapshots__/test_cli/test_error_in_another_handler[Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/service/__snapshots__/test_cli/test_github_suggestion[Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/service/__snapshots__/test_cli/test_not_authenticated_with_name.raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/service/__snapshots__/test_cli/test_two_names.raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/service/__snapshots__/test_cli/test_unauthorized[Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/service/__snapshots__/test_cli/test_unknown_error_on_upload[Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/service/__snapshots__/test_cli/test_upload_failure[Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/service/__snapshots__/test_cli/test_upload_success[Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/service/__snapshots__/test_extensions/test_connection_error[Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/service/__snapshots__/test_extensions/test_custom_format.raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/service/__snapshots__/test_extensions/test_dry_run[Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/service/__snapshots__/test_extensions/test_forbidden[Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/service/__snapshots__/test_extensions/test_graphql_scalars.raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/service/__snapshots__/test_extensions/test_internal_server_error[Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/service/__snapshots__/test_extensions/test_invalid_extension[Open API 3.0-42].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/service/__snapshots__/test_extensions/test_invalid_extension[Open API 3.0-extension1].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/service/__snapshots__/test_extensions/test_invalid_payload[Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/service/__snapshots__/test_extensions/test_media_type_extension[strategy0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/service/__snapshots__/test_extensions/test_media_type_extension[strategy1].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/service/__snapshots__/test_extensions/test_oversize_text[Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/service/__snapshots__/test_extensions/test_schema_patches[patch0-expected0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/service/__snapshots__/test_extensions/test_schema_patches[patch1-expected1].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/service/__snapshots__/test_extensions/test_schema_patches[patch2-expected2].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/service/__snapshots__/test_extensions/test_unknown_extension_in_cli[Open API 3.0].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/service/conftest.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/service/test_auth.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/service/test_ci.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/service/test_cli.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/service/test_extensions.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/service/test_report.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/service/test_serialization.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/service/test_usage.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/specs/graphql/__snapshots__/test_basic/test_schema_error[ntype Query {n 123(created Int!) Int!n}-.whatever].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/specs/graphql/__snapshots__/test_basic/test_schema_error[ntype Query {n func(created Unknown!) Int!n}-.gql].raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/specs/graphql/__snapshots__/test_custom_scalars/test_built_in_scalars_in_cli.raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/specs/graphql/__snapshots__/test_custom_scalars/test_custom_scalar_in_cli.raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/specs/graphql/test_custom_scalars.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/specs/graphql/test_pytest.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/specs/openapi/__snapshots__/test_examples/test_network_error_with_flaky_generation.raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/specs/openapi/__snapshots__/test_media_types/test_explicit_example_with_custom_media_type.raw +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/specs/openapi/blank.pdf +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/specs/openapi/conftest.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/specs/openapi/parameters/test_forms.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/specs/openapi/parameters/test_non_payload.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/specs/openapi/parameters/test_simple_payloads.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/specs/openapi/test_examples.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/specs/openapi/test_expressions.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/specs/openapi/test_media_types.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/specs/openapi/test_negative.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/specs/openapi/test_parameters.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/specs/openapi/test_security.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/specs/openapi/test_serializing.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/specs/openapi/test_stateful.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/specs/openapi/test_utils.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/specs/openapi/test_validation.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/test_app.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/test_async.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/test_common_parameters.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/test_converter.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/test_errors.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/test_examples.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/test_filters.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/test_fixups.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/test_internal.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/test_lazy.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/test_package.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/test_parameters.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/test_petstore.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/test_pytest.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/test_rate_limit.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/test_required.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/test_sanitizing_output.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/test_serialization.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/test_unittest.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/test_utils.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/test_wsgi.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test/transports/test_content_types.py +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/test_server.sh +0 -0
- {schemathesis-3.28.1 → schemathesis-3.29.0}/tox.ini +0 -0
|
@@ -26,7 +26,7 @@ jobs:
|
|
|
26
26
|
name: Generic pre-commit checks
|
|
27
27
|
runs-on: ubuntu-22.04
|
|
28
28
|
steps:
|
|
29
|
-
- uses: actions/checkout@v4.1.
|
|
29
|
+
- uses: actions/checkout@v4.1.6
|
|
30
30
|
with:
|
|
31
31
|
fetch-depth: 1
|
|
32
32
|
|
|
@@ -41,7 +41,7 @@ jobs:
|
|
|
41
41
|
name: Documentation
|
|
42
42
|
runs-on: ubuntu-22.04
|
|
43
43
|
steps:
|
|
44
|
-
- uses: actions/checkout@v4.1.
|
|
44
|
+
- uses: actions/checkout@v4.1.6
|
|
45
45
|
with:
|
|
46
46
|
fetch-depth: 1
|
|
47
47
|
- uses: ammaraskar/sphinx-action@master
|
|
@@ -66,7 +66,7 @@ jobs:
|
|
|
66
66
|
name: Tests (Python ${{ matrix.python }} on ${{ matrix.os }} ${{ matrix.tox_env }})
|
|
67
67
|
runs-on: ${{ matrix.os }}
|
|
68
68
|
steps:
|
|
69
|
-
- uses: actions/checkout@v4.1.
|
|
69
|
+
- uses: actions/checkout@v4.1.6
|
|
70
70
|
with:
|
|
71
71
|
fetch-depth: 1
|
|
72
72
|
|
|
@@ -83,6 +83,6 @@ jobs:
|
|
|
83
83
|
run: python -m tox
|
|
84
84
|
|
|
85
85
|
- name: Upload coverage to Codecov
|
|
86
|
-
uses: codecov/codecov-action@v4.
|
|
86
|
+
uses: codecov/codecov-action@v4.4.1
|
|
87
87
|
with:
|
|
88
88
|
token: ${{ secrets.CODECOV_TOKEN }}
|
|
@@ -30,7 +30,7 @@ jobs:
|
|
|
30
30
|
|
|
31
31
|
steps:
|
|
32
32
|
- name: Checkout repository
|
|
33
|
-
uses: actions/checkout@v4.1.
|
|
33
|
+
uses: actions/checkout@v4.1.6
|
|
34
34
|
with:
|
|
35
35
|
# We must fetch at least the immediate parents so that if this is
|
|
36
36
|
# a pull request then we can checkout the head.
|
|
@@ -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.25.
|
|
41
|
+
uses: github/codeql-action/init@v3.25.6
|
|
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.25.
|
|
52
|
+
uses: github/codeql-action/autobuild@v3.25.6
|
|
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.25.
|
|
66
|
+
uses: github/codeql-action/analyze@v3.25.6
|
|
@@ -19,7 +19,7 @@ jobs:
|
|
|
19
19
|
tag-suffix: "-bookworm"
|
|
20
20
|
|
|
21
21
|
steps:
|
|
22
|
-
- uses: actions/checkout@v4.1.
|
|
22
|
+
- uses: actions/checkout@v4.1.6
|
|
23
23
|
|
|
24
24
|
- name: Docker meta
|
|
25
25
|
id: meta
|
|
@@ -68,7 +68,7 @@ jobs:
|
|
|
68
68
|
name: Build and publish package to pypi.org
|
|
69
69
|
runs-on: ubuntu-22.04
|
|
70
70
|
steps:
|
|
71
|
-
- uses: actions/checkout@v4.1.
|
|
71
|
+
- uses: actions/checkout@v4.1.6
|
|
72
72
|
with:
|
|
73
73
|
fetch-depth: 1
|
|
74
74
|
|
|
@@ -38,12 +38,12 @@ repos:
|
|
|
38
38
|
additional_dependencies: [types-click, types-requests, types-PyYAML]
|
|
39
39
|
|
|
40
40
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
41
|
-
rev: v0.4.
|
|
41
|
+
rev: v0.4.5
|
|
42
42
|
hooks:
|
|
43
43
|
- id: ruff-format
|
|
44
44
|
|
|
45
45
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
46
|
-
rev: v0.4.
|
|
46
|
+
rev: v0.4.5
|
|
47
47
|
hooks:
|
|
48
48
|
- id: ruff
|
|
49
49
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: schemathesis
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.29.0
|
|
4
4
|
Summary: Property-based testing framework for Open API and GraphQL based apps
|
|
5
5
|
Project-URL: Documentation, https://schemathesis.readthedocs.io/en/stable/
|
|
6
6
|
Project-URL: Changelog, https://schemathesis.readthedocs.io/en/stable/changelog.html
|
|
@@ -50,7 +50,7 @@ Requires-Dist: tomli<3.0,>=2.0.1
|
|
|
50
50
|
Requires-Dist: werkzeug<4,>=0.16.0
|
|
51
51
|
Requires-Dist: yarl<2.0,>=1.5
|
|
52
52
|
Provides-Extra: bench
|
|
53
|
-
Requires-Dist: pytest-codspeed==2.2.
|
|
53
|
+
Requires-Dist: pytest-codspeed==2.2.1; extra == 'bench'
|
|
54
54
|
Provides-Extra: cov
|
|
55
55
|
Requires-Dist: coverage-enable-subprocess; extra == 'cov'
|
|
56
56
|
Requires-Dist: coverage[toml]>=5.3; extra == 'cov'
|
|
@@ -342,6 +342,10 @@ Schemathesis is used by a number of project and companies, including direct usag
|
|
|
342
342
|
|
|
343
343
|
### Articles
|
|
344
344
|
|
|
345
|
+
- [Implementing Schemathesis at PayLead](https://medium.com/paylead/implementing-schemathesis-at-paylead-a469a5d43626) by **Jérémy Pelletier** at **PayLead**
|
|
346
|
+
- **Description**: In-depth walkthrough including custom hooks, stateful testing and CI/CD integration.
|
|
347
|
+
- **Date**: 29 May 2024
|
|
348
|
+
|
|
345
349
|
- [Auto-Generating & Validating OpenAPI Docs in Rust: A Streamlined Approach with Utoipa and Schemathesis](https://identeco.de/en/blog/generating_and_validating_openapi_docs_in_rust/) by **identeco**
|
|
346
350
|
- **Description**: Demonstrates OpenAPI doc generation with Utoipa and validating it with Schemathesis.
|
|
347
351
|
- **Date**: 01 Jun 2023
|
|
@@ -264,6 +264,10 @@ Schemathesis is used by a number of project and companies, including direct usag
|
|
|
264
264
|
|
|
265
265
|
### Articles
|
|
266
266
|
|
|
267
|
+
- [Implementing Schemathesis at PayLead](https://medium.com/paylead/implementing-schemathesis-at-paylead-a469a5d43626) by **Jérémy Pelletier** at **PayLead**
|
|
268
|
+
- **Description**: In-depth walkthrough including custom hooks, stateful testing and CI/CD integration.
|
|
269
|
+
- **Date**: 29 May 2024
|
|
270
|
+
|
|
267
271
|
- [Auto-Generating & Validating OpenAPI Docs in Rust: A Streamlined Approach with Utoipa and Schemathesis](https://identeco.de/en/blog/generating_and_validating_openapi_docs_in_rust/) by **identeco**
|
|
268
272
|
- **Description**: Demonstrates OpenAPI doc generation with Utoipa and validating it with Schemathesis.
|
|
269
273
|
- **Date**: 01 Jun 2023
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import pytest
|
|
2
|
+
|
|
3
|
+
import schemathesis
|
|
4
|
+
from schemathesis.specs.openapi.references import resolve_pointer
|
|
5
|
+
|
|
6
|
+
RECURSIVE_SCHEMA = {
|
|
7
|
+
"openapi": "3.0.0",
|
|
8
|
+
"info": {"title": "Example API", "description": "An API to test Schemathesis", "version": "1.0.0"},
|
|
9
|
+
"components": {
|
|
10
|
+
"schemas": {
|
|
11
|
+
"Node": {
|
|
12
|
+
"type": "object",
|
|
13
|
+
"required": ["child"],
|
|
14
|
+
"properties": {"child": {"$ref": "#/components/schemas/Node"}},
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"paths": {
|
|
19
|
+
"/foo": {
|
|
20
|
+
"post": {
|
|
21
|
+
"summary": "Test",
|
|
22
|
+
"description": "",
|
|
23
|
+
"requestBody": {
|
|
24
|
+
"required": True,
|
|
25
|
+
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Node"}}},
|
|
26
|
+
},
|
|
27
|
+
"responses": {
|
|
28
|
+
"200": {
|
|
29
|
+
"description": "OK",
|
|
30
|
+
"content": {},
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
@pytest.mark.benchmark
|
|
40
|
+
def test_inlining_during_resolution():
|
|
41
|
+
schema = schemathesis.from_dict(RECURSIVE_SCHEMA)
|
|
42
|
+
schema.resolver.resolve_all(
|
|
43
|
+
RECURSIVE_SCHEMA["paths"]["/foo"]["post"]["requestBody"]["content"]["application/json"]["schema"]
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
@pytest.mark.benchmark
|
|
48
|
+
def test_resolve_pointer():
|
|
49
|
+
resolve_pointer(RECURSIVE_SCHEMA, "/paths/~1foo/post/requestBody/content/application~1json/schema")
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
import pathlib
|
|
2
|
+
import sys
|
|
3
|
+
|
|
4
|
+
import hypothesis
|
|
5
|
+
import pytest
|
|
6
|
+
from hypothesis import HealthCheck, Phase, Verbosity
|
|
7
|
+
|
|
8
|
+
import schemathesis
|
|
9
|
+
from schemathesis.runner import from_schema
|
|
10
|
+
|
|
11
|
+
CURRENT_DIR = pathlib.Path(__file__).parent.absolute()
|
|
12
|
+
sys.path.append(str(CURRENT_DIR.parent))
|
|
13
|
+
CATALOG_DIR = CURRENT_DIR / "data"
|
|
14
|
+
|
|
15
|
+
from corpus.tools import read_corpus_file, load_from_corpus # noqa: E402
|
|
16
|
+
|
|
17
|
+
CORPUS_OPENAPI_30 = read_corpus_file("openapi-3.0")
|
|
18
|
+
CORPUS_SWAGGER_20 = read_corpus_file("swagger-2.0")
|
|
19
|
+
# Small size (~2k lines in YAML)
|
|
20
|
+
BBCI = load_from_corpus("bbci.co.uk/1.0.json", CORPUS_OPENAPI_30)
|
|
21
|
+
BBCI_SCHEMA = schemathesis.from_dict(BBCI)
|
|
22
|
+
BBCI_OPERATIONS = list(BBCI_SCHEMA.get_all_operations())
|
|
23
|
+
# Medium size (~8k lines in YAML)
|
|
24
|
+
VMWARE = load_from_corpus("vmware.local/vrni/1.0.0.json", CORPUS_OPENAPI_30)
|
|
25
|
+
VMWARE_SCHEMA = schemathesis.from_dict(VMWARE)
|
|
26
|
+
VMWARE_OPERATIONS = list(VMWARE_SCHEMA.get_all_operations())
|
|
27
|
+
# Large size (~92k lines in YAML)
|
|
28
|
+
STRIPE = load_from_corpus("stripe.com/2022-11-15.json", CORPUS_OPENAPI_30)
|
|
29
|
+
STRIPE_SCHEMA = schemathesis.from_dict(STRIPE)
|
|
30
|
+
# Medium GraphQL schema (~6k lines)
|
|
31
|
+
UNIVERSE = load_from_corpus("universe.json", "graphql")
|
|
32
|
+
UNIVERSE_SCHEMA = schemathesis.graphql.from_dict(UNIVERSE)
|
|
33
|
+
|
|
34
|
+
APPVEYOR = load_from_corpus("appveyor.com/1.0.0.json", CORPUS_SWAGGER_20)
|
|
35
|
+
EVETECH = load_from_corpus("evetech.net/0.8.6.json", CORPUS_SWAGGER_20)
|
|
36
|
+
OSISOFT = load_from_corpus("osisoft.com/1.11.1.5383.json", CORPUS_SWAGGER_20)
|
|
37
|
+
ML_WEBSERVICES = load_from_corpus("azure.com/machinelearning-webservices/2017-01-01.json", CORPUS_SWAGGER_20)
|
|
38
|
+
AZURE_NETWORK = load_from_corpus("azure.com/network/2016-03-30.json", CORPUS_SWAGGER_20)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
@pytest.mark.benchmark
|
|
42
|
+
@pytest.mark.parametrize(
|
|
43
|
+
"raw_schema, loader",
|
|
44
|
+
[
|
|
45
|
+
(BBCI, schemathesis.from_dict),
|
|
46
|
+
(VMWARE, schemathesis.from_dict),
|
|
47
|
+
(UNIVERSE, schemathesis.graphql.from_dict),
|
|
48
|
+
(APPVEYOR, schemathesis.from_dict),
|
|
49
|
+
(EVETECH, schemathesis.from_dict),
|
|
50
|
+
(OSISOFT, schemathesis.from_dict),
|
|
51
|
+
(ML_WEBSERVICES, schemathesis.from_dict),
|
|
52
|
+
(AZURE_NETWORK, schemathesis.from_dict),
|
|
53
|
+
],
|
|
54
|
+
ids=("bbci", "vmware", "universe", "appveyor", "evetech", "osisoft", "ml_webservices", "azure_network"),
|
|
55
|
+
)
|
|
56
|
+
def test_iter_operations(raw_schema, loader):
|
|
57
|
+
schema = loader(raw_schema)
|
|
58
|
+
|
|
59
|
+
for _ in schema.get_all_operations():
|
|
60
|
+
pass
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
@pytest.mark.benchmark
|
|
64
|
+
@pytest.mark.parametrize(
|
|
65
|
+
"raw_schema, loader",
|
|
66
|
+
[
|
|
67
|
+
(BBCI, schemathesis.from_dict),
|
|
68
|
+
(VMWARE, schemathesis.from_dict),
|
|
69
|
+
(STRIPE, schemathesis.from_dict),
|
|
70
|
+
(UNIVERSE, schemathesis.graphql.from_dict),
|
|
71
|
+
(APPVEYOR, schemathesis.from_dict),
|
|
72
|
+
(EVETECH, schemathesis.from_dict),
|
|
73
|
+
(OSISOFT, schemathesis.from_dict),
|
|
74
|
+
(ML_WEBSERVICES, schemathesis.from_dict),
|
|
75
|
+
(AZURE_NETWORK, schemathesis.from_dict),
|
|
76
|
+
],
|
|
77
|
+
ids=("bbci", "vmware", "stripe", "universe", "appveyor", "evetech", "osisoft", "ml_webservices", "azure_network"),
|
|
78
|
+
)
|
|
79
|
+
def test_length(raw_schema, loader):
|
|
80
|
+
schema = loader(raw_schema)
|
|
81
|
+
_ = len(schema)
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
# Schemas with pre-populated cache
|
|
85
|
+
BBCI_OPERATION_ID = "Get_Categories_"
|
|
86
|
+
BBCI_OPERATION_KEY = ("/categories", "get")
|
|
87
|
+
BBCI_SCHEMA_WITH_OPERATIONS_CACHE = schemathesis.from_dict(BBCI)
|
|
88
|
+
BBCI_SCHEMA_WITH_OPERATIONS_CACHE.get_operation_by_id(BBCI_OPERATION_ID)
|
|
89
|
+
VMWARE_OPERATION_ID = "listProblemEvents"
|
|
90
|
+
VMWARE_OPERATION_KEY = ("/entities/problems", "get")
|
|
91
|
+
VMWARE_SCHEMA_WITH_OPERATIONS_CACHE = schemathesis.from_dict(VMWARE)
|
|
92
|
+
VMWARE_SCHEMA_WITH_OPERATIONS_CACHE.get_operation_by_id(VMWARE_OPERATION_ID)
|
|
93
|
+
UNIVERSE_OPERATION_KEY = ("Query", "manageTickets")
|
|
94
|
+
UNIVERSE_SCHEMA_WITH_OPERATIONS_CACHE = schemathesis.graphql.from_dict(UNIVERSE)
|
|
95
|
+
UNIVERSE_SCHEMA_WITH_OPERATIONS_CACHE[UNIVERSE_OPERATION_KEY[0]][UNIVERSE_OPERATION_KEY[1]]
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
@pytest.mark.benchmark
|
|
99
|
+
@pytest.mark.parametrize(
|
|
100
|
+
"raw_schema, key, loader",
|
|
101
|
+
[
|
|
102
|
+
(BBCI, BBCI_OPERATION_KEY, schemathesis.from_dict),
|
|
103
|
+
(VMWARE, VMWARE_OPERATION_KEY, schemathesis.from_dict),
|
|
104
|
+
(UNIVERSE, UNIVERSE_OPERATION_KEY, schemathesis.graphql.from_dict),
|
|
105
|
+
],
|
|
106
|
+
ids=("bbci", "vmware", "universe"),
|
|
107
|
+
)
|
|
108
|
+
def test_get_operation_single(raw_schema, key, loader):
|
|
109
|
+
schema = loader(raw_schema)
|
|
110
|
+
current = schema
|
|
111
|
+
for segment in key:
|
|
112
|
+
current = current[segment]
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
@pytest.mark.benchmark
|
|
116
|
+
@pytest.mark.parametrize(
|
|
117
|
+
"schema, key",
|
|
118
|
+
[
|
|
119
|
+
(BBCI_SCHEMA_WITH_OPERATIONS_CACHE, BBCI_OPERATION_KEY),
|
|
120
|
+
(VMWARE_SCHEMA_WITH_OPERATIONS_CACHE, VMWARE_OPERATION_KEY),
|
|
121
|
+
(UNIVERSE_SCHEMA_WITH_OPERATIONS_CACHE, UNIVERSE_OPERATION_KEY),
|
|
122
|
+
],
|
|
123
|
+
ids=("bbci", "vmware", "universe"),
|
|
124
|
+
)
|
|
125
|
+
def test_get_operation_repeatedly(schema, key):
|
|
126
|
+
current = schema
|
|
127
|
+
for segment in key:
|
|
128
|
+
current = current[segment]
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
@pytest.mark.benchmark
|
|
132
|
+
@pytest.mark.parametrize(
|
|
133
|
+
"raw_schema, key",
|
|
134
|
+
[(BBCI, BBCI_OPERATION_ID), (VMWARE, VMWARE_OPERATION_ID)],
|
|
135
|
+
ids=("bbci", "vmware"),
|
|
136
|
+
)
|
|
137
|
+
def test_get_operation_by_id_single(raw_schema, key):
|
|
138
|
+
schema = schemathesis.from_dict(raw_schema)
|
|
139
|
+
_ = schema.get_operation_by_id(key)
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
@pytest.mark.benchmark
|
|
143
|
+
@pytest.mark.parametrize(
|
|
144
|
+
"schema, key",
|
|
145
|
+
[
|
|
146
|
+
(BBCI_SCHEMA_WITH_OPERATIONS_CACHE, BBCI_OPERATION_ID),
|
|
147
|
+
(VMWARE_SCHEMA_WITH_OPERATIONS_CACHE, VMWARE_OPERATION_ID),
|
|
148
|
+
],
|
|
149
|
+
ids=("bbci", "vmware"),
|
|
150
|
+
)
|
|
151
|
+
def test_get_operation_by_id_repeatedly(schema, key):
|
|
152
|
+
_ = schema.get_operation_by_id(key)
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
@pytest.mark.benchmark
|
|
156
|
+
@pytest.mark.parametrize(
|
|
157
|
+
"raw_schema, key",
|
|
158
|
+
[
|
|
159
|
+
(BBCI, "#/paths/~1categories/get"),
|
|
160
|
+
(VMWARE, "#/paths/~1entities~1problems/get"),
|
|
161
|
+
],
|
|
162
|
+
ids=("bbci", "vmware"),
|
|
163
|
+
)
|
|
164
|
+
def test_get_operation_by_reference_single(raw_schema, key):
|
|
165
|
+
schema = schemathesis.from_dict(raw_schema)
|
|
166
|
+
_ = schema.get_operation_by_reference(key)
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
@pytest.mark.benchmark
|
|
170
|
+
@pytest.mark.parametrize(
|
|
171
|
+
"schema, key",
|
|
172
|
+
[
|
|
173
|
+
(BBCI_SCHEMA_WITH_OPERATIONS_CACHE, "#/paths/~1categories/get"),
|
|
174
|
+
(VMWARE_SCHEMA_WITH_OPERATIONS_CACHE, "#/paths/~1entities~1problems/get"),
|
|
175
|
+
],
|
|
176
|
+
ids=("bbci", "vmware"),
|
|
177
|
+
)
|
|
178
|
+
def test_get_operation_by_reference_repeatedly(schema, key):
|
|
179
|
+
_ = schema.get_operation_by_reference(key)
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
@pytest.mark.benchmark
|
|
183
|
+
@pytest.mark.parametrize("operations", [BBCI_OPERATIONS, VMWARE_OPERATIONS], ids=("bbci", "vmware"))
|
|
184
|
+
def test_as_json_schema(operations):
|
|
185
|
+
for operation in operations:
|
|
186
|
+
for parameter in operation.ok().iter_parameters():
|
|
187
|
+
_ = parameter.as_json_schema(operation)
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
@pytest.mark.benchmark
|
|
191
|
+
def test_events():
|
|
192
|
+
runner = from_schema(
|
|
193
|
+
BBCI_SCHEMA,
|
|
194
|
+
checks=(),
|
|
195
|
+
count_operations=False,
|
|
196
|
+
count_links=False,
|
|
197
|
+
hypothesis_settings=hypothesis.settings(
|
|
198
|
+
deadline=None,
|
|
199
|
+
database=None,
|
|
200
|
+
max_examples=1,
|
|
201
|
+
derandomize=True,
|
|
202
|
+
suppress_health_check=list(HealthCheck),
|
|
203
|
+
phases=[Phase.explicit, Phase.generate],
|
|
204
|
+
verbosity=Verbosity.quiet,
|
|
205
|
+
),
|
|
206
|
+
)
|
|
207
|
+
for _ in runner.execute():
|
|
208
|
+
pass
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
@pytest.mark.benchmark
|
|
212
|
+
@pytest.mark.parametrize("raw_schema", [BBCI, VMWARE, STRIPE], ids=("bbci", "vmware", "stripe"))
|
|
213
|
+
def test_rewritten_components(raw_schema):
|
|
214
|
+
schema = schemathesis.from_dict(raw_schema)
|
|
215
|
+
|
|
216
|
+
_ = schema.rewritten_components
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
@pytest.mark.benchmark
|
|
220
|
+
@pytest.mark.parametrize("raw_schema", [BBCI, VMWARE, STRIPE], ids=("bbci", "vmware", "stripe"))
|
|
221
|
+
def test_links_count(raw_schema):
|
|
222
|
+
schema = schemathesis.from_dict(raw_schema)
|
|
223
|
+
|
|
224
|
+
_ = schema.links_count
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import io
|
|
4
|
+
import os
|
|
5
|
+
import pathlib
|
|
6
|
+
import re
|
|
7
|
+
import tarfile
|
|
8
|
+
from typing import Any, Dict, Generator
|
|
9
|
+
|
|
10
|
+
import yaml
|
|
11
|
+
|
|
12
|
+
try:
|
|
13
|
+
from yaml import CSafeLoader as SafeLoader
|
|
14
|
+
except ImportError:
|
|
15
|
+
from yaml import SafeLoader # type: ignore
|
|
16
|
+
|
|
17
|
+
try:
|
|
18
|
+
import orjson
|
|
19
|
+
from orjson import loads as json_loads
|
|
20
|
+
|
|
21
|
+
def json_dumps(obj: Any) -> bytes:
|
|
22
|
+
return orjson.dumps(obj)
|
|
23
|
+
|
|
24
|
+
except ImportError:
|
|
25
|
+
import json
|
|
26
|
+
from json import loads as json_loads
|
|
27
|
+
|
|
28
|
+
def json_dumps(obj: Any) -> bytes:
|
|
29
|
+
return json.dumps(obj, separators=(",", ":")).encode("utf-8")
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
CURRENT_DIR = pathlib.Path(__file__).parent.absolute()
|
|
33
|
+
CATALOG_DIR = CURRENT_DIR / "../test-corpus/openapi-directory/APIs/"
|
|
34
|
+
DATA_DIR = CURRENT_DIR / "data"
|
|
35
|
+
|
|
36
|
+
Loader = type("YAMLLoader", (SafeLoader,), {})
|
|
37
|
+
Loader.yaml_implicit_resolvers = { # type: ignore[attr-defined]
|
|
38
|
+
key: [(tag, regexp) for tag, regexp in mapping if tag != "tag:yaml.org,2002:timestamp"]
|
|
39
|
+
for key, mapping in Loader.yaml_implicit_resolvers.copy().items() # type: ignore[attr-defined]
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
Loader.add_implicit_resolver( # type: ignore
|
|
43
|
+
"tag:yaml.org,2002:float",
|
|
44
|
+
re.compile(
|
|
45
|
+
r"""^(?:[-+]?(?:[0-9][0-9_]*)\.[0-9_]*(?:[eE][-+]?[0-9]+)?
|
|
46
|
+
|[-+]?(?:[0-9][0-9_]*)(?:[eE][-+]?[0-9]+)
|
|
47
|
+
|\.[0-9_]+(?:[eE][-+]?[0-9]+)?
|
|
48
|
+
|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*
|
|
49
|
+
|[-+]?\.(?:inf|Inf|INF)
|
|
50
|
+
|\.(?:nan|NaN|NAN))$""",
|
|
51
|
+
re.X,
|
|
52
|
+
),
|
|
53
|
+
list("-+0123456789."),
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def construct_mapping(self: SafeLoader, node: yaml.Node, deep: bool = False) -> dict[str, Any]:
|
|
58
|
+
if isinstance(node, yaml.MappingNode):
|
|
59
|
+
self.flatten_mapping(node) # type: ignore
|
|
60
|
+
mapping = {}
|
|
61
|
+
for key_node, value_node in node.value:
|
|
62
|
+
if key_node.tag != "tag:yaml.org,2002:str":
|
|
63
|
+
key = key_node.value
|
|
64
|
+
else:
|
|
65
|
+
key = self.construct_object(key_node, deep) # type: ignore
|
|
66
|
+
mapping[key] = self.construct_object(value_node, deep) # type: ignore
|
|
67
|
+
return mapping
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
Loader.construct_mapping = construct_mapping # type: ignore
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def create_tar_gz(schemas: Dict[str, Dict[str, Any]], output_dir: pathlib.Path) -> None:
|
|
74
|
+
"""Create compressed API schemas corpus."""
|
|
75
|
+
os.makedirs(output_dir, exist_ok=True)
|
|
76
|
+
|
|
77
|
+
for version, version_schemas in schemas.items():
|
|
78
|
+
if version.startswith("2."):
|
|
79
|
+
output_path = output_dir / f"swagger-{version}.tar.gz"
|
|
80
|
+
else:
|
|
81
|
+
output_path = output_dir / f"openapi-{version}.tar.gz"
|
|
82
|
+
|
|
83
|
+
with tarfile.open(output_path, "w:gz") as tar_gz:
|
|
84
|
+
for schema_name, schema in version_schemas.items():
|
|
85
|
+
json_path = f"{schema_name}.json"
|
|
86
|
+
json_data = json_dumps(schema)
|
|
87
|
+
info = tarfile.TarInfo(name=json_path)
|
|
88
|
+
info.size = len(json_data)
|
|
89
|
+
tar_gz.addfile(info, io.BytesIO(json_data))
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
def parse_schemas(directory: pathlib.Path) -> Dict[str, Dict[str, Any]]:
|
|
93
|
+
schemas: Dict[str, Dict[str, Any]] = {}
|
|
94
|
+
|
|
95
|
+
for root, _, files in os.walk(directory):
|
|
96
|
+
for file in files:
|
|
97
|
+
if file.endswith("swagger.yaml") or file.endswith("openapi.yaml"):
|
|
98
|
+
file_path = os.path.join(root, file)
|
|
99
|
+
try:
|
|
100
|
+
with open(file_path, "r") as fd:
|
|
101
|
+
schema = yaml.load(fd, Loader)
|
|
102
|
+
version = get_schema_version(schema)
|
|
103
|
+
schema_name = (
|
|
104
|
+
os.path.relpath(file_path, directory)
|
|
105
|
+
.replace(os.sep, "/")
|
|
106
|
+
.replace("/swagger.yaml", "")
|
|
107
|
+
.replace("/openapi.yaml", "")
|
|
108
|
+
)
|
|
109
|
+
if version not in schemas:
|
|
110
|
+
schemas[version] = {}
|
|
111
|
+
schemas[version][schema_name] = schema
|
|
112
|
+
except (yaml.YAMLError, KeyError):
|
|
113
|
+
print(f"Error parsing {file_path}")
|
|
114
|
+
|
|
115
|
+
return schemas
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
def get_schema_version(schema: Dict[str, Any]) -> str:
|
|
119
|
+
"""Extract the schema version from the parsed schema."""
|
|
120
|
+
if "openapi" in schema:
|
|
121
|
+
return schema["openapi"][:3]
|
|
122
|
+
elif "swagger" in schema:
|
|
123
|
+
return schema["swagger"]
|
|
124
|
+
else:
|
|
125
|
+
raise ValueError("Invalid schema format")
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
def load_from_corpus(file_name: str, corpus: tarfile.TarFile | str) -> dict[str, Any]:
|
|
129
|
+
if isinstance(corpus, str):
|
|
130
|
+
corpus = read_corpus_file(corpus)
|
|
131
|
+
extracted = corpus.extractfile(file_name)
|
|
132
|
+
if extracted is not None:
|
|
133
|
+
return json_loads(extracted.read())
|
|
134
|
+
raise FileNotFoundError(file_name)
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
def read_corpus_file(name: str) -> tarfile.TarFile:
|
|
138
|
+
return tarfile.open(DATA_DIR / f"{name}.tar.gz", "r:gz")
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
def iter_corpus_file(name: str) -> Generator[tuple[str, dict[str, Any]], None, None]:
|
|
142
|
+
"""Iterate over the corpus file."""
|
|
143
|
+
with read_corpus_file(name) as tar:
|
|
144
|
+
for member in tar.getmembers():
|
|
145
|
+
extracted = tar.extractfile(member)
|
|
146
|
+
if extracted is not None:
|
|
147
|
+
yield member.name, json_loads(extracted.read())
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
def iter_all_corpus_files() -> Generator[tuple[str, str, dict[str, Any]], None, None]:
|
|
151
|
+
"""Iterate over all corpus files."""
|
|
152
|
+
for corpus_name in os.listdir(DATA_DIR):
|
|
153
|
+
if corpus_name.endswith(".tar.gz"):
|
|
154
|
+
for file_name, schema in iter_corpus_file(corpus_name):
|
|
155
|
+
yield corpus_name, file_name, schema
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
if __name__ == "__main__":
|
|
159
|
+
schemas = parse_schemas(CATALOG_DIR)
|
|
160
|
+
create_tar_gz(schemas, DATA_DIR)
|