schemathesis 3.31.0__tar.gz → 3.31.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (625) hide show
  1. {schemathesis-3.31.0 → schemathesis-3.31.1}/.github/workflows/codeql-analysis.yml +3 -3
  2. {schemathesis-3.31.0 → schemathesis-3.31.1}/PKG-INFO +1 -1
  3. {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/changelog.rst +14 -1
  4. {schemathesis-3.31.0 → schemathesis-3.31.1}/pyproject.toml +1 -1
  5. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/models.py +15 -0
  6. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/_hypothesis.py +26 -13
  7. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/checks.py +34 -1
  8. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/negative/mutations.py +9 -2
  9. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/schemas.py +8 -5
  10. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/test_checks.py +98 -1
  11. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/test_negative.py +19 -16
  12. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_direct_access.py +1 -1
  13. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_hypothesis.py +1 -0
  14. {schemathesis-3.31.0 → schemathesis-3.31.1}/.dockerignore +0 -0
  15. {schemathesis-3.31.0 → schemathesis-3.31.1}/.github/FUNDING.yml +0 -0
  16. {schemathesis-3.31.0 → schemathesis-3.31.1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  17. {schemathesis-3.31.0 → schemathesis-3.31.1}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  18. {schemathesis-3.31.0 → schemathesis-3.31.1}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  19. {schemathesis-3.31.0 → schemathesis-3.31.1}/.github/dependabot.yml +0 -0
  20. {schemathesis-3.31.0 → schemathesis-3.31.1}/.github/workflows/build.yml +0 -0
  21. {schemathesis-3.31.0 → schemathesis-3.31.1}/.github/workflows/codspeed.yml +0 -0
  22. {schemathesis-3.31.0 → schemathesis-3.31.1}/.github/workflows/commit.yml +0 -0
  23. {schemathesis-3.31.0 → schemathesis-3.31.1}/.github/workflows/example-build.yml +0 -0
  24. {schemathesis-3.31.0 → schemathesis-3.31.1}/.github/workflows/example-no-build.yml +0 -0
  25. {schemathesis-3.31.0 → schemathesis-3.31.1}/.github/workflows/master_update.yml +0 -0
  26. {schemathesis-3.31.0 → schemathesis-3.31.1}/.github/workflows/release.yml +0 -0
  27. {schemathesis-3.31.0 → schemathesis-3.31.1}/.github/workflows/test-corpus.yml +0 -0
  28. {schemathesis-3.31.0 → schemathesis-3.31.1}/.github/workflows/test-hypothesis.yml +0 -0
  29. {schemathesis-3.31.0 → schemathesis-3.31.1}/.github/workflows/update-corpus.yml +0 -0
  30. {schemathesis-3.31.0 → schemathesis-3.31.1}/.github/workflows/update-pre-commit.yml +0 -0
  31. {schemathesis-3.31.0 → schemathesis-3.31.1}/.gitignore +0 -0
  32. {schemathesis-3.31.0 → schemathesis-3.31.1}/.gitmodules +0 -0
  33. {schemathesis-3.31.0 → schemathesis-3.31.1}/.pre-commit-config.yaml +0 -0
  34. {schemathesis-3.31.0 → schemathesis-3.31.1}/.readthedocs.yml +0 -0
  35. {schemathesis-3.31.0 → schemathesis-3.31.1}/.relint.yml +0 -0
  36. {schemathesis-3.31.0 → schemathesis-3.31.1}/.rstcheck.cfg +0 -0
  37. {schemathesis-3.31.0 → schemathesis-3.31.1}/.yamllint +0 -0
  38. {schemathesis-3.31.0 → schemathesis-3.31.1}/CITATION.cff +0 -0
  39. {schemathesis-3.31.0 → schemathesis-3.31.1}/CODE_OF_CONDUCT.md +0 -0
  40. {schemathesis-3.31.0 → schemathesis-3.31.1}/CONTRIBUTING.rst +0 -0
  41. {schemathesis-3.31.0 → schemathesis-3.31.1}/Dockerfile +0 -0
  42. {schemathesis-3.31.0 → schemathesis-3.31.1}/Dockerfile.bookworm +0 -0
  43. {schemathesis-3.31.0 → schemathesis-3.31.1}/LICENSE +0 -0
  44. {schemathesis-3.31.0 → schemathesis-3.31.1}/README.md +0 -0
  45. {schemathesis-3.31.0 → schemathesis-3.31.1}/benches/cli.py +0 -0
  46. {schemathesis-3.31.0 → schemathesis-3.31.1}/benches/references.py +0 -0
  47. {schemathesis-3.31.0 → schemathesis-3.31.1}/benches/schema.py +0 -0
  48. {schemathesis-3.31.0 → schemathesis-3.31.1}/changelog.py +0 -0
  49. {schemathesis-3.31.0 → schemathesis-3.31.1}/codecov.yml +0 -0
  50. {schemathesis-3.31.0 → schemathesis-3.31.1}/corpus/data/graphql.tar.gz +0 -0
  51. {schemathesis-3.31.0 → schemathesis-3.31.1}/corpus/data/openapi-3.0.tar.gz +0 -0
  52. {schemathesis-3.31.0 → schemathesis-3.31.1}/corpus/data/openapi-3.1.tar.gz +0 -0
  53. {schemathesis-3.31.0 → schemathesis-3.31.1}/corpus/data/swagger-2.0.tar.gz +0 -0
  54. {schemathesis-3.31.0 → schemathesis-3.31.1}/corpus/tools.py +0 -0
  55. {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/Makefile +0 -0
  56. {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/additional-content.rst +0 -0
  57. {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/api.rst +0 -0
  58. {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/auth.rst +0 -0
  59. {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/cli.rst +0 -0
  60. {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/compatibility.rst +0 -0
  61. {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/conf.py +0 -0
  62. {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/continuous_integration.rst +0 -0
  63. {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/contrib.rst +0 -0
  64. {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/data-generation.rst +0 -0
  65. {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/examples.rst +0 -0
  66. {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/experimental.rst +0 -0
  67. {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/extending.rst +0 -0
  68. {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/faq.rst +0 -0
  69. {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/getting-started.rst +0 -0
  70. {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/graphql.rst +0 -0
  71. {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/index.rst +0 -0
  72. {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/python.rst +0 -0
  73. {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/recipes.rst +0 -0
  74. {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/requirements.txt +0 -0
  75. {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/sanitizing.rst +0 -0
  76. {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/service.rst +0 -0
  77. {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/stateful.rst +0 -0
  78. {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/targeted.rst +0 -0
  79. {schemathesis-3.31.0 → schemathesis-3.31.1}/example/Dockerfile +0 -0
  80. {schemathesis-3.31.0 → schemathesis-3.31.1}/example/README.md +0 -0
  81. {schemathesis-3.31.0 → schemathesis-3.31.1}/example/app.py +0 -0
  82. {schemathesis-3.31.0 → schemathesis-3.31.1}/example/compose.yml +0 -0
  83. {schemathesis-3.31.0 → schemathesis-3.31.1}/example/openapi.json +0 -0
  84. {schemathesis-3.31.0 → schemathesis-3.31.1}/example/requirements-app.in +0 -0
  85. {schemathesis-3.31.0 → schemathesis-3.31.1}/example/requirements-app.txt +0 -0
  86. {schemathesis-3.31.0 → schemathesis-3.31.1}/example/requirements-pytest.in +0 -0
  87. {schemathesis-3.31.0 → schemathesis-3.31.1}/example/requirements-pytest.txt +0 -0
  88. {schemathesis-3.31.0 → schemathesis-3.31.1}/example/tests/__init__.py +0 -0
  89. {schemathesis-3.31.0 → schemathesis-3.31.1}/example/tests/conftest.py +0 -0
  90. {schemathesis-3.31.0 → schemathesis-3.31.1}/example/tests/extensions.py +0 -0
  91. {schemathesis-3.31.0 → schemathesis-3.31.1}/example/tests/test_app.py +0 -0
  92. {schemathesis-3.31.0 → schemathesis-3.31.1}/img/demo.gif +0 -0
  93. {schemathesis-3.31.0 → schemathesis-3.31.1}/img/service_github_report.png +0 -0
  94. {schemathesis-3.31.0 → schemathesis-3.31.1}/mypy.ini +0 -0
  95. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/__init__.py +0 -0
  96. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/_compat.py +0 -0
  97. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/_dependency_versions.py +0 -0
  98. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/_hypothesis.py +0 -0
  99. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/_lazy_import.py +0 -0
  100. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/_override.py +0 -0
  101. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/_rate_limiter.py +0 -0
  102. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/_xml.py +0 -0
  103. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/auths.py +0 -0
  104. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/checks.py +0 -0
  105. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/cli/__init__.py +0 -0
  106. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/cli/__main__.py +0 -0
  107. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/cli/callbacks.py +0 -0
  108. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/cli/cassettes.py +0 -0
  109. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/cli/constants.py +0 -0
  110. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/cli/context.py +0 -0
  111. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/cli/debug.py +0 -0
  112. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/cli/handlers.py +0 -0
  113. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/cli/junitxml.py +0 -0
  114. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/cli/options.py +0 -0
  115. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/cli/output/__init__.py +0 -0
  116. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/cli/output/default.py +0 -0
  117. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/cli/output/short.py +0 -0
  118. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/cli/reporting.py +0 -0
  119. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/cli/sanitization.py +0 -0
  120. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/code_samples.py +0 -0
  121. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/constants.py +0 -0
  122. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/contrib/__init__.py +0 -0
  123. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/contrib/openapi/__init__.py +0 -0
  124. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/contrib/openapi/fill_missing_examples.py +0 -0
  125. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/contrib/openapi/formats/__init__.py +0 -0
  126. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/contrib/openapi/formats/uuid.py +0 -0
  127. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/contrib/unique_data.py +0 -0
  128. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/exceptions.py +0 -0
  129. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/experimental/__init__.py +0 -0
  130. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/extra/__init__.py +0 -0
  131. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/extra/_aiohttp.py +0 -0
  132. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/extra/_flask.py +0 -0
  133. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/extra/_server.py +0 -0
  134. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/extra/pytest_plugin.py +0 -0
  135. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/failures.py +0 -0
  136. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/filters.py +0 -0
  137. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/fixups/__init__.py +0 -0
  138. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/fixups/fast_api.py +0 -0
  139. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/fixups/utf8_bom.py +0 -0
  140. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/generation/__init__.py +0 -0
  141. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/graphql.py +0 -0
  142. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/hooks.py +0 -0
  143. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/internal/__init__.py +0 -0
  144. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/internal/copy.py +0 -0
  145. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/internal/datetime.py +0 -0
  146. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/internal/deprecation.py +0 -0
  147. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/internal/jsonschema.py +0 -0
  148. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/internal/output.py +0 -0
  149. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/internal/result.py +0 -0
  150. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/internal/transformation.py +0 -0
  151. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/internal/validation.py +0 -0
  152. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/lazy.py +0 -0
  153. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/loaders.py +0 -0
  154. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/parameters.py +0 -0
  155. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/py.typed +0 -0
  156. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/runner/__init__.py +0 -0
  157. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/runner/events.py +0 -0
  158. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/runner/impl/__init__.py +0 -0
  159. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/runner/impl/core.py +0 -0
  160. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/runner/impl/solo.py +0 -0
  161. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/runner/impl/threadpool.py +0 -0
  162. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/runner/probes.py +0 -0
  163. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/runner/serialization.py +0 -0
  164. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/sanitization.py +0 -0
  165. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/schemas.py +0 -0
  166. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/serializers.py +0 -0
  167. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/service/__init__.py +0 -0
  168. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/service/auth.py +0 -0
  169. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/service/ci.py +0 -0
  170. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/service/client.py +0 -0
  171. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/service/constants.py +0 -0
  172. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/service/events.py +0 -0
  173. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/service/extensions.py +0 -0
  174. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/service/hosts.py +0 -0
  175. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/service/metadata.py +0 -0
  176. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/service/models.py +0 -0
  177. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/service/report.py +0 -0
  178. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/service/serialization.py +0 -0
  179. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/service/usage.py +0 -0
  180. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/__init__.py +0 -0
  181. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/graphql/__init__.py +0 -0
  182. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/graphql/_cache.py +0 -0
  183. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/graphql/loaders.py +0 -0
  184. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/graphql/nodes.py +0 -0
  185. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/graphql/scalars.py +0 -0
  186. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/graphql/schemas.py +0 -0
  187. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/graphql/validation.py +0 -0
  188. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/__init__.py +0 -0
  189. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/_cache.py +0 -0
  190. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/constants.py +0 -0
  191. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/converter.py +0 -0
  192. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/definitions.py +0 -0
  193. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/examples.py +0 -0
  194. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/expressions/__init__.py +0 -0
  195. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/expressions/context.py +0 -0
  196. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/expressions/errors.py +0 -0
  197. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/expressions/extractors.py +0 -0
  198. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/expressions/lexer.py +0 -0
  199. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/expressions/nodes.py +0 -0
  200. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/expressions/parser.py +0 -0
  201. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/filters.py +0 -0
  202. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/formats.py +0 -0
  203. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/links.py +0 -0
  204. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/loaders.py +0 -0
  205. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/media_types.py +0 -0
  206. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/negative/__init__.py +0 -0
  207. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/negative/types.py +0 -0
  208. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/negative/utils.py +0 -0
  209. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/parameters.py +0 -0
  210. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/references.py +0 -0
  211. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/security.py +0 -0
  212. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/serialization.py +0 -0
  213. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/stateful/__init__.py +0 -0
  214. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/stateful/statistic.py +0 -0
  215. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/stateful/types.py +0 -0
  216. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/utils.py +0 -0
  217. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/validation.py +0 -0
  218. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/stateful/__init__.py +0 -0
  219. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/stateful/config.py +0 -0
  220. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/stateful/context.py +0 -0
  221. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/stateful/events.py +0 -0
  222. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/stateful/runner.py +0 -0
  223. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/stateful/sink.py +0 -0
  224. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/stateful/state_machine.py +0 -0
  225. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/stateful/statistic.py +0 -0
  226. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/stateful/validation.py +0 -0
  227. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/targets.py +0 -0
  228. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/throttling.py +0 -0
  229. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/transports/__init__.py +0 -0
  230. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/transports/auth.py +0 -0
  231. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/transports/content_types.py +0 -0
  232. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/transports/headers.py +0 -0
  233. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/transports/responses.py +0 -0
  234. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/types.py +0 -0
  235. {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/utils.py +0 -0
  236. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/__init__.py +0 -0
  237. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/__snapshots__/test_dereferencing/test_global_security_schemes_with_custom_scope.raw +0 -0
  238. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/__snapshots__/test_dereferencing/test_missing_file_in_resolution.raw +0 -0
  239. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/__snapshots__/test_hypothesis/test_health_check_failed_large_base_example.raw +0 -0
  240. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/__snapshots__/test_recoverable_errors/test_in_cli[1].raw +0 -0
  241. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/__snapshots__/test_recoverable_errors/test_in_cli[2].raw +0 -0
  242. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/__snapshots__/test_serialization/test_in_cli[Open API 3.0].raw +0 -0
  243. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/apps/__init__.py +0 -0
  244. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/apps/_graphql/__init__.py +0 -0
  245. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/apps/_graphql/_fastapi/__init__.py +0 -0
  246. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/apps/_graphql/_fastapi/app.py +0 -0
  247. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/apps/_graphql/_flask/__init__.py +0 -0
  248. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/apps/_graphql/_flask/app.py +0 -0
  249. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/apps/_graphql/schema.py +0 -0
  250. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/apps/cp1252_app.py +0 -0
  251. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/apps/hooks.py +0 -0
  252. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/apps/openapi/__init__.py +0 -0
  253. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/apps/openapi/_aiohttp/__init__.py +0 -0
  254. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/apps/openapi/_aiohttp/app.py +0 -0
  255. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/apps/openapi/_aiohttp/handlers.py +0 -0
  256. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/apps/openapi/_fastapi/__init__.py +0 -0
  257. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/apps/openapi/_fastapi/app.py +0 -0
  258. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/apps/openapi/_flask/__init__.py +0 -0
  259. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/apps/openapi/_flask/app.py +0 -0
  260. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/apps/openapi/schema.py +0 -0
  261. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/auth/__init__.py +0 -0
  262. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/auth/__snapshots__/test_cli/test_conditional[Open API 3.0].raw +0 -0
  263. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/auth/__snapshots__/test_cli/test_custom_auth[Open API 3.0].raw +0 -0
  264. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/auth/__snapshots__/test_cli/test_explicit_auth_precedence[Open API 3.0-args0-Basic dXNlcjpwYXNz].raw +0 -0
  265. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/auth/__snapshots__/test_cli/test_explicit_auth_precedence[Open API 3.0-args1-Bearer EXPLICIT].raw +0 -0
  266. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/auth/__snapshots__/test_cli/test_multiple_auth_mechanisms_with_explicit_auth.raw +0 -0
  267. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/auth/__snapshots__/test_cli/test_multiple_threads[Open API 3.0].raw +0 -0
  268. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/auth/__snapshots__/test_cli/test_requests_auth[Open API 3.0].raw +0 -0
  269. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/auth/conftest.py +0 -0
  270. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/auth/test_cli.py +0 -0
  271. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/auth/test_provider.py +0 -0
  272. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/auth/test_pytest.py +0 -0
  273. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__init__.py +0 -0
  274. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_cassettes/test_forbid_preserve_exact_bytes_without_cassette_path[Open API 3.0].raw +0 -0
  275. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_cassettes/test_forbid_simultaneous_use_of_deprecated_and_new_options[Open API 3.0].raw +0 -0
  276. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_checks/test_deduplication_on_sanitized_header.raw +0 -0
  277. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_add_case_output[Open API 2.0].raw +0 -0
  278. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_add_case_output[Open API 3.0].raw +0 -0
  279. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_auth_and_authorization_header_are_disallowed[Open API 3.0-Authorization].raw +0 -0
  280. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_auth_and_authorization_header_are_disallowed[Open API 3.0-authorization].raw +0 -0
  281. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 2.0---auth='testwrong'].raw +0 -0
  282. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 2.0--H Authorization Basic J3Rlc3Q6d3Jvbmcn].raw +0 -0
  283. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 3.0---auth='testwrong'].raw +0 -0
  284. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 3.0--H Authorization Basic J3Rlc3Q6d3Jvbmcn].raw +0 -0
  285. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_binary_payload.raw +0 -0
  286. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_certificate_only_key.raw +0 -0
  287. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_chunked_encoding_error[Open API 3.0].raw +0 -0
  288. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 2.0-1].raw +0 -0
  289. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 2.0-2].raw +0 -0
  290. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 3.0-1].raw +0 -0
  291. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 3.0-2].raw +0 -0
  292. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 2.0-1].raw +0 -0
  293. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 2.0-2].raw +0 -0
  294. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 3.0-1].raw +0 -0
  295. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 3.0-2].raw +0 -0
  296. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_commands_help.raw +0 -0
  297. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_complex_urlencoded_example.raw +0 -0
  298. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 2.0-1].raw +0 -0
  299. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 2.0-2].raw +0 -0
  300. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 3.0-1].raw +0 -0
  301. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 3.0-2].raw +0 -0
  302. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 2.0-1].raw +0 -0
  303. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 2.0-2].raw +0 -0
  304. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 3.0-1].raw +0 -0
  305. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 3.0-2].raw +0 -0
  306. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_empty_schema_file[args0].raw +0 -0
  307. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_empty_schema_file[args1].raw +0 -0
  308. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_explicit_example_failure_output.raw +0 -0
  309. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_explicit_headers_in_output_on_errors[Open API 3.0].raw +0 -0
  310. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_force_color_nocolor[Open API 3.0].raw +0 -0
  311. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_get_request_with_body[Open API 2.0].raw +0 -0
  312. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_get_request_with_body[Open API 3.0].raw +0 -0
  313. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_graphql_asgi.raw +0 -0
  314. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_graphql_url[foo-args0].raw +0 -0
  315. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_graphql_url[foo-args1].raw +0 -0
  316. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_graphql_url[graphql-args0].raw +0 -0
  317. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_graphql_url[graphql-args1].raw +0 -0
  318. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_group_errors.raw +0 -0
  319. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_hooks_module_not_found.raw +0 -0
  320. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_hooks_with_inner_import_error.raw +0 -0
  321. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_hypothesis_database_with_derandomize[Open API 3.0].raw +0 -0
  322. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 2.0-1].raw +0 -0
  323. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 2.0-2].raw +0 -0
  324. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 3.0-1].raw +0 -0
  325. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 3.0-2].raw +0 -0
  326. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 2.0-1].raw +0 -0
  327. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 2.0-2].raw +0 -0
  328. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 3.0-1].raw +0 -0
  329. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 3.0-2].raw +0 -0
  330. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[real-Open API 2.0].raw +0 -0
  331. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[real-Open API 3.0].raw +0 -0
  332. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[wsgi-Open API 2.0].raw +0 -0
  333. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[wsgi-Open API 3.0].raw +0 -0
  334. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_invalid_schema_with_disabled_validation[3.0.2].raw +0 -0
  335. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_invalid_schema_with_disabled_validation[3.1.0].raw +0 -0
  336. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_invalid_yaml.raw +0 -0
  337. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_long_payload.raw +0 -0
  338. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_malformed_json_deduplication[real-Open API 3.0].raw +0 -0
  339. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_malformed_json_deduplication[wsgi-Open API 3.0].raw +0 -0
  340. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 2.0-1].raw +0 -0
  341. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 2.0-2].raw +0 -0
  342. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 3.0-1].raw +0 -0
  343. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 3.0-2].raw +0 -0
  344. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[cookie-None].raw +0 -0
  345. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[cookie-http127.0.0.1apiv2].raw +0 -0
  346. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[header-None].raw +0 -0
  347. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[header-http127.0.0.1apiv2].raw +0 -0
  348. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[path-None].raw +0 -0
  349. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[path-http127.0.0.1apiv2].raw +0 -0
  350. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[query-None].raw +0 -0
  351. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[query-http127.0.0.1apiv2].raw +0 -0
  352. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_multiple_errors.raw +0 -0
  353. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_multiple_failures_different_check[Open API 2.0].raw +0 -0
  354. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_multiple_failures_different_check[Open API 3.0].raw +0 -0
  355. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_multiple_failures_in_single_check.raw +0 -0
  356. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_multiple_failures_single_check[Open API 2.0].raw +0 -0
  357. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_multiple_failures_single_check[Open API 3.0].raw +0 -0
  358. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_nested_binary_in_yaml.raw +0 -0
  359. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_new_stateful_runner[Open API 3.0-1].raw +0 -0
  360. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_new_stateful_runner[Open API 3.0-2].raw +0 -0
  361. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_new_stateful_runner_filtered_out[Open API 3.0].raw +0 -0
  362. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_new_stateful_runner_stateful_only[Open API 3.0].raw +0 -0
  363. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_no_schema_in_media_type[Open API 3.0].raw +0 -0
  364. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_no_useless_traceback.raw +0 -0
  365. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_null_byte_in_header_probe.raw +0 -0
  366. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_openapi_links[real-Open API 2.0].raw +0 -0
  367. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_openapi_links[real-Open API 3.0].raw +0 -0
  368. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_openapi_links[wsgi-Open API 2.0].raw +0 -0
  369. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_openapi_links[wsgi-Open API 3.0].raw +0 -0
  370. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_openapi_links_disabled[Open API 2.0].raw +0 -0
  371. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_openapi_links_disabled[Open API 3.0].raw +0 -0
  372. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 2.0-1].raw +0 -0
  373. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 2.0-5].raw +0 -0
  374. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 3.0-1].raw +0 -0
  375. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 3.0-5].raw +0 -0
  376. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 2.0-1].raw +0 -0
  377. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 2.0-5].raw +0 -0
  378. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 3.0-1].raw +0 -0
  379. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 3.0-5].raw +0 -0
  380. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_proxy_error[Open API 3.0].raw +0 -0
  381. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_read_content_timeout[Open API 3.0].raw +0 -0
  382. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_recursive_reference_error_message.raw +0 -0
  383. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError(Custom check failed!)-Open API 2.0].raw +0 -0
  384. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError(Custom check failed!)-Open API 3.0].raw +0 -0
  385. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError-Open API 2.0].raw +0 -0
  386. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError-Open API 3.0].raw +0 -0
  387. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_remote_disconnected_error[Open API 3.0].raw +0 -0
  388. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[real-Open API 2.0].raw +0 -0
  389. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[real-Open API 3.0].raw +0 -0
  390. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[wsgi-Open API 2.0].raw +0 -0
  391. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[wsgi-Open API 3.0].raw +0 -0
  392. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[real-Open API 2.0].raw +0 -0
  393. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[real-Open API 3.0].raw +0 -0
  394. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[wsgi-Open API 2.0].raw +0 -0
  395. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[wsgi-Open API 3.0].raw +0 -0
  396. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args0].raw +0 -0
  397. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args10].raw +0 -0
  398. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args11].raw +0 -0
  399. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args12].raw +0 -0
  400. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args13].raw +0 -0
  401. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args14].raw +0 -0
  402. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args15].raw +0 -0
  403. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args16].raw +0 -0
  404. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args17].raw +0 -0
  405. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args18].raw +0 -0
  406. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args19].raw +0 -0
  407. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args1].raw +0 -0
  408. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args20].raw +0 -0
  409. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args21].raw +0 -0
  410. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args22].raw +0 -0
  411. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args23].raw +0 -0
  412. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args24].raw +0 -0
  413. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args25].raw +0 -0
  414. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args26].raw +0 -0
  415. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args27].raw +0 -0
  416. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args28].raw +0 -0
  417. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args29].raw +0 -0
  418. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args2].raw +0 -0
  419. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args30].raw +0 -0
  420. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args31].raw +0 -0
  421. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args32].raw +0 -0
  422. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args33].raw +0 -0
  423. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args34].raw +0 -0
  424. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args35].raw +0 -0
  425. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args36].raw +0 -0
  426. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args37].raw +0 -0
  427. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args3].raw +0 -0
  428. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args4].raw +0 -0
  429. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args5].raw +0 -0
  430. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args6].raw +0 -0
  431. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args7].raw +0 -0
  432. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args8].raw +0 -0
  433. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args9].raw +0 -0
  434. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_schema_not_available[1].raw +0 -0
  435. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_schema_not_available[2].raw +0 -0
  436. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_schema_not_available_wsgi.raw +0 -0
  437. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 2.0-1].raw +0 -0
  438. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 2.0-2].raw +0 -0
  439. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 3.0-1].raw +0 -0
  440. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 3.0-2].raw +0 -0
  441. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 2.0-1].raw +0 -0
  442. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 2.0-2].raw +0 -0
  443. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 3.0-1].raw +0 -0
  444. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 3.0-2].raw +0 -0
  445. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_unknown_schema_error[Open API 3.0].raw +0 -0
  446. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_unresolvable_links[Open API 3.0].raw +0 -0
  447. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_unresolvable_reference_with_disabled_validation.raw +0 -0
  448. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 2.0-1].raw +0 -0
  449. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 2.0-2].raw +0 -0
  450. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 3.0-1].raw +0 -0
  451. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 3.0-2].raw +0 -0
  452. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 2.0-1].raw +0 -0
  453. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 2.0-2].raw +0 -0
  454. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 3.0-1].raw +0 -0
  455. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 3.0-2].raw +0 -0
  456. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_unsupported_regex.raw +0 -0
  457. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_useful_traceback[Open API 3.0].raw +0 -0
  458. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_wait_for_schema_not_enough.raw +0 -0
  459. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_yaml_parsing_of_floats[Open API 3.0].raw +0 -0
  460. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_hooks/test_after_call[real-Open API 3.0].raw +0 -0
  461. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_hooks/test_after_call[wsgi-Open API 3.0].raw +0 -0
  462. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/cert.pem +0 -0
  463. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/conftest.py +0 -0
  464. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/output/__init__.py +0 -0
  465. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/output/test_default.py +0 -0
  466. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/test_asgi.py +0 -0
  467. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/test_callbacks.py +0 -0
  468. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/test_cassettes.py +0 -0
  469. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/test_checks.py +0 -0
  470. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/test_commands.py +0 -0
  471. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/test_crashes.py +0 -0
  472. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/test_hooks.py +0 -0
  473. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/test_junitxml.py +0 -0
  474. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/test_options.py +0 -0
  475. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/test_targeted.py +0 -0
  476. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/code_samples/__snapshots__/test_python/test_cli_output[Open API 2.0].raw +0 -0
  477. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/code_samples/__snapshots__/test_python/test_cli_output[Open API 3.0].raw +0 -0
  478. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/code_samples/conftest.py +0 -0
  479. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/code_samples/test_curl.py +0 -0
  480. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/code_samples/test_python.py +0 -0
  481. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/conftest.py +0 -0
  482. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/contrib/__snapshots__/test_unique_data/test_cli[None].raw +0 -0
  483. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema0].raw +0 -0
  484. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema1].raw +0 -0
  485. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema2].raw +0 -0
  486. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/contrib/__snapshots__/test_unique_data/test_explicit_headers[1].raw +0 -0
  487. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/contrib/__snapshots__/test_unique_data/test_explicit_headers[2].raw +0 -0
  488. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/contrib/openapi/__snapshots__/test_fill_missing_examples/test_fills_missing_examples.raw +0 -0
  489. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/contrib/openapi/formats/test_uuid.py +0 -0
  490. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/contrib/openapi/test_fill_missing_examples.py +0 -0
  491. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/contrib/test_install.py +0 -0
  492. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/contrib/test_unique_data.py +0 -0
  493. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/data/petstore_v2.yaml +0 -0
  494. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/data/petstore_v3.yaml +0 -0
  495. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/data/relative_files/components/parameters.yaml +0 -0
  496. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/data/relative_files/components/responses.yaml +0 -0
  497. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/data/relative_files/components/schemas.yaml +0 -0
  498. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/data/relative_files/main.yaml +0 -0
  499. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/data/relative_files/paths/user-account.yaml +0 -0
  500. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/data/simple_openapi.yaml +0 -0
  501. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/data/simple_swagger.yaml +0 -0
  502. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/experimental/__snapshots__/test_experiments/test_not_enabled.raw +0 -0
  503. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/experimental/conftest.py +0 -0
  504. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/experimental/test_experiments.py +0 -0
  505. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/experimental/test_openapi_3_1.py +0 -0
  506. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/extra/__init__.py +0 -0
  507. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/extra/test_aiohttp.py +0 -0
  508. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/filters/test_matching.py +0 -0
  509. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/hooks/test_filter_operations.py +0 -0
  510. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/hooks/test_hooks.py +0 -0
  511. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/loaders/conftest.py +0 -0
  512. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/loaders/test_app.py +0 -0
  513. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/loaders/test_common.py +0 -0
  514. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/loaders/test_graphql.py +0 -0
  515. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/loaders/test_openapi.py +0 -0
  516. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/loaders/test_yaml.py +0 -0
  517. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/runner/__init__.py +0 -0
  518. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/runner/test_checks.py +0 -0
  519. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/runner/test_events.py +0 -0
  520. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/runner/test_probes.py +0 -0
  521. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/runner/test_runner.py +0 -0
  522. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__init__.py +0 -0
  523. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_cli/test_client_error_on_project_details[Open API 3.0].raw +0 -0
  524. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_cli/test_client_error_on_upload[Open API 3.0].raw +0 -0
  525. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_cli/test_error_in_another_handler[Open API 3.0].raw +0 -0
  526. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_cli/test_github_suggestion[Open API 3.0].raw +0 -0
  527. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_cli/test_not_authenticated_with_name.raw +0 -0
  528. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_cli/test_two_names.raw +0 -0
  529. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_cli/test_unauthorized[Open API 3.0].raw +0 -0
  530. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_cli/test_unknown_error_on_upload[Open API 3.0].raw +0 -0
  531. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_cli/test_upload_failure[Open API 3.0].raw +0 -0
  532. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_cli/test_upload_success[Open API 3.0].raw +0 -0
  533. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_extensions/test_connection_error[Open API 3.0].raw +0 -0
  534. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_extensions/test_custom_format.raw +0 -0
  535. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_extensions/test_dry_run[Open API 3.0].raw +0 -0
  536. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_extensions/test_forbidden[Open API 3.0].raw +0 -0
  537. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_extensions/test_graphql_scalars.raw +0 -0
  538. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_extensions/test_internal_server_error[Open API 3.0].raw +0 -0
  539. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_extensions/test_invalid_extension[Open API 3.0-42].raw +0 -0
  540. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_extensions/test_invalid_extension[Open API 3.0-extension1].raw +0 -0
  541. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_extensions/test_invalid_payload[Open API 3.0].raw +0 -0
  542. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_extensions/test_media_type_extension[strategy0].raw +0 -0
  543. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_extensions/test_media_type_extension[strategy1].raw +0 -0
  544. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_extensions/test_oversize_text[Open API 3.0].raw +0 -0
  545. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_extensions/test_schema_patches[patch0-expected0].raw +0 -0
  546. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_extensions/test_schema_patches[patch1-expected1].raw +0 -0
  547. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_extensions/test_schema_patches[patch2-expected2].raw +0 -0
  548. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_extensions/test_unknown_extension_in_cli[Open API 3.0].raw +0 -0
  549. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/conftest.py +0 -0
  550. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/test_auth.py +0 -0
  551. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/test_ci.py +0 -0
  552. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/test_cli.py +0 -0
  553. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/test_extensions.py +0 -0
  554. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/test_report.py +0 -0
  555. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/test_serialization.py +0 -0
  556. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/test_usage.py +0 -0
  557. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/graphql/__snapshots__/test_basic/test_schema_error[ntype Query {n 123(created Int!) Int!n}-.whatever].raw +0 -0
  558. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/graphql/__snapshots__/test_basic/test_schema_error[ntype Query {n func(created Unknown!) Int!n}-.gql].raw +0 -0
  559. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/graphql/__snapshots__/test_custom_scalars/test_built_in_scalars_in_cli.raw +0 -0
  560. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/graphql/__snapshots__/test_custom_scalars/test_custom_scalar_in_cli.raw +0 -0
  561. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/graphql/test_basic.py +0 -0
  562. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/graphql/test_custom_scalars.py +0 -0
  563. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/graphql/test_pytest.py +0 -0
  564. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/__snapshots__/test_examples/test_network_error_with_flaky_generation.raw +0 -0
  565. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/__snapshots__/test_examples/test_parameter_override.raw +0 -0
  566. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/__snapshots__/test_media_types/test_explicit_example_with_custom_media_type.raw +0 -0
  567. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/blank.pdf +0 -0
  568. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/conftest.py +0 -0
  569. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/parameters/test_forms.py +0 -0
  570. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/parameters/test_non_payload.py +0 -0
  571. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/parameters/test_simple_payloads.py +0 -0
  572. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/randomized/__init__.py +0 -0
  573. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/randomized/factory.py +0 -0
  574. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/randomized/test_randomized.py +0 -0
  575. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/randomized/types.py +0 -0
  576. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/randomized/v2.py +0 -0
  577. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/stateful/__init__.py +0 -0
  578. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/stateful/conftest.py +0 -0
  579. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/stateful/test_config.py +0 -0
  580. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/stateful/test_runner.py +0 -0
  581. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/stateful/test_stateful.py +0 -0
  582. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/test_examples.py +0 -0
  583. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/test_expressions.py +0 -0
  584. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/test_hypothesis.py +0 -0
  585. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/test_links.py +0 -0
  586. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/test_media_types.py +0 -0
  587. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/test_parameters.py +0 -0
  588. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/test_schemas.py +0 -0
  589. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/test_security.py +0 -0
  590. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/test_serializing.py +0 -0
  591. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/test_utils.py +0 -0
  592. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/test_validation.py +0 -0
  593. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_app.py +0 -0
  594. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_asgi.py +0 -0
  595. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_async.py +0 -0
  596. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_common_parameters.py +0 -0
  597. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_converter.py +0 -0
  598. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_dereferencing.py +0 -0
  599. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_examples.py +0 -0
  600. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_filters.py +0 -0
  601. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_fixups.py +0 -0
  602. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_internal.py +0 -0
  603. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_lazy.py +0 -0
  604. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_models.py +0 -0
  605. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_output.py +0 -0
  606. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_package.py +0 -0
  607. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_parameters.py +0 -0
  608. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_parametrization.py +0 -0
  609. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_petstore.py +0 -0
  610. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_pytest.py +0 -0
  611. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_rate_limit.py +0 -0
  612. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_recoverable_errors.py +0 -0
  613. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_required.py +0 -0
  614. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_sanitizing_output.py +0 -0
  615. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_schemas.py +0 -0
  616. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_serialization.py +0 -0
  617. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_stateful.py +0 -0
  618. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_unittest.py +0 -0
  619. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_utils.py +0 -0
  620. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_wsgi.py +0 -0
  621. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/transports/test_content_types.py +0 -0
  622. {schemathesis-3.31.0 → schemathesis-3.31.1}/test/utils.py +0 -0
  623. {schemathesis-3.31.0 → schemathesis-3.31.1}/test-corpus/test_corpus.py +0 -0
  624. {schemathesis-3.31.0 → schemathesis-3.31.1}/test_server.sh +0 -0
  625. {schemathesis-3.31.0 → schemathesis-3.31.1}/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.25.10
