schemathesis 3.39.10__tar.gz → 3.39.12__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 (692) hide show
  1. {schemathesis-3.39.10 → schemathesis-3.39.12}/PKG-INFO +1 -1
  2. {schemathesis-3.39.10 → schemathesis-3.39.12}/docs/changelog.rst +34 -1
  3. {schemathesis-3.39.10 → schemathesis-3.39.12}/docs/contrib.rst +1 -1
  4. {schemathesis-3.39.10 → schemathesis-3.39.12}/pyproject.toml +1 -1
  5. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/_hypothesis.py +119 -61
  6. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/cli/__init__.py +14 -1
  7. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/cli/callbacks.py +8 -0
  8. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/cli/options.py +6 -1
  9. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/failures.py +6 -0
  10. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/generation/__init__.py +1 -0
  11. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/internal/checks.py +3 -1
  12. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/runner/impl/core.py +18 -8
  13. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/specs/openapi/checks.py +6 -1
  14. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/specs/openapi/examples.py +3 -5
  15. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/specs/openapi/patterns.py +33 -3
  16. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/specs/openapi/serialization.py +12 -0
  17. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/apps/openapi/_aiohttp/handlers.py +8 -0
  18. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/apps/openapi/schema.py +2 -0
  19. schemathesis-3.39.12/test/cli/__snapshots__/test_checks/test_negative_data_rejection_displays_all_cases.raw +103 -0
  20. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_run_output[args24].raw +7 -0
  21. schemathesis-3.39.12/test/cli/__snapshots__/test_commands/test_warning_on_no_2xx.raw +24 -0
  22. schemathesis-3.39.12/test/cli/__snapshots__/test_commands/test_warning_on_no_2xx_options_only.raw +31 -0
  23. schemathesis-3.39.12/test/cli/__snapshots__/test_commands/test_warning_on_unauthorized.raw +24 -0
  24. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/test_checks.py +76 -0
  25. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/test_commands.py +14 -1
  26. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/coverage/__snapshots__/test_phase/test_negative_data_rejection.raw +1 -1
  27. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/coverage/test_phase.py +28 -13
  28. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/openapi/test_patterns.py +3 -0
  29. {schemathesis-3.39.10 → schemathesis-3.39.12}/.dockerignore +0 -0
  30. {schemathesis-3.39.10 → schemathesis-3.39.12}/.github/FUNDING.yml +0 -0
  31. {schemathesis-3.39.10 → schemathesis-3.39.12}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  32. {schemathesis-3.39.10 → schemathesis-3.39.12}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  33. {schemathesis-3.39.10 → schemathesis-3.39.12}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  34. {schemathesis-3.39.10 → schemathesis-3.39.12}/.github/dependabot.yml +0 -0
  35. {schemathesis-3.39.10 → schemathesis-3.39.12}/.github/workflows/build.yml +0 -0
  36. {schemathesis-3.39.10 → schemathesis-3.39.12}/.github/workflows/codeql-analysis.yml +0 -0
  37. {schemathesis-3.39.10 → schemathesis-3.39.12}/.github/workflows/codspeed.yml +0 -0
  38. {schemathesis-3.39.10 → schemathesis-3.39.12}/.github/workflows/commit.yml +0 -0
  39. {schemathesis-3.39.10 → schemathesis-3.39.12}/.github/workflows/example-build.yml +0 -0
  40. {schemathesis-3.39.10 → schemathesis-3.39.12}/.github/workflows/example-no-build.yml +0 -0
  41. {schemathesis-3.39.10 → schemathesis-3.39.12}/.github/workflows/release.yml +0 -0
  42. {schemathesis-3.39.10 → schemathesis-3.39.12}/.github/workflows/test-corpus.yml +0 -0
  43. {schemathesis-3.39.10 → schemathesis-3.39.12}/.github/workflows/test-hypothesis.yml +0 -0
  44. {schemathesis-3.39.10 → schemathesis-3.39.12}/.github/workflows/update-pre-commit.yml +0 -0
  45. {schemathesis-3.39.10 → schemathesis-3.39.12}/.gitignore +0 -0
  46. {schemathesis-3.39.10 → schemathesis-3.39.12}/.pre-commit-config.yaml +0 -0
  47. {schemathesis-3.39.10 → schemathesis-3.39.12}/.readthedocs.yml +0 -0
  48. {schemathesis-3.39.10 → schemathesis-3.39.12}/.relint.yml +0 -0
  49. {schemathesis-3.39.10 → schemathesis-3.39.12}/.rstcheck.cfg +0 -0
  50. {schemathesis-3.39.10 → schemathesis-3.39.12}/.yamllint +0 -0
  51. {schemathesis-3.39.10 → schemathesis-3.39.12}/CITATION.cff +0 -0
  52. {schemathesis-3.39.10 → schemathesis-3.39.12}/CODE_OF_CONDUCT.md +0 -0
  53. {schemathesis-3.39.10 → schemathesis-3.39.12}/CONTRIBUTING.rst +0 -0
  54. {schemathesis-3.39.10 → schemathesis-3.39.12}/Dockerfile +0 -0
  55. {schemathesis-3.39.10 → schemathesis-3.39.12}/Dockerfile.bookworm +0 -0
  56. {schemathesis-3.39.10 → schemathesis-3.39.12}/LICENSE +0 -0
  57. {schemathesis-3.39.10 → schemathesis-3.39.12}/README.md +0 -0
  58. {schemathesis-3.39.10 → schemathesis-3.39.12}/SECURITY.md +0 -0
  59. {schemathesis-3.39.10 → schemathesis-3.39.12}/benches/cli.py +0 -0
  60. {schemathesis-3.39.10 → schemathesis-3.39.12}/benches/coverage_phase.py +0 -0
  61. {schemathesis-3.39.10 → schemathesis-3.39.12}/benches/references.py +0 -0
  62. {schemathesis-3.39.10 → schemathesis-3.39.12}/benches/schema.py +0 -0
  63. {schemathesis-3.39.10 → schemathesis-3.39.12}/changelog.py +0 -0
  64. {schemathesis-3.39.10 → schemathesis-3.39.12}/codecov.yml +0 -0
  65. {schemathesis-3.39.10 → schemathesis-3.39.12}/corpus/data/graphql.tar.gz +0 -0
  66. {schemathesis-3.39.10 → schemathesis-3.39.12}/corpus/data/openapi-3.0.tar.gz +0 -0
  67. {schemathesis-3.39.10 → schemathesis-3.39.12}/corpus/data/openapi-3.1.tar.gz +0 -0
  68. {schemathesis-3.39.10 → schemathesis-3.39.12}/corpus/data/swagger-2.0.tar.gz +0 -0
  69. {schemathesis-3.39.10 → schemathesis-3.39.12}/corpus/tools.py +0 -0
  70. {schemathesis-3.39.10 → schemathesis-3.39.12}/docs/Makefile +0 -0
  71. {schemathesis-3.39.10 → schemathesis-3.39.12}/docs/additional-content.rst +0 -0
  72. {schemathesis-3.39.10 → schemathesis-3.39.12}/docs/api.rst +0 -0
  73. {schemathesis-3.39.10 → schemathesis-3.39.12}/docs/auth.rst +0 -0
  74. {schemathesis-3.39.10 → schemathesis-3.39.12}/docs/cli.rst +0 -0
  75. {schemathesis-3.39.10 → schemathesis-3.39.12}/docs/compatibility.rst +0 -0
  76. {schemathesis-3.39.10 → schemathesis-3.39.12}/docs/conf.py +0 -0
  77. {schemathesis-3.39.10 → schemathesis-3.39.12}/docs/continuous_integration.rst +0 -0
  78. {schemathesis-3.39.10 → schemathesis-3.39.12}/docs/data-generation.rst +0 -0
  79. {schemathesis-3.39.10 → schemathesis-3.39.12}/docs/examples.rst +0 -0
  80. {schemathesis-3.39.10 → schemathesis-3.39.12}/docs/experimental.rst +0 -0
  81. {schemathesis-3.39.10 → schemathesis-3.39.12}/docs/extending.rst +0 -0
  82. {schemathesis-3.39.10 → schemathesis-3.39.12}/docs/faq.rst +0 -0
  83. {schemathesis-3.39.10 → schemathesis-3.39.12}/docs/getting-started.rst +0 -0
  84. {schemathesis-3.39.10 → schemathesis-3.39.12}/docs/graphql.rst +0 -0
  85. {schemathesis-3.39.10 → schemathesis-3.39.12}/docs/index.rst +0 -0
  86. {schemathesis-3.39.10 → schemathesis-3.39.12}/docs/python.rst +0 -0
  87. {schemathesis-3.39.10 → schemathesis-3.39.12}/docs/recipes.rst +0 -0
  88. {schemathesis-3.39.10 → schemathesis-3.39.12}/docs/requirements.txt +0 -0
  89. {schemathesis-3.39.10 → schemathesis-3.39.12}/docs/sanitizing.rst +0 -0
  90. {schemathesis-3.39.10 → schemathesis-3.39.12}/docs/service.rst +0 -0
  91. {schemathesis-3.39.10 → schemathesis-3.39.12}/docs/stateful.rst +0 -0
  92. {schemathesis-3.39.10 → schemathesis-3.39.12}/docs/targeted.rst +0 -0
  93. {schemathesis-3.39.10 → schemathesis-3.39.12}/example/Dockerfile +0 -0
  94. {schemathesis-3.39.10 → schemathesis-3.39.12}/example/README.md +0 -0
  95. {schemathesis-3.39.10 → schemathesis-3.39.12}/example/app.py +0 -0
  96. {schemathesis-3.39.10 → schemathesis-3.39.12}/example/compose.yml +0 -0
  97. {schemathesis-3.39.10 → schemathesis-3.39.12}/example/openapi.json +0 -0
  98. {schemathesis-3.39.10 → schemathesis-3.39.12}/example/requirements-app.in +0 -0
  99. {schemathesis-3.39.10 → schemathesis-3.39.12}/example/requirements-app.txt +0 -0
  100. {schemathesis-3.39.10 → schemathesis-3.39.12}/example/requirements-pytest.in +0 -0
  101. {schemathesis-3.39.10 → schemathesis-3.39.12}/example/requirements-pytest.txt +0 -0
  102. {schemathesis-3.39.10 → schemathesis-3.39.12}/example/tests/__init__.py +0 -0
  103. {schemathesis-3.39.10 → schemathesis-3.39.12}/example/tests/conftest.py +0 -0
  104. {schemathesis-3.39.10 → schemathesis-3.39.12}/example/tests/extensions.py +0 -0
  105. {schemathesis-3.39.10 → schemathesis-3.39.12}/example/tests/test_app.py +0 -0
  106. {schemathesis-3.39.10 → schemathesis-3.39.12}/img/demo.gif +0 -0
  107. {schemathesis-3.39.10 → schemathesis-3.39.12}/img/service_github_report.png +0 -0
  108. {schemathesis-3.39.10 → schemathesis-3.39.12}/mypy.ini +0 -0
  109. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/__init__.py +0 -0
  110. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/_compat.py +0 -0
  111. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/_dependency_versions.py +0 -0
  112. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/_lazy_import.py +0 -0
  113. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/_override.py +0 -0
  114. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/_patches.py +0 -0
  115. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/_rate_limiter.py +0 -0
  116. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/_xml.py +0 -0
  117. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/auths.py +0 -0
  118. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/checks.py +0 -0
  119. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/cli/__main__.py +0 -0
  120. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/cli/cassettes.py +0 -0
  121. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/cli/constants.py +0 -0
  122. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/cli/context.py +0 -0
  123. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/cli/debug.py +0 -0
  124. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/cli/handlers.py +0 -0
  125. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/cli/junitxml.py +0 -0
  126. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/cli/output/__init__.py +0 -0
  127. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/cli/output/default.py +0 -0
  128. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/cli/output/short.py +0 -0
  129. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/cli/reporting.py +0 -0
  130. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/cli/sanitization.py +0 -0
  131. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/code_samples.py +0 -0
  132. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/constants.py +0 -0
  133. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/contrib/__init__.py +0 -0
  134. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/contrib/openapi/__init__.py +0 -0
  135. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/contrib/openapi/fill_missing_examples.py +0 -0
  136. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/contrib/openapi/formats/__init__.py +0 -0
  137. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/contrib/openapi/formats/uuid.py +0 -0
  138. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/contrib/unique_data.py +0 -0
  139. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/exceptions.py +0 -0
  140. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/experimental/__init__.py +0 -0
  141. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/extra/__init__.py +0 -0
  142. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/extra/_aiohttp.py +0 -0
  143. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/extra/_flask.py +0 -0
  144. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/extra/_server.py +0 -0
  145. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/extra/pytest_plugin.py +0 -0
  146. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/filters.py +0 -0
  147. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/fixups/__init__.py +0 -0
  148. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/fixups/fast_api.py +0 -0
  149. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/fixups/utf8_bom.py +0 -0
  150. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/generation/_hypothesis.py +0 -0
  151. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/generation/_methods.py +0 -0
  152. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/generation/coverage.py +0 -0
  153. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/graphql.py +0 -0
  154. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/hooks.py +0 -0
  155. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/internal/__init__.py +0 -0
  156. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/internal/copy.py +0 -0
  157. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/internal/datetime.py +0 -0
  158. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/internal/deprecation.py +0 -0
  159. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/internal/diff.py +0 -0
  160. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/internal/extensions.py +0 -0
  161. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/internal/jsonschema.py +0 -0
  162. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/internal/output.py +0 -0
  163. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/internal/result.py +0 -0
  164. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/internal/transformation.py +0 -0
  165. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/internal/validation.py +0 -0
  166. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/lazy.py +0 -0
  167. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/loaders.py +0 -0
  168. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/models.py +0 -0
  169. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/parameters.py +0 -0
  170. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/py.typed +0 -0
  171. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/runner/__init__.py +0 -0
  172. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/runner/events.py +0 -0
  173. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/runner/impl/__init__.py +0 -0
  174. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/runner/impl/context.py +0 -0
  175. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/runner/impl/solo.py +0 -0
  176. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/runner/impl/threadpool.py +0 -0
  177. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/runner/probes.py +0 -0
  178. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/runner/serialization.py +0 -0
  179. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/sanitization.py +0 -0
  180. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/schemas.py +0 -0
  181. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/serializers.py +0 -0
  182. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/service/__init__.py +0 -0
  183. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/service/auth.py +0 -0
  184. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/service/ci.py +0 -0
  185. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/service/client.py +0 -0
  186. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/service/constants.py +0 -0
  187. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/service/events.py +0 -0
  188. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/service/extensions.py +0 -0
  189. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/service/hosts.py +0 -0
  190. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/service/metadata.py +0 -0
  191. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/service/models.py +0 -0
  192. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/service/report.py +0 -0
  193. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/service/serialization.py +0 -0
  194. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/service/usage.py +0 -0
  195. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/specs/__init__.py +0 -0
  196. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/specs/graphql/__init__.py +0 -0
  197. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/specs/graphql/_cache.py +0 -0
  198. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/specs/graphql/loaders.py +0 -0
  199. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/specs/graphql/nodes.py +0 -0
  200. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/specs/graphql/scalars.py +0 -0
  201. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/specs/graphql/schemas.py +0 -0
  202. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/specs/graphql/validation.py +0 -0
  203. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/specs/openapi/__init__.py +0 -0
  204. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/specs/openapi/_cache.py +0 -0
  205. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/specs/openapi/_hypothesis.py +0 -0
  206. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/specs/openapi/constants.py +0 -0
  207. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/specs/openapi/converter.py +0 -0
  208. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/specs/openapi/definitions.py +0 -0
  209. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/specs/openapi/expressions/__init__.py +0 -0
  210. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/specs/openapi/expressions/context.py +0 -0
  211. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/specs/openapi/expressions/errors.py +0 -0
  212. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/specs/openapi/expressions/extractors.py +0 -0
  213. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/specs/openapi/expressions/lexer.py +0 -0
  214. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/specs/openapi/expressions/nodes.py +0 -0
  215. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/specs/openapi/expressions/parser.py +0 -0
  216. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/specs/openapi/formats.py +0 -0
  217. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/specs/openapi/links.py +0 -0
  218. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/specs/openapi/loaders.py +0 -0
  219. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/specs/openapi/media_types.py +0 -0
  220. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/specs/openapi/negative/__init__.py +0 -0
  221. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/specs/openapi/negative/mutations.py +0 -0
  222. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/specs/openapi/negative/types.py +0 -0
  223. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/specs/openapi/negative/utils.py +0 -0
  224. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/specs/openapi/parameters.py +0 -0
  225. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/specs/openapi/references.py +0 -0
  226. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/specs/openapi/schemas.py +0 -0
  227. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/specs/openapi/security.py +0 -0
  228. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/specs/openapi/stateful/__init__.py +0 -0
  229. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/specs/openapi/stateful/statistic.py +0 -0
  230. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/specs/openapi/stateful/types.py +0 -0
  231. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/specs/openapi/utils.py +0 -0
  232. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/specs/openapi/validation.py +0 -0
  233. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/stateful/__init__.py +0 -0
  234. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/stateful/config.py +0 -0
  235. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/stateful/context.py +0 -0
  236. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/stateful/events.py +0 -0
  237. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/stateful/runner.py +0 -0
  238. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/stateful/sink.py +0 -0
  239. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/stateful/state_machine.py +0 -0
  240. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/stateful/statistic.py +0 -0
  241. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/stateful/validation.py +0 -0
  242. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/targets.py +0 -0
  243. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/throttling.py +0 -0
  244. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/transports/__init__.py +0 -0
  245. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/transports/asgi.py +0 -0
  246. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/transports/auth.py +0 -0
  247. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/transports/content_types.py +0 -0
  248. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/transports/headers.py +0 -0
  249. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/transports/responses.py +0 -0
  250. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/types.py +0 -0
  251. {schemathesis-3.39.10 → schemathesis-3.39.12}/src/schemathesis/utils.py +0 -0
  252. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/__init__.py +0 -0
  253. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/__snapshots__/test_dereferencing/test_global_security_schemes_with_custom_scope.raw +0 -0
  254. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/__snapshots__/test_dereferencing/test_missing_file_in_resolution.raw +0 -0
  255. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/__snapshots__/test_hypothesis/test_health_check_failed_large_base_example.raw +0 -0
  256. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/__snapshots__/test_recoverable_errors/test_in_cli[1].raw +0 -0
  257. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/__snapshots__/test_recoverable_errors/test_in_cli[2].raw +0 -0
  258. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/__snapshots__/test_serialization/test_in_cli[Open API 3.0].raw +0 -0
  259. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/apps/__init__.py +0 -0
  260. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/apps/_graphql/__init__.py +0 -0
  261. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/apps/_graphql/_fastapi/__init__.py +0 -0
  262. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/apps/_graphql/_fastapi/app.py +0 -0
  263. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/apps/_graphql/_flask/__init__.py +0 -0
  264. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/apps/_graphql/_flask/app.py +0 -0
  265. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/apps/_graphql/schema.py +0 -0
  266. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/apps/cp1252_app.py +0 -0
  267. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/apps/hooks.py +0 -0
  268. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/apps/openapi/__init__.py +0 -0
  269. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/apps/openapi/_aiohttp/__init__.py +0 -0
  270. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/apps/openapi/_aiohttp/app.py +0 -0
  271. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/apps/openapi/_fastapi/__init__.py +0 -0
  272. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/apps/openapi/_fastapi/app.py +0 -0
  273. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/apps/openapi/_flask/__init__.py +0 -0
  274. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/apps/openapi/_flask/app.py +0 -0
  275. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/auth/__init__.py +0 -0
  276. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/auth/__snapshots__/test_cli/test_conditional[Open API 3.0].raw +0 -0
  277. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/auth/__snapshots__/test_cli/test_custom_auth[Open API 3.0].raw +0 -0
  278. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/auth/__snapshots__/test_cli/test_explicit_auth_precedence[Open API 3.0-args0-Basic dXNlcjpwYXNz].raw +0 -0
  279. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/auth/__snapshots__/test_cli/test_explicit_auth_precedence[Open API 3.0-args1-Bearer EXPLICIT].raw +0 -0
  280. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/auth/__snapshots__/test_cli/test_multiple_auth_mechanisms_with_explicit_auth.raw +0 -0
  281. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/auth/__snapshots__/test_cli/test_multiple_threads[Open API 3.0].raw +0 -0
  282. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/auth/__snapshots__/test_cli/test_requests_auth[Open API 3.0].raw +0 -0
  283. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/auth/conftest.py +0 -0
  284. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/auth/test_cli.py +0 -0
  285. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/auth/test_provider.py +0 -0
  286. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/auth/test_pytest.py +0 -0
  287. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/checks/__init__.py +0 -0
  288. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/checks/test_checks.py +0 -0
  289. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__init__.py +0 -0
  290. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_cassettes/test_forbid_preserve_exact_bytes_without_cassette_path[Open API 3.0].raw +0 -0
  291. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_cassettes/test_forbid_simultaneous_use_of_deprecated_and_new_options[Open API 3.0].raw +0 -0
  292. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_checks/test_deduplication_on_sanitized_header.raw +0 -0
  293. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args0].raw +0 -0
  294. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args10].raw +0 -0
  295. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args1].raw +0 -0
  296. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args2].raw +0 -0
  297. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args3].raw +0 -0
  298. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args4].raw +0 -0
  299. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args5].raw +0 -0
  300. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args6].raw +0 -0
  301. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args7].raw +0 -0
  302. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args8].raw +0 -0
  303. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance[args9].raw +0 -0
  304. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_checks/test_positive_data_acceptance_with_env_vars.raw +0 -0
  305. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_add_case_output[Open API 2.0].raw +0 -0
  306. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_add_case_output[Open API 3.0].raw +0 -0
  307. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_auth_and_authorization_header_are_disallowed[Open API 3.0-Authorization].raw +0 -0
  308. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_auth_and_authorization_header_are_disallowed[Open API 3.0-authorization].raw +0 -0
  309. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 2.0---auth='testwrong'].raw +0 -0
  310. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 2.0--H Authorization Basic J3Rlc3Q6d3Jvbmcn].raw +0 -0
  311. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 3.0---auth='testwrong'].raw +0 -0
  312. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 3.0--H Authorization Basic J3Rlc3Q6d3Jvbmcn].raw +0 -0
  313. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_binary_payload.raw +0 -0
  314. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_certificate_only_key.raw +0 -0
  315. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_chunked_encoding_error[Open API 3.0].raw +0 -0
  316. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 2.0-1].raw +0 -0
  317. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 2.0-2].raw +0 -0
  318. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 3.0-1].raw +0 -0
  319. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 3.0-2].raw +0 -0
  320. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 2.0-1].raw +0 -0
  321. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 2.0-2].raw +0 -0
  322. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 3.0-1].raw +0 -0
  323. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 3.0-2].raw +0 -0
  324. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_commands_help.raw +0 -0
  325. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_complex_urlencoded_example.raw +0 -0
  326. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 2.0-1].raw +0 -0
  327. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 2.0-2].raw +0 -0
  328. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 3.0-1].raw +0 -0
  329. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 3.0-2].raw +0 -0
  330. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 2.0-1].raw +0 -0
  331. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 2.0-2].raw +0 -0
  332. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 3.0-1].raw +0 -0
  333. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 3.0-2].raw +0 -0
  334. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_custom_cli_option[Open API 3.0].raw +0 -0
  335. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_deprecated_filters[Open API 3.0].raw +0 -0
  336. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_duplicated_filters[Open API 3.0].raw +0 -0
  337. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_empty_schema_file[args0].raw +0 -0
  338. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_empty_schema_file[args1].raw +0 -0
  339. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_explicit_example_failure_output.raw +0 -0
  340. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_explicit_headers_in_output_on_errors[Open API 3.0].raw +0 -0
  341. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_explicit_query_token_sanitization[Open API 3.0].raw +0 -0
  342. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_filter_by[Open API 3.0---exclude-by=x-property != 42].raw +0 -0
  343. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_filter_by[Open API 3.0---include-by=x-property == 42].raw +0 -0
  344. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_force_color_nocolor[Open API 3.0].raw +0 -0
  345. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_get_request_with_body[Open API 2.0].raw +0 -0
  346. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_get_request_with_body[Open API 3.0].raw +0 -0
  347. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_graphql_asgi.raw +0 -0
  348. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_graphql_url[foo-args0].raw +0 -0
  349. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_graphql_url[foo-args1].raw +0 -0
  350. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_graphql_url[graphql-args0].raw +0 -0
  351. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_graphql_url[graphql-args1].raw +0 -0
  352. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_group_errors.raw +0 -0
  353. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_hooks_module_not_found.raw +0 -0
  354. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_hooks_with_inner_import_error.raw +0 -0
  355. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_hypothesis_database_with_derandomize[Open API 3.0].raw +0 -0
  356. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 2.0-1].raw +0 -0
  357. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 2.0-2].raw +0 -0
  358. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 3.0-1].raw +0 -0
  359. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 3.0-2].raw +0 -0
  360. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 2.0-1].raw +0 -0
  361. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 2.0-2].raw +0 -0
  362. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 3.0-1].raw +0 -0
  363. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 3.0-2].raw +0 -0
  364. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_invalid_filter[Open API 3.0].raw +0 -0
  365. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[real-Open API 2.0].raw +0 -0
  366. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[real-Open API 3.0].raw +0 -0
  367. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[wsgi-Open API 2.0].raw +0 -0
  368. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[wsgi-Open API 3.0].raw +0 -0
  369. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_invalid_schema_with_disabled_validation[3.0.2].raw +0 -0
  370. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_invalid_schema_with_disabled_validation[3.1.0].raw +0 -0
  371. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_invalid_yaml.raw +0 -0
  372. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_long_payload.raw +0 -0
  373. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_malformed_json_deduplication[real-Open API 3.0].raw +0 -0
  374. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_malformed_json_deduplication[wsgi-Open API 3.0].raw +0 -0
  375. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 2.0-1].raw +0 -0
  376. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 2.0-2].raw +0 -0
  377. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 3.0-1].raw +0 -0
  378. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 3.0-2].raw +0 -0
  379. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[cookie-None].raw +0 -0
  380. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[cookie-http127.0.0.1apiv2].raw +0 -0
  381. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[header-None].raw +0 -0
  382. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[header-http127.0.0.1apiv2].raw +0 -0
  383. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[path-None].raw +0 -0
  384. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[path-http127.0.0.1apiv2].raw +0 -0
  385. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[query-None].raw +0 -0
  386. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[query-http127.0.0.1apiv2].raw +0 -0
  387. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_multiple_errors.raw +0 -0
  388. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_multiple_failures_different_check[Open API 2.0].raw +0 -0
  389. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_multiple_failures_different_check[Open API 3.0].raw +0 -0
  390. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_multiple_failures_in_single_check.raw +0 -0
  391. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_multiple_failures_single_check[Open API 2.0].raw +0 -0
  392. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_multiple_failures_single_check[Open API 3.0].raw +0 -0
  393. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_nested_binary_in_yaml.raw +0 -0
  394. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_new_stateful_runner[Open API 3.0-1].raw +0 -0
  395. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_new_stateful_runner[Open API 3.0-2].raw +0 -0
  396. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_new_stateful_runner_filtered_out[Open API 3.0].raw +0 -0
  397. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_new_stateful_runner_generation_config[Open API 3.0].raw +0 -0
  398. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_new_stateful_runner_keyboard_interrupt[Open API 3.0].raw +0 -0
  399. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_new_stateful_runner_max_failures[Open API 3.0].raw +0 -0
  400. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_new_stateful_runner_proxy_error[Open API 3.0].raw +0 -0
  401. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_new_stateful_runner_stateful_only[Open API 3.0].raw +0 -0
  402. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_new_stateful_runner_stateful_only_with_error[Open API 3.0].raw +0 -0
  403. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_no_schema_in_media_type[Open API 3.0].raw +0 -0
  404. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_no_useless_traceback.raw +0 -0
  405. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_null_byte_in_header_probe.raw +0 -0
  406. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_openapi_links[real-Open API 2.0].raw +0 -0
  407. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_openapi_links[real-Open API 3.0].raw +0 -0
  408. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_openapi_links[wsgi-Open API 2.0].raw +0 -0
  409. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_openapi_links[wsgi-Open API 3.0].raw +0 -0
  410. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_openapi_links_disabled[Open API 2.0].raw +0 -0
  411. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_openapi_links_disabled[Open API 3.0].raw +0 -0
  412. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 2.0-1].raw +0 -0
  413. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 2.0-5].raw +0 -0
  414. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 3.0-1].raw +0 -0
  415. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 3.0-5].raw +0 -0
  416. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 2.0-1].raw +0 -0
  417. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 2.0-5].raw +0 -0
  418. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 3.0-1].raw +0 -0
  419. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 3.0-5].raw +0 -0
  420. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_proxy_error[Open API 3.0].raw +0 -0
  421. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_read_content_timeout[Open API 3.0].raw +0 -0
  422. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_recursive_reference_error_message.raw +0 -0
  423. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError(Custom check failed!)-Open API 2.0].raw +0 -0
  424. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError(Custom check failed!)-Open API 3.0].raw +0 -0
  425. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError-Open API 2.0].raw +0 -0
  426. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError-Open API 3.0].raw +0 -0
  427. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_remote_disconnected_error[Open API 3.0].raw +0 -0
  428. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[real-Open API 2.0].raw +0 -0
  429. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[real-Open API 3.0].raw +0 -0
  430. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[wsgi-Open API 2.0].raw +0 -0
  431. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[wsgi-Open API 3.0].raw +0 -0
  432. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[real-Open API 2.0].raw +0 -0
  433. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[real-Open API 3.0].raw +0 -0
  434. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[wsgi-Open API 2.0].raw +0 -0
  435. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[wsgi-Open API 3.0].raw +0 -0
  436. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_run_output[args0].raw +0 -0
  437. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_run_output[args10].raw +0 -0
  438. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_run_output[args11].raw +0 -0
  439. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_run_output[args12].raw +0 -0
  440. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_run_output[args13].raw +0 -0
  441. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_run_output[args14].raw +0 -0
  442. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_run_output[args15].raw +0 -0
  443. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_run_output[args16].raw +0 -0
  444. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_run_output[args17].raw +0 -0
  445. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_run_output[args18].raw +0 -0
  446. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_run_output[args19].raw +0 -0
  447. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_run_output[args1].raw +0 -0
  448. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_run_output[args20].raw +0 -0
  449. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_run_output[args21].raw +0 -0
  450. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_run_output[args22].raw +0 -0
  451. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_run_output[args23].raw +0 -0
  452. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_run_output[args25].raw +0 -0
  453. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_run_output[args26].raw +0 -0
  454. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_run_output[args27].raw +0 -0
  455. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_run_output[args28].raw +0 -0
  456. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_run_output[args29].raw +0 -0
  457. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_run_output[args2].raw +0 -0
  458. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_run_output[args30].raw +0 -0
  459. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_run_output[args31].raw +0 -0
  460. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_run_output[args32].raw +0 -0
  461. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_run_output[args33].raw +0 -0
  462. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_run_output[args34].raw +0 -0
  463. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_run_output[args35].raw +0 -0
  464. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_run_output[args36].raw +0 -0
  465. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_run_output[args37].raw +0 -0
  466. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_run_output[args3].raw +0 -0
  467. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_run_output[args4].raw +0 -0
  468. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_run_output[args5].raw +0 -0
  469. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_run_output[args6].raw +0 -0
  470. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_run_output[args7].raw +0 -0
  471. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_run_output[args8].raw +0 -0
  472. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_run_output[args9].raw +0 -0
  473. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_schema_not_available[1].raw +0 -0
  474. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_schema_not_available[2].raw +0 -0
  475. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_schema_not_available_wsgi.raw +0 -0
  476. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_stateful_explicit_examples_with_filters[Open API 3.0].raw +0 -0
  477. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 2.0-1].raw +0 -0
  478. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 2.0-2].raw +0 -0
  479. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 3.0-1].raw +0 -0
  480. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 3.0-2].raw +0 -0
  481. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 2.0-1].raw +0 -0
  482. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 2.0-2].raw +0 -0
  483. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 3.0-1].raw +0 -0
  484. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 3.0-2].raw +0 -0
  485. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_unknown_schema_error[Open API 3.0].raw +0 -0
  486. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_unresolvable_links[Open API 3.0].raw +0 -0
  487. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_unresolvable_reference_with_disabled_validation.raw +0 -0
  488. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 2.0-1].raw +0 -0
  489. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 2.0-2].raw +0 -0
  490. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 3.0-1].raw +0 -0
  491. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 3.0-2].raw +0 -0
  492. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 2.0-1].raw +0 -0
  493. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 2.0-2].raw +0 -0
  494. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 3.0-1].raw +0 -0
  495. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 3.0-2].raw +0 -0
  496. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_unsupported_regex.raw +0 -0
  497. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_useful_traceback[Open API 3.0].raw +0 -0
  498. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_wait_for_schema_not_enough.raw +0 -0
  499. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_commands/test_yaml_parsing_of_floats[Open API 3.0].raw +0 -0
  500. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_hooks/test_after_call[real-Open API 3.0].raw +0 -0
  501. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/__snapshots__/test_hooks/test_after_call[wsgi-Open API 3.0].raw +0 -0
  502. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/cert.pem +0 -0
  503. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/conftest.py +0 -0
  504. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/output/__init__.py +0 -0
  505. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/output/test_default.py +0 -0
  506. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/test_asgi.py +0 -0
  507. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/test_callbacks.py +0 -0
  508. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/test_cassettes.py +0 -0
  509. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/test_crashes.py +0 -0
  510. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/test_hooks.py +0 -0
  511. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/test_junitxml.py +0 -0
  512. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/test_options.py +0 -0
  513. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/test_reporting.py +0 -0
  514. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/cli/test_targeted.py +0 -0
  515. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/code_samples/__snapshots__/test_python/test_cli_output[Open API 2.0].raw +0 -0
  516. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/code_samples/__snapshots__/test_python/test_cli_output[Open API 3.0].raw +0 -0
  517. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/code_samples/conftest.py +0 -0
  518. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/code_samples/test_curl.py +0 -0
  519. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/code_samples/test_python.py +0 -0
  520. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/conftest.py +0 -0
  521. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/contrib/__snapshots__/test_unique_data/test_cli[None].raw +0 -0
  522. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema0].raw +0 -0
  523. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema1].raw +0 -0
  524. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema2].raw +0 -0
  525. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/contrib/__snapshots__/test_unique_data/test_cli_failure.raw +0 -0
  526. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/contrib/__snapshots__/test_unique_data/test_explicit_headers[1].raw +0 -0
  527. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/contrib/__snapshots__/test_unique_data/test_explicit_headers[2].raw +0 -0
  528. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/contrib/__snapshots__/test_unique_data/test_graphql_url.raw +0 -0
  529. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/contrib/openapi/__snapshots__/test_fill_missing_examples/test_fills_missing_examples.raw +0 -0
  530. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/contrib/openapi/formats/test_uuid.py +0 -0
  531. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/contrib/openapi/test_fill_missing_examples.py +0 -0
  532. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/contrib/test_install.py +0 -0
  533. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/contrib/test_unique_data.py +0 -0
  534. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/coverage/__init__.py +0 -0
  535. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/coverage/__snapshots__/test_phase/test_unspecified_http_methods.raw +0 -0
  536. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/coverage/test_combinations.py +0 -0
  537. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/coverage/test_examples.py +0 -0
  538. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/data/petstore_v2.yaml +0 -0
  539. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/data/petstore_v3.yaml +0 -0
  540. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/data/relative_files/components/parameters.yaml +0 -0
  541. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/data/relative_files/components/responses.yaml +0 -0
  542. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/data/relative_files/components/schemas.yaml +0 -0
  543. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/data/relative_files/main.yaml +0 -0
  544. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/data/relative_files/paths/user-account.yaml +0 -0
  545. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/data/simple_openapi.yaml +0 -0
  546. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/data/simple_swagger.yaml +0 -0
  547. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/experimental/__snapshots__/test_experiments/test_not_enabled.raw +0 -0
  548. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/experimental/conftest.py +0 -0
  549. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/experimental/test_experiments.py +0 -0
  550. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/experimental/test_openapi_3_1.py +0 -0
  551. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/extra/__init__.py +0 -0
  552. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/extra/test_aiohttp.py +0 -0
  553. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/filters/__init__.py +0 -0
  554. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/filters/test_expressions.py +0 -0
  555. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/filters/test_matching.py +0 -0
  556. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/fixtures/__init__.py +0 -0
  557. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/fixtures/ctx.py +0 -0
  558. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/hooks/test_filter_operations.py +0 -0
  559. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/hooks/test_filters.py +0 -0
  560. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/hooks/test_hooks.py +0 -0
  561. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/loaders/conftest.py +0 -0
  562. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/loaders/test_app.py +0 -0
  563. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/loaders/test_common.py +0 -0
  564. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/loaders/test_graphql.py +0 -0
  565. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/loaders/test_openapi.py +0 -0
  566. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/loaders/test_yaml.py +0 -0
  567. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/runner/__init__.py +0 -0
  568. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/runner/test_checks.py +0 -0
  569. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/runner/test_events.py +0 -0
  570. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/runner/test_probes.py +0 -0
  571. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/runner/test_runner.py +0 -0
  572. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/service/__init__.py +0 -0
  573. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/service/__snapshots__/test_cli/test_client_error_on_project_details.raw +0 -0
  574. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/service/__snapshots__/test_cli/test_client_error_on_upload[Open API 3.0].raw +0 -0
  575. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/service/__snapshots__/test_cli/test_error_in_another_handler[Open API 3.0].raw +0 -0
  576. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/service/__snapshots__/test_cli/test_github_suggestion[Open API 3.0].raw +0 -0
  577. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/service/__snapshots__/test_cli/test_not_authenticated_with_name.raw +0 -0
  578. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/service/__snapshots__/test_cli/test_two_names.raw +0 -0
  579. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/service/__snapshots__/test_cli/test_unauthorized.raw +0 -0
  580. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/service/__snapshots__/test_cli/test_unknown_error_on_upload[Open API 3.0].raw +0 -0
  581. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/service/__snapshots__/test_cli/test_upload_failure[Open API 3.0].raw +0 -0
  582. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/service/__snapshots__/test_cli/test_upload_success[Open API 3.0].raw +0 -0
  583. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/service/__snapshots__/test_extensions/test_connection_error[Open API 3.0].raw +0 -0
  584. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/service/__snapshots__/test_extensions/test_custom_format.raw +0 -0
  585. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/service/__snapshots__/test_extensions/test_dry_run[Open API 3.0].raw +0 -0
  586. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/service/__snapshots__/test_extensions/test_forbidden[Open API 3.0].raw +0 -0
  587. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/service/__snapshots__/test_extensions/test_graphql_scalars.raw +0 -0
  588. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/service/__snapshots__/test_extensions/test_internal_server_error[Open API 3.0].raw +0 -0
  589. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/service/__snapshots__/test_extensions/test_invalid_extension[Open API 3.0-42].raw +0 -0
  590. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/service/__snapshots__/test_extensions/test_invalid_extension[Open API 3.0-extension1].raw +0 -0
  591. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/service/__snapshots__/test_extensions/test_invalid_payload[Open API 3.0].raw +0 -0
  592. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/service/__snapshots__/test_extensions/test_media_type_extension[strategy0].raw +0 -0
  593. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/service/__snapshots__/test_extensions/test_media_type_extension[strategy1].raw +0 -0
  594. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/service/__snapshots__/test_extensions/test_oversize_text[Open API 3.0].raw +0 -0
  595. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/service/__snapshots__/test_extensions/test_schema_patches[patch0-expected0].raw +0 -0
  596. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/service/__snapshots__/test_extensions/test_schema_patches[patch1-expected1].raw +0 -0
  597. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/service/__snapshots__/test_extensions/test_schema_patches[patch2-expected2].raw +0 -0
  598. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/service/__snapshots__/test_extensions/test_unknown_extension_in_cli[Open API 3.0].raw +0 -0
  599. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/service/conftest.py +0 -0
  600. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/service/test_auth.py +0 -0
  601. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/service/test_ci.py +0 -0
  602. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/service/test_cli.py +0 -0
  603. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/service/test_extensions.py +0 -0
  604. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/service/test_report.py +0 -0
  605. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/service/test_serialization.py +0 -0
  606. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/service/test_usage.py +0 -0
  607. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/graphql/__snapshots__/test_basic/test_disallow_null.raw +0 -0
  608. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/graphql/__snapshots__/test_basic/test_filter_operations[--exclude-name=Query.getBooks].raw +0 -0
  609. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/graphql/__snapshots__/test_basic/test_filter_operations[--include-name=Query.getBooks].raw +0 -0
  610. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/graphql/__snapshots__/test_basic/test_schema_error[ntype Query {n 123(created Int!) Int!n}-.whatever].raw +0 -0
  611. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/graphql/__snapshots__/test_basic/test_schema_error[ntype Query {n func(created Unknown!) Int!n}-.gql].raw +0 -0
  612. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/graphql/__snapshots__/test_custom_scalars/test_built_in_scalars_in_cli.raw +0 -0
  613. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/graphql/__snapshots__/test_custom_scalars/test_custom_scalar_in_cli.raw +0 -0
  614. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/graphql/test_basic.py +0 -0
  615. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/graphql/test_custom_scalars.py +0 -0
  616. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/graphql/test_pytest.py +0 -0
  617. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/openapi/__snapshots__/test_checks/test_method_not_allowed[basic-post].raw +0 -0
  618. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/openapi/__snapshots__/test_checks/test_method_not_allowed[success-get].raw +0 -0
  619. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/openapi/__snapshots__/test_checks/test_missing_required_header[basic-Authorization-406].raw +0 -0
  620. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/openapi/__snapshots__/test_checks/test_missing_required_header[success-Authorization-200].raw +0 -0
  621. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/openapi/__snapshots__/test_checks/test_missing_required_header[success-X-API-Key-1-200].raw +0 -0
  622. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/openapi/__snapshots__/test_checks/test_missing_required_header[success-X-API-Key-1-406].raw +0 -0
  623. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/openapi/__snapshots__/test_examples/test_network_error_with_flaky_generation.raw +0 -0
  624. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/openapi/__snapshots__/test_examples/test_parameter_override.raw +0 -0
  625. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/openapi/__snapshots__/test_ignored_auth/test_auth_via_override_cli[cookie].raw +0 -0
  626. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/openapi/__snapshots__/test_ignored_auth/test_auth_via_override_cli[query].raw +0 -0
  627. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/openapi/__snapshots__/test_ignored_auth/test_explicit_auth_cli[Open API 3.0].raw +0 -0
  628. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/openapi/__snapshots__/test_ignored_auth/test_stateful_in_cli_no_error[Open API 3.0-False].raw +0 -0
  629. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/openapi/__snapshots__/test_ignored_auth/test_stateful_in_cli_no_error[Open API 3.0-True].raw +0 -0
  630. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/openapi/__snapshots__/test_media_types/test_explicit_example_with_custom_media_type.raw +0 -0
  631. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/openapi/blank.pdf +0 -0
  632. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/openapi/conftest.py +0 -0
  633. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/openapi/parameters/test_forms.py +0 -0
  634. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/openapi/parameters/test_non_payload.py +0 -0
  635. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/openapi/parameters/test_simple_payloads.py +0 -0
  636. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/openapi/stateful/__init__.py +0 -0
  637. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/openapi/stateful/conftest.py +0 -0
  638. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/openapi/stateful/test_config.py +0 -0
  639. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/openapi/stateful/test_runner.py +0 -0
  640. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/openapi/stateful/test_stateful.py +0 -0
  641. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/openapi/test_checks.py +0 -0
  642. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/openapi/test_examples.py +0 -0
  643. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/openapi/test_expressions.py +0 -0
  644. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/openapi/test_hypothesis.py +0 -0
  645. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/openapi/test_ignored_auth.py +0 -0
  646. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/openapi/test_links.py +0 -0
  647. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/openapi/test_media_types.py +0 -0
  648. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/openapi/test_negative.py +0 -0
  649. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/openapi/test_parameters.py +0 -0
  650. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/openapi/test_randomized.py +0 -0
  651. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/openapi/test_schemas.py +0 -0
  652. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/openapi/test_security.py +0 -0
  653. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/openapi/test_serializing.py +0 -0
  654. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/openapi/test_utils.py +0 -0
  655. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/specs/openapi/test_validation.py +0 -0
  656. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/test_app.py +0 -0
  657. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/test_asgi.py +0 -0
  658. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/test_async.py +0 -0
  659. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/test_common_parameters.py +0 -0
  660. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/test_converter.py +0 -0
  661. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/test_dereferencing.py +0 -0
  662. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/test_direct_access.py +0 -0
  663. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/test_examples.py +0 -0
  664. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/test_filters.py +0 -0
  665. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/test_fixups.py +0 -0
  666. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/test_hypothesis.py +0 -0
  667. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/test_internal.py +0 -0
  668. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/test_lazy.py +0 -0
  669. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/test_models.py +0 -0
  670. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/test_output.py +0 -0
  671. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/test_package.py +0 -0
  672. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/test_parameters.py +0 -0
  673. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/test_parametrization.py +0 -0
  674. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/test_petstore.py +0 -0
  675. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/test_pytest.py +0 -0
  676. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/test_rate_limit.py +0 -0
  677. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/test_recoverable_errors.py +0 -0
  678. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/test_required.py +0 -0
  679. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/test_sanitizing_output.py +0 -0
  680. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/test_schemas.py +0 -0
  681. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/test_serialization.py +0 -0
  682. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/test_stateful.py +0 -0
  683. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/test_unittest.py +0 -0
  684. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/test_utils.py +0 -0
  685. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/test_wsgi.py +0 -0
  686. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/transports/test_content_types.py +0 -0
  687. {schemathesis-3.39.10 → schemathesis-3.39.12}/test/utils.py +0 -0
  688. {schemathesis-3.39.10 → schemathesis-3.39.12}/test-corpus/conftest.py +0 -0
  689. {schemathesis-3.39.10 → schemathesis-3.39.12}/test-corpus/test_corpus.py +0 -0
  690. {schemathesis-3.39.10 → schemathesis-3.39.12}/test_server.sh +0 -0
  691. {schemathesis-3.39.10 → schemathesis-3.39.12}/tox.ini +0 -0
  692. {schemathesis-3.39.10 → schemathesis-3.39.12}/typos.toml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: schemathesis
