schemathesis 3.29.2__tar.gz → 3.30.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 (620) hide show
  1. {schemathesis-3.29.2 → schemathesis-3.30.0}/.github/workflows/build.yml +4 -7
  2. {schemathesis-3.29.2 → schemathesis-3.30.0}/.github/workflows/codeql-analysis.yml +4 -4
  3. {schemathesis-3.29.2 → schemathesis-3.30.0}/.github/workflows/codspeed.yml +1 -1
  4. {schemathesis-3.29.2 → schemathesis-3.30.0}/.github/workflows/commit.yml +1 -1
  5. {schemathesis-3.29.2 → schemathesis-3.30.0}/.github/workflows/example-build.yml +1 -1
  6. {schemathesis-3.29.2 → schemathesis-3.30.0}/.github/workflows/master_update.yml +1 -1
  7. {schemathesis-3.29.2 → schemathesis-3.30.0}/.github/workflows/release.yml +2 -2
  8. {schemathesis-3.29.2 → schemathesis-3.30.0}/.github/workflows/test-corpus.yml +1 -1
  9. {schemathesis-3.29.2 → schemathesis-3.30.0}/.github/workflows/test-hypothesis.yml +1 -1
  10. {schemathesis-3.29.2 → schemathesis-3.30.0}/.github/workflows/update-corpus.yml +1 -1
  11. {schemathesis-3.29.2 → schemathesis-3.30.0}/.github/workflows/update-pre-commit.yml +1 -1
  12. {schemathesis-3.29.2 → schemathesis-3.30.0}/.pre-commit-config.yaml +2 -2
  13. {schemathesis-3.29.2 → schemathesis-3.30.0}/PKG-INFO +1 -1
  14. {schemathesis-3.29.2 → schemathesis-3.30.0}/benches/cli.py +1 -0
  15. {schemathesis-3.29.2 → schemathesis-3.30.0}/benches/schema.py +1 -1
  16. {schemathesis-3.29.2 → schemathesis-3.30.0}/changelog.py +1 -0
  17. {schemathesis-3.29.2 → schemathesis-3.30.0}/docs/changelog.rst +63 -1
  18. {schemathesis-3.29.2 → schemathesis-3.30.0}/docs/cli.rst +1 -0
  19. {schemathesis-3.29.2 → schemathesis-3.30.0}/docs/experimental.rst +29 -0
  20. {schemathesis-3.29.2 → schemathesis-3.30.0}/docs/python.rst +3 -1
  21. {schemathesis-3.29.2 → schemathesis-3.30.0}/docs/stateful.rst +141 -7
  22. {schemathesis-3.29.2 → schemathesis-3.30.0}/example/README.md +1 -1
  23. {schemathesis-3.29.2 → schemathesis-3.30.0}/example/requirements-pytest.txt +1 -1
  24. {schemathesis-3.29.2 → schemathesis-3.30.0}/pyproject.toml +1 -1
  25. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/__init__.py +3 -3
  26. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/_compat.py +2 -2
  27. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/_dependency_versions.py +1 -3
  28. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/_hypothesis.py +6 -0
  29. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/_lazy_import.py +1 -0
  30. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/_override.py +1 -0
  31. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/_rate_limiter.py +2 -1
  32. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/_xml.py +1 -0
  33. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/auths.py +4 -2
  34. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/checks.py +8 -5
  35. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/cli/__init__.py +8 -1
  36. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/cli/callbacks.py +3 -4
  37. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/cli/cassettes.py +6 -4
  38. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/cli/constants.py +2 -0
  39. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/cli/context.py +3 -0
  40. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/cli/debug.py +2 -1
  41. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/cli/options.py +1 -0
  42. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/cli/output/default.py +50 -22
  43. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/cli/output/short.py +21 -10
  44. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/cli/sanitization.py +1 -0
  45. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/code_samples.py +1 -0
  46. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/constants.py +1 -0
  47. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/contrib/openapi/__init__.py +1 -1
  48. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/contrib/openapi/fill_missing_examples.py +2 -0
  49. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/contrib/openapi/formats/uuid.py +2 -1
  50. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/contrib/unique_data.py +2 -1
  51. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/exceptions.py +40 -26
  52. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/experimental/__init__.py +14 -0
  53. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/extra/_aiohttp.py +1 -0
  54. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/extra/_server.py +1 -0
  55. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/extra/pytest_plugin.py +13 -24
  56. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/failures.py +32 -3
  57. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/filters.py +2 -1
  58. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/fixups/__init__.py +1 -0
  59. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/fixups/fast_api.py +2 -2
  60. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/fixups/utf8_bom.py +1 -2
  61. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/generation/__init__.py +2 -1
  62. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/hooks.py +3 -1
  63. schemathesis-3.30.0/src/schemathesis/internal/copy.py +29 -0
  64. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/internal/deprecation.py +1 -1
  65. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/internal/jsonschema.py +2 -1
  66. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/internal/result.py +1 -1
  67. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/internal/transformation.py +1 -0
  68. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/lazy.py +3 -2
  69. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/loaders.py +4 -2
  70. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/models.py +20 -5
  71. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/parameters.py +1 -0
  72. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/runner/events.py +21 -4
  73. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/runner/impl/core.py +61 -33
  74. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/runner/impl/solo.py +2 -1
  75. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/runner/impl/threadpool.py +4 -0
  76. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/runner/serialization.py +1 -1
  77. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/sanitization.py +2 -0
  78. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/schemas.py +1 -4
  79. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/service/ci.py +1 -0
  80. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/service/client.py +7 -7
  81. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/service/events.py +2 -1
  82. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/service/extensions.py +5 -5
  83. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/service/hosts.py +1 -0
  84. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/service/metadata.py +2 -1
  85. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/service/models.py +2 -1
  86. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/service/report.py +3 -3
  87. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/service/serialization.py +54 -23
  88. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/service/usage.py +1 -0
  89. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/specs/graphql/nodes.py +1 -0
  90. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/specs/graphql/schemas.py +7 -7
  91. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/specs/graphql/validation.py +1 -2
  92. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/_hypothesis.py +17 -11
  93. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/checks.py +102 -9
  94. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/converter.py +2 -1
  95. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/definitions.py +2 -1
  96. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/examples.py +7 -9
  97. schemathesis-3.30.0/src/schemathesis/specs/openapi/expressions/__init__.py +48 -0
  98. schemathesis-3.30.0/src/schemathesis/specs/openapi/expressions/extractors.py +23 -0
  99. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/expressions/lexer.py +19 -18
  100. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/expressions/nodes.py +24 -4
  101. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/expressions/parser.py +26 -5
  102. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/filters.py +1 -0
  103. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/links.py +35 -7
  104. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/loaders.py +13 -11
  105. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/negative/__init__.py +2 -1
  106. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/negative/mutations.py +1 -0
  107. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/parameters.py +1 -0
  108. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/schemas.py +27 -38
  109. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/security.py +1 -0
  110. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/serialization.py +1 -0
  111. schemathesis-3.30.0/src/schemathesis/specs/openapi/stateful/__init__.py +196 -0
  112. schemathesis-3.30.0/src/schemathesis/specs/openapi/stateful/statistic.py +198 -0
  113. schemathesis-3.30.0/src/schemathesis/specs/openapi/stateful/types.py +13 -0
  114. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/utils.py +1 -0
  115. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/validation.py +1 -0
  116. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/stateful/__init__.py +4 -2
  117. schemathesis-3.30.0/src/schemathesis/stateful/config.py +66 -0
  118. schemathesis-3.30.0/src/schemathesis/stateful/context.py +93 -0
  119. schemathesis-3.30.0/src/schemathesis/stateful/events.py +209 -0
  120. schemathesis-3.30.0/src/schemathesis/stateful/runner.py +233 -0
  121. schemathesis-3.30.0/src/schemathesis/stateful/sink.py +68 -0
  122. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/stateful/state_machine.py +39 -22
  123. schemathesis-3.30.0/src/schemathesis/stateful/statistic.py +20 -0
  124. schemathesis-3.30.0/src/schemathesis/stateful/validation.py +66 -0
  125. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/targets.py +1 -0
  126. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/throttling.py +23 -3
  127. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/transports/__init__.py +28 -10
  128. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/transports/auth.py +1 -0
  129. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/transports/content_types.py +1 -1
  130. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/transports/headers.py +2 -1
  131. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/transports/responses.py +6 -4
  132. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/types.py +1 -0
  133. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/utils.py +1 -0
  134. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/apps/__init__.py +1 -0
  135. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/apps/openapi/_aiohttp/handlers.py +1 -0
  136. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/apps/openapi/_fastapi/__init__.py +1 -1
  137. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/apps/openapi/schema.py +1 -0
  138. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 2.0---auth='testwrong'].raw +1 -0
  139. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 2.0--H Authorization Basic J3Rlc3Q6d3Jvbmcn].raw +1 -0
  140. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 3.0---auth='testwrong'].raw +1 -0
  141. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 3.0--H Authorization Basic J3Rlc3Q6d3Jvbmcn].raw +1 -0
  142. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_binary_payload.raw +1 -0
  143. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_explicit_headers_in_output_on_errors[Open API 3.0].raw +1 -0
  144. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_long_payload.raw +1 -0
  145. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_multiple_failures_in_single_check.raw +1 -0
  146. schemathesis-3.30.0/test/cli/__snapshots__/test_commands/test_new_stateful_runner[Open API 3.0-1].raw +68 -0
  147. schemathesis-3.30.0/test/cli/__snapshots__/test_commands/test_new_stateful_runner[Open API 3.0-2].raw +67 -0
  148. schemathesis-3.30.0/test/cli/__snapshots__/test_commands/test_new_stateful_runner_stateful_only[Open API 3.0].raw +66 -0
  149. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[real-Open API 2.0].raw +1 -0
  150. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[real-Open API 3.0].raw +1 -0
  151. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[wsgi-Open API 2.0].raw +1 -0
  152. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[wsgi-Open API 3.0].raw +1 -0
  153. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[real-Open API 2.0].raw +1 -1
  154. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[real-Open API 3.0].raw +1 -1
  155. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[wsgi-Open API 2.0].raw +1 -1
  156. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[wsgi-Open API 3.0].raw +1 -1
  157. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args24].raw +3 -3
  158. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_hooks/test_after_call[real-Open API 3.0].raw +1 -0
  159. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_hooks/test_after_call[wsgi-Open API 3.0].raw +1 -0
  160. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/output/test_default.py +26 -5
  161. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/test_checks.py +23 -1
  162. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/test_commands.py +42 -8
  163. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/code_samples/test_curl.py +2 -3
  164. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/conftest.py +27 -0
  165. schemathesis-3.29.2/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema2].raw → schemathesis-3.30.0/test/contrib/__snapshots__/test_unique_data/test_cli[None].raw +1 -1
  166. schemathesis-3.29.2/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema0].raw → schemathesis-3.30.0/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema2].raw +1 -1
  167. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/contrib/__snapshots__/test_unique_data/test_explicit_headers[1].raw +1 -1
  168. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/contrib/__snapshots__/test_unique_data/test_explicit_headers[2].raw +2 -2
  169. schemathesis-3.30.0/test/data/relative_files/components/parameters.yaml +35 -0
  170. schemathesis-3.30.0/test/data/relative_files/components/responses.yaml +21 -0
  171. schemathesis-3.30.0/test/data/relative_files/components/schemas.yaml +224 -0
  172. schemathesis-3.30.0/test/data/relative_files/main.yaml +14 -0
  173. schemathesis-3.30.0/test/data/relative_files/paths/user-account.yaml +208 -0
  174. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/experimental/test_experiments.py +1 -1
  175. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/hooks/test_hooks.py +2 -1
  176. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/loaders/test_openapi.py +1 -1
  177. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/runner/test_checks.py +2 -1
  178. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/runner/test_runner.py +4 -3
  179. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/service/__snapshots__/test_cli/test_client_error_on_upload[Open API 3.0].raw +1 -1
  180. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/service/__snapshots__/test_cli/test_unknown_error_on_upload[Open API 3.0].raw +1 -1
  181. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/service/__snapshots__/test_extensions/test_connection_error[Open API 3.0].raw +1 -1
  182. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/service/__snapshots__/test_extensions/test_custom_format.raw +1 -1
  183. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/service/__snapshots__/test_extensions/test_dry_run[Open API 3.0].raw +1 -1
  184. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/service/__snapshots__/test_extensions/test_forbidden[Open API 3.0].raw +1 -1
  185. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/service/__snapshots__/test_extensions/test_graphql_scalars.raw +1 -1
  186. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/service/__snapshots__/test_extensions/test_internal_server_error[Open API 3.0].raw +1 -1
  187. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/service/__snapshots__/test_extensions/test_invalid_extension[Open API 3.0-42].raw +1 -1
  188. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/service/__snapshots__/test_extensions/test_invalid_extension[Open API 3.0-extension1].raw +1 -1
  189. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/service/__snapshots__/test_extensions/test_invalid_payload[Open API 3.0].raw +1 -1
  190. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/service/__snapshots__/test_extensions/test_media_type_extension[strategy0].raw +1 -1
  191. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/service/__snapshots__/test_extensions/test_media_type_extension[strategy1].raw +1 -1
  192. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/service/__snapshots__/test_extensions/test_oversize_text[Open API 3.0].raw +1 -1
  193. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/service/__snapshots__/test_extensions/test_schema_patches[patch0-expected0].raw +1 -1
  194. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/service/__snapshots__/test_extensions/test_schema_patches[patch1-expected1].raw +1 -1
  195. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/service/__snapshots__/test_extensions/test_schema_patches[patch2-expected2].raw +1 -1
  196. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/service/__snapshots__/test_extensions/test_unknown_extension_in_cli[Open API 3.0].raw +1 -1
  197. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/service/test_extensions.py +3 -3
  198. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/specs/graphql/test_basic.py +13 -8
  199. schemathesis-3.30.0/test/specs/openapi/randomized/__init__.py +0 -0
  200. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/specs/openapi/randomized/factory.py +1 -1
  201. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/specs/openapi/randomized/test_randomized.py +4 -3
  202. schemathesis-3.30.0/test/specs/openapi/stateful/__init__.py +0 -0
  203. schemathesis-3.30.0/test/specs/openapi/stateful/conftest.py +309 -0
  204. schemathesis-3.30.0/test/specs/openapi/stateful/test_config.py +32 -0
  205. schemathesis-3.30.0/test/specs/openapi/stateful/test_runner.py +377 -0
  206. {schemathesis-3.29.2/test/specs/openapi → schemathesis-3.30.0/test/specs/openapi/stateful}/test_stateful.py +101 -8
  207. schemathesis-3.30.0/test/specs/openapi/test_checks.py +66 -0
  208. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/specs/openapi/test_examples.py +148 -4
  209. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/specs/openapi/test_expressions.py +88 -26
  210. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/specs/openapi/test_hypothesis.py +1 -1
  211. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/specs/openapi/test_media_types.py +4 -4
  212. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/specs/openapi/test_negative.py +3 -3
  213. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/specs/openapi/test_parameters.py +0 -1
  214. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/specs/openapi/test_serializing.py +1 -2
  215. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/test_common_parameters.py +2 -1
  216. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/test_errors.py +1 -1
  217. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/test_examples.py +1 -1
  218. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/test_filters.py +1 -7
  219. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/test_hypothesis.py +3 -4
  220. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/test_models.py +12 -1
  221. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/test_package.py +0 -1
  222. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/test_parameters.py +1 -1
  223. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/test_pytest.py +2 -11
  224. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/test_rate_limit.py +16 -2
  225. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/test_recoverable_errors.py +1 -3
  226. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/test_sanitizing_output.py +2 -3
  227. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/test_schemas.py +7 -0
  228. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/test_serialization.py +3 -3
  229. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/utils.py +3 -2
  230. {schemathesis-3.29.2 → schemathesis-3.30.0}/test-corpus/test_corpus.py +1 -1
  231. {schemathesis-3.29.2 → schemathesis-3.30.0}/tox.ini +1 -7
  232. schemathesis-3.29.2/src/schemathesis/internal/copy.py +0 -13
  233. schemathesis-3.29.2/src/schemathesis/specs/openapi/expressions/__init__.py +0 -21
  234. schemathesis-3.29.2/src/schemathesis/specs/openapi/stateful/__init__.py +0 -107
  235. schemathesis-3.29.2/src/schemathesis/specs/openapi/stateful/links.py +0 -92
  236. {schemathesis-3.29.2 → schemathesis-3.30.0}/.dockerignore +0 -0
  237. {schemathesis-3.29.2 → schemathesis-3.30.0}/.github/FUNDING.yml +0 -0
  238. {schemathesis-3.29.2 → schemathesis-3.30.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  239. {schemathesis-3.29.2 → schemathesis-3.30.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  240. {schemathesis-3.29.2 → schemathesis-3.30.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  241. {schemathesis-3.29.2 → schemathesis-3.30.0}/.github/dependabot.yml +0 -0
  242. {schemathesis-3.29.2 → schemathesis-3.30.0}/.github/workflows/example-no-build.yml +0 -0
  243. {schemathesis-3.29.2 → schemathesis-3.30.0}/.gitignore +0 -0
  244. {schemathesis-3.29.2 → schemathesis-3.30.0}/.gitmodules +0 -0
  245. {schemathesis-3.29.2 → schemathesis-3.30.0}/.readthedocs.yml +0 -0
  246. {schemathesis-3.29.2 → schemathesis-3.30.0}/.relint.yml +0 -0
  247. {schemathesis-3.29.2 → schemathesis-3.30.0}/.rstcheck.cfg +0 -0
  248. {schemathesis-3.29.2 → schemathesis-3.30.0}/.yamllint +0 -0
  249. {schemathesis-3.29.2 → schemathesis-3.30.0}/CITATION.cff +0 -0
  250. {schemathesis-3.29.2 → schemathesis-3.30.0}/CODE_OF_CONDUCT.md +0 -0
  251. {schemathesis-3.29.2 → schemathesis-3.30.0}/CONTRIBUTING.rst +0 -0
  252. {schemathesis-3.29.2 → schemathesis-3.30.0}/Dockerfile +0 -0
  253. {schemathesis-3.29.2 → schemathesis-3.30.0}/Dockerfile.bookworm +0 -0
  254. {schemathesis-3.29.2 → schemathesis-3.30.0}/LICENSE +0 -0
  255. {schemathesis-3.29.2 → schemathesis-3.30.0}/README.md +0 -0
  256. {schemathesis-3.29.2 → schemathesis-3.30.0}/benches/references.py +0 -0
  257. {schemathesis-3.29.2 → schemathesis-3.30.0}/codecov.yml +0 -0
  258. {schemathesis-3.29.2 → schemathesis-3.30.0}/corpus/data/graphql.tar.gz +0 -0
  259. {schemathesis-3.29.2 → schemathesis-3.30.0}/corpus/data/openapi-3.0.tar.gz +0 -0
  260. {schemathesis-3.29.2 → schemathesis-3.30.0}/corpus/data/openapi-3.1.tar.gz +0 -0
  261. {schemathesis-3.29.2 → schemathesis-3.30.0}/corpus/data/swagger-2.0.tar.gz +0 -0
  262. {schemathesis-3.29.2 → schemathesis-3.30.0}/corpus/tools.py +0 -0
  263. {schemathesis-3.29.2 → schemathesis-3.30.0}/docs/Makefile +0 -0
  264. {schemathesis-3.29.2 → schemathesis-3.30.0}/docs/additional-content.rst +0 -0
  265. {schemathesis-3.29.2 → schemathesis-3.30.0}/docs/api.rst +0 -0
  266. {schemathesis-3.29.2 → schemathesis-3.30.0}/docs/auth.rst +0 -0
  267. {schemathesis-3.29.2 → schemathesis-3.30.0}/docs/compatibility.rst +0 -0
  268. {schemathesis-3.29.2 → schemathesis-3.30.0}/docs/conf.py +0 -0
  269. {schemathesis-3.29.2 → schemathesis-3.30.0}/docs/continuous_integration.rst +0 -0
  270. {schemathesis-3.29.2 → schemathesis-3.30.0}/docs/contrib.rst +0 -0
  271. {schemathesis-3.29.2 → schemathesis-3.30.0}/docs/data-generation.rst +0 -0
  272. {schemathesis-3.29.2 → schemathesis-3.30.0}/docs/examples.rst +0 -0
  273. {schemathesis-3.29.2 → schemathesis-3.30.0}/docs/extending.rst +0 -0
  274. {schemathesis-3.29.2 → schemathesis-3.30.0}/docs/faq.rst +0 -0
  275. {schemathesis-3.29.2 → schemathesis-3.30.0}/docs/getting-started.rst +0 -0
  276. {schemathesis-3.29.2 → schemathesis-3.30.0}/docs/graphql.rst +0 -0
  277. {schemathesis-3.29.2 → schemathesis-3.30.0}/docs/index.rst +0 -0
  278. {schemathesis-3.29.2 → schemathesis-3.30.0}/docs/recipes.rst +0 -0
  279. {schemathesis-3.29.2 → schemathesis-3.30.0}/docs/requirements.txt +0 -0
  280. {schemathesis-3.29.2 → schemathesis-3.30.0}/docs/sanitizing.rst +0 -0
  281. {schemathesis-3.29.2 → schemathesis-3.30.0}/docs/service.rst +0 -0
  282. {schemathesis-3.29.2 → schemathesis-3.30.0}/docs/targeted.rst +0 -0
  283. {schemathesis-3.29.2 → schemathesis-3.30.0}/example/Dockerfile +0 -0
  284. {schemathesis-3.29.2 → schemathesis-3.30.0}/example/app.py +0 -0
  285. {schemathesis-3.29.2 → schemathesis-3.30.0}/example/compose.yml +0 -0
  286. {schemathesis-3.29.2 → schemathesis-3.30.0}/example/openapi.json +0 -0
  287. {schemathesis-3.29.2 → schemathesis-3.30.0}/example/requirements-app.in +0 -0
  288. {schemathesis-3.29.2 → schemathesis-3.30.0}/example/requirements-app.txt +0 -0
  289. {schemathesis-3.29.2 → schemathesis-3.30.0}/example/requirements-pytest.in +0 -0
  290. {schemathesis-3.29.2 → schemathesis-3.30.0}/example/tests/__init__.py +0 -0
  291. {schemathesis-3.29.2 → schemathesis-3.30.0}/example/tests/conftest.py +0 -0
  292. {schemathesis-3.29.2 → schemathesis-3.30.0}/example/tests/extensions.py +0 -0
  293. {schemathesis-3.29.2 → schemathesis-3.30.0}/example/tests/test_app.py +0 -0
  294. {schemathesis-3.29.2 → schemathesis-3.30.0}/img/demo.gif +0 -0
  295. {schemathesis-3.29.2 → schemathesis-3.30.0}/img/service_github_report.png +0 -0
  296. {schemathesis-3.29.2 → schemathesis-3.30.0}/mypy.ini +0 -0
  297. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/cli/__main__.py +0 -0
  298. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/cli/handlers.py +1 -1
  299. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/cli/junitxml.py +0 -0
  300. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/cli/output/__init__.py +0 -0
  301. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/cli/reporting.py +0 -0
  302. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/contrib/__init__.py +0 -0
  303. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/contrib/openapi/formats/__init__.py +0 -0
  304. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/extra/__init__.py +0 -0
  305. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/extra/_flask.py +0 -0
  306. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/graphql.py +0 -0
  307. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/internal/__init__.py +0 -0
  308. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/internal/datetime.py +0 -0
  309. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/internal/validation.py +0 -0
  310. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/py.typed +0 -0
  311. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/runner/__init__.py +1 -1
  312. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/runner/impl/__init__.py +0 -0
  313. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/runner/probes.py +1 -1
  314. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/serializers.py +0 -0
  315. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/service/__init__.py +0 -0
  316. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/service/auth.py +0 -0
  317. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/service/constants.py +0 -0
  318. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/specs/__init__.py +0 -0
  319. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/specs/graphql/__init__.py +0 -0
  320. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/specs/graphql/_cache.py +1 -1
  321. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/specs/graphql/loaders.py +1 -1
  322. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/specs/graphql/scalars.py +2 -2
  323. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/__init__.py +0 -0
  324. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/_cache.py +0 -0
  325. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/constants.py +0 -0
  326. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/expressions/context.py +1 -1
  327. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/expressions/errors.py +0 -0
  328. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/formats.py +0 -0
  329. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/media_types.py +0 -0
  330. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/negative/types.py +0 -0
  331. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/negative/utils.py +0 -0
  332. {schemathesis-3.29.2 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/references.py +0 -0
  333. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/__init__.py +0 -0
  334. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/__snapshots__/test_hypothesis/test_health_check_failed_large_base_example.raw +0 -0
  335. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/__snapshots__/test_recoverable_errors/test_in_cli[1].raw +0 -0
  336. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/__snapshots__/test_recoverable_errors/test_in_cli[2].raw +0 -0
  337. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/__snapshots__/test_serialization/test_in_cli[Open API 3.0].raw +0 -0
  338. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/apps/_graphql/__init__.py +0 -0
  339. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/apps/_graphql/_fastapi/__init__.py +0 -0
  340. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/apps/_graphql/_fastapi/app.py +0 -0
  341. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/apps/_graphql/_flask/__init__.py +0 -0
  342. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/apps/_graphql/_flask/app.py +0 -0
  343. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/apps/_graphql/schema.py +0 -0
  344. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/apps/openapi/__init__.py +0 -0
  345. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/apps/openapi/_aiohttp/__init__.py +1 -1
  346. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/apps/openapi/_aiohttp/app.py +0 -0
  347. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/apps/openapi/_fastapi/app.py +0 -0
  348. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/apps/openapi/_flask/__init__.py +0 -0
  349. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/apps/openapi/_flask/app.py +0 -0
  350. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/auth/__init__.py +0 -0
  351. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/auth/__snapshots__/test_cli/test_conditional[Open API 3.0].raw +0 -0
  352. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/auth/__snapshots__/test_cli/test_custom_auth[Open API 3.0].raw +0 -0
  353. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/auth/__snapshots__/test_cli/test_explicit_auth_precedence[Open API 3.0-args0-Basic dXNlcjpwYXNz].raw +0 -0
  354. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/auth/__snapshots__/test_cli/test_explicit_auth_precedence[Open API 3.0-args1-Bearer EXPLICIT].raw +0 -0
  355. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/auth/__snapshots__/test_cli/test_multiple_auth_mechanisms_with_explicit_auth.raw +0 -0
  356. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/auth/__snapshots__/test_cli/test_multiple_threads[Open API 3.0].raw +0 -0
  357. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/auth/__snapshots__/test_cli/test_requests_auth[Open API 3.0].raw +0 -0
  358. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/auth/conftest.py +0 -0
  359. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/auth/test_cli.py +0 -0
  360. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/auth/test_provider.py +1 -1
  361. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/auth/test_pytest.py +0 -0
  362. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__init__.py +0 -0
  363. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_cassettes/test_forbid_preserve_exact_bytes_without_cassette_path[Open API 3.0].raw +0 -0
  364. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_cassettes/test_forbid_simultaneous_use_of_deprecated_and_new_options[Open API 3.0].raw +0 -0
  365. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_add_case_output[Open API 2.0].raw +0 -0
  366. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_add_case_output[Open API 3.0].raw +0 -0
  367. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_auth_and_authorization_header_are_disallowed[Open API 3.0-Authorization].raw +0 -0
  368. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_auth_and_authorization_header_are_disallowed[Open API 3.0-authorization].raw +0 -0
  369. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_certificate_only_key.raw +0 -0
  370. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_chunked_encoding_error[Open API 3.0].raw +0 -0
  371. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 2.0-1].raw +0 -0
  372. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 2.0-2].raw +0 -0
  373. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 3.0-1].raw +0 -0
  374. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 3.0-2].raw +0 -0
  375. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 2.0-1].raw +0 -0
  376. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 2.0-2].raw +0 -0
  377. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 3.0-1].raw +0 -0
  378. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 3.0-2].raw +0 -0
  379. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_commands_help.raw +0 -0
  380. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_complex_urlencoded_example.raw +0 -0
  381. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 2.0-1].raw +0 -0
  382. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 2.0-2].raw +0 -0
  383. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 3.0-1].raw +0 -0
  384. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 3.0-2].raw +0 -0
  385. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 2.0-1].raw +0 -0
  386. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 2.0-2].raw +0 -0
  387. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 3.0-1].raw +0 -0
  388. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 3.0-2].raw +0 -0
  389. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_empty_schema_file[args0].raw +0 -0
  390. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_empty_schema_file[args1].raw +0 -0
  391. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_explicit_example_failure_output.raw +0 -0
  392. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_force_color_nocolor[Open API 3.0].raw +0 -0
  393. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_get_request_with_body[Open API 2.0].raw +0 -0
  394. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_get_request_with_body[Open API 3.0].raw +0 -0
  395. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_graphql_asgi.raw +0 -0
  396. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_graphql_url[foo-args0].raw +0 -0
  397. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_graphql_url[foo-args1].raw +0 -0
  398. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_graphql_url[graphql-args0].raw +0 -0
  399. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_graphql_url[graphql-args1].raw +0 -0
  400. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_group_errors.raw +0 -0
  401. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_hooks_module_not_found.raw +0 -0
  402. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_hooks_with_inner_import_error.raw +0 -0
  403. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_hypothesis_database_with_derandomize[Open API 3.0].raw +0 -0
  404. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 2.0-1].raw +0 -0
  405. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 2.0-2].raw +0 -0
  406. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 3.0-1].raw +0 -0
  407. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 3.0-2].raw +0 -0
  408. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 2.0-1].raw +0 -0
  409. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 2.0-2].raw +0 -0
  410. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 3.0-1].raw +0 -0
  411. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 3.0-2].raw +0 -0
  412. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[real-Open API 2.0].raw +0 -0
  413. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[real-Open API 3.0].raw +0 -0
  414. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[wsgi-Open API 2.0].raw +0 -0
  415. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[wsgi-Open API 3.0].raw +0 -0
  416. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_invalid_schema_with_disabled_validation[3.0.2].raw +0 -0
  417. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_invalid_schema_with_disabled_validation[3.1.0].raw +0 -0
  418. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_invalid_yaml.raw +0 -0
  419. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_malformed_json_deduplication[real-Open API 3.0].raw +0 -0
  420. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_malformed_json_deduplication[wsgi-Open API 3.0].raw +0 -0
  421. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 2.0-1].raw +0 -0
  422. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 2.0-2].raw +0 -0
  423. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 3.0-1].raw +0 -0
  424. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 3.0-2].raw +0 -0
  425. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[cookie-None].raw +0 -0
  426. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[cookie-http127.0.0.1apiv2].raw +0 -0
  427. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[header-None].raw +0 -0
  428. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[header-http127.0.0.1apiv2].raw +0 -0
  429. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[path-None].raw +0 -0
  430. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[path-http127.0.0.1apiv2].raw +0 -0
  431. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[query-None].raw +0 -0
  432. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[query-http127.0.0.1apiv2].raw +0 -0
  433. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_multiple_errors.raw +0 -0
  434. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_multiple_failures_different_check[Open API 2.0].raw +0 -0
  435. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_multiple_failures_different_check[Open API 3.0].raw +0 -0
  436. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_multiple_failures_single_check[Open API 2.0].raw +0 -0
  437. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_multiple_failures_single_check[Open API 3.0].raw +0 -0
  438. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_nested_binary_in_yaml.raw +0 -0
  439. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_no_schema_in_media_type[Open API 3.0].raw +0 -0
  440. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_no_useless_traceback.raw +0 -0
  441. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_null_byte_in_header_probe.raw +0 -0
  442. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_openapi_links[real-Open API 2.0].raw +0 -0
  443. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_openapi_links[real-Open API 3.0].raw +0 -0
  444. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_openapi_links[wsgi-Open API 2.0].raw +0 -0
  445. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_openapi_links[wsgi-Open API 3.0].raw +0 -0
  446. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_openapi_links_disabled[Open API 2.0].raw +0 -0
  447. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_openapi_links_disabled[Open API 3.0].raw +0 -0
  448. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 2.0-1].raw +0 -0
  449. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 2.0-5].raw +0 -0
  450. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 3.0-1].raw +0 -0
  451. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 3.0-5].raw +0 -0
  452. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 2.0-1].raw +0 -0
  453. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 2.0-5].raw +0 -0
  454. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 3.0-1].raw +0 -0
  455. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 3.0-5].raw +0 -0
  456. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_proxy_error[Open API 3.0].raw +0 -0
  457. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_read_content_timeout[Open API 3.0].raw +0 -0
  458. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_recursive_reference_error_message.raw +0 -0
  459. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError(Custom check failed!)-Open API 2.0].raw +0 -0
  460. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError(Custom check failed!)-Open API 3.0].raw +0 -0
  461. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError-Open API 2.0].raw +0 -0
  462. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError-Open API 3.0].raw +0 -0
  463. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_remote_disconnected_error[Open API 3.0].raw +0 -0
  464. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args0].raw +0 -0
  465. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args10].raw +0 -0
  466. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args11].raw +0 -0
  467. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args12].raw +0 -0
  468. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args13].raw +0 -0
  469. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args14].raw +0 -0
  470. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args15].raw +0 -0
  471. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args16].raw +0 -0
  472. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args17].raw +0 -0
  473. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args18].raw +0 -0
  474. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args19].raw +0 -0
  475. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args1].raw +0 -0
  476. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args20].raw +0 -0
  477. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args21].raw +0 -0
  478. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args22].raw +0 -0
  479. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args23].raw +0 -0
  480. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args25].raw +0 -0
  481. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args26].raw +0 -0
  482. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args27].raw +0 -0
  483. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args28].raw +0 -0
  484. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args29].raw +0 -0
  485. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args2].raw +0 -0
  486. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args30].raw +0 -0
  487. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args31].raw +0 -0
  488. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args32].raw +0 -0
  489. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args33].raw +0 -0
  490. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args34].raw +0 -0
  491. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args35].raw +0 -0
  492. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args36].raw +0 -0
  493. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args3].raw +0 -0
  494. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args4].raw +0 -0
  495. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args5].raw +0 -0
  496. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args6].raw +0 -0
  497. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args7].raw +0 -0
  498. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args8].raw +0 -0
  499. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args9].raw +0 -0
  500. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_schema_not_available[1].raw +0 -0
  501. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_schema_not_available[2].raw +0 -0
  502. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_schema_not_available_wsgi.raw +0 -0
  503. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 2.0-1].raw +0 -0
  504. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 2.0-2].raw +0 -0
  505. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 3.0-1].raw +0 -0
  506. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 3.0-2].raw +0 -0
  507. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 2.0-1].raw +0 -0
  508. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 2.0-2].raw +0 -0
  509. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 3.0-1].raw +0 -0
  510. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 3.0-2].raw +0 -0
  511. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_unknown_schema_error[Open API 3.0].raw +0 -0
  512. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_unresolvable_links[Open API 3.0].raw +0 -0
  513. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_unresolvable_reference_with_disabled_validation.raw +0 -0
  514. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 2.0-1].raw +0 -0
  515. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 2.0-2].raw +0 -0
  516. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 3.0-1].raw +0 -0
  517. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 3.0-2].raw +0 -0
  518. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 2.0-1].raw +0 -0
  519. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 2.0-2].raw +0 -0
  520. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 3.0-1].raw +0 -0
  521. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 3.0-2].raw +0 -0
  522. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_unsupported_regex.raw +0 -0
  523. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_useful_traceback[Open API 3.0].raw +0 -0
  524. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_wait_for_schema_not_enough.raw +0 -0
  525. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_yaml_parsing_of_floats[Open API 3.0].raw +0 -0
  526. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/cert.pem +0 -0
  527. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/conftest.py +0 -0
  528. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/output/__init__.py +0 -0
  529. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/test_asgi.py +0 -0
  530. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/test_callbacks.py +0 -0
  531. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/test_cassettes.py +1 -1
  532. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/test_crashes.py +0 -0
  533. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/test_hooks.py +0 -0
  534. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/test_junitxml.py +0 -0
  535. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/test_options.py +0 -0
  536. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/cli/test_targeted.py +0 -0
  537. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/code_samples/__snapshots__/test_python/test_cli_output[Open API 2.0].raw +0 -0
  538. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/code_samples/__snapshots__/test_python/test_cli_output[Open API 3.0].raw +0 -0
  539. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/code_samples/conftest.py +0 -0
  540. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/code_samples/test_python.py +0 -0
  541. schemathesis-3.29.2/test/contrib/__snapshots__/test_unique_data/test_cli[None].raw → schemathesis-3.30.0/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema0].raw +0 -0
  542. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema1].raw +0 -0
  543. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/contrib/openapi/__snapshots__/test_fill_missing_examples/test_fills_missing_examples.raw +0 -0
  544. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/contrib/openapi/formats/test_uuid.py +0 -0
  545. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/contrib/openapi/test_fill_missing_examples.py +0 -0
  546. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/contrib/test_install.py +0 -0
  547. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/contrib/test_unique_data.py +0 -0
  548. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/data/petstore_v2.yaml +0 -0
  549. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/data/petstore_v3.yaml +0 -0
  550. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/data/simple_openapi.yaml +0 -0
  551. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/data/simple_swagger.yaml +0 -0
  552. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/experimental/__snapshots__/test_experiments/test_not_enabled.raw +0 -0
  553. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/experimental/conftest.py +0 -0
  554. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/experimental/test_openapi_3_1.py +0 -0
  555. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/extra/__init__.py +0 -0
  556. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/extra/test_aiohttp.py +0 -0
  557. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/filters/test_matching.py +0 -0
  558. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/hooks/test_filter_operations.py +0 -0
  559. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/loaders/conftest.py +0 -0
  560. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/loaders/test_app.py +0 -0
  561. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/loaders/test_common.py +0 -0
  562. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/loaders/test_graphql.py +2 -2
  563. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/loaders/test_yaml.py +0 -0
  564. {schemathesis-3.29.2/test/service → schemathesis-3.30.0/test/runner}/__init__.py +0 -0
  565. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/runner/test_events.py +0 -0
  566. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/runner/test_probes.py +0 -0
  567. {schemathesis-3.29.2/test/specs/openapi/randomized → schemathesis-3.30.0/test/service}/__init__.py +0 -0
  568. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/service/__snapshots__/test_cli/test_client_error_on_project_details[Open API 3.0].raw +0 -0
  569. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/service/__snapshots__/test_cli/test_error_in_another_handler[Open API 3.0].raw +0 -0
  570. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/service/__snapshots__/test_cli/test_github_suggestion[Open API 3.0].raw +0 -0
  571. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/service/__snapshots__/test_cli/test_not_authenticated_with_name.raw +0 -0
  572. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/service/__snapshots__/test_cli/test_two_names.raw +0 -0
  573. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/service/__snapshots__/test_cli/test_unauthorized[Open API 3.0].raw +0 -0
  574. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/service/__snapshots__/test_cli/test_upload_failure[Open API 3.0].raw +0 -0
  575. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/service/__snapshots__/test_cli/test_upload_success[Open API 3.0].raw +0 -0
  576. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/service/conftest.py +1 -1
  577. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/service/test_auth.py +0 -0
  578. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/service/test_ci.py +0 -0
  579. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/service/test_cli.py +0 -0
  580. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/service/test_report.py +1 -1
  581. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/service/test_serialization.py +0 -0
  582. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/service/test_usage.py +0 -0
  583. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/specs/graphql/__snapshots__/test_basic/test_schema_error[ntype Query {n 123(created Int!) Int!n}-.whatever].raw +0 -0
  584. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/specs/graphql/__snapshots__/test_basic/test_schema_error[ntype Query {n func(created Unknown!) Int!n}-.gql].raw +0 -0
  585. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/specs/graphql/__snapshots__/test_custom_scalars/test_built_in_scalars_in_cli.raw +0 -0
  586. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/specs/graphql/__snapshots__/test_custom_scalars/test_custom_scalar_in_cli.raw +0 -0
  587. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/specs/graphql/test_custom_scalars.py +0 -0
  588. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/specs/graphql/test_pytest.py +0 -0
  589. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/specs/openapi/__snapshots__/test_examples/test_network_error_with_flaky_generation.raw +0 -0
  590. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/specs/openapi/__snapshots__/test_media_types/test_explicit_example_with_custom_media_type.raw +0 -0
  591. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/specs/openapi/blank.pdf +0 -0
  592. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/specs/openapi/conftest.py +1 -1
  593. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/specs/openapi/parameters/test_forms.py +0 -0
  594. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/specs/openapi/parameters/test_non_payload.py +0 -0
  595. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/specs/openapi/parameters/test_simple_payloads.py +0 -0
  596. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/specs/openapi/randomized/types.py +0 -0
  597. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/specs/openapi/randomized/v2.py +0 -0
  598. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/specs/openapi/test_links.py +0 -0
  599. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/specs/openapi/test_schemas.py +0 -0
  600. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/specs/openapi/test_security.py +0 -0
  601. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/specs/openapi/test_utils.py +0 -0
  602. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/specs/openapi/test_validation.py +0 -0
  603. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/test_app.py +0 -0
  604. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/test_asgi.py +0 -0
  605. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/test_async.py +2 -2
  606. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/test_converter.py +1 -1
  607. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/test_dereferencing.py +0 -0
  608. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/test_direct_access.py +0 -0
  609. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/test_fixups.py +0 -0
  610. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/test_internal.py +0 -0
  611. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/test_lazy.py +0 -0
  612. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/test_parametrization.py +0 -0
  613. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/test_petstore.py +0 -0
  614. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/test_required.py +0 -0
  615. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/test_stateful.py +1 -1
  616. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/test_unittest.py +0 -0
  617. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/test_utils.py +0 -0
  618. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/test_wsgi.py +0 -0
  619. {schemathesis-3.29.2 → schemathesis-3.30.0}/test/transports/test_content_types.py +0 -0
  620. {schemathesis-3.29.2 → schemathesis-3.30.0}/test_server.sh +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.6
29
+ - uses: actions/checkout@v4.1.7
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.6
44
+ - uses: actions/checkout@v4.1.7
45
45
  with:
46
46
  fetch-depth: 1
47
47
  - uses: ammaraskar/sphinx-action@master
@@ -58,15 +58,12 @@ jobs:
58
58
  - os: ubuntu-22.04
59
59
  python: "3.9.16"
60
60
  tox_env: pytest6
61
- - os: ubuntu-22.04
62
- python: "3.9.16"
63
- tox_env: pytest53
64
61
  fail-fast: false
65
62
 
66
63
  name: Tests (Python ${{ matrix.python }} on ${{ matrix.os }} ${{ matrix.tox_env }})
67
64
  runs-on: ${{ matrix.os }}
68
65
  steps:
69
- - uses: actions/checkout@v4.1.6
66
+ - uses: actions/checkout@v4.1.7
70
67
  with:
71
68
  fetch-depth: 1
72
69
 
@@ -83,6 +80,6 @@ jobs:
83
80
  run: python -m tox
84
81
 
85
82
  - name: Upload coverage to Codecov
86
- uses: codecov/codecov-action@v4.4.1
83
+ uses: codecov/codecov-action@v4.5.0
87
84
  with:
88
85
  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.6
33
+ uses: actions/checkout@v4.1.7
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.6
41
+ uses: github/codeql-action/init@v3.25.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.25.6
52
+ uses: github/codeql-action/autobuild@v3.25.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.25.6
66
+ uses: github/codeql-action/analyze@v3.25.10
@@ -11,7 +11,7 @@ jobs:
11
11
  benchmarks:
12
12
  runs-on: ubuntu-latest
13
13
  steps:
14
- - uses: actions/checkout@v4.1.6
14
+ - uses: actions/checkout@v4.1.7
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.6
15
+ uses: actions/checkout@v4.1.7
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.6
19
+ - uses: actions/checkout@v4.1.7
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.6
23
+ - uses: actions/checkout@v4.1.7
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.6
22
+ - uses: actions/checkout@v4.1.7
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.6
71
+ - uses: actions/checkout@v4.1.7
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.6
18
+ - uses: actions/checkout@v4.1.7
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.6
14
+ - uses: actions/checkout@v4.1.7
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.6
13
+ - uses: actions/checkout@v4.1.7
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.6
13
+ - uses: actions/checkout@v4.1.7
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.5
41
+ rev: v0.4.10
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.5
46
+ rev: v0.4.10
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.29.2
3
+ Version: 3.30.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
@@ -1,4 +1,5 @@
1
1
  import sys
2
+
2
3
  import pytest
3
4
 
4
5
  pytest_plugins = ["pytester"]
@@ -12,7 +12,7 @@ CURRENT_DIR = pathlib.Path(__file__).parent.absolute()
12
12
  sys.path.append(str(CURRENT_DIR.parent))
13
13
  CATALOG_DIR = CURRENT_DIR / "data"