41
+ uses: github/codeql-action/init@v3.25.11
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.10
52
+ uses: github/codeql-action/autobuild@v3.25.11
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.10
66
+ uses: github/codeql-action/analyze@v3.25.11
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: schemathesis
3
- Version: 3.31.0
3
+ Version: 3.31.1
4
4
  Summary: Property-based testing framework for Open API and GraphQL based apps
5
5
  Project-URL: Documentation, https://schemathesis.readthedocs.io/en/stable/
6
6
  Project-URL: Changelog, https://schemathesis.readthedocs.io/en/stable/changelog.html
@@ -1,9 +1,22 @@
1
1
  Changelog
2
2
  =========
3
3
 
4
- :version:`Unreleased <v3.31.0...HEAD>` - TBD
4
+ :version:`Unreleased <v3.31.1...HEAD>` - TBD
5
5
  --------------------------------------------
6
6
 
7
+ .. _v3.31.1:
8
+
9
+ :version:`3.31.1 <v3.31.0...v3.31.1>` - 2024-07-03
10
+ --------------------------------------------------
11
+
12
+ **Fixed**
13
+
14
+ - Generating negative test cases for path and query parameters. :issue:`2312`
15
+
16
+ **Changed**
17
+
18
+ - Do not consider ignoring additional parameters as a failure in ``negative_data_rejection``.
19
+
7
20
  .. _v3.31.0:
8
21
 
9
22
  :version:`3.31.0 <v3.30.4...v3.31.0>` - 2024-06-30
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "schemathesis"
7
- version = "3.31.0"
7
+ version = "3.31.1"
8
8
  description = "Property-based testing framework for Open API and GraphQL based apps"
9
9
  keywords = ["pytest", "hypothesis", "openapi", "graphql", "testing"]
10
10
  authors = [{ name = "Dmitry Dygalo", email = "dmitry@dygalo.dev" }]
@@ -119,6 +119,19 @@ def prepare_request_data(kwargs: dict[str, Any]) -> PreparedRequestData:
119
119
  )
120
120
 
121
121
 
122
+ @dataclass
123
+ class GenerationMetadata:
124
+ """Stores various information about how data is generated."""
125
+
126
+ query: DataGenerationMethod | None
127
+ path_parameters: DataGenerationMethod | None
128
+ headers: DataGenerationMethod | None
129
+ cookies: DataGenerationMethod | None
130
+ body: DataGenerationMethod | None
131
+
132
+ __slots__ = ("query", "path_parameters", "headers", "cookies", "body")
133
+
134
+
122
135
  @dataclass(repr=False)
123
136
  class Case:
124
137
  """A single test case parameters."""
@@ -139,6 +152,8 @@ class Case:
139
152
  media_type: str | None = None