3
- Version: 3.39.10
3
+ Version: 3.39.12
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,42 @@
1
1
  Changelog
2
2
  =========
3
3
 
4
- :version:`Unreleased <v3.39.10...HEAD>` - TBD
4
+ :version:`Unreleased <v3.39.12...HEAD>` - TBD
5
5
  ---------------------------------------------
6
6
 
7
+ .. _v3.39.12:
8
+
9
+ :version:`3.39.12 <v3.39.11...v3.39.12>` - 2025-03-05
10
+ -----------------------------------------------------
11
+
12
+ **Added**
13
+
14
+ - `--experimental-coverage-unspecified-methods` CLI option that accept a comma separated list of HTTP methods to use when generating test cases with methods not specified in the API during the **coverage** phase.
15
+
16
+ **Fixed**
17
+
18
+ - Incorrect quantifiers merging for patterns involving single-element set of characters like ``[+]``.
19
+
20
+ .. _v3.39.11:
21
+
22
+ :version:`3.39.11 <v3.39.10...v3.39.11>` - 2025-02-23
23
+ -----------------------------------------------------
24
+
25
+ **Fixed**
26
+
27
+ - Deduplicate failures from ``negative_data_rejection`` by response status code.
28
+ It makes Schemathesis display more different failures for this check.
29
+ - Query parameter serialization during the coverage phase.
30
+ - Apply custom auth data correctly during the coverage phase.
31
+ - Apply parameter overrides during the coverage phase.
32
+ - Incorrect quantifiers merging for some patterns. :issue:`2732`
33
+
34
+ **Changed**
35
+
36
+ - Do not report ``unsupported_method`` failure if the API returned HTTP 200 on OPTIONS request.
37
+ - More precise warning about missing 2xx responses for positive test cases.
38
+ - Add HTTP 406 status to the list of status codes that are expected for negative test cases.
39
+
7
40
  .. _v3.39.10:
8
41
 
9
42
  :version:`3.39.10 <v3.39.9...v3.39.10>` - 2025-02-10
@@ -7,7 +7,7 @@ Unique data generation
7
7
  ~~~~~~~~~~~~~~~~~~~~~~
8
8
 
9
9
  By default, Schemathesis may generate the same test cases as all data is randomized. If this behavior does not match your expectations, or
10
- your test budges, you can force Schemathesis to generate unique test cases.
10
+ your test budgets, you can force Schemathesis to generate unique test cases.
11
11
 
12
12
  In CLI:
13
13
 
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "schemathesis"
7
- version = "3.39.10"
7
+ version = "3.39.12"
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" }]
@@ -4,7 +4,6 @@ from __future__ import annotations
4
4
 
5
5
  import asyncio
6
6
  from dataclasses import dataclass
7
- import json
8
7
  import warnings
9
8
  from functools import wraps
10
9
  from itertools import combinations
@@ -16,8 +15,10 @@ from hypothesis.errors import HypothesisWarning, Unsatisfiable
16
15
  from hypothesis.internal.entropy import deterministic_PRNG
17
16
  from jsonschema.exceptions import SchemaError
18
17
 
18
+ from schemathesis.serializers import get_first_matching_media_type
19
+
19
20
  from . import _patches
