schemathesis 3.28.0__tar.gz → 3.29.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (594) hide show
  1. {schemathesis-3.28.0 → schemathesis-3.29.0}/.github/workflows/build.yml +4 -4
  2. {schemathesis-3.28.0 → schemathesis-3.29.0}/.github/workflows/codeql-analysis.yml +4 -4
  3. {schemathesis-3.28.0 → schemathesis-3.29.0}/.github/workflows/codspeed.yml +1 -1
  4. {schemathesis-3.28.0 → schemathesis-3.29.0}/.github/workflows/commit.yml +1 -1
  5. {schemathesis-3.28.0 → schemathesis-3.29.0}/.github/workflows/example-build.yml +1 -1
  6. {schemathesis-3.28.0 → schemathesis-3.29.0}/.github/workflows/master_update.yml +1 -1
  7. {schemathesis-3.28.0 → schemathesis-3.29.0}/.github/workflows/release.yml +2 -2
  8. {schemathesis-3.28.0 → schemathesis-3.29.0}/.github/workflows/test-corpus.yml +1 -1
  9. {schemathesis-3.28.0 → schemathesis-3.29.0}/.github/workflows/test-hypothesis.yml +1 -1
  10. {schemathesis-3.28.0 → schemathesis-3.29.0}/.github/workflows/update-corpus.yml +1 -1
  11. {schemathesis-3.28.0 → schemathesis-3.29.0}/.github/workflows/update-pre-commit.yml +1 -1
  12. {schemathesis-3.28.0 → schemathesis-3.29.0}/.pre-commit-config.yaml +2 -2
  13. {schemathesis-3.28.0 → schemathesis-3.29.0}/PKG-INFO +6 -2
  14. {schemathesis-3.28.0 → schemathesis-3.29.0}/README.md +4 -0
  15. schemathesis-3.29.0/benches/references.py +49 -0
  16. schemathesis-3.29.0/benches/schema.py +224 -0
  17. schemathesis-3.29.0/corpus/data/graphql.tar.gz +0 -0
  18. schemathesis-3.29.0/corpus/data/openapi-3.0.tar.gz +0 -0
  19. schemathesis-3.29.0/corpus/data/openapi-3.1.tar.gz +0 -0
  20. schemathesis-3.29.0/corpus/data/swagger-2.0.tar.gz +0 -0
  21. schemathesis-3.29.0/corpus/tools.py +160 -0
  22. {schemathesis-3.28.0 → schemathesis-3.29.0}/docs/changelog.rst +40 -1
  23. {schemathesis-3.28.0 → schemathesis-3.29.0}/example/requirements-pytest.txt +1 -1
  24. {schemathesis-3.28.0 → schemathesis-3.29.0}/pyproject.toml +2 -2
  25. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/exceptions.py +4 -3
  26. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/models.py +2 -10
  27. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/runner/impl/core.py +1 -1
  28. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/schemas.py +19 -33
  29. schemathesis-3.29.0/src/schemathesis/specs/graphql/_cache.py +26 -0
  30. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/specs/graphql/schemas.py +79 -46
  31. schemathesis-3.29.0/src/schemathesis/specs/openapi/_cache.py +123 -0
  32. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/_hypothesis.py +2 -0
  33. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/links.py +36 -26
  34. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/references.py +17 -6
  35. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/schemas.py +229 -158
  36. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/security.py +3 -5
  37. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/stateful/__init__.py +1 -2
  38. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/stateful/links.py +5 -5
  39. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/stateful/__init__.py +10 -2
  40. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/transports/content_types.py +2 -0
  41. schemathesis-3.29.0/test/cli/__snapshots__/test_commands/test_no_schema_in_media_type[Open API 3.0].raw +27 -0
  42. schemathesis-3.29.0/test/cli/__snapshots__/test_commands/test_unresolvable_links[Open API 3.0].raw +29 -0
  43. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/test_commands.py +115 -0
  44. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/filters/test_matching.py +1 -1
  45. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/loaders/test_app.py +2 -1
  46. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/runner/test_checks.py +1 -1
  47. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/specs/graphql/test_basic.py +0 -2
  48. schemathesis-3.29.0/test/specs/openapi/randomized/__init__.py +0 -0
  49. schemathesis-3.29.0/test/specs/openapi/randomized/factory.py +24 -0
  50. schemathesis-3.29.0/test/specs/openapi/randomized/test_randomized.py +27 -0
  51. schemathesis-3.29.0/test/specs/openapi/randomized/types.py +28 -0
  52. schemathesis-3.29.0/test/specs/openapi/randomized/v2.py +202 -0
  53. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/specs/openapi/test_hypothesis.py +26 -0
  54. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/specs/openapi/test_links.py +8 -6
  55. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/specs/openapi/test_schemas.py +37 -0
  56. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/specs/openapi/test_stateful.py +1 -1
  57. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/test_asgi.py +33 -1
  58. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/test_dereferencing.py +3 -4
  59. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/test_direct_access.py +2 -11
  60. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/test_hypothesis.py +5 -6
  61. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/test_models.py +27 -16
  62. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/test_parametrization.py +43 -2
  63. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/test_recoverable_errors.py +1 -1
  64. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/test_schemas.py +58 -9
  65. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/test_stateful.py +21 -21
  66. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/utils.py +2 -1
  67. {schemathesis-3.28.0 → schemathesis-3.29.0}/test-corpus/test_corpus.py +75 -77
  68. schemathesis-3.28.0/benches/references.py +0 -43
  69. {schemathesis-3.28.0 → schemathesis-3.29.0}/.dockerignore +0 -0
  70. {schemathesis-3.28.0 → schemathesis-3.29.0}/.github/FUNDING.yml +0 -0
  71. {schemathesis-3.28.0 → schemathesis-3.29.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  72. {schemathesis-3.28.0 → schemathesis-3.29.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  73. {schemathesis-3.28.0 → schemathesis-3.29.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  74. {schemathesis-3.28.0 → schemathesis-3.29.0}/.github/dependabot.yml +0 -0
  75. {schemathesis-3.28.0 → schemathesis-3.29.0}/.github/workflows/example-no-build.yml +0 -0
  76. {schemathesis-3.28.0 → schemathesis-3.29.0}/.gitignore +0 -0
  77. {schemathesis-3.28.0 → schemathesis-3.29.0}/.gitmodules +0 -0
  78. {schemathesis-3.28.0 → schemathesis-3.29.0}/.readthedocs.yml +0 -0
  79. {schemathesis-3.28.0 → schemathesis-3.29.0}/.relint.yml +0 -0
  80. {schemathesis-3.28.0 → schemathesis-3.29.0}/.rstcheck.cfg +0 -0
  81. {schemathesis-3.28.0 → schemathesis-3.29.0}/.yamllint +0 -0
  82. {schemathesis-3.28.0 → schemathesis-3.29.0}/CITATION.cff +0 -0
  83. {schemathesis-3.28.0 → schemathesis-3.29.0}/CODE_OF_CONDUCT.md +0 -0
  84. {schemathesis-3.28.0 → schemathesis-3.29.0}/CONTRIBUTING.rst +0 -0
  85. {schemathesis-3.28.0 → schemathesis-3.29.0}/Dockerfile +0 -0
  86. {schemathesis-3.28.0 → schemathesis-3.29.0}/Dockerfile.bookworm +0 -0
  87. {schemathesis-3.28.0 → schemathesis-3.29.0}/LICENSE +0 -0
  88. {schemathesis-3.28.0 → schemathesis-3.29.0}/benches/cli.py +0 -0
  89. {schemathesis-3.28.0 → schemathesis-3.29.0}/changelog.py +0 -0
  90. {schemathesis-3.28.0 → schemathesis-3.29.0}/codecov.yml +0 -0
  91. {schemathesis-3.28.0 → schemathesis-3.29.0}/docs/Makefile +0 -0
  92. {schemathesis-3.28.0 → schemathesis-3.29.0}/docs/additional-content.rst +0 -0
  93. {schemathesis-3.28.0 → schemathesis-3.29.0}/docs/api.rst +0 -0
  94. {schemathesis-3.28.0 → schemathesis-3.29.0}/docs/auth.rst +0 -0
  95. {schemathesis-3.28.0 → schemathesis-3.29.0}/docs/cli.rst +0 -0
  96. {schemathesis-3.28.0 → schemathesis-3.29.0}/docs/compatibility.rst +0 -0
  97. {schemathesis-3.28.0 → schemathesis-3.29.0}/docs/conf.py +0 -0
  98. {schemathesis-3.28.0 → schemathesis-3.29.0}/docs/continuous_integration.rst +0 -0
  99. {schemathesis-3.28.0 → schemathesis-3.29.0}/docs/contrib.rst +0 -0
  100. {schemathesis-3.28.0 → schemathesis-3.29.0}/docs/data-generation.rst +0 -0
  101. {schemathesis-3.28.0 → schemathesis-3.29.0}/docs/examples.rst +0 -0
  102. {schemathesis-3.28.0 → schemathesis-3.29.0}/docs/experimental.rst +0 -0
  103. {schemathesis-3.28.0 → schemathesis-3.29.0}/docs/extending.rst +0 -0
  104. {schemathesis-3.28.0 → schemathesis-3.29.0}/docs/faq.rst +0 -0
  105. {schemathesis-3.28.0 → schemathesis-3.29.0}/docs/getting-started.rst +0 -0
  106. {schemathesis-3.28.0 → schemathesis-3.29.0}/docs/graphql.rst +0 -0
  107. {schemathesis-3.28.0 → schemathesis-3.29.0}/docs/index.rst +0 -0
  108. {schemathesis-3.28.0 → schemathesis-3.29.0}/docs/python.rst +0 -0
  109. {schemathesis-3.28.0 → schemathesis-3.29.0}/docs/recipes.rst +0 -0
  110. {schemathesis-3.28.0 → schemathesis-3.29.0}/docs/requirements.txt +0 -0
  111. {schemathesis-3.28.0 → schemathesis-3.29.0}/docs/sanitizing.rst +0 -0
  112. {schemathesis-3.28.0 → schemathesis-3.29.0}/docs/service.rst +0 -0
  113. {schemathesis-3.28.0 → schemathesis-3.29.0}/docs/stateful.rst +0 -0
  114. {schemathesis-3.28.0 → schemathesis-3.29.0}/docs/targeted.rst +0 -0
  115. {schemathesis-3.28.0 → schemathesis-3.29.0}/example/Dockerfile +0 -0
  116. {schemathesis-3.28.0 → schemathesis-3.29.0}/example/README.md +0 -0
  117. {schemathesis-3.28.0 → schemathesis-3.29.0}/example/app.py +0 -0
  118. {schemathesis-3.28.0 → schemathesis-3.29.0}/example/compose.yml +0 -0
  119. {schemathesis-3.28.0 → schemathesis-3.29.0}/example/openapi.json +0 -0
  120. {schemathesis-3.28.0 → schemathesis-3.29.0}/example/requirements-app.in +0 -0
  121. {schemathesis-3.28.0 → schemathesis-3.29.0}/example/requirements-app.txt +0 -0
  122. {schemathesis-3.28.0 → schemathesis-3.29.0}/example/requirements-pytest.in +0 -0
  123. {schemathesis-3.28.0 → schemathesis-3.29.0}/example/tests/__init__.py +0 -0
  124. {schemathesis-3.28.0 → schemathesis-3.29.0}/example/tests/conftest.py +0 -0
  125. {schemathesis-3.28.0 → schemathesis-3.29.0}/example/tests/extensions.py +0 -0
  126. {schemathesis-3.28.0 → schemathesis-3.29.0}/example/tests/test_app.py +0 -0
  127. {schemathesis-3.28.0 → schemathesis-3.29.0}/img/demo.gif +0 -0
  128. {schemathesis-3.28.0 → schemathesis-3.29.0}/img/service_github_report.png +0 -0
  129. {schemathesis-3.28.0 → schemathesis-3.29.0}/mypy.ini +0 -0
  130. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/__init__.py +0 -0
  131. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/_compat.py +0 -0
  132. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/_dependency_versions.py +0 -0
  133. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/_hypothesis.py +0 -0
  134. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/_lazy_import.py +0 -0
  135. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/_override.py +0 -0
  136. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/_rate_limiter.py +0 -0
  137. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/_xml.py +0 -0
  138. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/auths.py +0 -0
  139. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/checks.py +0 -0
  140. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/cli/__init__.py +0 -0
  141. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/cli/__main__.py +0 -0
  142. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/cli/callbacks.py +0 -0
  143. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/cli/cassettes.py +0 -0
  144. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/cli/constants.py +0 -0
  145. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/cli/context.py +0 -0
  146. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/cli/debug.py +0 -0
  147. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/cli/handlers.py +0 -0
  148. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/cli/junitxml.py +0 -0
  149. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/cli/options.py +0 -0
  150. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/cli/output/__init__.py +0 -0
  151. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/cli/output/default.py +0 -0
  152. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/cli/output/short.py +0 -0
  153. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/cli/reporting.py +0 -0
  154. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/cli/sanitization.py +0 -0
  155. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/code_samples.py +0 -0
  156. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/constants.py +0 -0
  157. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/contrib/__init__.py +0 -0
  158. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/contrib/openapi/__init__.py +0 -0
  159. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/contrib/openapi/fill_missing_examples.py +0 -0
  160. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/contrib/openapi/formats/__init__.py +0 -0
  161. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/contrib/openapi/formats/uuid.py +0 -0
  162. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/contrib/unique_data.py +0 -0
  163. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/experimental/__init__.py +0 -0
  164. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/extra/__init__.py +0 -0
  165. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/extra/_aiohttp.py +0 -0
  166. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/extra/_flask.py +0 -0
  167. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/extra/_server.py +0 -0
  168. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/extra/pytest_plugin.py +0 -0
  169. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/failures.py +0 -0
  170. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/filters.py +0 -0
  171. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/fixups/__init__.py +0 -0
  172. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/fixups/fast_api.py +0 -0
  173. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/fixups/utf8_bom.py +0 -0
  174. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/generation/__init__.py +0 -0
  175. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/graphql.py +0 -0
  176. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/hooks.py +0 -0
  177. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/internal/__init__.py +0 -0
  178. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/internal/copy.py +0 -0
  179. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/internal/datetime.py +0 -0
  180. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/internal/deprecation.py +0 -0
  181. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/internal/jsonschema.py +0 -0
  182. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/internal/result.py +0 -0
  183. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/internal/transformation.py +0 -0
  184. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/internal/validation.py +0 -0
  185. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/lazy.py +0 -0
  186. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/loaders.py +0 -0
  187. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/parameters.py +0 -0
  188. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/py.typed +0 -0
  189. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/runner/__init__.py +0 -0
  190. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/runner/events.py +0 -0
  191. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/runner/impl/__init__.py +0 -0
  192. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/runner/impl/solo.py +0 -0
  193. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/runner/impl/threadpool.py +0 -0
  194. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/runner/probes.py +0 -0
  195. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/runner/serialization.py +0 -0
  196. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/sanitization.py +0 -0
  197. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/serializers.py +0 -0
  198. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/service/__init__.py +0 -0
  199. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/service/auth.py +0 -0
  200. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/service/ci.py +0 -0
  201. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/service/client.py +0 -0
  202. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/service/constants.py +0 -0
  203. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/service/events.py +0 -0
  204. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/service/extensions.py +0 -0
  205. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/service/hosts.py +0 -0
  206. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/service/metadata.py +0 -0
  207. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/service/models.py +0 -0
  208. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/service/report.py +0 -0
  209. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/service/serialization.py +0 -0
  210. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/service/usage.py +0 -0
  211. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/specs/__init__.py +0 -0
  212. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/specs/graphql/__init__.py +0 -0
  213. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/specs/graphql/loaders.py +0 -0
  214. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/specs/graphql/nodes.py +0 -0
  215. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/specs/graphql/scalars.py +0 -0
  216. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/specs/graphql/validation.py +0 -0
  217. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/__init__.py +0 -0
  218. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/checks.py +0 -0
  219. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/constants.py +0 -0
  220. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/converter.py +0 -0
  221. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/definitions.py +0 -0
  222. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/examples.py +0 -0
  223. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/expressions/__init__.py +0 -0
  224. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/expressions/context.py +0 -0
  225. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/expressions/errors.py +0 -0
  226. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/expressions/lexer.py +0 -0
  227. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/expressions/nodes.py +0 -0
  228. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/expressions/parser.py +0 -0
  229. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/filters.py +0 -0
  230. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/formats.py +0 -0
  231. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/loaders.py +0 -0
  232. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/media_types.py +0 -0
  233. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/negative/__init__.py +0 -0
  234. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/negative/mutations.py +0 -0
  235. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/negative/types.py +0 -0
  236. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/negative/utils.py +0 -0
  237. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/parameters.py +0 -0
  238. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/serialization.py +0 -0
  239. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/utils.py +0 -0
  240. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/specs/openapi/validation.py +0 -0
  241. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/stateful/state_machine.py +0 -0
  242. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/targets.py +0 -0
  243. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/throttling.py +0 -0
  244. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/transports/__init__.py +0 -0
  245. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/transports/auth.py +0 -0
  246. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/transports/headers.py +0 -0
  247. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/transports/responses.py +0 -0
  248. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/types.py +0 -0
  249. {schemathesis-3.28.0 → schemathesis-3.29.0}/src/schemathesis/utils.py +0 -0
  250. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/__init__.py +0 -0
  251. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/__snapshots__/test_hypothesis/test_health_check_failed_large_base_example.raw +0 -0
  252. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/__snapshots__/test_recoverable_errors/test_in_cli[1].raw +0 -0
  253. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/__snapshots__/test_recoverable_errors/test_in_cli[2].raw +0 -0
  254. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/__snapshots__/test_serialization/test_in_cli[Open API 3.0].raw +0 -0
  255. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/apps/__init__.py +0 -0
  256. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/apps/_graphql/__init__.py +0 -0
  257. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/apps/_graphql/_fastapi/__init__.py +0 -0
  258. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/apps/_graphql/_fastapi/app.py +0 -0
  259. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/apps/_graphql/_flask/__init__.py +0 -0
  260. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/apps/_graphql/_flask/app.py +0 -0
  261. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/apps/_graphql/schema.py +0 -0
  262. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/apps/openapi/__init__.py +0 -0
  263. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/apps/openapi/_aiohttp/__init__.py +0 -0
  264. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/apps/openapi/_aiohttp/app.py +0 -0
  265. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/apps/openapi/_aiohttp/handlers.py +0 -0
  266. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/apps/openapi/_fastapi/__init__.py +0 -0
  267. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/apps/openapi/_fastapi/app.py +0 -0
  268. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/apps/openapi/_flask/__init__.py +0 -0
  269. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/apps/openapi/_flask/app.py +0 -0
  270. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/apps/openapi/schema.py +0 -0
  271. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/auth/__init__.py +0 -0
  272. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/auth/__snapshots__/test_cli/test_conditional[Open API 3.0].raw +0 -0
  273. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/auth/__snapshots__/test_cli/test_custom_auth[Open API 3.0].raw +0 -0
  274. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/auth/__snapshots__/test_cli/test_explicit_auth_precedence[Open API 3.0-args0-Basic dXNlcjpwYXNz].raw +0 -0
  275. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/auth/__snapshots__/test_cli/test_explicit_auth_precedence[Open API 3.0-args1-Bearer EXPLICIT].raw +0 -0
  276. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/auth/__snapshots__/test_cli/test_multiple_auth_mechanisms_with_explicit_auth.raw +0 -0
  277. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/auth/__snapshots__/test_cli/test_multiple_threads[Open API 3.0].raw +0 -0
  278. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/auth/__snapshots__/test_cli/test_requests_auth[Open API 3.0].raw +0 -0
  279. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/auth/conftest.py +0 -0
  280. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/auth/test_cli.py +0 -0
  281. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/auth/test_provider.py +0 -0
  282. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/auth/test_pytest.py +0 -0
  283. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__init__.py +0 -0
  284. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_cassettes/test_forbid_preserve_exact_bytes_without_cassette_path[Open API 3.0].raw +0 -0
  285. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_cassettes/test_forbid_simultaneous_use_of_deprecated_and_new_options[Open API 3.0].raw +0 -0
  286. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_add_case_output[Open API 2.0].raw +0 -0
  287. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_add_case_output[Open API 3.0].raw +0 -0
  288. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_auth_and_authorization_header_are_disallowed[Open API 3.0-Authorization].raw +0 -0
  289. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_auth_and_authorization_header_are_disallowed[Open API 3.0-authorization].raw +0 -0
  290. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 2.0---auth='testwrong'].raw +0 -0
  291. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 2.0--H Authorization Basic J3Rlc3Q6d3Jvbmcn].raw +0 -0
  292. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 3.0---auth='testwrong'].raw +0 -0
  293. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 3.0--H Authorization Basic J3Rlc3Q6d3Jvbmcn].raw +0 -0
  294. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_binary_payload.raw +0 -0
  295. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_certificate_only_key.raw +0 -0
  296. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_chunked_encoding_error[Open API 3.0].raw +0 -0
  297. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 2.0-1].raw +0 -0
  298. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 2.0-2].raw +0 -0
  299. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 3.0-1].raw +0 -0
  300. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 3.0-2].raw +0 -0
  301. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 2.0-1].raw +0 -0
  302. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 2.0-2].raw +0 -0
  303. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 3.0-1].raw +0 -0
  304. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 3.0-2].raw +0 -0
  305. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_commands_help.raw +0 -0
  306. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_complex_urlencoded_example.raw +0 -0
  307. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 2.0-1].raw +0 -0
  308. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 2.0-2].raw +0 -0
  309. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 3.0-1].raw +0 -0
  310. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 3.0-2].raw +0 -0
  311. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 2.0-1].raw +0 -0
  312. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 2.0-2].raw +0 -0
  313. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 3.0-1].raw +0 -0
  314. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 3.0-2].raw +0 -0
  315. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_empty_schema_file[args0].raw +0 -0
  316. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_empty_schema_file[args1].raw +0 -0
  317. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_explicit_example_failure_output.raw +0 -0
  318. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_explicit_headers_in_output_on_errors[Open API 3.0].raw +0 -0
  319. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_force_color_nocolor[Open API 3.0].raw +0 -0
  320. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_get_request_with_body[Open API 2.0].raw +0 -0
  321. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_get_request_with_body[Open API 3.0].raw +0 -0
  322. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_graphql_asgi.raw +0 -0
  323. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_graphql_url[foo-args0].raw +0 -0
  324. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_graphql_url[foo-args1].raw +0 -0
  325. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_graphql_url[graphql-args0].raw +0 -0
  326. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_graphql_url[graphql-args1].raw +0 -0
  327. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_group_errors.raw +0 -0
  328. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_hooks_module_not_found.raw +0 -0
  329. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_hooks_with_inner_import_error.raw +0 -0
  330. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_hypothesis_database_with_derandomize[Open API 3.0].raw +0 -0
  331. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 2.0-1].raw +0 -0
  332. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 2.0-2].raw +0 -0
  333. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 3.0-1].raw +0 -0
  334. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 3.0-2].raw +0 -0
  335. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 2.0-1].raw +0 -0
  336. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 2.0-2].raw +0 -0
  337. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 3.0-1].raw +0 -0
  338. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 3.0-2].raw +0 -0
  339. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[real-Open API 2.0].raw +0 -0
  340. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[real-Open API 3.0].raw +0 -0
  341. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[wsgi-Open API 2.0].raw +0 -0
  342. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[wsgi-Open API 3.0].raw +0 -0
  343. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_invalid_schema_with_disabled_validation[3.0.2].raw +0 -0
  344. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_invalid_schema_with_disabled_validation[3.1.0].raw +0 -0
  345. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_invalid_yaml.raw +0 -0
  346. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_long_payload.raw +0 -0
  347. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_malformed_json_deduplication[real-Open API 3.0].raw +0 -0
  348. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_malformed_json_deduplication[wsgi-Open API 3.0].raw +0 -0
  349. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 2.0-1].raw +0 -0
  350. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 2.0-2].raw +0 -0
  351. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 3.0-1].raw +0 -0
  352. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 3.0-2].raw +0 -0
  353. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[cookie-None].raw +0 -0
  354. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[cookie-http127.0.0.1apiv2].raw +0 -0
  355. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[header-None].raw +0 -0
  356. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[header-http127.0.0.1apiv2].raw +0 -0
  357. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[path-None].raw +0 -0
  358. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[path-http127.0.0.1apiv2].raw +0 -0
  359. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[query-None].raw +0 -0
  360. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[query-http127.0.0.1apiv2].raw +0 -0
  361. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_multiple_errors.raw +0 -0
  362. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_multiple_failures_different_check[Open API 2.0].raw +0 -0
  363. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_multiple_failures_different_check[Open API 3.0].raw +0 -0
  364. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_multiple_failures_in_single_check.raw +0 -0
  365. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_multiple_failures_single_check[Open API 2.0].raw +0 -0
  366. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_multiple_failures_single_check[Open API 3.0].raw +0 -0
  367. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_nested_binary_in_yaml.raw +0 -0
  368. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_no_useless_traceback.raw +0 -0
  369. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_null_byte_in_header_probe.raw +0 -0
  370. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_openapi_links[real-Open API 2.0].raw +0 -0
  371. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_openapi_links[real-Open API 3.0].raw +0 -0
  372. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_openapi_links[wsgi-Open API 2.0].raw +0 -0
  373. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_openapi_links[wsgi-Open API 3.0].raw +0 -0
  374. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_openapi_links_disabled[Open API 2.0].raw +0 -0
  375. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_openapi_links_disabled[Open API 3.0].raw +0 -0
  376. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 2.0-1].raw +0 -0
  377. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 2.0-5].raw +0 -0
  378. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 3.0-1].raw +0 -0
  379. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 3.0-5].raw +0 -0
  380. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 2.0-1].raw +0 -0
  381. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 2.0-5].raw +0 -0
  382. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 3.0-1].raw +0 -0
  383. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 3.0-5].raw +0 -0
  384. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_proxy_error[Open API 3.0].raw +0 -0
  385. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_read_content_timeout[Open API 3.0].raw +0 -0
  386. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_recursive_reference_error_message.raw +0 -0
  387. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError(Custom check failed!)-Open API 2.0].raw +0 -0
  388. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError(Custom check failed!)-Open API 3.0].raw +0 -0
  389. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError-Open API 2.0].raw +0 -0
  390. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError-Open API 3.0].raw +0 -0
  391. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_remote_disconnected_error[Open API 3.0].raw +0 -0
  392. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[real-Open API 2.0].raw +0 -0
  393. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[real-Open API 3.0].raw +0 -0
  394. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[wsgi-Open API 2.0].raw +0 -0
  395. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[wsgi-Open API 3.0].raw +0 -0
  396. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[real-Open API 2.0].raw +0 -0
  397. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[real-Open API 3.0].raw +0 -0
  398. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[wsgi-Open API 2.0].raw +0 -0
  399. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[wsgi-Open API 3.0].raw +0 -0
  400. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args0].raw +0 -0
  401. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args10].raw +0 -0
  402. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args11].raw +0 -0
  403. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args12].raw +0 -0
  404. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args13].raw +0 -0
  405. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args14].raw +0 -0
  406. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args15].raw +0 -0
  407. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args16].raw +0 -0
  408. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args17].raw +0 -0
  409. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args18].raw +0 -0
  410. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args19].raw +0 -0
  411. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args1].raw +0 -0
  412. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args20].raw +0 -0
  413. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args21].raw +0 -0
  414. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args22].raw +0 -0
  415. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args23].raw +0 -0
  416. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args24].raw +0 -0
  417. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args25].raw +0 -0
  418. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args26].raw +0 -0
  419. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args27].raw +0 -0
  420. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args28].raw +0 -0
  421. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args29].raw +0 -0
  422. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args2].raw +0 -0
  423. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args30].raw +0 -0
  424. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args31].raw +0 -0
  425. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args32].raw +0 -0
  426. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args33].raw +0 -0
  427. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args34].raw +0 -0
  428. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args35].raw +0 -0
  429. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args36].raw +0 -0
  430. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args3].raw +0 -0
  431. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args4].raw +0 -0
  432. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args5].raw +0 -0
  433. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args6].raw +0 -0
  434. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args7].raw +0 -0
  435. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args8].raw +0 -0
  436. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_run_output[args9].raw +0 -0
  437. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_schema_not_available[1].raw +0 -0
  438. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_schema_not_available[2].raw +0 -0
  439. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_schema_not_available_wsgi.raw +0 -0
  440. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 2.0-1].raw +0 -0
  441. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 2.0-2].raw +0 -0
  442. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 3.0-1].raw +0 -0
  443. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 3.0-2].raw +0 -0
  444. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 2.0-1].raw +0 -0
  445. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 2.0-2].raw +0 -0
  446. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 3.0-1].raw +0 -0
  447. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 3.0-2].raw +0 -0
  448. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_unknown_schema_error[Open API 3.0].raw +0 -0
  449. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_unresolvable_reference_with_disabled_validation.raw +0 -0
  450. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 2.0-1].raw +0 -0
  451. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 2.0-2].raw +0 -0
  452. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 3.0-1].raw +0 -0
  453. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 3.0-2].raw +0 -0
  454. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 2.0-1].raw +0 -0
  455. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 2.0-2].raw +0 -0
  456. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 3.0-1].raw +0 -0
  457. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 3.0-2].raw +0 -0
  458. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_unsupported_regex.raw +0 -0
  459. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_useful_traceback[Open API 3.0].raw +0 -0
  460. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_wait_for_schema_not_enough.raw +0 -0
  461. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_commands/test_yaml_parsing_of_floats[Open API 3.0].raw +0 -0
  462. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_hooks/test_after_call[real-Open API 3.0].raw +0 -0
  463. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/__snapshots__/test_hooks/test_after_call[wsgi-Open API 3.0].raw +0 -0
  464. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/cert.pem +0 -0
  465. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/conftest.py +0 -0
  466. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/output/__init__.py +0 -0
  467. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/output/test_default.py +0 -0
  468. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/test_asgi.py +0 -0
  469. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/test_callbacks.py +0 -0
  470. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/test_cassettes.py +0 -0
  471. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/test_checks.py +0 -0
  472. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/test_crashes.py +0 -0
  473. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/test_hooks.py +0 -0
  474. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/test_junitxml.py +0 -0
  475. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/test_options.py +0 -0
  476. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/cli/test_targeted.py +0 -0
  477. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/code_samples/__snapshots__/test_python/test_cli_output[Open API 2.0].raw +0 -0
  478. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/code_samples/__snapshots__/test_python/test_cli_output[Open API 3.0].raw +0 -0
  479. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/code_samples/conftest.py +0 -0
  480. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/code_samples/test_curl.py +0 -0
  481. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/code_samples/test_python.py +0 -0
  482. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/conftest.py +0 -0
  483. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/contrib/__snapshots__/test_unique_data/test_cli[None].raw +0 -0
  484. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema0].raw +0 -0
  485. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema1].raw +0 -0
  486. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema2].raw +0 -0
  487. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/contrib/__snapshots__/test_unique_data/test_explicit_headers[1].raw +0 -0
  488. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/contrib/__snapshots__/test_unique_data/test_explicit_headers[2].raw +0 -0
  489. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/contrib/openapi/__snapshots__/test_fill_missing_examples/test_fills_missing_examples.raw +0 -0
  490. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/contrib/openapi/formats/test_uuid.py +0 -0
  491. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/contrib/openapi/test_fill_missing_examples.py +0 -0
  492. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/contrib/test_install.py +0 -0
  493. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/contrib/test_unique_data.py +0 -0
  494. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/data/petstore_v2.yaml +0 -0
  495. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/data/petstore_v3.yaml +0 -0
  496. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/data/simple_openapi.yaml +0 -0
  497. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/data/simple_swagger.yaml +0 -0
  498. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/experimental/__snapshots__/test_experiments/test_not_enabled.raw +0 -0
  499. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/experimental/conftest.py +0 -0
  500. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/experimental/test_experiments.py +0 -0
  501. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/experimental/test_openapi_3_1.py +0 -0
  502. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/extra/__init__.py +0 -0
  503. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/extra/test_aiohttp.py +0 -0
  504. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/hooks/test_filter_operations.py +0 -0
  505. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/hooks/test_hooks.py +0 -0
  506. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/loaders/conftest.py +0 -0
  507. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/loaders/test_common.py +0 -0
  508. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/loaders/test_graphql.py +0 -0
  509. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/loaders/test_openapi.py +0 -0
  510. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/loaders/test_yaml.py +0 -0
  511. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/runner/test_events.py +0 -0
  512. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/runner/test_probes.py +0 -0
  513. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/runner/test_runner.py +0 -0
  514. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/service/__init__.py +0 -0
  515. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/service/__snapshots__/test_cli/test_client_error_on_project_details[Open API 3.0].raw +0 -0
  516. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/service/__snapshots__/test_cli/test_client_error_on_upload[Open API 3.0].raw +0 -0
  517. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/service/__snapshots__/test_cli/test_error_in_another_handler[Open API 3.0].raw +0 -0
  518. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/service/__snapshots__/test_cli/test_github_suggestion[Open API 3.0].raw +0 -0
  519. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/service/__snapshots__/test_cli/test_not_authenticated_with_name.raw +0 -0
  520. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/service/__snapshots__/test_cli/test_two_names.raw +0 -0
  521. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/service/__snapshots__/test_cli/test_unauthorized[Open API 3.0].raw +0 -0
  522. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/service/__snapshots__/test_cli/test_unknown_error_on_upload[Open API 3.0].raw +0 -0
  523. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/service/__snapshots__/test_cli/test_upload_failure[Open API 3.0].raw +0 -0
  524. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/service/__snapshots__/test_cli/test_upload_success[Open API 3.0].raw +0 -0
  525. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/service/__snapshots__/test_extensions/test_connection_error[Open API 3.0].raw +0 -0
  526. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/service/__snapshots__/test_extensions/test_custom_format.raw +0 -0
  527. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/service/__snapshots__/test_extensions/test_dry_run[Open API 3.0].raw +0 -0
  528. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/service/__snapshots__/test_extensions/test_forbidden[Open API 3.0].raw +0 -0
  529. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/service/__snapshots__/test_extensions/test_graphql_scalars.raw +0 -0
  530. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/service/__snapshots__/test_extensions/test_internal_server_error[Open API 3.0].raw +0 -0
  531. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/service/__snapshots__/test_extensions/test_invalid_extension[Open API 3.0-42].raw +0 -0
  532. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/service/__snapshots__/test_extensions/test_invalid_extension[Open API 3.0-extension1].raw +0 -0
  533. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/service/__snapshots__/test_extensions/test_invalid_payload[Open API 3.0].raw +0 -0
  534. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/service/__snapshots__/test_extensions/test_media_type_extension[strategy0].raw +0 -0
  535. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/service/__snapshots__/test_extensions/test_media_type_extension[strategy1].raw +0 -0
  536. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/service/__snapshots__/test_extensions/test_oversize_text[Open API 3.0].raw +0 -0
  537. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/service/__snapshots__/test_extensions/test_schema_patches[patch0-expected0].raw +0 -0
  538. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/service/__snapshots__/test_extensions/test_schema_patches[patch1-expected1].raw +0 -0
  539. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/service/__snapshots__/test_extensions/test_schema_patches[patch2-expected2].raw +0 -0
  540. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/service/__snapshots__/test_extensions/test_unknown_extension_in_cli[Open API 3.0].raw +0 -0
  541. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/service/conftest.py +0 -0
  542. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/service/test_auth.py +0 -0
  543. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/service/test_ci.py +0 -0
  544. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/service/test_cli.py +0 -0
  545. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/service/test_extensions.py +0 -0
  546. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/service/test_report.py +0 -0
  547. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/service/test_serialization.py +0 -0
  548. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/service/test_usage.py +0 -0
  549. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/specs/graphql/__snapshots__/test_basic/test_schema_error[ntype Query {n 123(created Int!) Int!n}-.whatever].raw +0 -0
  550. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/specs/graphql/__snapshots__/test_basic/test_schema_error[ntype Query {n func(created Unknown!) Int!n}-.gql].raw +0 -0
  551. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/specs/graphql/__snapshots__/test_custom_scalars/test_built_in_scalars_in_cli.raw +0 -0
  552. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/specs/graphql/__snapshots__/test_custom_scalars/test_custom_scalar_in_cli.raw +0 -0
  553. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/specs/graphql/test_custom_scalars.py +0 -0
  554. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/specs/graphql/test_pytest.py +0 -0
  555. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/specs/openapi/__snapshots__/test_examples/test_network_error_with_flaky_generation.raw +0 -0
  556. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/specs/openapi/__snapshots__/test_media_types/test_explicit_example_with_custom_media_type.raw +0 -0
  557. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/specs/openapi/blank.pdf +0 -0
  558. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/specs/openapi/conftest.py +0 -0
  559. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/specs/openapi/parameters/test_forms.py +0 -0
  560. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/specs/openapi/parameters/test_non_payload.py +0 -0
  561. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/specs/openapi/parameters/test_simple_payloads.py +0 -0
  562. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/specs/openapi/test_examples.py +0 -0
  563. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/specs/openapi/test_expressions.py +0 -0
  564. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/specs/openapi/test_media_types.py +0 -0
  565. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/specs/openapi/test_negative.py +0 -0
  566. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/specs/openapi/test_parameters.py +0 -0
  567. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/specs/openapi/test_security.py +0 -0
  568. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/specs/openapi/test_serializing.py +0 -0
  569. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/specs/openapi/test_utils.py +0 -0
  570. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/specs/openapi/test_validation.py +0 -0
  571. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/test_app.py +0 -0
  572. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/test_async.py +0 -0
  573. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/test_common_parameters.py +0 -0
  574. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/test_converter.py +0 -0
  575. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/test_errors.py +0 -0
  576. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/test_examples.py +0 -0
  577. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/test_filters.py +0 -0
  578. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/test_fixups.py +0 -0
  579. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/test_internal.py +0 -0
  580. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/test_lazy.py +0 -0
  581. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/test_package.py +0 -0
  582. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/test_parameters.py +0 -0
  583. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/test_petstore.py +0 -0
  584. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/test_pytest.py +0 -0
  585. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/test_rate_limit.py +0 -0
  586. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/test_required.py +0 -0
  587. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/test_sanitizing_output.py +0 -0
  588. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/test_serialization.py +0 -0
  589. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/test_unittest.py +0 -0
  590. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/test_utils.py +0 -0
  591. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/test_wsgi.py +0 -0
  592. {schemathesis-3.28.0 → schemathesis-3.29.0}/test/transports/test_content_types.py +0 -0
  593. {schemathesis-3.28.0 → schemathesis-3.29.0}/test_server.sh +0 -0
  594. {schemathesis-3.28.0 → schemathesis-3.29.0}/tox.ini +0 -0