140
153
  source: CaseSource | None = None
141
154
 
155
+ meta: GenerationMetadata | None = None
156
+
142
157
  # The way the case was generated (None for manually crafted ones)
143
158
  data_generation_method: DataGenerationMethod | None = None
144
159
  _auth: requests.auth.AuthBase | None = None
@@ -25,7 +25,7 @@ from ...generation import DataGenerationMethod, GenerationConfig
25
25
  from ...hooks import HookContext, HookDispatcher, apply_to_all_dispatchers
26
26
  from ...internal.copy import fast_deepcopy
27
27
  from ...internal.validation import is_illegal_surrogate
28
- from ...models import APIOperation, Case, cant_serialize
28
+ from ...models import APIOperation, Case, GenerationMetadata, cant_serialize
29
29
  from ...serializers import Binary
30
30
  from ...transports.content_types import parse_content_type
31
31
  from ...transports.headers import has_invalid_characters, is_latin_1_encodable
@@ -36,7 +36,7 @@ from .formats import STRING_FORMATS
36
36
  from .media_types import MEDIA_TYPES
37
37
  from .negative import negative_schema
38
38
  from .negative.utils import can_negate
39
- from .parameters import OpenAPIBody, parameters_to_json_schema
39
+ from .parameters import OpenAPIBody, OpenAPIParameter, parameters_to_json_schema
40
40
  from .utils import is_header_location
41
41
 
42
42
  HEADER_FORMAT = "_header_value"
@@ -207,6 +207,13 @@ def get_case_strategy(
207
207
  query=query_.value,
208
208
  body=body_.value,
209
209
  data_generation_method=generator,
210
+ meta=GenerationMetadata(
211
+ query=query_.generator,
212
+ path_parameters=path_parameters_.generator,
213
+ headers=headers_.generator,
214
+ cookies=cookies_.generator,
215
+ body=body_.generator,
216
+ ),
210
217
  )
211
218
  auth_context = auths.AuthContext(
212
219
  operation=operation,
@@ -347,6 +354,22 @@ def can_negate_headers(operation: APIOperation, location: str) -> bool:
347
354
  return any(header != {"type": "string"} for header in headers.values())
348
355
 
349
356
 
357
+ def get_schema_for_location(
358
+ operation: APIOperation, location: str, parameters: Iterable[OpenAPIParameter]
359
+ ) -> dict[str, Any]:
360
+ schema = parameters_to_json_schema(operation, parameters)
361
+ if location == "path":
362
+ if not operation.schema.validate_schema:
363
+ # If schema validation is disabled, we try to generate data even if the parameter definition
364
+ # contains errors.
365
+ # In this case, we know that the `required` keyword should always be `True`.
366
+ schema["required"] = list(schema["properties"])
367
+ for prop in schema.get("properties", {}).values():
368
+ if prop.get("type") == "string":
369
+ prop.setdefault("minLength", 1)
370
+ return operation.schema.prepare_schema(schema)
371
+
372
+
350
373
  def get_parameters_strategy(
351
374
  operation: APIOperation,
352
375
  strategy_factory: StrategyFactory,
@@ -361,17 +384,7 @@ def get_parameters_strategy(
361
384
  nested_cache_key = (strategy_factory, location, tuple(sorted(exclude)))
362
385
  if operation in _PARAMETER_STRATEGIES_CACHE and nested_cache_key in _PARAMETER_STRATEGIES_CACHE[operation]:
363
386
  return _PARAMETER_STRATEGIES_CACHE[operation][nested_cache_key]
364
- schema = parameters_to_json_schema(operation, parameters)
365
- if location == "path":
366
- if not operation.schema.validate_schema:
367
- # If schema validation is disabled, we try to generate data even if the parameter definition
368
- # contains errors.
369
- # In this case, we know that the `required` keyword should always be `True`.
370
- schema["required"] = list(schema["properties"])
371
- for prop in schema.get("properties", {}).values():
372
- if prop.get("type") == "string":
373
- prop.setdefault("minLength", 1)
374
- schema = operation.schema.prepare_schema(schema)
387
+ schema = get_schema_for_location(operation, location, parameters)
375
388
  for name in exclude:
376
389
  # Values from `exclude` are not necessarily valid for the schema - they come from user-defined examples
377
390
  # that may be invalid
@@ -145,7 +145,12 @@ def negative_data_rejection(response: GenericResponse, case: Case) -> bool | Non
145
145
 
146
146
  if not isinstance(case.operation.schema, BaseOpenAPISchema):
147
147
  return True
148
- if case.data_generation_method and case.data_generation_method.is_negative and 200 <= response.status_code < 300:
148
+ if (
149
+ case.data_generation_method
150
+ and case.data_generation_method.is_negative
151
+ and 200 <= response.status_code < 300
152
+ and not has_only_additional_properties_in_non_body_parameters(case)
153
+ ):
149
154
  exc_class = get_negative_rejection_error(case.operation.verbose_name, response.status_code)
150
155
  raise exc_class(
151
156
  failures.AcceptedNegativeData.title,
@@ -154,6 +159,34 @@ def negative_data_rejection(response: GenericResponse, case: Case) -> bool | Non
154
159
  return None
155
160
 
156
161
 
162
+ def has_only_additional_properties_in_non_body_parameters(case: Case) -> bool:
163
+ # Check if the case contains only additional properties in query, headers, or cookies.
164
+ # This function is used to determine if negation is solely in the form of extra properties,
165
+ # which are often ignored for backward-compatibility by the tested apps
166
+ from ._hypothesis import get_schema_for_location
167
+
168
+ meta = case.meta
169
+ if meta is None:
170
+ # Ignore manually created cases
171
+ return False
172
+ if (meta.body and meta.body.is_negative) or (meta.path_parameters and meta.path_parameters.is_negative):
173
+ # Body or path negations always imply other negations
174
+ return False
175
+ validator_cls = case.operation.schema.validator_cls # type: ignore[attr-defined]
176
+ for container in ("query", "headers", "cookies"):
177
+ meta_for_location = getattr(meta, container)
178
+ value = getattr(case, container)
179
+ if value is not None and meta_for_location is not None and meta_for_location.is_negative:
180
+ parameters = getattr(case.operation, container)
181
+ value_without_additional_properties = {k: v for k, v in value.items() if k in parameters}
182
+ schema = get_schema_for_location(case.operation, container, parameters)
183
+ if not validator_cls(schema).is_valid(value_without_additional_properties):
184
+ # Other types of negation found
185
+ return False
186
+ # Only additional properties are added
187
+ return True
188
+
189
+
157
190
  def use_after_free(response: GenericResponse, original: Case) -> bool | None:
158
191
  from ...transports.responses import get_reason
159
192
  from .schemas import BaseOpenAPISchema
@@ -81,6 +81,10 @@ class MutationContext:
81
81
  def is_path_location(self) -> bool:
82
82
  return self.location == "path"
83
83
 
84
+ @property
85
+ def is_query_location(self) -> bool:
86
+ return self.location == "query"
87
+
84
88
  def mutate(self, draw: Draw) -> Schema:
85
89
  # On the top level, Schemathesis creates "object" schemas for all parameter "in" values except "body", which is
86
90
  # taken as-is. Therefore, we can only apply mutations that won't change the Open API semantics of the schema.
@@ -203,8 +207,11 @@ def change_type(context: MutationContext, draw: Draw, schema: Schema) -> Mutatio
203
207
  if context.media_type == "application/x-www-form-urlencoded":
204
208
  # Form data should be an object, do not change it
205
209
  return MutationResult.FAILURE
206
- # Headers are always strings, can't negate this
207
- if context.is_header_location:
210
+ # For headers, query and path parameters, if the current type is string, then it already
211
+ # includes all possible values as those parameters will be stringified before sending,
212
+ # therefore it can't be negated.
213
+ types = get_type(schema)
214
+ if "string" in types and (context.is_header_location or context.is_path_location or context.is_query_location):
208
215
  return MutationResult.FAILURE
209
216
  candidates = _get_type_candidates(context, schema)
210
217
  if not candidates:
@@ -19,6 +19,7 @@ from typing import (
19
19
  Mapping,
20
20
  NoReturn,
21
21
  Sequence,
22
+ Type,
22
23
  TypeVar,
23
24
  cast,
24
25
  )
@@ -615,6 +616,12 @@ class BaseOpenAPISchema(BaseSchema):
615
616
  def get_tags(self, operation: APIOperation) -> list[str] | None:
616
617
  return operation.definition.raw.get("tags")
617
618
 
619
+ @property
620
+ def validator_cls(self) -> Type[jsonschema.Validator]:
621
+ if self.spec_version.startswith("3.1") and experimental.OPEN_API_3_1.is_enabled:
622
+ return jsonschema.Draft202012Validator
623
+ return jsonschema.Draft4Validator
624
+
618
625
  def validate_response(self, operation: APIOperation, response: GenericResponse) -> bool | None:
619
626
  responses = {str(key): value for key, value in operation.definition.raw.get("responses", {}).items()}
620
627
  status_code = str(response.status_code)
@@ -658,13 +665,9 @@ class BaseOpenAPISchema(BaseSchema):
658
665
  resolver = ConvertingResolver(
659
666
  self.location or "", self.raw_schema, nullable_name=self.nullable_name, is_response_schema=True
660
667
  )
661
- if self.spec_version.startswith("3.1") and experimental.OPEN_API_3_1.is_enabled:
662
- cls = jsonschema.Draft202012Validator
663
- else:
664
- cls = jsonschema.Draft4Validator
665
668
  with in_scopes(resolver, scopes):
666
669
  try:
667
- jsonschema.validate(data, schema, cls=cls, resolver=resolver)
670
+ jsonschema.validate(data, schema, cls=self.validator_cls, resolver=resolver)
668
671
  except jsonschema.ValidationError as exc:
669
672
  exc_class = get_schema_validation_error(operation.verbose_name, exc)
670
673
  ctx = failures.ValidationErrorContext.from_exception(exc, output_config=operation.schema.output_config)
@@ -1,6 +1,14 @@
1
1
  import pytest
2
2
 
3
- from schemathesis.specs.openapi.checks import ResourcePath, _is_prefix_operation
3
+ import schemathesis
4
+ from schemathesis.generation import DataGenerationMethod
5
+ from schemathesis.models import Case, GenerationMetadata
6
+ from schemathesis.specs.openapi.checks import (
7
+ ResourcePath,
8
+ _is_prefix_operation,
9
+ has_only_additional_properties_in_non_body_parameters,
10
+ negative_data_rejection,
11
+ )
4
12
 
5
13
 
6
14
  @pytest.mark.parametrize(
@@ -64,3 +72,92 @@ from schemathesis.specs.openapi.checks import ResourcePath, _is_prefix_operation
64
72
  )
65
73
  def test_is_prefix_operation(lhs, lhs_vars, rhs, rhs_vars, expected):
66
74
  assert _is_prefix_operation(ResourcePath(lhs, lhs_vars), ResourcePath(rhs, rhs_vars)) == expected
75
+
76
+
77
+ def build_metadata(path_parameters=None, query=None, headers=None, cookies=None, body=None):
78
+ return GenerationMetadata(path_parameters=path_parameters, query=query, headers=headers, cookies=cookies, body=body)
79
+
80
+
81
+ @pytest.fixture
82
+ def sample_schema(empty_open_api_3_schema):
83
+ empty_open_api_3_schema["paths"] = {
84
+ "/test": {
85
+ "post": {
86
+ "parameters": [
87
+ {
88
+ "in": "query",
89
+ "name": "key",
90
+ "schema": {"type": "integer", "minimum": 5},
91
+ },
92
+ {
93
+ "in": "headers",
94
+ "name": "X-Key",
95
+ "schema": {"type": "integer", "minimum": 5},
96
+ },
97
+ ]
98
+ }
99
+ }
100
+ }
101
+ return empty_open_api_3_schema
102
+
103
+
104
+ @pytest.mark.parametrize(
105
+ "kwargs, expected",
106
+ (
107
+ ({}, False),
108
+ (
109
+ {"meta": build_metadata(body=DataGenerationMethod.negative)},
110
+ False,
111
+ ),
112
+ (
113
+ {
114
+ "query": {"key": 1},
115
+ "meta": build_metadata(query=DataGenerationMethod.negative),
116
+ },
117
+ False,
118
+ ),
119
+ (
120
+ {
121
+ "query": {"key": 1},
122
+ "headers": {"X-Key": 42},
123
+ "meta": build_metadata(query=DataGenerationMethod.negative),
124
+ },
125
+ False,
126
+ ),
127
+ (
128
+ {
129
+ "query": {"key": 5, "unknown": 3},
130
+ "meta": build_metadata(query=DataGenerationMethod.negative),
131
+ },
132
+ True,
133
+ ),
134
+ (
135
+ {
136
+ "query": {"key": 5, "unknown": 3},
137
+ "headers": {"X-Key": 42},
138
+ "meta": build_metadata(query=DataGenerationMethod.negative),
139
+ },
140
+ True,
141
+ ),
142
+ ),
143
+ )
144
+ def test_has_only_additional_properties_in_non_body_parameters(sample_schema, kwargs, expected):
145
+ schema = schemathesis.from_dict(sample_schema)
146
+ operation = schema["/test"]["POST"]
147
+ case = Case(operation=operation, generation_time=0.0, **kwargs)
148
+ assert has_only_additional_properties_in_non_body_parameters(case) is expected
149
+
150
+
151
+ def test_negative_data_rejection_on_additional_properties(response_factory, sample_schema):
152
+ # See GH-2312
153
+ response = response_factory.requests()
154
+ schema = schemathesis.from_dict(sample_schema)
155
+ operation = schema["/test"]["POST"]
156
+ case = Case(
157
+ operation=operation,
158
+ generation_time=0.0,
159
+ meta=build_metadata(query=DataGenerationMethod.negative),
160
+ data_generation_method=DataGenerationMethod.negative,
161
+ query={"key": 5, "unknown": 3},
162
+ )
163
+ assert negative_data_rejection(response, case) is None
@@ -92,43 +92,46 @@ def test_top_level_strategy(data, location, schema):
92
92
 
93
93
 
94
94
  @pytest.mark.parametrize(
95
- "mutation, schema, validate",
95
+ "mutation, schema, location, validate",
96
96
  (
97
97
  # No constraints besides `type`
98
- (negate_constraints, {"type": "integer"}, True),
98
+ (negate_constraints, {"type": "integer"}, "body", True),
99
99
  # Missing type (i.e. all types are possible)
100
- (change_type, {}, True),
100
+ (change_type, {}, "body", True),
101
101
  # All types explicitly
102
- (change_type, {"type": ["string", "integer", "number", "object", "array", "boolean", "null"]}, True),
102
+ (change_type, {"type": ["string", "integer", "number", "object", "array", "boolean", "null"]}, "body", True),
103
103
  # No properties to remove
104
- (remove_required_property, {}, True),
104
+ (remove_required_property, {}, "body", True),
105
105
  # Non-"object" type
106
- (remove_required_property, {"type": "array"}, True),
106
+ (remove_required_property, {"type": "array"}, "body", True),
107
107
  # No properties at all
108
- (change_properties, {}, True),
108
+ (change_properties, {}, "body", True),
109
109
  # No properties that can be mutated
110
- (change_properties, {"properties": {"foo": {}}}, True),
110
+ (change_properties, {"properties": {"foo": {}}}, "body", True),
111
111
  # No items
112
- (change_items, {"type": "array"}, True),
112
+ (change_items, {"type": "array"}, "body", True),
113
113
  # `items` accept everything
114
- (change_items, {"type": "array", "items": {}}, True),
115
- (change_items, {"type": "array", "items": True}, False),
114
+ (change_items, {"type": "array", "items": {}}, "body", True),
115
+ (change_items, {"type": "array", "items": True}, "body", False),
116
116
  # `items` is equivalent to accept-everything schema
117
- (change_items, {"type": "array", "items": {"uniqueItems": False}}, True),
117
+ (change_items, {"type": "array", "items": {"uniqueItems": False}}, "body", True),
118
118
  # The first element could be anything
119
- (change_items, {"type": "array", "items": [{}]}, True),
119
+ (change_items, {"type": "array", "items": [{}]}, "body", True),
120
+ # Query and path parameters are always strings
121
+ (change_type, {"type": "string"}, "path", True),
122
+ (change_type, {"type": "string"}, "query", True),
120
123
  ),
121
124
  )
122
125
  @given(data=st.data())
123
126
  @settings(deadline=None, suppress_health_check=SUPPRESSED_HEALTH_CHECKS, max_examples=MAX_EXAMPLES)
124
- def test_failing_mutations(data, mutation, schema, validate):
127
+ def test_failing_mutations(data, mutation, schema, location, validate):
125
128
  if validate:
126
129
  validate_schema(schema)
127
130
  original_schema = fast_deepcopy(schema)
128
131
  # When mutation can't be applied
129
132
  # Then it returns "failure"
130
133
  assert (
131
- mutation(MutationContext(schema, {}, "body", "application/json"), data.draw, schema) == MutationResult.FAILURE
134
+ mutation(MutationContext(schema, {}, location, "application/json"), data.draw, schema) == MutationResult.FAILURE
132
135
  )
133
136
  # And doesn't mutate the input schema
134
137
  assert schema == original_schema
@@ -203,7 +206,7 @@ def test_successful_mutations(data, mutation, schema):
203
206
  {
204
207
  "type": "object",
205
208
  "properties": {
206
- "foo": {"type": "string"},
209
+ "foo": {"type": "integer"},
207
210
  },
208
211
  "required": [
209
212
  "foo",
@@ -40,7 +40,7 @@ def test_as_strategy(swagger_20):
40
40
  strategy = operation.as_strategy()
41
41
  assert isinstance(strategy, st.SearchStrategy)
42
42
  assert strategy.example() == Case(
43
- operation, generation_time=ANY, data_generation_method=DataGenerationMethod.positive
43
+ operation, generation_time=ANY, data_generation_method=DataGenerationMethod.positive, meta=ANY
44
44
  )
45
45
 
46
46
 
@@ -75,6 +75,7 @@ def test_get_examples(location, swagger_20):
75
75
  generation_time=ANY,
76
76
  data_generation_method=DataGenerationMethod.positive,
77
77
  media_type=media_type,
78
+ meta=ANY,
78
79
  **{container: expected},
79
80
  )
80
81
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes