schemathesis 3.26.1__tar.gz → 3.27.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (578) hide show
  1. {schemathesis-3.26.1 → schemathesis-3.27.0}/.github/workflows/build.yml +1 -1
  2. {schemathesis-3.26.1 → schemathesis-3.27.0}/.github/workflows/codeql-analysis.yml +3 -3
  3. {schemathesis-3.26.1 → schemathesis-3.27.0}/.pre-commit-config.yaml +3 -3
  4. {schemathesis-3.26.1 → schemathesis-3.27.0}/PKG-INFO +2 -2
  5. {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/api.rst +3 -0
  6. {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/changelog.rst +33 -1
  7. {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/cli.rst +94 -33
  8. {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/extending.rst +8 -2
  9. {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/python.rst +41 -27
  10. {schemathesis-3.26.1 → schemathesis-3.27.0}/example/requirements-pytest.txt +1 -1
  11. {schemathesis-3.26.1 → schemathesis-3.27.0}/pyproject.toml +3 -2
  12. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/_dependency_versions.py +3 -0
  13. schemathesis-3.27.0/src/schemathesis/_rate_limiter.py +6 -0
  14. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/cli/__init__.py +1 -1
  15. schemathesis-3.27.0/src/schemathesis/cli/junitxml.py +112 -0
  16. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/cli/output/default.py +9 -47
  17. schemathesis-3.27.0/src/schemathesis/cli/reporting.py +72 -0
  18. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/models.py +51 -143
  19. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/runner/impl/core.py +10 -8
  20. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/runner/serialization.py +32 -10
  21. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/schemas.py +15 -7
  22. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/graphql/loaders.py +2 -0
  23. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/graphql/schemas.py +7 -40
  24. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/_hypothesis.py +3 -1
  25. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/loaders.py +3 -0
  26. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/stateful/state_machine.py +3 -13
  27. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/throttling.py +2 -2
  28. schemathesis-3.27.0/src/schemathesis/transports/__init__.py +311 -0
  29. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/transports/responses.py +2 -0
  30. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/auth/test_pytest.py +2 -2
  31. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/test_commands.py +4 -7
  32. schemathesis-3.27.0/test/cli/test_junitxml.py +199 -0
  33. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/code_samples/test_python.py +4 -4
  34. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/experimental/test_openapi_3_1.py +1 -2
  35. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/hooks/test_hooks.py +7 -2
  36. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/loaders/conftest.py +3 -12
  37. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/loaders/test_graphql.py +8 -8
  38. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/loaders/test_openapi.py +6 -6
  39. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/runner/test_runner.py +1 -1
  40. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/graphql/test_basic.py +7 -4
  41. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/graphql/test_pytest.py +1 -2
  42. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/openapi/test_examples.py +2 -1
  43. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/openapi/test_media_types.py +3 -2
  44. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/openapi/test_negative.py +1 -1
  45. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/openapi/test_serializing.py +4 -4
  46. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_asgi.py +7 -6
  47. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_hypothesis.py +5 -5
  48. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_lazy.py +20 -9
  49. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_models.py +15 -13
  50. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_parameters.py +4 -10
  51. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_pytest.py +4 -7
  52. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_rate_limit.py +13 -5
  53. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_serialization.py +20 -24
  54. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_wsgi.py +5 -4
  55. schemathesis-3.26.1/src/schemathesis/cli/junitxml.py +0 -43
  56. schemathesis-3.26.1/src/schemathesis/transports/__init__.py +0 -5
  57. schemathesis-3.26.1/test/cli/test_junitxml.py +0 -78
  58. {schemathesis-3.26.1 → schemathesis-3.27.0}/.dockerignore +0 -0
  59. {schemathesis-3.26.1 → schemathesis-3.27.0}/.github/FUNDING.yml +0 -0
  60. {schemathesis-3.26.1 → schemathesis-3.27.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  61. {schemathesis-3.26.1 → schemathesis-3.27.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  62. {schemathesis-3.26.1 → schemathesis-3.27.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  63. {schemathesis-3.26.1 → schemathesis-3.27.0}/.github/dependabot.yml +0 -0
  64. {schemathesis-3.26.1 → schemathesis-3.27.0}/.github/workflows/codspeed.yml +0 -0
  65. {schemathesis-3.26.1 → schemathesis-3.27.0}/.github/workflows/commit.yml +0 -0
  66. {schemathesis-3.26.1 → schemathesis-3.27.0}/.github/workflows/example-build.yml +0 -0
  67. {schemathesis-3.26.1 → schemathesis-3.27.0}/.github/workflows/example-no-build.yml +0 -0
  68. {schemathesis-3.26.1 → schemathesis-3.27.0}/.github/workflows/master_update.yml +0 -0
  69. {schemathesis-3.26.1 → schemathesis-3.27.0}/.github/workflows/release.yml +0 -0
  70. {schemathesis-3.26.1 → schemathesis-3.27.0}/.github/workflows/test-corpus.yml +0 -0
  71. {schemathesis-3.26.1 → schemathesis-3.27.0}/.github/workflows/test-hypothesis.yml +0 -0
  72. {schemathesis-3.26.1 → schemathesis-3.27.0}/.github/workflows/update-corpus.yml +0 -0
  73. {schemathesis-3.26.1 → schemathesis-3.27.0}/.github/workflows/update-pre-commit.yml +0 -0
  74. {schemathesis-3.26.1 → schemathesis-3.27.0}/.gitignore +0 -0
  75. {schemathesis-3.26.1 → schemathesis-3.27.0}/.gitmodules +0 -0
  76. {schemathesis-3.26.1 → schemathesis-3.27.0}/.readthedocs.yml +0 -0
  77. {schemathesis-3.26.1 → schemathesis-3.27.0}/.relint.yml +0 -0
  78. {schemathesis-3.26.1 → schemathesis-3.27.0}/.rstcheck.cfg +0 -0
  79. {schemathesis-3.26.1 → schemathesis-3.27.0}/.yamllint +0 -0
  80. {schemathesis-3.26.1 → schemathesis-3.27.0}/CITATION.cff +0 -0
  81. {schemathesis-3.26.1 → schemathesis-3.27.0}/CODE_OF_CONDUCT.md +0 -0
  82. {schemathesis-3.26.1 → schemathesis-3.27.0}/CONTRIBUTING.rst +0 -0
  83. {schemathesis-3.26.1 → schemathesis-3.27.0}/Dockerfile +0 -0
  84. {schemathesis-3.26.1 → schemathesis-3.27.0}/Dockerfile.bookworm +0 -0
  85. {schemathesis-3.26.1 → schemathesis-3.27.0}/LICENSE +0 -0
  86. {schemathesis-3.26.1 → schemathesis-3.27.0}/README.md +0 -0
  87. {schemathesis-3.26.1 → schemathesis-3.27.0}/benches/cli.py +0 -0
  88. {schemathesis-3.26.1 → schemathesis-3.27.0}/benches/references.py +0 -0
  89. {schemathesis-3.26.1 → schemathesis-3.27.0}/changelog.py +0 -0
  90. {schemathesis-3.26.1 → schemathesis-3.27.0}/codecov.yml +0 -0
  91. {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/Makefile +0 -0
  92. {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/additional-content.rst +0 -0
  93. {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/auth.rst +0 -0
  94. {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/compatibility.rst +0 -0
  95. {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/conf.py +0 -0
  96. {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/continuous_integration.rst +0 -0
  97. {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/contrib.rst +0 -0
  98. {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/data-generation.rst +0 -0
  99. {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/examples.rst +0 -0
  100. {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/experimental.rst +0 -0
  101. {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/faq.rst +0 -0
  102. {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/getting-started.rst +0 -0
  103. {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/graphql.rst +0 -0
  104. {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/index.rst +0 -0
  105. {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/recipes.rst +0 -0
  106. {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/requirements.txt +0 -0
  107. {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/sanitizing.rst +0 -0
  108. {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/service.rst +0 -0
  109. {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/stateful.rst +0 -0
  110. {schemathesis-3.26.1 → schemathesis-3.27.0}/docs/targeted.rst +0 -0
  111. {schemathesis-3.26.1 → schemathesis-3.27.0}/example/Dockerfile +0 -0
  112. {schemathesis-3.26.1 → schemathesis-3.27.0}/example/README.md +0 -0
  113. {schemathesis-3.26.1 → schemathesis-3.27.0}/example/app.py +0 -0
  114. {schemathesis-3.26.1 → schemathesis-3.27.0}/example/compose.yml +0 -0
  115. {schemathesis-3.26.1 → schemathesis-3.27.0}/example/openapi.json +0 -0
  116. {schemathesis-3.26.1 → schemathesis-3.27.0}/example/requirements-app.in +0 -0
  117. {schemathesis-3.26.1 → schemathesis-3.27.0}/example/requirements-app.txt +0 -0
  118. {schemathesis-3.26.1 → schemathesis-3.27.0}/example/requirements-pytest.in +0 -0
  119. {schemathesis-3.26.1 → schemathesis-3.27.0}/example/tests/__init__.py +0 -0
  120. {schemathesis-3.26.1 → schemathesis-3.27.0}/example/tests/conftest.py +0 -0
  121. {schemathesis-3.26.1 → schemathesis-3.27.0}/example/tests/extensions.py +0 -0
  122. {schemathesis-3.26.1 → schemathesis-3.27.0}/example/tests/test_app.py +0 -0
  123. {schemathesis-3.26.1 → schemathesis-3.27.0}/img/demo.gif +0 -0
  124. {schemathesis-3.26.1 → schemathesis-3.27.0}/img/service_github_report.png +0 -0
  125. {schemathesis-3.26.1 → schemathesis-3.27.0}/mypy.ini +0 -0
  126. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/__init__.py +0 -0
  127. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/_compat.py +0 -0
  128. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/_hypothesis.py +0 -0
  129. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/_lazy_import.py +0 -0
  130. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/_override.py +0 -0
  131. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/_xml.py +0 -0
  132. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/auths.py +0 -0
  133. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/checks.py +0 -0
  134. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/cli/callbacks.py +0 -0
  135. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/cli/cassettes.py +0 -0
  136. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/cli/constants.py +0 -0
  137. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/cli/context.py +0 -0
  138. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/cli/debug.py +0 -0
  139. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/cli/handlers.py +0 -0
  140. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/cli/options.py +0 -0
  141. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/cli/output/__init__.py +0 -0
  142. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/cli/output/short.py +0 -0
  143. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/cli/sanitization.py +0 -0
  144. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/code_samples.py +0 -0
  145. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/constants.py +0 -0
  146. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/contrib/__init__.py +0 -0
  147. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/contrib/openapi/__init__.py +0 -0
  148. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/contrib/openapi/fill_missing_examples.py +0 -0
  149. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/contrib/openapi/formats/__init__.py +0 -0
  150. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/contrib/openapi/formats/uuid.py +0 -0
  151. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/contrib/unique_data.py +0 -0
  152. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/exceptions.py +0 -0
  153. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/experimental/__init__.py +0 -0
  154. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/extra/__init__.py +0 -0
  155. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/extra/_aiohttp.py +0 -0
  156. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/extra/_flask.py +0 -0
  157. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/extra/_server.py +0 -0
  158. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/extra/pytest_plugin.py +0 -0
  159. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/failures.py +0 -0
  160. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/filters.py +0 -0
  161. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/fixups/__init__.py +0 -0
  162. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/fixups/fast_api.py +0 -0
  163. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/fixups/utf8_bom.py +0 -0
  164. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/generation/__init__.py +0 -0
  165. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/graphql.py +0 -0
  166. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/hooks.py +0 -0
  167. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/internal/__init__.py +0 -0
  168. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/internal/copy.py +0 -0
  169. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/internal/datetime.py +0 -0
  170. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/internal/deprecation.py +0 -0
  171. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/internal/jsonschema.py +0 -0
  172. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/internal/result.py +0 -0
  173. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/internal/transformation.py +0 -0
  174. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/internal/validation.py +0 -0
  175. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/lazy.py +0 -0
  176. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/loaders.py +0 -0
  177. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/parameters.py +0 -0
  178. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/py.typed +0 -0
  179. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/runner/__init__.py +0 -0
  180. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/runner/events.py +0 -0
  181. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/runner/impl/__init__.py +0 -0
  182. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/runner/impl/solo.py +0 -0
  183. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/runner/impl/threadpool.py +0 -0
  184. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/runner/probes.py +0 -0
  185. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/sanitization.py +0 -0
  186. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/serializers.py +0 -0
  187. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/service/__init__.py +0 -0
  188. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/service/auth.py +0 -0
  189. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/service/ci.py +0 -0
  190. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/service/client.py +0 -0
  191. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/service/constants.py +0 -0
  192. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/service/events.py +0 -0
  193. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/service/extensions.py +0 -0
  194. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/service/hosts.py +0 -0
  195. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/service/metadata.py +0 -0
  196. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/service/models.py +0 -0
  197. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/service/report.py +0 -0
  198. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/service/serialization.py +0 -0
  199. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/service/usage.py +0 -0
  200. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/__init__.py +0 -0
  201. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/graphql/__init__.py +0 -0
  202. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/graphql/nodes.py +0 -0
  203. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/graphql/scalars.py +0 -0
  204. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/graphql/validation.py +0 -0
  205. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/__init__.py +0 -0
  206. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/checks.py +0 -0
  207. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/constants.py +0 -0
  208. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/converter.py +0 -0
  209. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/definitions.py +0 -0
  210. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/examples.py +0 -0
  211. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/expressions/__init__.py +0 -0
  212. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/expressions/context.py +0 -0
  213. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/expressions/errors.py +0 -0
  214. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/expressions/lexer.py +0 -0
  215. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/expressions/nodes.py +0 -0
  216. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/expressions/parser.py +0 -0
  217. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/filters.py +0 -0
  218. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/formats.py +0 -0
  219. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/links.py +0 -0
  220. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/media_types.py +0 -0
  221. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/negative/__init__.py +0 -0
  222. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/negative/mutations.py +0 -0
  223. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/negative/types.py +0 -0
  224. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/negative/utils.py +0 -0
  225. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/parameters.py +0 -0
  226. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/references.py +0 -0
  227. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/schemas.py +0 -0
  228. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/security.py +0 -0
  229. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/serialization.py +0 -0
  230. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/stateful/__init__.py +0 -0
  231. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/stateful/links.py +0 -0
  232. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/utils.py +0 -0
  233. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/specs/openapi/validation.py +0 -0
  234. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/stateful/__init__.py +0 -0
  235. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/targets.py +0 -0
  236. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/transports/auth.py +0 -0
  237. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/transports/content_types.py +0 -0
  238. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/transports/headers.py +0 -0
  239. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/types.py +0 -0
  240. {schemathesis-3.26.1 → schemathesis-3.27.0}/src/schemathesis/utils.py +0 -0
  241. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/__init__.py +0 -0
  242. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/__snapshots__/test_hypothesis/test_health_check_failed_large_base_example.raw +0 -0
  243. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/__snapshots__/test_recoverable_errors/test_in_cli[1].raw +0 -0
  244. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/__snapshots__/test_recoverable_errors/test_in_cli[2].raw +0 -0
  245. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/__snapshots__/test_serialization/test_in_cli[Open API 3.0].raw +0 -0
  246. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/apps/__init__.py +0 -0
  247. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/apps/_graphql/__init__.py +0 -0
  248. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/apps/_graphql/_fastapi/__init__.py +0 -0
  249. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/apps/_graphql/_fastapi/app.py +0 -0
  250. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/apps/_graphql/_flask/__init__.py +0 -0
  251. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/apps/_graphql/_flask/app.py +0 -0
  252. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/apps/_graphql/schema.py +0 -0
  253. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/apps/openapi/__init__.py +0 -0
  254. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/apps/openapi/_aiohttp/__init__.py +0 -0
  255. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/apps/openapi/_aiohttp/app.py +0 -0
  256. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/apps/openapi/_aiohttp/handlers.py +0 -0
  257. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/apps/openapi/_fastapi/__init__.py +0 -0
  258. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/apps/openapi/_fastapi/app.py +0 -0
  259. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/apps/openapi/_flask/__init__.py +0 -0
  260. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/apps/openapi/_flask/app.py +0 -0
  261. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/apps/openapi/schema.py +0 -0
  262. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/auth/__init__.py +0 -0
  263. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/auth/__snapshots__/test_cli/test_conditional[Open API 3.0].raw +0 -0
  264. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/auth/__snapshots__/test_cli/test_custom_auth[Open API 3.0].raw +0 -0
  265. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/auth/__snapshots__/test_cli/test_explicit_auth_precedence[Open API 3.0-args0-Basic dXNlcjpwYXNz].raw +0 -0
  266. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/auth/__snapshots__/test_cli/test_explicit_auth_precedence[Open API 3.0-args1-Bearer EXPLICIT].raw +0 -0
  267. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/auth/__snapshots__/test_cli/test_multiple_auth_mechanisms_with_explicit_auth.raw +0 -0
  268. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/auth/__snapshots__/test_cli/test_multiple_threads[Open API 3.0].raw +0 -0
  269. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/auth/__snapshots__/test_cli/test_requests_auth[Open API 3.0].raw +0 -0
  270. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/auth/conftest.py +0 -0
  271. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/auth/test_cli.py +0 -0
  272. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/auth/test_provider.py +0 -0
  273. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__init__.py +0 -0
  274. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_cassettes/test_forbid_preserve_exact_bytes_without_cassette_path[Open API 3.0].raw +0 -0
  275. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_cassettes/test_forbid_simultaneous_use_of_deprecated_and_new_options[Open API 3.0].raw +0 -0
  276. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_add_case_output[Open API 2.0].raw +0 -0
  277. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_add_case_output[Open API 3.0].raw +0 -0
  278. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_auth_and_authorization_header_are_disallowed[Open API 3.0-Authorization].raw +0 -0
  279. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_auth_and_authorization_header_are_disallowed[Open API 3.0-authorization].raw +0 -0
  280. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 2.0---auth='testwrong'].raw +0 -0
  281. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 2.0--H Authorization Basic J3Rlc3Q6d3Jvbmcn].raw +0 -0
  282. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 3.0---auth='testwrong'].raw +0 -0
  283. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 3.0--H Authorization Basic J3Rlc3Q6d3Jvbmcn].raw +0 -0
  284. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_binary_payload.raw +0 -0
  285. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_certificate_only_key.raw +0 -0
  286. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_chunked_encoding_error[Open API 3.0].raw +0 -0
  287. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 2.0-1].raw +0 -0
  288. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 2.0-2].raw +0 -0
  289. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 3.0-1].raw +0 -0
  290. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 3.0-2].raw +0 -0
  291. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 2.0-1].raw +0 -0
  292. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 2.0-2].raw +0 -0
  293. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 3.0-1].raw +0 -0
  294. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 3.0-2].raw +0 -0
  295. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_commands_help.raw +0 -0
  296. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_complex_urlencoded_example.raw +0 -0
  297. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 2.0-1].raw +0 -0
  298. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 2.0-2].raw +0 -0
  299. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 3.0-1].raw +0 -0
  300. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 3.0-2].raw +0 -0
  301. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 2.0-1].raw +0 -0
  302. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 2.0-2].raw +0 -0
  303. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 3.0-1].raw +0 -0
  304. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 3.0-2].raw +0 -0
  305. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_empty_schema_file[args0].raw +0 -0
  306. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_empty_schema_file[args1].raw +0 -0
  307. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_explicit_example_failure_output.raw +0 -0
  308. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_explicit_headers_in_output_on_errors[Open API 3.0].raw +0 -0
  309. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_force_color_nocolor[Open API 3.0].raw +0 -0
  310. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_get_request_with_body[Open API 2.0].raw +0 -0
  311. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_get_request_with_body[Open API 3.0].raw +0 -0
  312. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_graphql_asgi.raw +0 -0
  313. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_graphql_url[foo-args0].raw +0 -0
  314. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_graphql_url[foo-args1].raw +0 -0
  315. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_graphql_url[graphql-args0].raw +0 -0
  316. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_graphql_url[graphql-args1].raw +0 -0
  317. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_group_errors.raw +0 -0
  318. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_hooks_module_not_found.raw +0 -0
  319. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_hooks_with_inner_import_error.raw +0 -0
  320. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_hypothesis_database_with_derandomize[Open API 3.0].raw +0 -0
  321. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 2.0-1].raw +0 -0
  322. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 2.0-2].raw +0 -0
  323. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 3.0-1].raw +0 -0
  324. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 3.0-2].raw +0 -0
  325. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 2.0-1].raw +0 -0
  326. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 2.0-2].raw +0 -0
  327. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 3.0-1].raw +0 -0
  328. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 3.0-2].raw +0 -0
  329. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[real-Open API 2.0].raw +0 -0
  330. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[real-Open API 3.0].raw +0 -0
  331. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[wsgi-Open API 2.0].raw +0 -0
  332. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[wsgi-Open API 3.0].raw +0 -0
  333. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_invalid_schema_with_disabled_validation[3.0.2-The provided definition doesn't match any of the expected formats or types.].raw +0 -0
  334. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_invalid_schema_with_disabled_validation[3.1.0-'type' is a required property].raw +0 -0
  335. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_invalid_yaml.raw +0 -0
  336. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_long_payload.raw +0 -0
  337. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_malformed_json_deduplication[real-Open API 3.0].raw +0 -0
  338. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_malformed_json_deduplication[wsgi-Open API 3.0].raw +0 -0
  339. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 2.0-1].raw +0 -0
  340. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 2.0-2].raw +0 -0
  341. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 3.0-1].raw +0 -0
  342. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 3.0-2].raw +0 -0
  343. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[cookie-None].raw +0 -0
  344. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[cookie-http127.0.0.1apiv2].raw +0 -0
  345. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[header-None].raw +0 -0
  346. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[header-http127.0.0.1apiv2].raw +0 -0
  347. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[path-None].raw +0 -0
  348. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[path-http127.0.0.1apiv2].raw +0 -0
  349. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[query-None].raw +0 -0
  350. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[query-http127.0.0.1apiv2].raw +0 -0
  351. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_multiple_errors.raw +0 -0
  352. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_multiple_failures_different_check[Open API 2.0].raw +0 -0
  353. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_multiple_failures_different_check[Open API 3.0].raw +0 -0
  354. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_multiple_failures_in_single_check.raw +0 -0
  355. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_multiple_failures_single_check[Open API 2.0].raw +0 -0
  356. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_multiple_failures_single_check[Open API 3.0].raw +0 -0
  357. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_nested_binary_in_yaml.raw +0 -0
  358. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_no_useless_traceback.raw +0 -0
  359. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_null_byte_in_header_probe.raw +0 -0
  360. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_openapi_links[real-Open API 2.0].raw +0 -0
  361. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_openapi_links[real-Open API 3.0].raw +0 -0
  362. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_openapi_links[wsgi-Open API 2.0].raw +0 -0
  363. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_openapi_links[wsgi-Open API 3.0].raw +0 -0
  364. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_openapi_links_disabled[Open API 2.0].raw +0 -0
  365. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_openapi_links_disabled[Open API 3.0].raw +0 -0
  366. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 2.0-1-.....].raw +0 -0
  367. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 2.0-5-......].raw +0 -0
  368. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 3.0-1-.....].raw +0 -0
  369. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 3.0-5-......].raw +0 -0
  370. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 2.0-1-.....].raw +0 -0
  371. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 2.0-5-......].raw +0 -0
  372. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 3.0-1-.....].raw +0 -0
  373. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 3.0-5-......].raw +0 -0
  374. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_proxy_error[Open API 3.0].raw +0 -0
  375. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_read_content_timeout[Open API 3.0].raw +0 -0
  376. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError(Custom check failed!)-Open API 2.0].raw +0 -0
  377. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError(Custom check failed!)-Open API 3.0].raw +0 -0
  378. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError-Open API 2.0].raw +0 -0
  379. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError-Open API 3.0].raw +0 -0
  380. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_remote_disconnected_error[Open API 3.0].raw +0 -0
  381. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[real-Open API 2.0].raw +0 -0
  382. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[real-Open API 3.0].raw +0 -0
  383. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[wsgi-Open API 2.0].raw +0 -0
  384. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[wsgi-Open API 3.0].raw +0 -0
  385. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[real-Open API 2.0].raw +0 -0
  386. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[real-Open API 3.0].raw +0 -0
  387. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[wsgi-Open API 2.0].raw +0 -0
  388. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[wsgi-Open API 3.0].raw +0 -0
  389. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args0].raw +0 -0
  390. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args10].raw +0 -0
  391. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args11].raw +0 -0
  392. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args12].raw +0 -0
  393. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args13].raw +0 -0
  394. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args14].raw +0 -0
  395. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args15].raw +0 -0
  396. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args16].raw +0 -0
  397. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args17].raw +0 -0
  398. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args18].raw +0 -0
  399. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args19].raw +0 -0
  400. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args1].raw +0 -0
  401. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args20].raw +0 -0
  402. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args21].raw +0 -0
  403. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args22].raw +0 -0
  404. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args23].raw +0 -0
  405. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args24].raw +0 -0
  406. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args25].raw +0 -0
  407. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args26].raw +0 -0
  408. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args27].raw +0 -0
  409. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args28].raw +0 -0
  410. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args29].raw +0 -0
  411. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args2].raw +0 -0
  412. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args30].raw +0 -0
  413. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args31].raw +0 -0
  414. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args32].raw +0 -0
  415. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args33].raw +0 -0
  416. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args34].raw +0 -0
  417. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args35].raw +0 -0
  418. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args36].raw +0 -0
  419. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args3].raw +0 -0
  420. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args4].raw +0 -0
  421. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args5].raw +0 -0
  422. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args6].raw +0 -0
  423. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args7].raw +0 -0
  424. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args8].raw +0 -0
  425. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_run_output[args9].raw +0 -0
  426. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_schema_not_available[1].raw +0 -0
  427. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_schema_not_available[2].raw +0 -0
  428. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_schema_not_available_wsgi.raw +0 -0
  429. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 2.0-1].raw +0 -0
  430. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 2.0-2].raw +0 -0
  431. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 3.0-1].raw +0 -0
  432. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 3.0-2].raw +0 -0
  433. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 2.0-1].raw +0 -0
  434. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 2.0-2].raw +0 -0
  435. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 3.0-1].raw +0 -0
  436. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 3.0-2].raw +0 -0
  437. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_unresolvable_reference_with_disabled_validation.raw +0 -0
  438. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 2.0-1].raw +0 -0
  439. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 2.0-2].raw +0 -0
  440. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 3.0-1].raw +0 -0
  441. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 3.0-2].raw +0 -0
  442. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 2.0-1].raw +0 -0
  443. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 2.0-2].raw +0 -0
  444. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 3.0-1].raw +0 -0
  445. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 3.0-2].raw +0 -0
  446. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_unsupported_regex.raw +0 -0
  447. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_useful_traceback[Open API 3.0].raw +0 -0
  448. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_wait_for_schema_not_enough.raw +0 -0
  449. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_commands/test_yaml_parsing_of_floats[Open API 3.0].raw +0 -0
  450. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_hooks/test_after_call[real-Open API 3.0].raw +0 -0
  451. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/__snapshots__/test_hooks/test_after_call[wsgi-Open API 3.0].raw +0 -0
  452. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/cert.pem +0 -0
  453. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/conftest.py +0 -0
  454. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/output/__init__.py +0 -0
  455. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/output/test_default.py +0 -0
  456. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/test_asgi.py +0 -0
  457. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/test_callbacks.py +0 -0
  458. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/test_cassettes.py +0 -0
  459. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/test_checks.py +0 -0
  460. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/test_crashes.py +0 -0
  461. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/test_hooks.py +0 -0
  462. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/test_options.py +0 -0
  463. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/cli/test_targeted.py +0 -0
  464. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/code_samples/__snapshots__/test_python/test_cli_output[Open API 2.0].raw +0 -0
  465. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/code_samples/__snapshots__/test_python/test_cli_output[Open API 3.0].raw +0 -0
  466. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/code_samples/conftest.py +0 -0
  467. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/code_samples/test_curl.py +0 -0
  468. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/conftest.py +0 -0
  469. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/contrib/__snapshots__/test_unique_data/test_cli[None].raw +0 -0
  470. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema0].raw +0 -0
  471. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema1].raw +0 -0
  472. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema2].raw +0 -0
  473. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/contrib/__snapshots__/test_unique_data/test_explicit_headers[1].raw +0 -0
  474. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/contrib/__snapshots__/test_unique_data/test_explicit_headers[2].raw +0 -0
  475. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/contrib/openapi/__snapshots__/test_fill_missing_examples/test_fills_missing_examples.raw +0 -0
  476. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/contrib/openapi/formats/test_uuid.py +0 -0
  477. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/contrib/openapi/test_fill_missing_examples.py +0 -0
  478. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/contrib/test_install.py +0 -0
  479. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/contrib/test_unique_data.py +0 -0
  480. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/data/petstore_v2.yaml +0 -0
  481. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/data/petstore_v3.yaml +0 -0
  482. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/data/simple_openapi.yaml +0 -0
  483. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/data/simple_swagger.yaml +0 -0
  484. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/experimental/__snapshots__/test_experiments/test_not_enabled.raw +0 -0
  485. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/experimental/conftest.py +0 -0
  486. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/experimental/test_experiments.py +0 -0
  487. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/extra/__init__.py +0 -0
  488. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/extra/test_aiohttp.py +0 -0
  489. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/filters/test_matching.py +0 -0
  490. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/hooks/test_filter_operations.py +0 -0
  491. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/loaders/test_app.py +0 -0
  492. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/loaders/test_common.py +0 -0
  493. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/loaders/test_yaml.py +0 -0
  494. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/runner/test_checks.py +0 -0
  495. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/runner/test_events.py +0 -0
  496. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/runner/test_probes.py +0 -0
  497. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__init__.py +0 -0
  498. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_cli/test_client_error_on_project_details[Open API 3.0].raw +0 -0
  499. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_cli/test_client_error_on_upload[Open API 3.0].raw +0 -0
  500. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_cli/test_error_in_another_handler[Open API 3.0].raw +0 -0
  501. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_cli/test_github_suggestion[Open API 3.0].raw +0 -0
  502. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_cli/test_not_authenticated_with_name.raw +0 -0
  503. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_cli/test_two_names.raw +0 -0
  504. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_cli/test_unauthorized[Open API 3.0].raw +0 -0
  505. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_cli/test_unknown_error_on_upload[Open API 3.0].raw +0 -0
  506. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_cli/test_upload_failure[Open API 3.0].raw +0 -0
  507. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_cli/test_upload_success[Open API 3.0].raw +0 -0
  508. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_extensions/test_connection_error[Open API 3.0].raw +0 -0
  509. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_extensions/test_custom_format.raw +0 -0
  510. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_extensions/test_dry_run[Open API 3.0].raw +0 -0
  511. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_extensions/test_forbidden[Open API 3.0].raw +0 -0
  512. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_extensions/test_graphql_scalars.raw +0 -0
  513. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_extensions/test_internal_server_error[Open API 3.0].raw +0 -0
  514. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_extensions/test_invalid_extension[Open API 3.0-42].raw +0 -0
  515. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_extensions/test_invalid_extension[Open API 3.0-extension1].raw +0 -0
  516. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_extensions/test_invalid_payload[Open API 3.0].raw +0 -0
  517. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_extensions/test_media_type_extension[strategy0].raw +0 -0
  518. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_extensions/test_media_type_extension[strategy1].raw +0 -0
  519. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_extensions/test_oversize_text[Open API 3.0].raw +0 -0
  520. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_extensions/test_schema_patches[patch0-expected0].raw +0 -0
  521. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_extensions/test_schema_patches[patch1-expected1].raw +0 -0
  522. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_extensions/test_schema_patches[patch2-expected2].raw +0 -0
  523. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/__snapshots__/test_extensions/test_unknown_extension_in_cli[Open API 3.0].raw +0 -0
  524. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/conftest.py +0 -0
  525. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/test_auth.py +0 -0
  526. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/test_ci.py +0 -0
  527. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/test_cli.py +0 -0
  528. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/test_extensions.py +0 -0
  529. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/test_report.py +0 -0
  530. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/test_serialization.py +0 -0
  531. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/service/test_usage.py +0 -0
  532. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/graphql/__snapshots__/test_basic/test_schema_error[ntype Query {n 123(created Int!) Int!n}-.whatever].raw +0 -0
  533. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/graphql/__snapshots__/test_basic/test_schema_error[ntype Query {n func(created Unknown!) Int!n}-.gql].raw +0 -0
  534. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/graphql/__snapshots__/test_custom_scalars/test_built_in_scalars_in_cli.raw +0 -0
  535. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/graphql/__snapshots__/test_custom_scalars/test_custom_scalar_in_cli.raw +0 -0
  536. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/graphql/test_custom_scalars.py +0 -0
  537. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/openapi/__snapshots__/test_examples/test_network_error_with_flaky_generation.raw +0 -0
  538. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/openapi/__snapshots__/test_media_types/test_explicit_example_with_custom_media_type.raw +0 -0
  539. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/openapi/blank.pdf +0 -0
  540. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/openapi/conftest.py +0 -0
  541. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/openapi/parameters/test_forms.py +0 -0
  542. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/openapi/parameters/test_non_payload.py +0 -0
  543. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/openapi/parameters/test_simple_payloads.py +0 -0
  544. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/openapi/test_expressions.py +0 -0
  545. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/openapi/test_hypothesis.py +0 -0
  546. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/openapi/test_links.py +0 -0
  547. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/openapi/test_parameters.py +0 -0
  548. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/openapi/test_schemas.py +0 -0
  549. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/openapi/test_security.py +0 -0
  550. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/openapi/test_stateful.py +0 -0
  551. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/openapi/test_utils.py +0 -0
  552. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/specs/openapi/test_validation.py +0 -0
  553. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_app.py +0 -0
  554. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_async.py +0 -0
  555. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_common_parameters.py +0 -0
  556. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_converter.py +0 -0
  557. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_dereferencing.py +0 -0
  558. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_direct_access.py +0 -0
  559. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_errors.py +0 -0
  560. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_examples.py +0 -0
  561. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_filters.py +0 -0
  562. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_fixups.py +0 -0
  563. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_internal.py +0 -0
  564. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_package.py +0 -0
  565. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_parametrization.py +0 -0
  566. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_petstore.py +0 -0
  567. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_recoverable_errors.py +0 -0
  568. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_required.py +0 -0
  569. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_sanitizing_output.py +0 -0
  570. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_schemas.py +0 -0
  571. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_stateful.py +0 -0
  572. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_unittest.py +0 -0
  573. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/test_utils.py +0 -0
  574. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/transports/test_content_types.py +0 -0
  575. {schemathesis-3.26.1 → schemathesis-3.27.0}/test/utils.py +0 -0
  576. {schemathesis-3.26.1 → schemathesis-3.27.0}/test-corpus/test_corpus.py +0 -0
  577. {schemathesis-3.26.1 → schemathesis-3.27.0}/test_server.sh +0 -0
  578. {schemathesis-3.26.1 → schemathesis-3.27.0}/tox.ini +0 -0