14
14
 
15
- from corpus.tools import read_corpus_file, load_from_corpus # noqa: E402
15
+ from corpus.tools import load_from_corpus, read_corpus_file # noqa: E402
16
16
 
17
17
  CORPUS_OPENAPI_30 = read_corpus_file("openapi-3.0")
18
18
  CORPUS_SWAGGER_20 = read_corpus_file("swagger-2.0")
@@ -1,6 +1,7 @@
1
1
  """Simple CLI for changelog management."""
2
2
 
3
3
  from __future__ import annotations
4
+
4
5
  import argparse
5
6
  import datetime
6
7
  import re
@@ -1,9 +1,71 @@
1
1
  Changelog
2
2
  =========
3
3
 
4
- :version:`Unreleased <v3.29.2...HEAD>` - TBD
4
+ :version:`Unreleased <v3.30.0...HEAD>` - TBD
5
5
  --------------------------------------------
6
6
 
7
+ .. _v3.30.0:
8
+
9
+ :version:`3.30.0 <v3.29.2...v3.30.0>` - 2024-06-23
10
+ --------------------------------------------------
11
+
12
+ **Added**
13
+
14
+ - **EXPERIMENTAL**: New stateful test runner in CLI. :issue:`864`
15
+ - The ``--experimental=stateful-only`` CLI flag to run only stateful tests if the new test runner is enabled. Note that this feature is experimental and may change in future releases without notice.
16
+ - Ability to extract values from headers, path, and query parameters using regular expressions in OpenAPI links.
17
+ - The ``negative_data_rejection`` check. It ensures that the API rejects negative data as specified in the schema.
18
+ - The ``use_after_free`` check. It ensures that the API returns a 404 response after a successful DELETE operation on an object. At the moment, it is only available in state-machine-based stateful testing.
19
+ - Support for building dynamic payloads via OpenAPI links. This allows for building objects or arrays where nested items are not hardcoded but dynamically evaluated.
20
+ - ``APIStateMachine.format_rules`` method to format transition rules in a human-readable format.
21
+
22
+ .. code-block::
23
+
24
+ POST /user
25
+ └── 201
26
+ ├── GET /users/{ids}
27
+ └── DELETE /user/{id}
28
+
29
+ GET /users/{ids}
30
+ └── 200
31
+ └── PATCH /user
32
+
33
+ DELETE /user/{id}
34
+ └── 204
35
+ └── DELETE /user/{id}
36
+
37
+ **Changed**
38
+
39
+ - Enforce the ``minLength`` keyword on string path parameters to avoid the rejection of empty values later on.
40
+ This improves the performance of data generation.
41
+ - Rework building state machines for stateful testing to improve performance.
42
+ - Improve error messages on ``MaxRetryError``. :issue:`2234`
43
+ - Migrate to new-style ``pytest`` hooks. :issue:`2181`
44
+ - Filter out Hypothesis' warning about resetting the recursion limit in multi-worker tests.
45
+ - Show sub-schema location in ``response_schema_conformance`` failure messages. :issue:`2270`
46
+ - Avoid collecting data for stateful tests in CLI when they are explicitly disabled.
47
+
48
+ **Fixed**
49
+
50
+ - Internal error during OpenAPI link resolution if the needed parameter is missing in the response.
51
+ - Improper output when a JSON pointer can't be resolved during OpenAPI link resolution.
52
+ - Generating invalid examples created by wrapping a named example value into another object. :issue:`2238`
53
+ - Distinguish more failures in stateful testing.
54
+ - Generate different functions for state machine transitions to properly use swarm testing.
55
+ - ``RuntimeError`` caused by a race condition when initializing Hypothesis' PRNG in multiple workers.
56
+ - Missing body in ``Case`` if it is mutated after the ``make_case`` call. :issue:`2208`
57
+ - Internal error when a rate limiter hits its limit. :issue:`2254`
58
+ - Internal error during reference resolving when using relative file paths.
59
+ - Ignoring property examples defined under the ``example`` key in Open API 2.0 schemas. :issue:`2277`
60
+
61
+ **Removed**
62
+
63
+ - Support for ``pytest<6.0``.
64
+
65
+ **Performance**
66
+
67
+ - Improve performance of copying schemas.
68
+
7
69
  .. _v3.29.2:
8
70
 
9
71
  :version:`3.29.2 <v3.29.1...v3.29.2>` - 2024-05-31
@@ -123,6 +123,7 @@ There are four built-in checks you can use via the `--checks / -c` CLI option:
123
123
  - ``status_code_conformance``. The response status is not defined in the API schema;
124
124
  - ``content_type_conformance``. The response content type is not defined in the API schema;
125
125
  - ``response_schema_conformance``. The response content does not conform to the schema defined for this specific response;
126
+ - ``negative_data_rejection``. The API accepts data that is invalid according to the schema;
126
127
  - ``response_headers_conformance``. The response headers does not contain all defined headers.
127
128
 
128
129
  To make Schemathesis perform all built-in checks use ``--checks all`` CLI option:
@@ -112,6 +112,35 @@ To enable OpenAPI 3.1 support via environment variables, you can set:
112
112
 
113
113
  For more details, join the `GitHub Discussion #1822 <https://github.com/schemathesis/schemathesis/discussions/1822>`_.
114
114
 
115
+ .. _stateful-test-runner:
116
+
117
+ New Stateful Test Runner
118
+ ~~~~~~~~~~~~~~~~~~~~~~~~
119
+
120
+ This experimental feature enables a more effective way to run stateful tests in the CLI, along with a new display style.
121
+ It leverages state machines, which were previously available in the ``pytest`` integration, to generate more diverse test scenarios.
122
+ By default, state machines are executed until no new failures are found in a single iteration.
123
+
124
+ .. important::
125
+
126
+ The new test runner does not yet support all configuration options available in the old one.
127
+
128
+ In CLI
129
+ ~~~~~~
130
+
131
+ .. code-block:: bash
132
+
133
+ st run https://example.schemathesis.io/openapi.json --experimental=stateful-test-runner
134
+
135
+ Using Environment Variables
136
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
137
+
138
+ .. code-block:: bash
139
+
140
+ export SCHEMATHESIS_EXPERIMENTAL_STATEFUL_TEST_RUNNER=true
141
+
142
+ For more details, join the `GitHub Discussion #2262 <https://github.com/schemathesis/schemathesis/discussions/2262>`_.
143
+
115
144
  Schema Analysis