20
- from .auths import get_auth_storage_from_test
21
+ from .auths import AuthStorage, get_auth_storage_from_test
21
22
  from .constants import DEFAULT_DEADLINE, NOT_SET
22
23
  from .exceptions import OperationSchemaError, SerializationNotPossible
23
24
  from .experimental import COVERAGE_PHASE
@@ -28,6 +29,7 @@ from .parameters import ParameterSet
28
29
  from .transports.content_types import parse_content_type
29
30
  from .transports.headers import has_invalid_characters, is_latin_1_encodable
30
31
  from .types import NotSet
32
+ from schemathesis import auths
31
33
 
32
34
  if TYPE_CHECKING:
33
35
  from .utils import GivenInput
@@ -112,7 +114,15 @@ def create_test(
112
114
  wrapped_test, operation, hook_dispatcher=hook_dispatcher, as_strategy_kwargs=as_strategy_kwargs
113
115
  )
114
116
  if COVERAGE_PHASE.is_enabled:
115
- wrapped_test = add_coverage(wrapped_test, operation, data_generation_methods)
117
+ unexpected_methods = generation_config.unexpected_methods if generation_config else None
118
+ wrapped_test = add_coverage(
119
+ wrapped_test,
120
+ operation,
121
+ data_generation_methods,
122
+ auth_storage,
123
+ as_strategy_kwargs,
124
+ unexpected_methods,
125
+ )
116
126
  return wrapped_test
117
127
 
118
128
 
@@ -216,20 +226,46 @@ def adjust_urlencoded_payload(case: Case) -> None:
216
226
 
217
227
 
218
228
  def add_coverage(
219
- test: Callable, operation: APIOperation, data_generation_methods: list[DataGenerationMethod]
229
+ test: Callable,
230
+ operation: APIOperation,
231
+ data_generation_methods: list[DataGenerationMethod],
232
+ auth_storage: AuthStorage | None,
233
+ as_strategy_kwargs: dict[str, Any],
234
+ unexpected_methods: set[str] | None = None,
220
235
  ) -> Callable:
221
- for example in _iter_coverage_cases(operation, data_generation_methods):
222
- adjust_urlencoded_payload(example)
223
- test = hypothesis.example(case=example)(test)
236
+ from schemathesis.specs.openapi.constants import LOCATION_TO_CONTAINER
237
+
238
+ auth_context = auths.AuthContext(
239
+ operation=operation,
240
+ app=operation.app,
241
+ )
242
+ overrides = {
243
+ container: as_strategy_kwargs[container]
244
+ for container in LOCATION_TO_CONTAINER.values()
245
+ if container in as_strategy_kwargs
246
+ }
247
+ for case in _iter_coverage_cases(operation, data_generation_methods, unexpected_methods):
248
+ if case.media_type and get_first_matching_media_type(case.media_type) is None:
249
+ continue
250
+ adjust_urlencoded_payload(case)
251
+ auths.set_on_case(case, auth_context, auth_storage)
252
+ for container_name, value in overrides.items():
253
+ container = getattr(case, container_name)
254
+ if container is None:
255
+ setattr(case, container_name, value)
256
+ else:
257
+ container.update(value)
258
+ test = hypothesis.example(case=case)(test)
224
259
  return test
225
260
 
226
261
 
227
262
  class Template:
228
- __slots__ = ("_components", "_template")
263
+ __slots__ = ("_components", "_template", "_serializers")
229
264
 
230
- def __init__(self) -> None:
265
+ def __init__(self, serializers: dict[str, Callable]) -> None:
231
266
  self._components: dict[str, DataGenerationMethod] = {}
232
267
  self._template: dict[str, Any] = {}
268
+ self._serializers = serializers
233
269
 
234
270
  def __contains__(self, key: str) -> bool:
235
271
  return key in self._template
@@ -251,36 +287,58 @@ class Template:
251
287
  self._components[component_name] = DataGenerationMethod.negative
252
288
 
253
289
  container = self._template.setdefault(component_name, {})
254
- if _should_stringify(location, value):
255
- container[name] = _stringify_value(value.value, location)
256
- else:
257
- container[name] = value.value
290
+ container[name] = value.value
258
291
 
259
292
  def set_body(self, body: coverage.GeneratedValue, media_type: str) -> None:
260
293
  self._template["body"] = body.value
261
294
  self._template["media_type"] = media_type
262
295
  self._components["body"] = body.data_generation_method
263
296
 
297
+ def _serialize(self, kwargs: dict[str, Any]) -> dict[str, Any]:
298
+ from schemathesis.specs.openapi._hypothesis import quote_all
299
+
300
+ output = {}
301
+ for container_name, value in kwargs.items():
302
+ serializer = self._serializers.get(container_name)
303
+ if container_name in ("headers", "cookies") and isinstance(value, dict):
304
+ value = _stringify_value(value, container_name)
305
+ if serializer is not None:
306
+ value = serializer(value)
307
+ if container_name == "query" and isinstance(value, dict):
308
+ value = _stringify_value(value, container_name)
309
+ if container_name == "path_parameters" and isinstance(value, dict):
310
+ value = _stringify_value(quote_all(value), container_name)
311
+ output[container_name] = value
312
+ return output
313
+
264
314
  def unmodified(self) -> TemplateValue:
265
- return TemplateValue(kwargs=self._template.copy(), components=self._components.copy())
315
+ kwargs = self._template.copy()
316
+ kwargs = self._serialize(kwargs)
317
+ return TemplateValue(kwargs=kwargs, components=self._components.copy())
266
318
 
267
319
  def with_body(self, *, media_type: str, value: coverage.GeneratedValue) -> TemplateValue:
268
320
  kwargs = {**self._template, "media_type": media_type, "body": value.value}
321
+ kwargs = self._serialize(kwargs)
269
322
  components = {**self._components, "body": value.data_generation_method}
270
323
  return TemplateValue(kwargs=kwargs, components=components)
271
324
 
272
325
  def with_parameter(self, *, location: str, name: str, value: coverage.GeneratedValue) -> TemplateValue:
273
326
  from .specs.openapi.constants import LOCATION_TO_CONTAINER
274
327
 
275
- if _should_stringify(location, value):
276
- generated = _stringify_value(value.value, location)
277
- else:
278
- generated = value.value
279
-
280
328
  container_name = LOCATION_TO_CONTAINER[location]
281
329
  container = self._template[container_name]
282
- kwargs = {**self._template, container_name: {**container, name: generated}}
283
- components = {**self._components, container_name: value.data_generation_method}
330
+ return self.with_container(
331
+ container_name=container_name,
332
+ value={**container, name: value.value},
333
+ data_generation_method=value.data_generation_method,
334
+ )
335
+
336
+ def with_container(
337
+ self, *, container_name: str, value: Any, data_generation_method: DataGenerationMethod
338
+ ) -> TemplateValue:
339
+ kwargs = {**self._template, container_name: value}
340
+ kwargs = self._serialize(kwargs)
341
+ components = {**self._components, container_name: data_generation_method}
284
342
  return TemplateValue(kwargs=kwargs, components=components)
285
343
 
286
344
 