@@ -26,7 +26,7 @@ jobs:
26
26
  name: Generic pre-commit checks
27
27
  runs-on: ubuntu-22.04
28
28
  steps:
29
- - uses: actions/checkout@v4.1.4
29
+ - uses: actions/checkout@v4.1.6
30
30
  with:
31
31
  fetch-depth: 1
32
32
 
@@ -41,7 +41,7 @@ jobs:
41
41
  name: Documentation
42
42
  runs-on: ubuntu-22.04
43
43
  steps:
44
- - uses: actions/checkout@v4.1.4
44
+ - uses: actions/checkout@v4.1.6
45
45
  with:
46
46
  fetch-depth: 1
47
47
  - uses: ammaraskar/sphinx-action@master
@@ -66,7 +66,7 @@ jobs:
66
66
  name: Tests (Python ${{ matrix.python }} on ${{ matrix.os }} ${{ matrix.tox_env }})
67
67
  runs-on: ${{ matrix.os }}
68
68
  steps:
69
- - uses: actions/checkout@v4.1.4
69
+ - uses: actions/checkout@v4.1.6
70
70
  with:
71
71
  fetch-depth: 1
72
72
 
@@ -83,6 +83,6 @@ jobs:
83
83
  run: python -m tox
84
84
 
85
85
  - name: Upload coverage to Codecov
86
- uses: codecov/codecov-action@v4.3.1
86
+ uses: codecov/codecov-action@v4.4.1
87
87
  with:
88
88
  token: ${{ secrets.CODECOV_TOKEN }}
@@ -30,7 +30,7 @@ jobs:
30
30
 
31
31
  steps:
32
32
  - name: Checkout repository
33
- uses: actions/checkout@v4.1.4
33
+ uses: actions/checkout@v4.1.6
34
34
  with:
35
35
  # We must fetch at least the immediate parents so that if this is
36
36
  # a pull request then we can checkout the head.
@@ -38,7 +38,7 @@ jobs:
38
38
 
39
39
  # Initializes the CodeQL tools for scanning.
40
40
  - name: Initialize CodeQL
41
- uses: github/codeql-action/init@v3.25.3
41
+ uses: github/codeql-action/init@v3.25.6
42
42
  with:
43
43
  languages: ${{ matrix.language }}
44
44
  # If you wish to specify custom queries, you can do so here or in a config file.
@@ -49,7 +49,7 @@ jobs:
49
49
  # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
50
50
  # If this step fails, then you should remove it and run the build manually (see below)
51
51
  - name: Autobuild
52
- uses: github/codeql-action/autobuild@v3.25.3
52
+ uses: github/codeql-action/autobuild@v3.25.6
53
53
 
54
54
  # ℹ️ Command-line programs to run using the OS shell.
55
55
  # 📚 https://git.io/JvXDl
@@ -63,4 +63,4 @@ jobs:
63
63
  # make release
64
64
 
65
65
  - name: Perform CodeQL Analysis
66
- uses: github/codeql-action/analyze@v3.25.3
66
+ uses: github/codeql-action/analyze@v3.25.6
@@ -11,7 +11,7 @@ jobs:
11
11
  benchmarks:
12
12
  runs-on: ubuntu-latest
13
13
  steps:
14
- - uses: actions/checkout@v4.1.4
14
+ - uses: actions/checkout@v4.1.6
15
15
  - uses: actions/setup-python@v5
16
16
  with:
17
17
  # Python 3.12 for flamegraph support
@@ -12,7 +12,7 @@ jobs:
12
12
  runs-on: ubuntu-22.04
13
13
  steps:
14
14
  - name: Check out code
15
- uses: actions/checkout@v4.1.4
15
+ uses: actions/checkout@v4.1.6
16
16
  with:
17
17
  fetch-depth: 0
18
18
  - name: Run commitsar
@@ -16,7 +16,7 @@ jobs:
16
16
  runs-on: ubuntu-22.04
17
17
 
18
18
  steps:
19
- - uses: actions/checkout@v4.1.4
19
+ - uses: actions/checkout@v4.1.6
20
20
 