@@ -83,6 +83,6 @@ jobs:
83
83
  run: python -m tox
84
84
 
85
85
  - name: Upload coverage to Codecov
86
- uses: codecov/codecov-action@v4.1.1
86
+ uses: codecov/codecov-action@v4.2.0
87
87
  with:
88
88
  token: ${{ secrets.CODECOV_TOKEN }}
@@ -38,7 +38,7 @@ jobs:
38
38
 
39
39
  # Initializes the CodeQL tools for scanning.
40
40
  - name: Initialize CodeQL
41
- uses: github/codeql-action/init@v3.24.9
41
+ uses: github/codeql-action/init@v3.24.10
42
42
  with:
43
43
  languages: ${{ matrix.language }}
44
44
  # If you wish to specify custom queries, you can do so here or in a config file.
@@ -49,7 +49,7 @@ jobs:
49
49
  # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
50
50
  # If this step fails, then you should remove it and run the build manually (see below)
51
51
  - name: Autobuild
52
- uses: github/codeql-action/autobuild@v3.24.9
52
+ uses: github/codeql-action/autobuild@v3.24.10
53
53
 
54
54
  # ℹ️ Command-line programs to run using the OS shell.
55
55
  # 📚 https://git.io/JvXDl
@@ -63,4 +63,4 @@ jobs:
63
63
  # make release