116
145
  ~~~~~~~~~~~~~~~
117
146
 
@@ -102,7 +102,7 @@ For example, to override a query parameter and path:
102
102
 
103
103
 
104
104
  @schema.parametrize()
105
- @schema.override(path_parameters={"user_id": "42"}, query={"apiKey": "secret"}}
105
+ @schema.override(path_parameters={"user_id": "42"}, query={"apiKey": "secret"})
106
106
  def test_api(case):
107
107
 
108
108
  This decorator overrides the ``apiKey`` query parameter and ``user_id`` path parameter, using ``secret`` and ``42`` as their respective values in all applicable test cases.
@@ -298,7 +298,9 @@ When the received response is validated, Schemathesis runs the following checks:
298
298
  - ``status_code_conformance``. The response status is not defined in the API schema;
299
299
  - ``content_type_conformance``. The response content type is not defined in the API schema;
300
300
  - ``response_schema_conformance``. The response content does not conform to the schema defined for this specific response;
301
+ - ``negative_data_rejection``. The API accepts data that is invalid according to the schema;
301
302
  - ``response_headers_conformance``. The response headers does not contain all defined headers.
303
+ - ``use_after_free``. The API returned a non-404 response a successful DELETE operation on a resource. **NOTE**: At the moment it is only available in state-machine-based stateful testing.
302
304
 
303
305
  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
306
  By default, all available checks will be applied, but you can customize it by passing a tuple of checks explicitly:
@@ -485,10 +485,62 @@ Each additional test will be indented and prefixed with ``->`` in the CLI output
485
485
  You can specify recursive links if you want. The default recursion depth limit is **5** and can be changed with the
486
486
  ``--stateful-recursion-limit=<N>`` CLI option.
487
487
 
488
- Schemathesis's CLI currently uses the old approach to stateful testing, not based on state machines.
489
- We plan to use the new approach in CLI in the future. It may include slight changes to the visual
490
- appearance and the way to configure it. It also means that using stateful testing in CLI is not yet as customizable
491
- as in the in-code approach.
488
+ Schemathesis's CLI now supports the new approach to stateful testing based on state machines.
489
+ It is available as an experimental feature and can be enabled using the ``--experimental=stateful-test-runner`` CLI option or by setting the
490
+ ``SCHEMATHESIS_EXPERIMENTAL_STATEFUL_TEST_RUNNER=true`` environment variable. For more information, refer to the :ref:`stateful-test-runner` section.
491
+
492
+ .. code-block::
493
+
494
+ Links 2xx 4xx 5xx Total
495
+
496
+ POST /api/users/
497
+ └── 201
498
+ ├── GET /api/users/{user_id} 765 0 101 866
499
+ └── PATCH /api/users/{user_id} 765 0 0 765
500
+
501
+ GET /api/users/{user_id}
502
+ └── 200
503
+ └── PATCH /api/users/{user_id} 513 0 0 513
504
+
505
+
506
+ The old approach to stateful testing, not based on state machines, is still the default in the CLI.
507
+ However, we recommend using the new approach as it offers more effective testing.
508
+ In the future, the new approach will become the default in the CLI, and the old approach will be removed.
509
+
510
+ Please note that the visual appearance and configuration options for stateful testing in the CLI may differ slightly from the in-code approach.
511
+ We are continuously working on improving the CLI experience and aligning it with the in-code approach.
512
+
513
+ Extracting data from headers and query parameters
514
+ -------------------------------------------------
515
+
516
+ By default, Schemathesis allows you to extract data from the response body of an API endpoint, based on the provided schema.
517
+ However, sometimes you might need to extract data from other parts of the API response, such as headers, path or query parameters.
518
+
519
+ Schemathesis provides an additional feature that allows you to use regular expressions to extract data from the string values of headers and query parameters.
520
+ This can be particularly useful when the API response includes important information in these locations, and you need to use that data for further processing.
521
+
522
+ Here's an example of how to extract the user ID from the ``Location`` header of a ``201 Created`` response:
523
+
524
+ .. code-block::
525
+ :emphasize-lines: 12-12
526
+
527
+ paths:
528
+ /users:
529
+ post:
530
+ ...
531
+ responses:
532
+ '201':
533
+ ...
534
+ links:
535
+ GetUserByUserId:
536
+ operationId: getUser
537
+ parameters:
538
+ userId: '$response.header.Location#regex:/users/(.+)'
539
+
540
+ For example, if the ``Location`` header is ``/users/42``, the ``userId`` parameter will be set to ``42``.
541
+ The regular expression should be a valid Python regular expression and should contain a single capturing group.
542
+
543
+ If the regular expression does not match the value, the parameter will be set to empty.
492
544
 
493
545
  Open API links limitations
494
546
  --------------------------
@@ -503,9 +555,91 @@ following restriction:
503
555
  It is done due to ambiguity in the runtime expressions syntax, where ``}`` cannot be distinguished from an
504
556
  embedded runtime expression's closing bracket.
505
557
 
506
- **IMPORTANT**. The Open API standard defines ``requestBody`` keyword value in this way:
558
+ For building ``requestBody``, the Open API standard only allows for literal values or expressions:
507
559
 
508
560
  A literal value or {expression} to use as a request body when calling the target operation.
509
561
 
510
- It means you cannot use multiple runtime expressions for different parameters, and you always have to provide either a literal
511
- or an expression.
562
+ Schemathesis extends the Open API standard by allowing for the evaluation of runtime expressions within the ``requestBody`` object or array.
563
+
564
+ For example, the following requestBody definition is valid:
565
+
566
+ .. code-block:: json
567
+
568
+ {
569
+ "key": "$response.body#/key",
570
+ "items": ["$response.body#/first", "literal", 42]
571
+ }
572
+
573
+ In this example, the ``$response.body#/key`` and ``$response.body#/first`` expressions are used to dynamically retrieve values from the response body.
574
+
575
+ If the response body is ``{"key": "foo", "first": "bar"}``, then the resulting payload will be:
576
+
577
+ .. code-block:: json
578
+
579
+ {
580
+ "key": "foo",
581
+ "items": ["bar", "literal", 42]
582
+ }
583
+
584
+ This allows for building dynamic payloads where nested items are not hardcoded but instead evaluated at runtime.
585
+
586
+ **IMPORTANT**: Non-string object keys are converted to stringified JSON values during evaluation.
587
+
588
+ By default, Schemathesis merges the evaluated structure with a generated value, giving the evaluated value precedence.
589
+
590
+ State Machine Test Runner
591
+ -------------------------
592
+
593
+ If you need to run stateful tests without using ``pytest``, you can use the Schemathesis state machine test runner.
594
+ Similarly to the default Schemathesis test runner, it allows for running state machines and reacting to events from them.
595
+
596
+ A test run is the entire process of running the state machine, which consists of multiple test suites.
597
+ Each test suite contains multiple test scenarios and is executed until no new failures are found.
598
+ The test run continues until a test suite is executed without finding any new failures.
599
+
600
+ A test run is the entire process of running the state machine. It starts by generating a new test suite and executing it.
601
+ If the test suite finishes with any new failures, Schemathesis generates another test suite and runs it.
602
+ This process continues until a generated test suite finishes successfully without finding any new failures
603
+
604
+ Each test suite contains multiple test scenarios. Each test scenario is a sequence of steps generated by the state machine, where each step typically represents an API call.
605
+
606
+ .. important::
607
+
608
+ Each test scenario may include multiple API calls but is considered as a single test case by Hypothesis.
609
+ Therefore, the ``max_examples`` setting controls the number of test scenarios, not the number of API calls.
610
+
611
+ The available events are:
612
+
613
+ - ``RunStarted`` - triggered before the entire test run starts.
614
+ - ``RunFinished`` - triggered after the entire test run finishes.
615
+ - ``SuiteStarted`` - triggered before each test suite starts.
616
+ - ``SuiteFinished`` - triggered after each test suite finishes, providing information about the failed checks.
617
+ - ``ScenarioStarted`` - triggered before each test scenario starts.
618
+ - ``ScenarioFinished`` - triggered after each test scenario finishes.
619
+ - ``StepStarted`` - triggered before each step in a test scenario is executed.
620
+ - ``StepFinished`` - triggered after each step in a test scenario is executed.
621
+ - ``Interrupted`` - triggered when the test run is interrupted by the user (e.g., via Ctrl+C).
622
+ - ``Errored`` - triggered when an unexpected error occurs during the test run.
623
+
624
+ These events are primarily used for monitoring and reporting purposes, allowing you to track the progress of the state machine test runner.
625
+ They provide information about the current state of the test run but do not offer any control over the test execution.
626
+
627
+ To collect the events you may use a "sink" that consumes the events and collects statistics about the test run.
628
+
629
+ .. code-block:: python
630
+
631
+ import schemathesis
632
+ from schemathesis.stateful import events
633
+
634
+ schema = schemathesis.from_uri("http://127.0.0.1:8080/swagger.json")
635
+ state_machine = schema.as_state_machine()
636
+ sink = state_machine.sink()
637
+
638
+ runner = state_machine.runner()
639
+ for event in runner.execute():
640
+ sink.consume(event)
641
+ if isinstance(event, events.RunFinished):
642
+ print("Test run finished")
643
+ print("Duration:", sink.duration)
644
+ for failure in sink.failures:
645
+ print(failure)
@@ -31,7 +31,7 @@ After setting up Docker and obtaining a copy of the project, you'll be ready to
31
31
 
32
32
  ## Command-line
33
33
 
34
- The examples below will the following environment variables and a shell alias to avoid visual clutter:
34
+ The examples below will include the following environment variables and a shell alias to avoid visual clutter:
35
35
 
36
36
  ```shell
37
37
  export SCHEMA_URL="http://127.0.0.1:5123/openapi.json"
@@ -112,7 +112,7 @@ tomli-w==1.0.0
112
112
  # via schemathesis
113
113
  typing-extensions==4.8.0
114
114
  # via schemathesis
115
- urllib3==2.1.0
115
+ urllib3==2.2.2
116
116
  # via requests
117
117
  werkzeug==3.0.3
118
118
  # via schemathesis
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "schemathesis"
7
- version = "3.29.2"
7
+ version = "3.30.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" }]
@@ -1,14 +1,14 @@
1
1
  from __future__ import annotations
2
+
2
3
  from typing import Any
3
4
 
4
- from . import auths, checks, experimental, contrib, fixups, graphql, hooks, runner, serializers, targets # noqa: E402
5
+ from . import auths, checks, contrib, experimental, fixups, graphql, hooks, runner, serializers, targets # noqa: E402
5
6
  from ._lazy_import import lazy_import
6
- from .generation import DataGenerationMethod, GenerationConfig, HeaderConfig # noqa: E402
7
7
  from .constants import SCHEMATHESIS_VERSION # noqa: E402
8
+ from .generation import DataGenerationMethod, GenerationConfig, HeaderConfig # noqa: E402
8
9
  from .models import Case # noqa: E402
9
10
  from .specs import openapi # noqa: E402
10
11
 
11
-
12
12
  __version__ = SCHEMATHESIS_VERSION
13
13
 
14
14
  # Default loaders
@@ -1,6 +1,6 @@
1
- from typing import Any, Type, Callable
2
- from ._lazy_import import lazy_import
1
+ from typing import Any, Callable, Type
3
2
 
3
+ from ._lazy_import import lazy_import
4
4
 
5
5
  __all__ = [ # noqa: F822
6
6
  "JSONMixin",
@@ -1,16 +1,14 @@
1
1
  """Compatibility flags based on installed dependency versions."""
2
2
 
3
- from packaging import version
4
-
5
3
  from importlib import metadata
6
4
 
5
+ from packaging import version
7
6
 
8
7
  WERKZEUG_VERSION = version.parse(metadata.version("werkzeug"))
9
8
  IS_WERKZEUG_ABOVE_3 = WERKZEUG_VERSION >= version.parse("3.0")
10
9
  IS_WERKZEUG_BELOW_2_1 = WERKZEUG_VERSION < version.parse("2.1.0")
11
10
 
12
11
  PYTEST_VERSION = version.parse(metadata.version("pytest"))
13
- IS_PYTEST_ABOVE_54 = PYTEST_VERSION >= version.parse("5.4.0")
14
12
  IS_PYTEST_ABOVE_7 = PYTEST_VERSION >= version.parse("7.0.0")
15
13
  IS_PYTEST_ABOVE_8 = PYTEST_VERSION >= version.parse("8.0.0")
16
14
 
@@ -10,6 +10,7 @@ import hypothesis
10
10
  from hypothesis import Phase
11
11
  from hypothesis import strategies as st
12
12
  from hypothesis.errors import HypothesisWarning, Unsatisfiable
13
+ from hypothesis.internal.entropy import deterministic_PRNG
13
14
  from hypothesis.internal.reflection import proxies
14
15
  from jsonschema.exceptions import SchemaError
15
16
 
@@ -23,6 +24,11 @@ from .transports.content_types import parse_content_type
23
24
  from .transports.headers import has_invalid_characters, is_latin_1_encodable
24
25
  from .utils import GivenInput, combine_strategies
25
26
 
27
+ # Forcefully initializes Hypothesis' global PRNG to avoid races that initilize it
28
+ # if e.g. Schemathesis CLI is used with multiple workers
29
+ with deterministic_PRNG():
30
+ pass
31
+
26
32
 
27
33
  def create_test(
28
34
  *,
@@ -1,4 +1,5 @@
1
1
  from __future__ import annotations
2
+
2
3
  from typing import Any, Callable
3
4
 
4
5
 
@@ -1,4 +1,5 @@
1
1
  from __future__ import annotations
2
+
2
3
  from dataclasses import dataclass
3
4
  from typing import TYPE_CHECKING, Optional
4
5
 
@@ -3,4 +3,5 @@ from ._dependency_versions import IS_PYRATE_LIMITER_ABOVE_3
3
3
  if IS_PYRATE_LIMITER_ABOVE_3:
4
4
  from pyrate_limiter import Limiter, Rate, RateItem
5
5
  else:
6
- from pyrate_limiter import Limiter, RequestRate as Rate
6
+ from pyrate_limiter import Limiter
7
+ from pyrate_limiter import RequestRate as Rate