@@ -291,38 +349,41 @@ class TemplateValue:
291
349
  __slots__ = ("kwargs", "components")
292
350
 
293
351
 
294
- def _should_stringify(location: str, value: coverage.GeneratedValue) -> bool:
295
- return location in ("header", "cookie", "path", "query") and not isinstance(value.value, str)
296
-
297
-
298
- def _stringify_value(val: Any, location: str) -> str | list[str]:
352
+ def _stringify_value(val: Any, container_name: str) -> Any:
353
+ if val is None:
354
+ return "null"
355
+ if val is True:
356
+ return "true"
357
+ if val is False:
358
+ return "false"
359
+ if isinstance(val, (int, float)):
360
+ return str(val)
299
361
  if isinstance(val, list):
300
- if location == "query":
362
+ if container_name == "query":
301
363
  # Having a list here ensures there will be multiple query parameters wit the same name
302
- return [json.dumps(item) for item in val]
364
+ return [_stringify_value(item, container_name) for item in val]
303
365
  # use comma-separated values style for arrays
304
- return ",".join(json.dumps(sub) for sub in val)
305
- return json.dumps(val)
366
+ return ",".join(_stringify_value(sub, container_name) for sub in val)
367
+ if isinstance(val, dict):
368
+ return {key: _stringify_value(sub, container_name) for key, sub in val.items()}
369
+ return val
306
370
 
307
371
 
308
372
  def _iter_coverage_cases(
309
- operation: APIOperation, data_generation_methods: list[DataGenerationMethod]
373
+ operation: APIOperation,
374
+ data_generation_methods: list[DataGenerationMethod],
375
+ unexpected_methods: set[str] | None = None,
310
376
  ) -> Generator[Case, None, None]:
311
377
  from .specs.openapi.constants import LOCATION_TO_CONTAINER
312
378
  from .specs.openapi.examples import find_in_responses, find_matching_in_responses
313
-
314
- def _stringify_value(val: Any, location: str) -> str | list[str]:
315
- if isinstance(val, list):
316
- if location == "query":
317
- # Having a list here ensures there will be multiple query parameters wit the same name
318
- return [json.dumps(item) for item in val]
319
- # use comma-separated values style for arrays
320
- return ",".join(json.dumps(sub) for sub in val)
321
- return json.dumps(val)
379
+ from schemathesis.specs.openapi.serialization import get_serializers_for_operation
322
380
 
323
381
  generators: dict[tuple[str, str], Generator[coverage.GeneratedValue, None, None]] = {}
324
- template = Template()
382
+ serializers = get_serializers_for_operation(operation)
383
+ template = Template(serializers)
325
384
  responses = find_in_responses(operation)
385
+ # NOTE: The HEAD method is excluded
386
+ unexpected_methods = unexpected_methods or {"get", "put", "post", "delete", "options", "patch", "trace"}
326
387
  for parameter in operation.iter_parameters():
327
388
  location = parameter.location
328
389
  name = parameter.name