64
64
 
65
65
  - name: Perform CodeQL Analysis
66
- uses: github/codeql-action/analyze@v3.24.9
66
+ uses: github/codeql-action/analyze@v3.24.10
@@ -3,7 +3,7 @@ default_language_version:
3
3
 
4
4
  repos:
5
5
  - repo: https://github.com/pre-commit/pre-commit-hooks
6
- rev: v4.5.0
6
+ rev: v4.6.0
7
7
  hooks:
8
8
  - id: check-yaml
9
9
  - id: end-of-file-fixer
@@ -38,12 +38,12 @@ repos:
38
38
  additional_dependencies: [types-click, types-requests, types-PyYAML]
39
39
 
40
40
  - repo: https://github.com/astral-sh/ruff-pre-commit
41
- rev: v0.3.4
41
+ rev: v0.3.7
42
42
  hooks:
43
43
  - id: ruff-format
44
44
 
45
45
  - repo: https://github.com/astral-sh/ruff-pre-commit
46
- rev: v0.3.4
46
+ rev: v0.3.7
47
47
  hooks:
48
48
  - id: ruff
49
49
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: schemathesis
3
- Version: 3.26.1
3
+ Version: 3.27.0
4
4
  Summary: Property-based testing framework for Open API and GraphQL based apps
5
5
  Project-URL: Documentation, https://schemathesis.readthedocs.io/en/stable/
6
6
  Project-URL: Changelog, https://schemathesis.readthedocs.io/en/stable/changelog.html
@@ -39,7 +39,7 @@ Requires-Dist: hypothesis<7,>=6.84.3; python_version > '3.8'
39
39
  Requires-Dist: hypothesis[zoneinfo]<7,>=6.84.3; python_version == '3.8'
40
40
  Requires-Dist: jsonschema<5.0,>=4.18.0
41
41
  Requires-Dist: junit-xml<2.0,>=1.9
42
- Requires-Dist: pyrate-limiter<3.0,>=2.10
42
+ Requires-Dist: pyrate-limiter<4.0,>=2.10
43
43
  Requires-Dist: pytest-subtests<0.8.0,>=0.2.1
44
44
  Requires-Dist: pytest<9,>=4.6.4
45
45
  Requires-Dist: pyyaml<7.0,>=5.1
@@ -113,8 +113,11 @@ Loaders
113
113
  .. autofunction:: schemathesis.from_pytest_fixture
114
114
  .. autofunction:: schemathesis.from_uri
115
115
  .. autofunction:: schemathesis.from_wsgi
116
+ .. autofunction:: schemathesis.graphql.from_path
116
117
  .. autofunction:: schemathesis.graphql.from_dict
118
+ .. autofunction:: schemathesis.graphql.from_file
117
119
  .. autofunction:: schemathesis.graphql.from_url
120
+ .. autofunction:: schemathesis.graphql.from_asgi
118
121
  .. autofunction:: schemathesis.graphql.from_wsgi
119
122
 
120
123
  Sanitizing Output
@@ -1,9 +1,41 @@
1
1
  Changelog
2
2
  =========
3
3
 
4
- :version:`Unreleased <v3.26.1...HEAD>` - TBD
4
+ :version:`Unreleased <v3.27.0...HEAD>` - TBD
5
5
  --------------------------------------------
6
6
 
7
+ .. _v3.27.0:
8
+
9
+ :version:`3.27.0 <v3.26.2...v3.27.0>` - 2024-04-14
10
+ --------------------------------------------------
11
+
12
+ **Added**
13
+
14
+ - ``Case.as_transport_kwargs`` method to simplify the creation of transport-specific keyword arguments for sending requests.
15
+
16
+ **Changed**
17
+
18
+ - Make ``Case.call`` work with ``ASGI`` & ``WSGI`` applications.
19
+ - Extend the JUnit XML report format to match CLI output including skipped tests, code samples, and more.
20
+
21
+ **Deprecated**
22
+
23
+ - ``Case.call_wsgi`` & ``Case.call_asgi`` in favor of ``Case.call``.
24
+ - ``Case.as_requests_kwargs`` & ``Case.as_werkzeug_kwargs`` in favor of ``Case.as_transport_kwargs``.
25
+
26
+ .. _v3.26.2:
27
+
28
+ :version:`3.26.2 <v3.26.1...v3.26.2>` - 2024-04-06
29
+ --------------------------------------------------
30
+
31
+ **Added**
32
+
33
+ - Support for ``pyrate-limiter>=3.0``.
34
+
35
+ **Fixed**
36
+
37
+ - Excluding ``\x00`` bytes as a result of probes.
38
+
7
39
  .. _v3.26.1:
8
40
 
9
41
  :version:`3.26.1 <v3.26.0...v3.26.1>` - 2024-04-04
@@ -398,39 +398,100 @@ This command will create an XML at a given path, as in the example below.
398
398
  .. code:: xml
399
399
 
400
400
  <?xml version="1.0" ?>
401
- <testsuites disabled="0" errors="1" failures="1" tests="3" time="0.10743043999536894">
402
- <testsuite disabled="0" errors="1" failures="1" name="schemathesis" skipped="0" tests="3" time="0.10743043999536894" hostname="bespin">
403
- <testcase name="GET /api/failure" time="0.089057">
404
- <failure type="failure" message="2. Received a response with 5xx status code: 500"/>
405
- </testcase>
406
- <testcase name="GET /api/malformed_json" time="0.011977">
407
- <error type="error" message="json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
408
- ">Traceback (most recent call last):
409
- File &quot;/home/user/work/schemathesis/src/schemathesis/runner/impl/core.py&quot;, line 87, in run_test
410
- test(checks, targets, result, **kwargs)
411
- File &quot;/home/user/work/schemathesis/src/schemathesis/runner/impl/core.py&quot;, line 150, in network_test
412
- case: Case,
413
- File &quot;/home/user/.pyenv/versions/3.8.0/envs/schemathesis/lib/python3.8/site-packages/hypothesis/core.py&quot;, line 1095, in wrapped_test
414
- raise the_error_hypothesis_found
415
- File &quot;/home/user/work/schemathesis/src/schemathesis/runner/impl/core.py&quot;, line 165, in network_test
416
- run_checks(case, checks, result, response)
417
- File &quot;/home/user/work/schemathesis/src/schemathesis/runner/impl/core.py&quot;, line 133, in run_checks
418
- check(response, case)
419
- File &quot;/home/user/work/schemathesis/src/schemathesis/checks.py&quot;, line 87, in response_schema_conformance
420
- data = response.json()
421
- File &quot;/home/user/.pyenv/versions/3.8.0/envs/schemathesis/lib/python3.8/site-packages/requests/models.py&quot;, line 889, in json
422
- return complexjson.loads(
423
- File &quot;/home/user/.pyenv/versions/3.8.0/lib/python3.8/json/__init__.py&quot;, line 357, in loads
424
- return _default_decoder.decode(s)
425
- File &quot;/home/user/.pyenv/versions/3.8.0/lib/python3.8/json/decoder.py&quot;, line 337, in decode
426
- obj, end = self.raw_decode(s, idx=_w(s, 0).end())
427
- File &quot;/home/user/.pyenv/versions/3.8.0/lib/python3.8/json/decoder.py&quot;, line 353, in raw_decode
428
- obj, end = self.scan_once(s, idx)
429
- json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
430
- </error>
431
- </testcase>
432
- <testcase name="GET /api/success" time="0.006397"/>
433
- </testsuite>
401
+ <testsuites disabled="0" errors="0" failures="4" tests="4" time="1.7481054730014876">
402
+ <testsuite disabled="0" errors="0" failures="4" name="schemathesis" skipped="0" tests="4" time="1.7481054730014876" hostname="midgard">
403
+ <testcase name="GET /response-conformance/missing-field" time="0.859204">
404
+ <failure type="failure" message="1. Test Case ID: JA63GZ
405
+
406
+ - Response violates schema
407
+
408
+ 'age' is a required property
409
+
410
+ Schema:
411
+
412
+ {
413
+ &quot;type&quot;: &quot;object&quot;,
414
+ &quot;properties&quot;: {
415
+ &quot;id&quot;: {
416
+ &quot;type&quot;: &quot;string&quot;
417
+ },
418
+ &quot;name&quot;: {
419
+ &quot;type&quot;: &quot;string&quot;
420
+ },
421
+ &quot;age&quot;: {
422
+ &quot;type&quot;: &quot;integer&quot;
423
+ }
424
+ },
425
+ &quot;required&quot;: [
426
+ &quot;id&quot;,
427
+ &quot;name&quot;,
428
+ &quot;age&quot;
429
+ ]
430
+ }
431
+
432
+ Value:
433
+
434
+ {
435
+ &quot;id&quot;: &quot;123&quot;,
436
+ &quot;name&quot;: &quot;Alice&quot;
437
+ }
438
+
439
+ [200] OK:
440
+
441
+ `{&quot;id&quot;:&quot;123&quot;,&quot;name&quot;:&quot;Alice&quot;}`
442
+
443
+ Reproduce with:
444
+
445
+ curl -X GET https://example.schemathesis.io/response-conformance/missing-field"/>
446
+ </testcase>
447
+ <testcase name="GET /response-conformance/malformed-json" time="0.068179">
448
+ <failure type="failure" message="1. Test Case ID: Vn5hfI
449
+
450
+ - JSON deserialization error
451
+
452
+ Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
453
+
454
+ [200] OK:
455
+
456
+ `{success: true}`
457
+
458
+ Reproduce with:
459
+
460
+ curl -X GET https://example.schemathesis.io/response-conformance/malformed-json"/>
461
+ </testcase>
462
+ <testcase name="GET /response-conformance/undocumented-status-code" time="0.756355">
463
+ <failure type="failure" message="1. Test Case ID: jm2nOs
464
+
465
+ - Undocumented HTTP status code
466
+
467
+ Received: 404
468
+ Documented: 200, 400
469
+
470
+ [404] Not Found:
471
+
472
+ `{&quot;error&quot;:&quot;Not Found&quot;}`
473
+
474
+ Reproduce with:
475
+
476
+ curl -X GET 'https://example.schemathesis.io/response-conformance/undocumented-status-code?id=1'"/>
477
+ </testcase>
478
+ <testcase name="GET /response-conformance/incorrect-content-type" time="0.064367">
479
+ <failure type="failure" message="1. Test Case ID: Sveexo
480
+
481
+ - Undocumented Content-Type
482
+
483
+ Received: text/plain
484
+ Documented: application/json
485
+
486
+ [200] OK:
487
+
488
+ `Success!`
489
+
490
+ Reproduce with:
491
+
492
+ curl -X GET https://example.schemathesis.io/response-conformance/incorrect-content-type"/>
493
+ </testcase>
494
+ </testsuite>
434
495
  </testsuites>
435
496
 
436
497
  Base URL configuration
@@ -24,7 +24,13 @@ They can be used to limit the test input to certain criteria, modify the generat
24
24
  return query["key"] != "42"
25
25
 
26
26
  Hooks are identified and applied based on their function name, utilized through a decorator, like ``@schemathesis.hook``.
27
- The function name, such as ``filter_query``, indicates it's a hook to filter query parameters.
27
+ The function name, such as ``filter_query``, indicates it's a hook to filter query parameters.
28
+
29
+ .. note::
30
+
31
+ The second argument could be ``None`` if there are no parameters of such a kind or if it is optional.
32
+ Keep it in mind when acessing the keys of the dictionary.
33
+
28
34
  When dealing with multiple hooks that serve similar purposes, especially across different schemas within the same file, custom names can be assigned as the first argument in the decorator to avoid conflicts and maintain clarity.
29
35
 
30
36
  .. code:: python
@@ -552,7 +558,7 @@ For the WSGI case, it will be ``schemathesis.utils.WSGIResponse``.
552
558
  ``process_call_kwargs``
553
559
  ~~~~~~~~~~~~~~~~~~~~~~~
554
560
 
555
- If you want to modify what keyword arguments will be given to ``case.call`` / ``case.call_wsgi`` / ``case.call_asgi`` in CLI, then you can use this hook:
561
+ If you want to modify what keyword arguments will be given to ``case.call`` in CLI, then you can use this hook:
556
562
 
557
563
  .. code:: python
558
564
 
@@ -226,7 +226,7 @@ If you maintain your API schema in Python code or your web framework (for exampl
226
226
  Web applications
227
227
  ~~~~~~~~~~~~~~~~
228
228
 
229
- Schemathesis natively supports testing of ASGI and WSGI compatible apps (e.g., Flask or FastAPI),
229
+ Schemathesis natively supports testing of ASGI and WSGI compatible apps (e.g., FastAPI or Flask),
230
230
  which is significantly faster since it doesn't involve the network.
231
231
 
232
232
  .. code:: python
@@ -272,7 +272,7 @@ This approach requires an initialized application instance to generate the API s
272
272
  yield
273
273
  await db.disconnect()
274
274
 
275
- return schemathesis.from_dict(app.openapi())
275
+ return schemathesis.from_dict(app.openapi(), app)
276
276
 
277
277
 
278
278
  schema = schemathesis.from_pytest_fixture("web_app")
@@ -300,7 +300,7 @@ When the received response is validated, Schemathesis runs the following checks:
300
300
  - ``response_schema_conformance``. The response content does not conform to the schema defined for this specific response;
301
301
  - ``response_headers_conformance``. The response headers does not contain all defined headers.
302
302
 
303
- Validation happens in the ``case.validate_response`` function, but you can add your code to verify the response conformance as you do in regular Python tests.
303
+ Validation happens in the ``case.call_and_validate`` function, but you can add your code to verify the response conformance as you do in regular Python tests.
304
304
  By default, all available checks will be applied, but you can customize it by passing a tuple of checks explicitly:
305
305
 
306
306
  .. code-block:: python
@@ -312,8 +312,7 @@ By default, all available checks will be applied, but you can customize it by pa
312
312
 
313
313
  @schema.parametrize()
314
314
  def test_api(case):
315
- response = case.call()
316
- case.validate_response(response, checks=(not_a_server_error,))
315
+ case.call_and_validate(checks=(not_a_server_error,))
317
316
 
318
317
  The code above will run only the ``not_a_server_error`` check. Or a tuple of additional checks will be executed after ones from the ``checks`` argument:
319
318
 
@@ -328,8 +327,7 @@ The code above will run only the ``not_a_server_error`` check. Or a tuple of add
328
327
 
329
328
  @schema.parametrize()
330
329
  def test_api(case):
331
- response = case.call()
332
- case.validate_response(response, additional_checks=(my_check,))
330
+ case.call_and_validate(additional_checks=(my_check,))
333
331
 
334
332
  .. note::
335
333
 
@@ -346,8 +344,7 @@ You can also use the ``excluded_checks`` argument to exclude chhecks from runnin
346
344
 
347
345
  @schema.parametrize()
348
346
  def test_api(case):
349
- response = case.call()
350
- case.validate_response(response, excluded_checks=(not_a_server_error,))
347
+ case.call_and_validate(excluded_checks=(not_a_server_error,))
351
348
 
352
349
  The code above will run the default checks, and any additional checks, excluding the ``not_a_server_error`` check.
353
350
 
@@ -398,8 +395,7 @@ In the following example we test a hypothetical ``/api/auth/password/reset/`` op
398
395
  case.body["token"] = data.draw(
399
396
  (st.emails() | st.just(user.email)).map(create_reset_password_token)
400
397
  )
401
- response = case.call_asgi(app=app)
402
- case.validate_response(response)
398
+ case.call_and_validate()
403
399
 
404
400
  Here we use the special `data strategy <https://hypothesis.readthedocs.io/en/latest/data.html#drawing-interactively-in-tests>`_ to change the ``case`` data in ~50% cases.
405
401
  The additional strategy in the conditional branch creates a valid password reset token from the given email.
@@ -449,11 +445,13 @@ This approach ensures that both types of tests can be executed, albeit in separa
449
445
  def test_explicit_examples(data, case, user):
450
446
  ...
451
447
 
452
- ASGI / WSGI support
448
+ ASGI & WSGI support
453
449
  -------------------
454
450
 
455
- Schemathesis supports making calls to ASGI and WSGI-compliant applications instead of real network calls;
456
- in this case, the test execution will go much faster.
451
+ Schemathesis supports making calls to `ASGI <https://asgi.readthedocs.io/en/latest/>`_ and `WSGI-compliant <https://docs.python.org/3/library/wsgiref.html>`_ applications instead of through real network calls,
452
+ significantly speeding up test execution.
453
+
454
+ Using Schemathesis with a Flask application (WSGI):
457
455
 
458
456
  .. code:: python
459
457
 
@@ -470,34 +468,50 @@ in this case, the test execution will go much faster.
470
468
 
471
469
  @app.route("/v1/users", methods=["GET"])
472
470
  def users():
473
- return jsonify([{"name": "Robin"}])
471
+ return [{"name": "Robin"}]
474
472
 
475
473
 
474
+ # Load the schema from the WSGI app
476
475
  schema = schemathesis.from_wsgi("/schema.json", app)
477
476
 
478
477
 
479
478
  @schema.parametrize()
480
479
  def test_api(case):
481
- response = case.call_wsgi()
482
- case.validate_response(response)
480
+ # The test case will make a call to the application and validate the response
481
+ # against the defined schema automatically.
482
+ case.call_and_validate()
483
483
 
484
- If you don't supply the ``app`` argument to the loader, make sure you pass your test client when running tests:
484
+ Running the example above with ``pytest`` will execute property-based tests against the Flask application.
485
485
 
486
- .. code-block:: python
486
+ Using Schemathesis with a FastAPI application (ASGI):
487
487
 
488
- @pytest.fixture()
489
- def app_schema(client):
490
- openapi = client.app.openapi()
491
- return schemathesis.from_dict(openapi)
488
+ .. code:: python
489
+
490
+ from fastapi import FastAPI
491
+ import schemathesis
492
492
 
493
+ # Enable the experimental Open API 3.1 support
494
+ schemathesis.experimental.OPEN_API_3_1.enable()
493
495
 
494
- schema = schemathesis.from_pytest_fixture("app_schema")
496
+ app = FastAPI()
497
+
498
+
499
+ @app.get("/v1/users")
500
+ async def users():
501
+ return [{"name": "Robin"}]
502
+
503
+
504
+ # Load the schema from the ASGI app
505
+ schema = schemathesis.from_asgi("/openapi.json", app)
495
506
 
496
507
 
497
508
  @schema.parametrize()
498
- def test_api(case, client):
499
- # The `session` argument must be supplied.
500
- case.call_and_validate(session=client)
509
+ def test_api(case):
510
+ # The test case will make a call to the application and validate the response
511
+ # against the defined schema automatically.
512
+ case.call_and_validate()
513
+
514
+ Note that Schemathesis currently tests ASGI applications synchronously.
501
515
 
502
516
  Async support
503
517
  -------------
@@ -43,7 +43,7 @@ hypothesis-graphql==0.11.0
43
43
  # via schemathesis
44
44
  hypothesis-jsonschema==0.22.1
45
45
  # via schemathesis
46
- idna==3.6
46
+ idna==3.7
47
47
  # via
48
48
  # anyio
49
49
  # httpx
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "schemathesis"
7
- version = "3.26.1"
7
+ version = "3.27.0"
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" }]
@@ -42,7 +42,7 @@ dependencies = [
42
42
  "hypothesis_jsonschema>=0.23.1,<0.24",
43
43
  "jsonschema>=4.18.0,<5.0",
44
44
  "junit-xml>=1.9,<2.0",
45
- "pyrate-limiter>=2.10,<3.0",
45
+ "pyrate-limiter>=2.10,<4.0",
46
46
  "pytest-subtests>=0.2.1,<0.8.0",
47
47
  "pytest>=4.6.4,<9",
48
48
  "PyYAML>=5.1,<7.0",
@@ -160,6 +160,7 @@ known-third-party = ["_pytest", "aiohttp", "click", "fastapi", "flask", "graphen
160
160
  [tool.ruff.lint.per-file-ignores]
161
161
  "__init__.py" = ["F401"]
162
162
  "_compat.py" = ["F401"]
163
+ "_rate_limiter.py" = ["F401"]
163
164
 
164
165
  [tool.ruff.format]
165
166
  skip-magic-trailing-comma = false
@@ -16,3 +16,6 @@ IS_PYTEST_ABOVE_8 = PYTEST_VERSION >= version.parse("8.0.0")
16
16
 
17
17
  HYPOTHESIS_VERSION = version.parse(metadata.version("hypothesis"))
18
18
  HYPOTHESIS_HAS_STATEFUL_NAMING_IMPROVEMENTS = HYPOTHESIS_VERSION >= version.parse("6.98.14")
19
+
20
+ PYRATE_LIMITER_VERSION = version.parse(metadata.version("pyrate-limiter"))
21
+ IS_PYRATE_LIMITER_ABOVE_3 = PYRATE_LIMITER_VERSION >= version.parse("3.0")
@@ -0,0 +1,6 @@
1
+ from ._dependency_versions import IS_PYRATE_LIMITER_ABOVE_3
2
+
3
+ if IS_PYRATE_LIMITER_ABOVE_3:
4
+ from pyrate_limiter import Limiter, Rate, RateItem
5
+ else:
6
+ from pyrate_limiter import Limiter, RequestRate as Rate
@@ -1769,6 +1769,6 @@ def after_init_cli_run_handlers(
1769
1769
  def process_call_kwargs(context: HookContext, case: Case, kwargs: dict[str, Any]) -> None:
1770
1770
  """Called before every network call in CLI tests.
1771
1771
 
1772
- Aims to modify the argument passed to `case.call` / `case.call_wsgi` / `case.call_asgi`.
1772
+ Aims to modify the argument passed to `case.call`.
1773
1773
  Note that you need to modify `kwargs` in-place.
1774
1774
  """
@@ -0,0 +1,112 @@
1
+ from __future__ import annotations
2
+
3
+ import base64
4
+ import platform
5
+ import textwrap
6
+ from dataclasses import dataclass, field
7
+ from typing import TYPE_CHECKING
8
+
9
+ from junit_xml import TestCase, TestSuite, to_xml_report_file
10
+
11
+ from ..models import Status
12
+ from ..runner import events
13
+ from ..runner.serialization import SerializedCheck, SerializedError
14
+ from ..exceptions import prepare_response_payload, RuntimeErrorType
15
+ from .handlers import EventHandler
16
+ from .reporting import group_by_case, TEST_CASE_ID_TITLE, split_traceback, get_runtime_error_suggestion
17
+
18
+ if TYPE_CHECKING:
19
+ from click.utils import LazyFile
20
+
21
+ from .context import ExecutionContext
22
+
23
+
24
+ @dataclass
25
+ class JunitXMLHandler(EventHandler):
26
+ file_handle: LazyFile
27
+ test_cases: list = field(default_factory=list)
28
+
29
+ def handle_event(self, context: ExecutionContext, event: events.ExecutionEvent) -> None:
30
+ if isinstance(event, events.AfterExecution):
31
+ test_case = TestCase(
32
+ f"{event.result.method} {event.result.path}",
33
+ elapsed_sec=event.elapsed_time,
34
+ allow_multiple_subelements=True,
35
+ )
36
+ if event.status == Status.failure:
37
+ for idx, (code_sample, group) in enumerate(
38
+ group_by_case(event.result.checks, context.code_sample_style), 1
39
+ ):
40
+ checks = sorted(group, key=lambda c: c.name != "not_a_server_error")
41
+ test_case.add_failure_info(message=build_failure_message(idx, code_sample, checks))
42
+ elif event.status == Status.error:
43
+ test_case.add_error_info(message=build_error_message(context, event.result.errors[-1]))
44
+ elif event.status == Status.skip:
45
+ test_case.add_skipped_info(message=event.result.skip_reason)
46
+ self.test_cases.append(test_case)
47
+ if isinstance(event, events.Finished):
48
+ test_suites = [TestSuite("schemathesis", test_cases=self.test_cases, hostname=platform.node())]
49
+ to_xml_report_file(file_descriptor=self.file_handle, test_suites=test_suites, prettyprint=True)
50
+
51
+
52
+ def build_failure_message(idx: int, code_sample: str, checks: list[SerializedCheck]) -> str:
53
+ from ..transports.responses import get_reason
54
+
55
+ message = ""
56
+ for check_idx, check in enumerate(checks):
57
+ if check_idx == 0:
58
+ message += f"{idx}. {TEST_CASE_ID_TITLE}: {check.example.id}\n"
59
+ message += f"\n- {check.title}\n"
60
+ formatted_message = check.formatted_message
61
+ if formatted_message:
62
+ message += f"\n{formatted_message}\n"
63
+ if check_idx + 1 == len(checks):
64
+ if check.response is not None:
65
+ status_code = check.response.status_code
66
+ reason = get_reason(status_code)
67
+ message += f"\n[{check.response.status_code}] {reason}:\n"
68
+ response_body = check.response.body
69
+ if response_body is not None:
70
+ if not response_body:
71
+ message += "\n <EMPTY>\n"
72
+ else:
73
+ encoding = check.response.encoding or "utf8"
74
+ try:
75
+ payload = base64.b64decode(response_body).decode(encoding)
76
+ payload = prepare_response_payload(payload)
77
+ payload = textwrap.indent(f"\n`{payload}`\n", prefix=" ")
78
+ message += payload
79
+ except UnicodeDecodeError:
80
+ message += "\n <BINARY>\n"
81
+
82
+ message += f"\nReproduce with: \n\n {code_sample}"
83
+ return message
84
+
85
+
86
+ def build_error_message(context: ExecutionContext, error: SerializedError) -> str:
87
+ message = ""
88
+ if error.title:
89
+ if error.type == RuntimeErrorType.SCHEMA_GENERIC:
90
+ message = "Schema Error\n"
91
+ else:
92
+ message = f"{error.title}\n"
93
+ if error.message:
94
+ message += f"\n{error.message}\n"
95
+ elif error.message:
96
+ message = error.message
97
+ else:
98
+ message = error.exception
99
+ if error.extras:
100
+ extras = error.extras
101
+ elif context.show_trace and error.type.has_useful_traceback:
102
+ extras = split_traceback(error.exception_with_traceback)
103
+ else:
104
+ extras = []
105
+ if extras:
106
+ message += "\n"
107
+ for extra in extras:
108
+ message += f" {extra}\n"
109
+ suggestion = get_runtime_error_suggestion(error.type, bold=str)
110
+ if suggestion is not None:
111
+ message += f"\nTip: {suggestion}"
112
+ return message