21
21
  - name: Start containers
22
22
  run: docker compose up -d --build
@@ -20,7 +20,7 @@ jobs:
20
20
  tag: "latest-bookworm"
21
21
 
22
22
  steps:
23
- - uses: actions/checkout@v4.1.4
23
+ - uses: actions/checkout@v4.1.6
24
24
 
25
25
  - name: Set up QEMU
26
26
  uses: docker/setup-qemu-action@v3
@@ -19,7 +19,7 @@ jobs:
19
19
  tag-suffix: "-bookworm"
20
20
 
21
21
  steps:
22
- - uses: actions/checkout@v4.1.4
22
+ - uses: actions/checkout@v4.1.6
23
23
 
24
24
  - name: Docker meta
25
25
  id: meta
@@ -68,7 +68,7 @@ jobs:
68
68
  name: Build and publish package to pypi.org
69
69
  runs-on: ubuntu-22.04
70
70
  steps:
71
- - uses: actions/checkout@v4.1.4
71
+ - uses: actions/checkout@v4.1.6
72
72
  with:
73
73
  fetch-depth: 1
74
74
 
@@ -15,7 +15,7 @@ jobs:
15
15
  name: Corpus tests
16
16
  runs-on: ubuntu-22.04
17
17
  steps:
18
- - uses: actions/checkout@v4.1.4
18
+ - uses: actions/checkout@v4.1.6
19
19
  with:
20
20
  fetch-depth: 1
21
21
  submodules: true
@@ -11,7 +11,7 @@ jobs:
11
11
  name: Hypothesis tests with CI profile
12
12
  runs-on: ubuntu-22.04
13
13
  steps:
14
- - uses: actions/checkout@v4.1.4
14
+ - uses: actions/checkout@v4.1.6
15
15
  with:
16
16
  fetch-depth: 1
17
17
 
@@ -10,7 +10,7 @@ jobs:
10
10
  name: Update test corpus
11
11
  runs-on: ubuntu-22.04
12
12
  steps:
13
- - uses: actions/checkout@v4.1.4
13
+ - uses: actions/checkout@v4.1.6
14
14
  with:
15
15
  fetch-depth: 1
16
16
  submodules: true
@@ -10,7 +10,7 @@ jobs:
10
10
  name: Update pre-commit
11
11
  runs-on: ubuntu-22.04
12
12
  steps:
13
- - uses: actions/checkout@v4.1.4
13
+ - uses: actions/checkout@v4.1.6
14
14
  with:
15
15
  fetch-depth: 1
16
16
  submodules: true
@@ -38,12 +38,12 @@ repos:
38
38
  additional_dependencies: [types-click, types-requests, types-PyYAML]
39
39
 
40
40
  - repo: https://github.com/astral-sh/ruff-pre-commit
41
- rev: v0.4.3
41
+ rev: v0.4.5
42
42
  hooks:
43
43
  - id: ruff-format
44
44
 
45
45
  - repo: https://github.com/astral-sh/ruff-pre-commit
46
- rev: v0.4.3
46
+ rev: v0.4.5
47
47
  hooks:
48
48
  - id: ruff
49
49
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: schemathesis
3
- Version: 3.28.0
3
+ Version: 3.29.0
4
4
  Summary: Property-based testing framework for Open API and GraphQL based apps
5
5
  Project-URL: Documentation, https://schemathesis.readthedocs.io/en/stable/
6
6
  Project-URL: Changelog, https://schemathesis.readthedocs.io/en/stable/changelog.html
@@ -50,7 +50,7 @@ Requires-Dist: tomli<3.0,>=2.0.1
50
50
  Requires-Dist: werkzeug<4,>=0.16.0
51
51
  Requires-Dist: yarl<2.0,>=1.5
52
52
  Provides-Extra: bench
53
- Requires-Dist: pytest-codspeed==2.2.0; extra == 'bench'
53
+ Requires-Dist: pytest-codspeed==2.2.1; extra == 'bench'
54
54
  Provides-Extra: cov
55
55
  Requires-Dist: coverage-enable-subprocess; extra == 'cov'
56
56
  Requires-Dist: coverage[toml]>=5.3; extra == 'cov'
@@ -342,6 +342,10 @@ Schemathesis is used by a number of project and companies, including direct usag
342
342
 
343
343
  ### Articles
344
344
 
345
+ - [Implementing Schemathesis at PayLead](https://medium.com/paylead/implementing-schemathesis-at-paylead-a469a5d43626) by **Jérémy Pelletier** at **PayLead**
346
+ - **Description**: In-depth walkthrough including custom hooks, stateful testing and CI/CD integration.
347
+ - **Date**: 29 May 2024
348
+
345
349
  - [Auto-Generating & Validating OpenAPI Docs in Rust: A Streamlined Approach with Utoipa and Schemathesis](https://identeco.de/en/blog/generating_and_validating_openapi_docs_in_rust/) by **identeco**
346
350
  - **Description**: Demonstrates OpenAPI doc generation with Utoipa and validating it with Schemathesis.
347
351
  - **Date**: 01 Jun 2023
@@ -264,6 +264,10 @@ Schemathesis is used by a number of project and companies, including direct usag
264
264
 
265
265
  ### Articles
266
266
 
267
+ - [Implementing Schemathesis at PayLead](https://medium.com/paylead/implementing-schemathesis-at-paylead-a469a5d43626) by **Jérémy Pelletier** at **PayLead**
268
+ - **Description**: In-depth walkthrough including custom hooks, stateful testing and CI/CD integration.
269
+ - **Date**: 29 May 2024
270
+
267
271
  - [Auto-Generating & Validating OpenAPI Docs in Rust: A Streamlined Approach with Utoipa and Schemathesis](https://identeco.de/en/blog/generating_and_validating_openapi_docs_in_rust/) by **identeco**
268
272
  - **Description**: Demonstrates OpenAPI doc generation with Utoipa and validating it with Schemathesis.
269
273
  - **Date**: 01 Jun 2023
@@ -0,0 +1,49 @@
1
+ import pytest
2
+
3
+ import schemathesis
4
+ from schemathesis.specs.openapi.references import resolve_pointer
5
+
6
+ RECURSIVE_SCHEMA = {
7
+ "openapi": "3.0.0",
8
+ "info": {"title": "Example API", "description": "An API to test Schemathesis", "version": "1.0.0"},
9
+ "components": {
10
+ "schemas": {
11
+ "Node": {
12
+ "type": "object",
13
+ "required": ["child"],
14
+ "properties": {"child": {"$ref": "#/components/schemas/Node"}},
15
+ }
16
+ }
17
+ },
18
+ "paths": {
19
+ "/foo": {
20
+ "post": {
21
+ "summary": "Test",
22
+ "description": "",
23
+ "requestBody": {
24
+ "required": True,
25
+ "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Node"}}},
26
+ },
27
+ "responses": {
28
+ "200": {
29
+ "description": "OK",
30
+ "content": {},
31
+ }
32
+ },
33
+ }
34
+ }
35
+ },
36
+ }
37
+
38
+
39
+ @pytest.mark.benchmark
40
+ def test_inlining_during_resolution():
41
+ schema = schemathesis.from_dict(RECURSIVE_SCHEMA)
42
+ schema.resolver.resolve_all(
43
+ RECURSIVE_SCHEMA["paths"]["/foo"]["post"]["requestBody"]["content"]["application/json"]["schema"]
44
+ )
45
+
46
+
47
+ @pytest.mark.benchmark
48
+ def test_resolve_pointer():
49
+ resolve_pointer(RECURSIVE_SCHEMA, "/paths/~1foo/post/requestBody/content/application~1json/schema")
@@ -0,0 +1,224 @@
1
+ import pathlib
2
+ import sys
3
+
4
+ import hypothesis
5
+ import pytest
6
+ from hypothesis import HealthCheck, Phase, Verbosity
7
+
8
+ import schemathesis
9
+ from schemathesis.runner import from_schema
10
+
11
+ CURRENT_DIR = pathlib.Path(__file__).parent.absolute()
12
+ sys.path.append(str(CURRENT_DIR.parent))
13
+ CATALOG_DIR = CURRENT_DIR / "data"
14
+
15
+ from corpus.tools import read_corpus_file, load_from_corpus # noqa: E402
16
+
17
+ CORPUS_OPENAPI_30 = read_corpus_file("openapi-3.0")
18
+ CORPUS_SWAGGER_20 = read_corpus_file("swagger-2.0")
19
+ # Small size (~2k lines in YAML)
20
+ BBCI = load_from_corpus("bbci.co.uk/1.0.json", CORPUS_OPENAPI_30)
21
+ BBCI_SCHEMA = schemathesis.from_dict(BBCI)
22
+ BBCI_OPERATIONS = list(BBCI_SCHEMA.get_all_operations())
23
+ # Medium size (~8k lines in YAML)
24
+ VMWARE = load_from_corpus("vmware.local/vrni/1.0.0.json", CORPUS_OPENAPI_30)
25
+ VMWARE_SCHEMA = schemathesis.from_dict(VMWARE)
26
+ VMWARE_OPERATIONS = list(VMWARE_SCHEMA.get_all_operations())
27
+ # Large size (~92k lines in YAML)
28
+ STRIPE = load_from_corpus("stripe.com/2022-11-15.json", CORPUS_OPENAPI_30)
29
+ STRIPE_SCHEMA = schemathesis.from_dict(STRIPE)
30
+ # Medium GraphQL schema (~6k lines)
31
+ UNIVERSE = load_from_corpus("universe.json", "graphql")
32
+ UNIVERSE_SCHEMA = schemathesis.graphql.from_dict(UNIVERSE)
33
+
34
+ APPVEYOR = load_from_corpus("appveyor.com/1.0.0.json", CORPUS_SWAGGER_20)
35
+ EVETECH = load_from_corpus("evetech.net/0.8.6.json", CORPUS_SWAGGER_20)
36
+ OSISOFT = load_from_corpus("osisoft.com/1.11.1.5383.json", CORPUS_SWAGGER_20)
37
+ ML_WEBSERVICES = load_from_corpus("azure.com/machinelearning-webservices/2017-01-01.json", CORPUS_SWAGGER_20)
38
+ AZURE_NETWORK = load_from_corpus("azure.com/network/2016-03-30.json", CORPUS_SWAGGER_20)
39
+
40
+
41
+ @pytest.mark.benchmark
42
+ @pytest.mark.parametrize(
43
+ "raw_schema, loader",
44
+ [
45
+ (BBCI, schemathesis.from_dict),
46
+ (VMWARE, schemathesis.from_dict),
47
+ (UNIVERSE, schemathesis.graphql.from_dict),
48
+ (APPVEYOR, schemathesis.from_dict),
49
+ (EVETECH, schemathesis.from_dict),
50
+ (OSISOFT, schemathesis.from_dict),
51
+ (ML_WEBSERVICES, schemathesis.from_dict),
52
+ (AZURE_NETWORK, schemathesis.from_dict),
53
+ ],
54
+ ids=("bbci", "vmware", "universe", "appveyor", "evetech", "osisoft", "ml_webservices", "azure_network"),
55
+ )
56
+ def test_iter_operations(raw_schema, loader):
57
+ schema = loader(raw_schema)
58
+
59
+ for _ in schema.get_all_operations():
60
+ pass
61
+
62
+
63
+ @pytest.mark.benchmark
64
+ @pytest.mark.parametrize(
65
+ "raw_schema, loader",
66
+ [
67
+ (BBCI, schemathesis.from_dict),
68
+ (VMWARE, schemathesis.from_dict),
69
+ (STRIPE, schemathesis.from_dict),
70
+ (UNIVERSE, schemathesis.graphql.from_dict),
71
+ (APPVEYOR, schemathesis.from_dict),
72
+ (EVETECH, schemathesis.from_dict),
73
+ (OSISOFT, schemathesis.from_dict),
74
+ (ML_WEBSERVICES, schemathesis.from_dict),
75
+ (AZURE_NETWORK, schemathesis.from_dict),
76
+ ],
77
+ ids=("bbci", "vmware", "stripe", "universe", "appveyor", "evetech", "osisoft", "ml_webservices", "azure_network"),
78
+ )
79
+ def test_length(raw_schema, loader):
80
+ schema = loader(raw_schema)
81
+ _ = len(schema)
82
+
83
+
84
+ # Schemas with pre-populated cache
85
+ BBCI_OPERATION_ID = "Get_Categories_"
86
+ BBCI_OPERATION_KEY = ("/categories", "get")
87
+ BBCI_SCHEMA_WITH_OPERATIONS_CACHE = schemathesis.from_dict(BBCI)
88
+ BBCI_SCHEMA_WITH_OPERATIONS_CACHE.get_operation_by_id(BBCI_OPERATION_ID)
89
+ VMWARE_OPERATION_ID = "listProblemEvents"
90
+ VMWARE_OPERATION_KEY = ("/entities/problems", "get")
91
+ VMWARE_SCHEMA_WITH_OPERATIONS_CACHE = schemathesis.from_dict(VMWARE)
92
+ VMWARE_SCHEMA_WITH_OPERATIONS_CACHE.get_operation_by_id(VMWARE_OPERATION_ID)
93
+ UNIVERSE_OPERATION_KEY = ("Query", "manageTickets")
94
+ UNIVERSE_SCHEMA_WITH_OPERATIONS_CACHE = schemathesis.graphql.from_dict(UNIVERSE)
95
+ UNIVERSE_SCHEMA_WITH_OPERATIONS_CACHE[UNIVERSE_OPERATION_KEY[0]][UNIVERSE_OPERATION_KEY[1]]
96
+
97
+
98
+ @pytest.mark.benchmark
99
+ @pytest.mark.parametrize(
100
+ "raw_schema, key, loader",
101
+ [
102
+ (BBCI, BBCI_OPERATION_KEY, schemathesis.from_dict),
103
+ (VMWARE, VMWARE_OPERATION_KEY, schemathesis.from_dict),
104
+ (UNIVERSE, UNIVERSE_OPERATION_KEY, schemathesis.graphql.from_dict),
105
+ ],
106
+ ids=("bbci", "vmware", "universe"),
107
+ )
108
+ def test_get_operation_single(raw_schema, key, loader):
109
+ schema = loader(raw_schema)
110
+ current = schema
111
+ for segment in key:
112
+ current = current[segment]
113
+
114
+
115
+ @pytest.mark.benchmark
116
+ @pytest.mark.parametrize(
117
+ "schema, key",
118
+ [
119
+ (BBCI_SCHEMA_WITH_OPERATIONS_CACHE, BBCI_OPERATION_KEY),
120
+ (VMWARE_SCHEMA_WITH_OPERATIONS_CACHE, VMWARE_OPERATION_KEY),
121
+ (UNIVERSE_SCHEMA_WITH_OPERATIONS_CACHE, UNIVERSE_OPERATION_KEY),
122
+ ],
123
+ ids=("bbci", "vmware", "universe"),
124
+ )
125
+ def test_get_operation_repeatedly(schema, key):
126
+ current = schema
127
+ for segment in key:
128
+ current = current[segment]
129
+
130
+
131
+ @pytest.mark.benchmark
132
+ @pytest.mark.parametrize(
133
+ "raw_schema, key",
134
+ [(BBCI, BBCI_OPERATION_ID), (VMWARE, VMWARE_OPERATION_ID)],
135
+ ids=("bbci", "vmware"),
136
+ )
137
+ def test_get_operation_by_id_single(raw_schema, key):
138
+ schema = schemathesis.from_dict(raw_schema)
139
+ _ = schema.get_operation_by_id(key)
140
+
141
+
142
+ @pytest.mark.benchmark
143
+ @pytest.mark.parametrize(
144
+ "schema, key",
145
+ [
146
+ (BBCI_SCHEMA_WITH_OPERATIONS_CACHE, BBCI_OPERATION_ID),
147
+ (VMWARE_SCHEMA_WITH_OPERATIONS_CACHE, VMWARE_OPERATION_ID),
148
+ ],
149
+ ids=("bbci", "vmware"),
150
+ )
151
+ def test_get_operation_by_id_repeatedly(schema, key):
152
+ _ = schema.get_operation_by_id(key)
153
+
154
+
155
+ @pytest.mark.benchmark
156
+ @pytest.mark.parametrize(
157
+ "raw_schema, key",
158
+ [
159
+ (BBCI, "#/paths/~1categories/get"),
160
+ (VMWARE, "#/paths/~1entities~1problems/get"),
161
+ ],
162
+ ids=("bbci", "vmware"),
163
+ )
164
+ def test_get_operation_by_reference_single(raw_schema, key):
165
+ schema = schemathesis.from_dict(raw_schema)
166
+ _ = schema.get_operation_by_reference(key)
167
+
168
+
169
+ @pytest.mark.benchmark
170
+ @pytest.mark.parametrize(
171
+ "schema, key",
172
+ [
173
+ (BBCI_SCHEMA_WITH_OPERATIONS_CACHE, "#/paths/~1categories/get"),
174
+ (VMWARE_SCHEMA_WITH_OPERATIONS_CACHE, "#/paths/~1entities~1problems/get"),
175
+ ],
176
+ ids=("bbci", "vmware"),
177
+ )
178
+ def test_get_operation_by_reference_repeatedly(schema, key):
179
+ _ = schema.get_operation_by_reference(key)
180
+
181
+
182
+ @pytest.mark.benchmark
183
+ @pytest.mark.parametrize("operations", [BBCI_OPERATIONS, VMWARE_OPERATIONS], ids=("bbci", "vmware"))
184
+ def test_as_json_schema(operations):
185
+ for operation in operations:
186
+ for parameter in operation.ok().iter_parameters():
187
+ _ = parameter.as_json_schema(operation)
188
+
189
+
190
+ @pytest.mark.benchmark
191
+ def test_events():
192
+ runner = from_schema(
193
+ BBCI_SCHEMA,
194
+ checks=(),
195
+ count_operations=False,
196
+ count_links=False,
197
+ hypothesis_settings=hypothesis.settings(
198
+ deadline=None,
199
+ database=None,
200
+ max_examples=1,
201
+ derandomize=True,
202
+ suppress_health_check=list(HealthCheck),
203
+ phases=[Phase.explicit, Phase.generate],
204
+ verbosity=Verbosity.quiet,
205
+ ),
206
+ )
207
+ for _ in runner.execute():
208
+ pass
209
+
210
+
211
+ @pytest.mark.benchmark
212
+ @pytest.mark.parametrize("raw_schema", [BBCI, VMWARE, STRIPE], ids=("bbci", "vmware", "stripe"))
213
+ def test_rewritten_components(raw_schema):
214
+ schema = schemathesis.from_dict(raw_schema)
215
+
216
+ _ = schema.rewritten_components
217
+
218
+
219
+ @pytest.mark.benchmark
220
+ @pytest.mark.parametrize("raw_schema", [BBCI, VMWARE, STRIPE], ids=("bbci", "vmware", "stripe"))
221
+ def test_links_count(raw_schema):
222
+ schema = schemathesis.from_dict(raw_schema)
223
+
224
+ _ = schema.links_count
@@ -0,0 +1,160 @@
1
+ from __future__ import annotations
2
+
3
+ import io
4
+ import os
5
+ import pathlib
6
+ import re
7
+ import tarfile
8
+ from typing import Any, Dict, Generator
9
+
10
+ import yaml
11
+
12
+ try:
13
+ from yaml import CSafeLoader as SafeLoader
14
+ except ImportError:
15
+ from yaml import SafeLoader # type: ignore
16
+
17
+ try:
18
+ import orjson
19
+ from orjson import loads as json_loads
20
+
21
+ def json_dumps(obj: Any) -> bytes:
22
+ return orjson.dumps(obj)
23
+
24
+ except ImportError:
25
+ import json
26
+ from json import loads as json_loads
27
+
28
+ def json_dumps(obj: Any) -> bytes:
29
+ return json.dumps(obj, separators=(",", ":")).encode("utf-8")
30
+
31
+
32
+ CURRENT_DIR = pathlib.Path(__file__).parent.absolute()
33
+ CATALOG_DIR = CURRENT_DIR / "../test-corpus/openapi-directory/APIs/"
34
+ DATA_DIR = CURRENT_DIR / "data"
35
+
36
+ Loader = type("YAMLLoader", (SafeLoader,), {})
37
+ Loader.yaml_implicit_resolvers = { # type: ignore[attr-defined]
38
+ key: [(tag, regexp) for tag, regexp in mapping if tag != "tag:yaml.org,2002:timestamp"]
39
+ for key, mapping in Loader.yaml_implicit_resolvers.copy().items() # type: ignore[attr-defined]
40
+ }
41
+
42
+ Loader.add_implicit_resolver( # type: ignore
43
+ "tag:yaml.org,2002:float",
44
+ re.compile(
45
+ r"""^(?:[-+]?(?:[0-9][0-9_]*)\.[0-9_]*(?:[eE][-+]?[0-9]+)?
46
+ |[-+]?(?:[0-9][0-9_]*)(?:[eE][-+]?[0-9]+)
47
+ |\.[0-9_]+(?:[eE][-+]?[0-9]+)?
48
+ |[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*
49
+ |[-+]?\.(?:inf|Inf|INF)
50
+ |\.(?:nan|NaN|NAN))$""",
51
+ re.X,
52
+ ),
53
+ list("-+0123456789."),
54
+ )
55
+
56
+
57
+ def construct_mapping(self: SafeLoader, node: yaml.Node, deep: bool = False) -> dict[str, Any]:
58
+ if isinstance(node, yaml.MappingNode):
59
+ self.flatten_mapping(node) # type: ignore
60
+ mapping = {}
61
+ for key_node, value_node in node.value:
62
+ if key_node.tag != "tag:yaml.org,2002:str":
63
+ key = key_node.value
64
+ else:
65
+ key = self.construct_object(key_node, deep) # type: ignore
66
+ mapping[key] = self.construct_object(value_node, deep) # type: ignore
67
+ return mapping
68
+
69
+
70
+ Loader.construct_mapping = construct_mapping # type: ignore
71
+
72
+
73
+ def create_tar_gz(schemas: Dict[str, Dict[str, Any]], output_dir: pathlib.Path) -> None:
74
+ """Create compressed API schemas corpus."""
75
+ os.makedirs(output_dir, exist_ok=True)
76
+
77
+ for version, version_schemas in schemas.items():
78
+ if version.startswith("2."):
79
+ output_path = output_dir / f"swagger-{version}.tar.gz"
80
+ else:
81
+ output_path = output_dir / f"openapi-{version}.tar.gz"
82
+
83
+ with tarfile.open(output_path, "w:gz") as tar_gz:
84
+ for schema_name, schema in version_schemas.items():
85
+ json_path = f"{schema_name}.json"
86
+ json_data = json_dumps(schema)
87
+ info = tarfile.TarInfo(name=json_path)
88
+ info.size = len(json_data)
89
+ tar_gz.addfile(info, io.BytesIO(json_data))
90
+
91
+
92
+ def parse_schemas(directory: pathlib.Path) -> Dict[str, Dict[str, Any]]:
93
+ schemas: Dict[str, Dict[str, Any]] = {}
94
+
95
+ for root, _, files in os.walk(directory):
96
+ for file in files:
97
+ if file.endswith("swagger.yaml") or file.endswith("openapi.yaml"):
98
+ file_path = os.path.join(root, file)
99
+ try:
100
+ with open(file_path, "r") as fd:
101
+ schema = yaml.load(fd, Loader)
102
+ version = get_schema_version(schema)
103
+ schema_name = (
104
+ os.path.relpath(file_path, directory)
105
+ .replace(os.sep, "/")
106
+ .replace("/swagger.yaml", "")
107
+ .replace("/openapi.yaml", "")
108
+ )
109
+ if version not in schemas:
110
+ schemas[version] = {}
111
+ schemas[version][schema_name] = schema
112
+ except (yaml.YAMLError, KeyError):
113
+ print(f"Error parsing {file_path}")
114
+
115
+ return schemas
116
+
117
+
118
+ def get_schema_version(schema: Dict[str, Any]) -> str:
119
+ """Extract the schema version from the parsed schema."""
120
+ if "openapi" in schema:
121
+ return schema["openapi"][:3]
122
+ elif "swagger" in schema:
123
+ return schema["swagger"]
124
+ else:
125
+ raise ValueError("Invalid schema format")
126
+
127
+
128
+ def load_from_corpus(file_name: str, corpus: tarfile.TarFile | str) -> dict[str, Any]:
129
+ if isinstance(corpus, str):
130
+ corpus = read_corpus_file(corpus)
131
+ extracted = corpus.extractfile(file_name)
132
+ if extracted is not None:
133
+ return json_loads(extracted.read())
134
+ raise FileNotFoundError(file_name)
135
+
136
+
137
+ def read_corpus_file(name: str) -> tarfile.TarFile:
138
+ return tarfile.open(DATA_DIR / f"{name}.tar.gz", "r:gz")
139
+
140
+
141
+ def iter_corpus_file(name: str) -> Generator[tuple[str, dict[str, Any]], None, None]:
142
+ """Iterate over the corpus file."""
143
+ with read_corpus_file(name) as tar:
144
+ for member in tar.getmembers():
145
+ extracted = tar.extractfile(member)
146
+ if extracted is not None:
147
+ yield member.name, json_loads(extracted.read())
148
+
149
+
150
+ def iter_all_corpus_files() -> Generator[tuple[str, str, dict[str, Any]], None, None]:
151
+ """Iterate over all corpus files."""
152
+ for corpus_name in os.listdir(DATA_DIR):
153
+ if corpus_name.endswith(".tar.gz"):
154
+ for file_name, schema in iter_corpus_file(corpus_name):
155
+ yield corpus_name, file_name, schema
156
+
157
+
158
+ if __name__ == "__main__":
159
+ schemas = parse_schemas(CATALOG_DIR)
160
+ create_tar_gz(schemas, DATA_DIR)