@@ -398,8 +459,7 @@ def _iter_coverage_cases(
398
459
  yield case
399
460
  if DataGenerationMethod.negative in data_generation_methods:
400
461
  # Generate HTTP methods that are not specified in the spec
401
- # NOTE: The HEAD method is excluded
402
- methods = {"get", "put", "post", "delete", "options", "patch", "trace"} - set(operation.schema[operation.path])
462
+ methods = unexpected_methods - set(operation.schema[operation.path])
403
463
  for method in sorted(methods):
404
464
  data = template.unmodified()
405
465
  case = operation.make_case(**data.kwargs)
@@ -415,10 +475,12 @@ def _iter_coverage_cases(
415
475
  # I.e. contains just `default` value without any other keywords
416
476
  value = container.get(parameter.name, NOT_SET)
417
477
  if value is not NOT_SET:
418
- data = template.unmodified()
419
- case = operation.make_case(
420
- **{**data.kwargs, "query": {**container, parameter.name: [value, value]}}
478
+ data = template.with_container(
479
+ container_name="query",
480
+ value={**container, parameter.name: [value, value]},
481
+ data_generation_method=DataGenerationMethod.negative,
421
482
  )
483
+ case = operation.make_case(**data.kwargs)
422
484
  case.data_generation_method = DataGenerationMethod.negative
423
485
  case.meta = _make_meta(
424
486
  description=f"Duplicate `{parameter.name}` query parameter",
@@ -435,17 +497,19 @@ def _iter_coverage_cases(
435
497
  location = parameter.location
436
498
  container_name = LOCATION_TO_CONTAINER[location]
437
499
  container = template[container_name]
438
- data = template.unmodified()
439
- case = operation.make_case(
440
- **{**data.kwargs, container_name: {k: v for k, v in container.items() if k != name}}
500
+ data = template.with_container(
501
+ container_name=container_name,
502
+ value={k: v for k, v in container.items() if k != name},
503
+ data_generation_method=DataGenerationMethod.negative,
441
504
  )
505
+ case = operation.make_case(**data.kwargs)
442
506
  case.data_generation_method = DataGenerationMethod.negative
443
507
  case.meta = _make_meta(
444
508
  description=f"Missing `{name}` at {location}",
445
509
  location=None,
446
510
  parameter=name,
447
511
  parameter_location=location,
448
- **{**data.components, container_name: DataGenerationMethod.negative},
512
+ **data.components,
449
513
  )
450
514
  yield case
451
515
  # Generate combinations for each location
@@ -474,23 +538,17 @@ def _iter_coverage_cases(
474
538
  _parameter: str | None,
475
539
  _data_generation_method: DataGenerationMethod,
476
540
  ) -> Case:
477
- if _location in ("header", "cookie", "path", "query"):
478
- container = {
479
- name: _stringify_value(val, _location) if not isinstance(val, str) else val
480
- for name, val in container_values.items()
481
- }
482
- else:
483
- container = container_values
484
-
485
- data = template.unmodified()
486
- case = operation.make_case(**{**data.kwargs, _container_name: container})
541
+ data = template.with_container(
542
+ container_name=_container_name, value=container_values, data_generation_method=_data_generation_method
543
+ )
544
+ case = operation.make_case(**data.kwargs)
487
545
  case.data_generation_method = _data_generation_method
488
546
  case.meta = _make_meta(
489
547
  description=description,
490
548
  location=None,
491
549
  parameter=_parameter,
492
550
  parameter_location=_location,
493
- **{**data.components, _container_name: _data_generation_method},
551
+ **data.components,
494
552
  )
495
553
  return case
496
554
 
@@ -9,7 +9,7 @@ from collections import defaultdict
9
9
  from dataclasses import dataclass
10
10
  from enum import Enum
11
11
  from queue import Queue
12
- from typing import TYPE_CHECKING, Any, Callable, Generator, Iterable, Literal, NoReturn, Sequence, Type, cast
12
+ from typing import TYPE_CHECKING, Any, Callable, Generator, Iterable, Literal, NoReturn, Sequence, cast
13
13
  from urllib.parse import urlparse
14
14
 
15
15
  import click
@@ -27,6 +27,7 @@ from ..constants import (
27
27
  DEFAULT_STATEFUL_RECURSION_LIMIT,
28
28
  EXTENSIONS_DOCUMENTATION_URL,
29
29
  HOOKS_MODULE_ENV_VAR,
30
+ HTTP_METHODS,
30
31
  HYPOTHESIS_IN_MEMORY_DATABASE_IDENTIFIER,
31
32
  ISSUE_TRACKER_URL,
32
33
  WAIT_FOR_SCHEMA_ENV_VAR,
@@ -323,6 +324,16 @@ REPORT_TO_SERVICE = ReportToService()
323
324
  multiple=True,
324
325
  metavar="",
325
326
  )
327
+ @grouped_option(
328
+ "--experimental-coverage-unexpected-methods",
329
+ "coverage_unexpected_methods",
330
+ help="HTTP methods to use when generating test cases with methods not specified in the API during the coverage phase.",
331
+ type=CsvChoice(sorted(HTTP_METHODS), case_sensitive=False),
332
+ callback=callbacks.convert_http_methods,
333
+ metavar="",
334
+ default=None,
335
+ envvar="SCHEMATHESIS_EXPERIMENTAL_COVERAGE_UNEXPECTED_METHODS",
336
+ )
326
337
  @grouped_option(
327
338
  "--experimental-no-failfast",
328
339
  "no_failfast",
@@ -874,6 +885,7 @@ def run(
874
885
  set_path: dict[str, str],
875
886
  experiments: list,
876
887
  no_failfast: bool,
888
+ coverage_unexpected_methods: set[str] | None,
877
889
  missing_required_header_allowed_statuses: list[str],
878
890
  positive_data_acceptance_allowed_statuses: list[str],
879
891
  negative_data_rejection_allowed_statuses: list[str],
@@ -1000,6 +1012,7 @@ def run(
1000
1012
  graphql_allow_null=generation_graphql_allow_null,
1001
1013
  codec=generation_codec,
1002
1014
  with_security_parameters=generation_with_security_parameters,
1015
+ unexpected_methods=coverage_unexpected_methods,
1003
1016
  )
1004
1017
 
1005
1018
  report: ReportToService | click.utils.LazyFile | None
@@ -344,6 +344,14 @@ def convert_checks(ctx: click.core.Context, param: click.core.Parameter, value:
344
344
  return reduce(operator.iadd, value, [])
345
345
 
346
346
 
347
+ def convert_http_methods(
348
+ ctx: click.core.Context, param: click.core.Parameter, value: list[str] | None
349
+ ) -> set[str] | None:
350
+ if value is None:
351
+ return value
352
+ return {item.lower() for item in value}
353
+
354
+
347
355
  def convert_status_codes(
348
356
  ctx: click.core.Context, param: click.core.Parameter, value: list[str] | None
349
357
  ) -> list[str] | None:
@@ -26,7 +26,12 @@ class CustomHelpMessageChoice(click.Choice):
26
26
  class BaseCsvChoice(click.Choice):
27
27
  def parse_value(self, value: str) -> tuple[list[str], set[str]]:
28
28
  selected = [item for item in value.split(",") if item]
29
- invalid_options = set(selected) - set(self.choices)
29
+ if not self.case_sensitive:
30
+ invalid_options = {
31
+ item for item in selected if item.upper() not in {choice.upper() for choice in self.choices}
32
+ }
33
+ else:
34
+ invalid_options = set(selected) - set(self.choices)
30
35
  return selected, invalid_options
31
36
 
32
37
  def fail_on_invalid_options(self, invalid_options: set[str], selected: list[str]) -> NoReturn:
@@ -143,6 +143,12 @@ class AcceptedNegativeData(FailureContext):
143
143
  title: str = "Accepted negative data"
144
144
  type: str = "accepted_negative_data"
145
145
 
146
+ def unique_by_key(self, check_message: str | None) -> tuple[str, ...]:
147
+ return (
148
+ check_message or self.message,
149
+ str(self.status_code),
150
+ )
151
+
146
152
 
147
153
  @dataclass(repr=False)
148
154
  class RejectedPositiveData(FailureContext):
@@ -50,3 +50,4 @@ class GenerationConfig:
50
50
  with_security_parameters: bool = True
51
51
  # Header generation configuration
52
52
  headers: HeaderConfig = field(default_factory=HeaderConfig)
53
+ unexpected_methods: set[str] | None = None
@@ -21,7 +21,9 @@ CheckFunction = Callable[["CheckContext", "GenericResponse", "Case"], Optional[b
21
21
  @dataclass
22
22
  class NegativeDataRejectionConfig:
23
23
  # 5xx will pass through
24
- allowed_statuses: list[str] = field(default_factory=lambda: ["400", "401", "403", "404", "422", "428", "5xx"])
24
+ allowed_statuses: list[str] = field(
25
+ default_factory=lambda: ["400", "401", "403", "404", "406", "422", "428", "5xx"]
26
+ )
25
27
 
26
28
 
27
29
  @dataclass
@@ -150,13 +150,6 @@ class BaseRunner:
150
150
  def _should_warn_about_only_4xx(result: TestResult) -> bool:
151
151
  if all(check.response is None for check in result.checks):
152
152
  return False
153
- # Don't warn if we saw any 2xx or 5xx responses
154
- if any(
155
- check.response.status_code < 400 or check.response.status_code >= 500
156
- for check in result.checks
157
- if check.response is not None
158
- ):
159
- return False
160
153
  # Don't duplicate auth warnings
161
154
  if {check.response.status_code for check in result.checks if check.response is not None} <= {401, 403}:
162
155
  return False
@@ -164,11 +157,28 @@ class BaseRunner:
164
157
  return True
165
158
 
166
159
  def _check_warnings() -> None:
160
+ # Warn if all positive test cases got 4xx in return and no failure was found
161
+ def all_positive_are_rejected(result: TestResult) -> bool:
162
+ seen_positive = False
163
+ for check in result.checks:
164
+ if check.example.data_generation_method != DataGenerationMethod.positive:
165
+ continue
166
+ seen_positive = True
167
+ if check.response is None:
168
+ continue
169
+ # At least one positive response for positive test case
170
+ if 200 <= check.response.status_code < 300:
171
+ return False
172
+ # If there are positive test cases, and we ended up here, then there are no 2xx responses for them
173
+ # Otherwise, there are no positive test cases at all and this check should pass
174
+ return seen_positive
175
+
167
176
  for result in ctx.data.results:
168
177
  # Only warn about 4xx responses in successful positive test scenarios
169
178
  if (
170
179
  all(check.value == Status.success for check in result.checks)
171
- and result.data_generation_method == [DataGenerationMethod.positive]
180
+ and DataGenerationMethod.positive in result.data_generation_method
181
+ and all_positive_are_rejected(result)
172
182
  and _should_warn_about_only_4xx(result)
173
183
  ):
174
184
  ctx.add_warning(
@@ -294,7 +294,12 @@ def missing_required_header(ctx: CheckContext, response: GenericResponse, case:
294
294
 
295
295
 
296
296
  def unsupported_method(ctx: CheckContext, response: GenericResponse, case: Case) -> bool | None:
297
- if case.meta and case.meta.description and case.meta.description.startswith("Unspecified HTTP method:"):
297
+ if (
298
+ case.meta
299
+ and case.meta.description
300
+ and case.meta.description.startswith("Unspecified HTTP method:")
301
+ and response.request.method != "OPTIONS"
302
+ ):
298
303
  if response.status_code != 405:
299
304
  raise AssertionError(
300
305
  f"Unexpected response status for unspecified HTTP method: {response.status_code}\nExpected: 405"
@@ -9,6 +9,8 @@ from typing import TYPE_CHECKING, Any, Generator, Iterator, Union, cast
9
9
  import requests
10
10
  from hypothesis_jsonschema import from_schema
11
11
 
12
+ from schemathesis.specs.openapi.serialization import get_serializers_for_operation
13
+
12
14
  from ...constants import DEFAULT_RESPONSE_TIMEOUT
13
15
  from ...generation import get_single_example
14
16
  from ...internal.copy import fast_deepcopy
@@ -48,11 +50,7 @@ def get_strategies_from_examples(
48
50
  operation: APIOperation[OpenAPIParameter, Case], as_strategy_kwargs: dict[str, Any] | None = None
49
51
  ) -> list[SearchStrategy[Case]]:
50
52
  """Build a set of strategies that generate test cases based on explicit examples in the schema."""
51
- maps = {}
52
- for location, container in LOCATION_TO_CONTAINER.items():
53
- serializer = operation.get_parameter_serializer(location)
54
- if serializer is not None:
55
- maps[container] = serializer
53
+ maps = get_serializers_for_operation(operation)
56
54
 
57
55
  def serialize_components(case: Case) -> Case:
58
56
  """Applies special serialization rules for case components.
@@ -3,6 +3,8 @@ from __future__ import annotations
3
3
  import re
4
4
  from functools import lru_cache
5
5
 
6
+ from ...exceptions import InternalError
7
+
6
8
  try: # pragma: no cover
7
9
  import re._constants as sre
8
10
  import re._parser as sre_parse
@@ -29,7 +31,15 @@ def update_quantifier(pattern: str, min_length: int | None, max_length: int | No
29
31
 
30
32
  try:
31
33
  parsed = sre_parse.parse(pattern)
32
- return _handle_parsed_pattern(parsed, pattern, min_length, max_length)
34
+ updated = _handle_parsed_pattern(parsed, pattern, min_length, max_length)
35
+ try:
36
+ re.compile(updated)
37
+ except re.error as exc:
38
+ raise InternalError(
39
+ f"The combination of min_length={min_length} and max_length={max_length} applied to the original pattern '{pattern}' resulted in an invalid regex: '{updated}'. "
40
+ "This indicates a bug in the regex quantifier merging logic"
41
+ ) from exc
42
+ return updated
33
43
  except re.error:
34
44
  # Invalid pattern
35
45
  return pattern
@@ -114,6 +124,21 @@ def _handle_anchored_pattern(parsed: list, pattern: str, min_length: int | None,
114
124
 
115
125
  for op, value in pattern_parts:
116
126
  if op == LITERAL:
127
+ # Check if the literal comes from a bracketed expression,
128
+ # e.g. Python regex parses "[+]" as a single LITERAL token.
129
+ if pattern[current_position] == "[":
130
+ # Find the matching closing bracket.
131
+ end_idx = current_position + 1
132
+ while end_idx < len(pattern):
133
+ # Check for an unescaped closing bracket.
134
+ if pattern[end_idx] == "]" and (end_idx == current_position + 1 or pattern[end_idx - 1] != "\\"):
135
+ end_idx += 1
136
+ break
137
+ end_idx += 1
138
+ # Append the entire character set.
139
+ result += pattern[current_position:end_idx]
140
+ current_position = end_idx
141
+ continue
117
142
  if pattern[current_position] == "\\":
118
143
  # Escaped value
119
144
  current_position += 2
@@ -261,13 +286,18 @@ def _handle_repeat_quantifier(
261
286
  min_length, max_length = _build_size(min_repeat, max_repeat, min_length, max_length)
262
287
  if min_length > max_length:
263
288
  return pattern
264
- return f"({_strip_quantifier(pattern).strip(')(')})" + _build_quantifier(min_length, max_length)
289
+ inner = _strip_quantifier(pattern)
290
+ if inner.startswith("(") and inner.endswith(")"):
291
+ inner = inner[1:-1]
292
+ return f"({inner})" + _build_quantifier(min_length, max_length)
265
293
 
266
294
 
267
295
  def _handle_literal_or_in_quantifier(pattern: str, min_length: int | None, max_length: int | None) -> str:
268
296
  """Handle literal or character class quantifiers."""
269
297
  min_length = 1 if min_length is None else max(min_length, 1)
270
- return f"({pattern.strip(')(')})" + _build_quantifier(min_length, max_length)
298
+ if pattern.startswith("(") and pattern.endswith(")"):
299
+ pattern = pattern[1:-1]
300
+ return f"({pattern})" + _build_quantifier(min_length, max_length)
271
301
 
272
302
 
273
303
  def _build_quantifier(minimum: int | None, maximum: int | None) -> str: