schemathesis 3.19.7__tar.gz → 3.20.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (335) hide show
  1. schemathesis-3.20.1/.github/ISSUE_TEMPLATE/bug_report.md +47 -0
  2. schemathesis-3.20.1/.github/ISSUE_TEMPLATE/feature_request.md +23 -0
  3. schemathesis-3.20.1/.github/PULL_REQUEST_TEMPLATE.md +12 -0
  4. {schemathesis-3.19.7 → schemathesis-3.20.1}/.github/workflows/example-build.yml +1 -1
  5. {schemathesis-3.19.7 → schemathesis-3.20.1}/.pre-commit-config.yaml +9 -9
  6. {schemathesis-3.19.7 → schemathesis-3.20.1}/.readthedocs.yml +5 -1
  7. {schemathesis-3.19.7 → schemathesis-3.20.1}/.rstcheck.cfg +1 -1
  8. schemathesis-3.20.1/CONTRIBUTING.rst +123 -0
  9. schemathesis-3.20.1/PKG-INFO +342 -0
  10. schemathesis-3.20.1/README.md +267 -0
  11. {schemathesis-3.19.7 → schemathesis-3.20.1}/docs/api.rst +10 -0
  12. {schemathesis-3.19.7 → schemathesis-3.20.1}/docs/auth.rst +4 -5
  13. {schemathesis-3.19.7 → schemathesis-3.20.1}/docs/changelog.rst +114 -4
  14. {schemathesis-3.19.7 → schemathesis-3.20.1}/docs/cli.rst +4 -1
  15. schemathesis-3.20.1/docs/compatibility.rst +75 -0
  16. schemathesis-3.20.1/docs/continuous_integration.rst +119 -0
  17. {schemathesis-3.19.7 → schemathesis-3.20.1}/docs/contrib.rst +4 -0
  18. schemathesis-3.20.1/docs/experimental.rst +132 -0
  19. schemathesis-3.20.1/docs/extending.rst +665 -0
  20. {schemathesis-3.19.7 → schemathesis-3.20.1}/docs/faq.rst +17 -14
  21. {schemathesis-3.19.7 → schemathesis-3.20.1}/docs/graphql.rst +1 -1
  22. {schemathesis-3.19.7 → schemathesis-3.20.1}/docs/how.rst +47 -1
  23. schemathesis-3.20.1/docs/index.rst +235 -0
  24. {schemathesis-3.19.7 → schemathesis-3.20.1}/docs/recipes.rst +4 -4
  25. schemathesis-3.20.1/docs/sanitizing.rst +45 -0
  26. schemathesis-3.20.1/docs/service.rst +44 -0
  27. {schemathesis-3.19.7 → schemathesis-3.20.1}/example/main.py +1 -1
  28. {schemathesis-3.19.7 → schemathesis-3.20.1}/example/requirements.txt +1 -1
  29. {schemathesis-3.19.7 → schemathesis-3.20.1}/pyproject.toml +5 -4
  30. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/_compat.py +3 -2
  31. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/_hypothesis.py +21 -6
  32. schemathesis-3.20.1/src/schemathesis/_xml.py +177 -0
  33. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/auths.py +48 -10
  34. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/cli/__init__.py +77 -19
  35. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/cli/callbacks.py +42 -18
  36. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/cli/context.py +2 -1
  37. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/cli/output/default.py +102 -34
  38. schemathesis-3.20.1/src/schemathesis/cli/sanitization.py +15 -0
  39. schemathesis-3.20.1/src/schemathesis/code_samples.py +141 -0
  40. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/constants.py +1 -24
  41. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/exceptions.py +127 -26
  42. schemathesis-3.20.1/src/schemathesis/experimental/__init__.py +85 -0
  43. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/extra/pytest_plugin.py +10 -4
  44. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/fixups/__init__.py +8 -2
  45. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/fixups/fast_api.py +11 -1
  46. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/fixups/utf8_bom.py +7 -1
  47. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/hooks.py +63 -0
  48. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/lazy.py +10 -4
  49. schemathesis-3.20.1/src/schemathesis/loaders.py +57 -0
  50. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/models.py +120 -96
  51. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/parameters.py +3 -0
  52. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/runner/__init__.py +3 -0
  53. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/runner/events.py +55 -20
  54. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/runner/impl/core.py +54 -54
  55. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/runner/serialization.py +75 -34
  56. schemathesis-3.20.1/src/schemathesis/sanitization.py +248 -0
  57. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/schemas.py +21 -6
  58. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/serializers.py +32 -3
  59. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/service/serialization.py +5 -1
  60. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/specs/graphql/loaders.py +44 -13
  61. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/specs/graphql/schemas.py +56 -25
  62. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/_hypothesis.py +11 -23
  63. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/definitions.py +572 -0
  64. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/loaders.py +100 -49
  65. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/parameters.py +2 -2
  66. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/schemas.py +87 -13
  67. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/security.py +1 -0
  68. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/stateful.py +2 -2
  69. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/utils.py +30 -9
  70. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/auth/test_cli.py +4 -13
  71. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/auth/test_provider.py +39 -15
  72. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/auth/test_pytest.py +7 -7
  73. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/cli/output/test_default.py +9 -10
  74. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/cli/test_asgi.py +7 -2
  75. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/cli/test_cassettes.py +37 -2
  76. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/cli/test_checks.py +8 -1
  77. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/cli/test_commands.py +218 -61
  78. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/cli/test_crashes.py +2 -2
  79. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/cli/test_hooks.py +0 -8
  80. schemathesis-3.20.1/test/code_samples/conftest.py +16 -0
  81. schemathesis-3.20.1/test/code_samples/test_curl.py +103 -0
  82. schemathesis-3.20.1/test/code_samples/test_python.py +136 -0
  83. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/conftest.py +210 -15
  84. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/data/petstore_v2.yaml +1 -1
  85. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/data/petstore_v3.yaml +1 -1
  86. schemathesis-3.20.1/test/experimental/conftest.py +9 -0
  87. schemathesis-3.20.1/test/experimental/test_experiments.py +33 -0
  88. schemathesis-3.20.1/test/experimental/test_openapi_3_1.py +95 -0
  89. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/extra/test_aiohttp.py +1 -1
  90. schemathesis-3.20.1/test/hooks/test_filter_operations.py +38 -0
  91. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/hooks/test_hooks.py +169 -89
  92. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/loaders/test_common.py +7 -3
  93. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/loaders/test_openapi.py +24 -21
  94. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/runner/test_checks.py +10 -3
  95. schemathesis-3.20.1/test/runner/test_events.py +28 -0
  96. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/runner/test_runner.py +14 -19
  97. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/service/conftest.py +1 -1
  98. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/service/test_cli.py +6 -0
  99. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/service/test_serialization.py +8 -5
  100. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/specs/graphql/test_basic.py +26 -3
  101. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/specs/openapi/parameters/test_simple_payloads.py +10 -0
  102. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/specs/openapi/test_stateful.py +5 -3
  103. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/test_asgi.py +95 -1
  104. schemathesis-3.20.1/test/test_errors.py +12 -0
  105. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/test_fixups.py +1 -7
  106. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/test_hypothesis.py +3 -2
  107. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/test_lazy.py +29 -3
  108. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/test_models.py +4 -4
  109. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/test_parameters.py +3 -3
  110. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/test_parametrization.py +1 -1
  111. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/test_petstore.py +0 -1
  112. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/test_pytest.py +30 -9
  113. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/test_recoverable_errors.py +29 -4
  114. schemathesis-3.20.1/test/test_sanitizing_output.py +321 -0
  115. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/test_schemas.py +30 -3
  116. schemathesis-3.20.1/test/test_serialization.py +472 -0
  117. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/utils.py +4 -2
  118. schemathesis-3.19.7/.github/ISSUE_TEMPLATE/bug_report.md +0 -43
  119. schemathesis-3.19.7/.github/ISSUE_TEMPLATE/feature_request.md +0 -19
  120. schemathesis-3.19.7/.github/PULL_REQUEST_TEMPLATE.md +0 -12
  121. schemathesis-3.19.7/CONTRIBUTING.rst +0 -197
  122. schemathesis-3.19.7/PKG-INFO +0 -291
  123. schemathesis-3.19.7/README.md +0 -217
  124. schemathesis-3.19.7/docs/compatibility.rst +0 -34
  125. schemathesis-3.19.7/docs/continuous_integration.rst +0 -155
  126. schemathesis-3.19.7/docs/extending.rst +0 -456
  127. schemathesis-3.19.7/docs/index.rst +0 -107
  128. schemathesis-3.19.7/docs/introduction.rst +0 -24
  129. schemathesis-3.19.7/docs/service.rst +0 -131
  130. schemathesis-3.19.7/img/service_api_created.png +0 -0
  131. schemathesis-3.19.7/img/service_api_form.png +0 -0
  132. schemathesis-3.19.7/img/service_no_apis_yet.png +0 -0
  133. schemathesis-3.19.7/img/service_non_conforming_response.png +0 -0
  134. schemathesis-3.19.7/img/service_run_results.png +0 -0
  135. schemathesis-3.19.7/img/service_server_error.png +0 -0
  136. schemathesis-3.19.7/test/code_samples/test_curl.py +0 -67
  137. schemathesis-3.19.7/test/code_samples/test_python.py +0 -143
  138. schemathesis-3.19.7/test/runner/test_events.py +0 -10
  139. schemathesis-3.19.7/test/test_serialization.py +0 -232
  140. {schemathesis-3.19.7 → schemathesis-3.20.1}/.dockerignore +0 -0
  141. {schemathesis-3.19.7 → schemathesis-3.20.1}/.github/FUNDING.yml +0 -0
  142. {schemathesis-3.19.7 → schemathesis-3.20.1}/.github/workflows/build.yml +0 -0
  143. {schemathesis-3.19.7 → schemathesis-3.20.1}/.github/workflows/codeql-analysis.yml +0 -0
  144. {schemathesis-3.19.7 → schemathesis-3.20.1}/.github/workflows/commit.yml +0 -0
  145. {schemathesis-3.19.7 → schemathesis-3.20.1}/.github/workflows/example-no-build.yml +0 -0
  146. {schemathesis-3.19.7 → schemathesis-3.20.1}/.github/workflows/master_update.yml +0 -0
  147. {schemathesis-3.19.7 → schemathesis-3.20.1}/.github/workflows/release.yml +0 -0
  148. {schemathesis-3.19.7 → schemathesis-3.20.1}/.github/workflows/scheduled.yml +0 -0
  149. {schemathesis-3.19.7 → schemathesis-3.20.1}/.gitignore +0 -0
  150. {schemathesis-3.19.7 → schemathesis-3.20.1}/.gitmodules +0 -0
  151. {schemathesis-3.19.7 → schemathesis-3.20.1}/.relint.yml +0 -0
  152. {schemathesis-3.19.7 → schemathesis-3.20.1}/.yamllint +0 -0
  153. {schemathesis-3.19.7 → schemathesis-3.20.1}/CITATION.cff +0 -0
  154. {schemathesis-3.19.7 → schemathesis-3.20.1}/CODE_OF_CONDUCT.md +0 -0
  155. {schemathesis-3.19.7 → schemathesis-3.20.1}/Dockerfile +0 -0
  156. {schemathesis-3.19.7 → schemathesis-3.20.1}/Dockerfile.buster +0 -0
  157. {schemathesis-3.19.7 → schemathesis-3.20.1}/LICENSE +0 -0
  158. {schemathesis-3.19.7 → schemathesis-3.20.1}/changelog.py +0 -0
  159. {schemathesis-3.19.7 → schemathesis-3.20.1}/docs/Makefile +0 -0
  160. {schemathesis-3.19.7 → schemathesis-3.20.1}/docs/conf.py +0 -0
  161. {schemathesis-3.19.7 → schemathesis-3.20.1}/docs/examples.rst +0 -0
  162. {schemathesis-3.19.7 → schemathesis-3.20.1}/docs/python.rst +0 -0
  163. {schemathesis-3.19.7 → schemathesis-3.20.1}/docs/requirements.txt +0 -0
  164. {schemathesis-3.19.7 → schemathesis-3.20.1}/docs/stateful.rst +0 -0
  165. {schemathesis-3.19.7 → schemathesis-3.20.1}/docs/targeted.rst +0 -0
  166. {schemathesis-3.19.7 → schemathesis-3.20.1}/example/Dockerfile +0 -0
  167. {schemathesis-3.19.7 → schemathesis-3.20.1}/example/README.rst +0 -0
  168. {schemathesis-3.19.7 → schemathesis-3.20.1}/example/app/app.py +0 -0
  169. {schemathesis-3.19.7 → schemathesis-3.20.1}/example/app/db.py +0 -0
  170. {schemathesis-3.19.7 → schemathesis-3.20.1}/example/app/models.py +0 -0
  171. {schemathesis-3.19.7 → schemathesis-3.20.1}/example/app/openapi.yaml +0 -0
  172. {schemathesis-3.19.7 → schemathesis-3.20.1}/example/app/validation.py +0 -0
  173. {schemathesis-3.19.7 → schemathesis-3.20.1}/example/app/views.py +0 -0
  174. {schemathesis-3.19.7 → schemathesis-3.20.1}/example/database/schema.sql +0 -0
  175. {schemathesis-3.19.7 → schemathesis-3.20.1}/example/docker-compose.yml +0 -0
  176. {schemathesis-3.19.7 → schemathesis-3.20.1}/example/requirements.in +0 -0
  177. {schemathesis-3.19.7 → schemathesis-3.20.1}/example/test/__init__.py +0 -0
  178. {schemathesis-3.19.7 → schemathesis-3.20.1}/example/test/conftest.py +0 -0
  179. {schemathesis-3.19.7 → schemathesis-3.20.1}/example/test/hooks.py +0 -0
  180. {schemathesis-3.19.7 → schemathesis-3.20.1}/example/test/test_app.py +0 -0
  181. {schemathesis-3.19.7 → schemathesis-3.20.1}/img/demo.gif +0 -0
  182. {schemathesis-3.19.7 → schemathesis-3.20.1}/img/service_github_report.png +0 -0
  183. {schemathesis-3.19.7 → schemathesis-3.20.1}/mypy.ini +0 -0
  184. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/__init__.py +0 -0
  185. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/checks.py +0 -0
  186. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/cli/cassettes.py +0 -0
  187. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/cli/constants.py +0 -0
  188. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/cli/debug.py +0 -0
  189. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/cli/handlers.py +0 -0
  190. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/cli/junitxml.py +0 -0
  191. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/cli/options.py +0 -0
  192. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/cli/output/__init__.py +0 -0
  193. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/cli/output/short.py +0 -0
  194. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/contrib/__init__.py +0 -0
  195. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/contrib/openapi/__init__.py +0 -0
  196. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/contrib/openapi/formats/__init__.py +0 -0
  197. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/contrib/openapi/formats/uuid.py +0 -0
  198. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/contrib/unique_data.py +0 -0
  199. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/extra/__init__.py +0 -0
  200. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/extra/_aiohttp.py +0 -0
  201. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/extra/_flask.py +0 -0
  202. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/extra/_server.py +0 -0
  203. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/failures.py +0 -0
  204. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/filters.py +0 -0
  205. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/graphql.py +0 -0
  206. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/internal.py +0 -0
  207. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/py.typed +0 -0
  208. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/runner/impl/__init__.py +0 -0
  209. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/runner/impl/solo.py +0 -0
  210. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/runner/impl/threadpool.py +0 -0
  211. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/service/__init__.py +0 -0
  212. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/service/auth.py +0 -0
  213. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/service/ci.py +0 -0
  214. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/service/client.py +0 -0
  215. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/service/constants.py +0 -0
  216. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/service/events.py +0 -0
  217. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/service/hosts.py +0 -0
  218. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/service/metadata.py +0 -0
  219. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/service/models.py +0 -0
  220. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/service/report.py +0 -0
  221. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/service/usage.py +0 -0
  222. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/specs/__init__.py +0 -0
  223. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/specs/graphql/__init__.py +0 -0
  224. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/specs/graphql/nodes.py +0 -0
  225. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/specs/graphql/scalars.py +0 -0
  226. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/__init__.py +0 -0
  227. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/checks.py +0 -0
  228. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/constants.py +0 -0
  229. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/converter.py +0 -0
  230. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/examples.py +0 -0
  231. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/expressions/__init__.py +0 -0
  232. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/expressions/context.py +0 -0
  233. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/expressions/errors.py +0 -0
  234. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/expressions/lexer.py +0 -0
  235. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/expressions/nodes.py +0 -0
  236. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/expressions/parser.py +0 -0
  237. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/filters.py +0 -0
  238. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/links.py +0 -0
  239. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/negative/__init__.py +0 -0
  240. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/negative/mutations.py +0 -0
  241. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/negative/types.py +0 -0
  242. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/negative/utils.py +0 -0
  243. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/references.py +0 -0
  244. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/serialization.py +0 -0
  245. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/stateful/__init__.py +0 -0
  246. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/stateful/links.py +0 -0
  247. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/utils.py +0 -0
  248. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/validation.py +0 -0
  249. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/targets.py +0 -0
  250. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/throttling.py +0 -0
  251. {schemathesis-3.19.7 → schemathesis-3.20.1}/src/schemathesis/types.py +0 -0
  252. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/__init__.py +0 -0
  253. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/apps/__init__.py +0 -0
  254. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/apps/_graphql/__init__.py +0 -0
  255. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/apps/_graphql/_fastapi/__init__.py +0 -0
  256. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/apps/_graphql/_fastapi/app.py +0 -0
  257. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/apps/_graphql/_flask/__init__.py +0 -0
  258. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/apps/_graphql/_flask/app.py +0 -0
  259. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/apps/_graphql/schema.py +0 -0
  260. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/apps/openapi/__init__.py +0 -0
  261. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/apps/openapi/_aiohttp/__init__.py +0 -0
  262. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/apps/openapi/_aiohttp/app.py +0 -0
  263. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/apps/openapi/_aiohttp/handlers.py +0 -0
  264. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/apps/openapi/_fastapi/__init__.py +0 -0
  265. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/apps/openapi/_fastapi/app.py +0 -0
  266. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/apps/openapi/_flask/__init__.py +0 -0
  267. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/apps/openapi/_flask/app.py +0 -0
  268. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/apps/openapi/schema.py +0 -0
  269. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/auth/__init__.py +0 -0
  270. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/auth/conftest.py +0 -0
  271. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/cli/__init__.py +0 -0
  272. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/cli/cert.pem +0 -0
  273. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/cli/conftest.py +0 -0
  274. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/cli/output/__init__.py +0 -0
  275. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/cli/test_callbacks.py +0 -0
  276. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/cli/test_junitxml.py +0 -0
  277. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/cli/test_options.py +0 -0
  278. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/cli/test_targeted.py +0 -0
  279. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/contrib/openapi/formats/test_uuid.py +0 -0
  280. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/contrib/test_install.py +0 -0
  281. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/contrib/test_unique_data.py +0 -0
  282. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/data/simple_openapi.yaml +0 -0
  283. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/data/simple_swagger.yaml +0 -0
  284. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/extra/__init__.py +0 -0
  285. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/filters/test_matching.py +0 -0
  286. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/loaders/conftest.py +0 -0
  287. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/loaders/test_graphql.py +0 -0
  288. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/service/__init__.py +0 -0
  289. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/service/test_auth.py +0 -0
  290. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/service/test_ci.py +0 -0
  291. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/service/test_report.py +0 -0
  292. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/service/test_usage.py +0 -0
  293. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/specs/graphql/test_custom_scalars.py +0 -0
  294. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/specs/graphql/test_pytest.py +0 -0
  295. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/specs/openapi/conftest.py +0 -0
  296. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/specs/openapi/parameters/test_forms.py +0 -0
  297. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/specs/openapi/parameters/test_non_payload.py +0 -0
  298. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/specs/openapi/test_examples.py +0 -0
  299. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/specs/openapi/test_expressions.py +0 -0
  300. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/specs/openapi/test_hypothesis.py +0 -0
  301. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/specs/openapi/test_links.py +0 -0
  302. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/specs/openapi/test_negative.py +0 -0
  303. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/specs/openapi/test_openapi_checks.py +0 -0
  304. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/specs/openapi/test_parameters.py +0 -0
  305. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/specs/openapi/test_schemas.py +0 -0
  306. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/specs/openapi/test_security.py +0 -0
  307. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/specs/openapi/test_serializing.py +0 -0
  308. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/specs/openapi/test_utils.py +0 -0
  309. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/specs/openapi/test_validation.py +0 -0
  310. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/test_app.py +0 -0
  311. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/test_async.py +0 -0
  312. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/test_common_parameters.py +0 -0
  313. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/test_converter.py +0 -0
  314. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/test_dereferencing.py +0 -0
  315. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/test_direct_access.py +0 -0
  316. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/test_examples.py +0 -0
  317. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/test_filters.py +0 -0
  318. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/test_internal.py +0 -0
  319. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/test_package.py +0 -0
  320. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/test_rate_limit.py +0 -0
  321. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/test_required.py +0 -0
  322. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/test_stateful.py +0 -0
  323. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/test_unittest.py +0 -0
  324. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/test_utils.py +0 -0
  325. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/test_wsgi.py +0 -0
  326. {schemathesis-3.19.7 → schemathesis-3.20.1}/test/test_yaml.py +0 -0
  327. {schemathesis-3.19.7 → schemathesis-3.20.1}/test-corpus/flaky.json +0 -0
  328. {schemathesis-3.19.7 → schemathesis-3.20.1}/test-corpus/incompatible_enums.json +0 -0
  329. {schemathesis-3.19.7 → schemathesis-3.20.1}/test-corpus/incompatible_regex.json +0 -0
  330. {schemathesis-3.19.7 → schemathesis-3.20.1}/test-corpus/incomplete_azure.json +0 -0
  331. {schemathesis-3.19.7 → schemathesis-3.20.1}/test-corpus/invalid_path_parameters.json +0 -0
  332. {schemathesis-3.19.7 → schemathesis-3.20.1}/test-corpus/recursive_references.json +0 -0
  333. {schemathesis-3.19.7 → schemathesis-3.20.1}/test-corpus/test_corpus.py +0 -0
  334. {schemathesis-3.19.7 → schemathesis-3.20.1}/test_server.sh +0 -0
  335. {schemathesis-3.19.7 → schemathesis-3.20.1}/tox.ini +0 -0
@@ -0,0 +1,47 @@
1
+ ---
2
+ name: Bug report
3
+ about: Create a report to help us improve
4
+ title: "[BUG]"
5
+ labels: "Status: Needs Triage, Type: Bug"
6
+ assignees: Stranger6667
7
+ ---
8
+
9
+ ### Checklist
10
+
11
+ - [ ] I checked the [FAQ section](https://schemathesis.readthedocs.io/en/stable/faq.html#frequently-asked-questions) of the documentation
12
+ - [ ] I looked for similar issues in the [issue tracker](https://github.com/schemathesis/schemathesis/issues)
13
+ - [ ] I am using the latest version of Schemathesis
14
+
15
+ ### Describe the bug
16
+
17
+ Clearly describe the issue you're facing.
18
+
19
+ ### To Reproduce
20
+
21
+ 🚨 **Mandatory** 🚨: Steps to reproduce the behavior:
22
+
23
+ 1. Run this command '...'
24
+ 2. See error
25
+
26
+ Please include a minimal API schema causing this issue:
27
+
28
+ ```yaml
29
+ { "openapi": "3.0.2", ... }
30
+ ```
31
+
32
+ ### Expected behavior
33
+
34
+ Clearly describe your expected outcome.
35
+
36
+ ### Environment
37
+
38
+ ```
39
+ - OS: [e.g. Linux or Windows]
40
+ - Python version: [e.g. 3.11]
41
+ - Schemathesis version: [e.g. 3.20.0]
42
+ - Spec version: [e.g. Open API 3.0.2]
43
+ ```
44
+
45
+ ### Additional context
46
+
47
+ Include any other relevant details, like logs or screenshots.
@@ -0,0 +1,23 @@
1
+ ---
2
+ name: Feature request
3
+ about: Suggest an idea for this project
4
+ title: "[FEATURE]"
5
+ labels: "Status: Needs Triage, Type: Feature"
6
+ assignees: Stranger6667
7
+ ---
8
+
9
+ ### Is your feature request related to a problem? Please describe
10
+
11
+ Clearly state the issue you're facing. How often does this occur? What's the impact?
12
+
13
+ ### Describe the solution you'd like
14
+
15
+ Clearly describe what you want to happen.
16
+
17
+ ### Describe alternatives you've considered
18
+
19
+ Have you tried any workarounds? Describe alternative solutions or features.
20
+
21
+ ### Additional context
22
+
23
+ Include any other context, like use-cases, diagrams, or screenshots, to help us understand the feature request.
@@ -0,0 +1,12 @@
1
+ 🚨Please review the [Contributing Guidelines](https://github.com/schemathesis/schemathesis/blob/master/CONTRIBUTING.rst).
2
+
3
+ ### Description
4
+
5
+ Briefly describe your changes.
6
+
7
+ ### Checklist
8
+
9
+ - [ ] Added failing tests for the change
10
+ - [ ] All new and existing tests pass
11
+ - [ ] Added changelog entry (follow guidelines in CONTRIBUTING.rst)
12
+ - [ ] Updated README/documentation, if necessary
@@ -52,7 +52,7 @@ jobs:
52
52
  continue-on-error: true
53
53
  with:
54
54
  # A local API schema location
55
- schema: "http://localhost:5000/api/openapi.json"
55
+ schema: "http://127.0.0.1:5000/api/openapi.json"
56
56
  # Set your token from secrets
57
57
  token: ${{ secrets.SCHEMATHESIS_TOKEN }}
58
58
  max-examples: "10"
@@ -3,7 +3,7 @@ default_language_version:
3
3
 
4
4
  repos:
5
5
  - repo: https://github.com/pre-commit/pre-commit-hooks
6
- rev: v4.4.0
6
+ rev: v4.5.0
7
7
  hooks:
8
8
  - id: check-yaml
9
9
  - id: end-of-file-fixer
@@ -15,7 +15,7 @@ repos:
15
15
  - id: check-merge-conflict
16
16
 
17
17
  - repo: https://github.com/pre-commit/mirrors-prettier
18
- rev: v3.0.2
18
+ rev: v3.0.3
19
19
  hooks:
20
20
  - id: prettier
21
21
 
@@ -35,7 +35,7 @@ repos:
35
35
  - id: relint
36
36
 
37
37
  - repo: https://github.com/ambv/black
38
- rev: 23.7.0
38
+ rev: 23.10.0
39
39
  hooks:
40
40
  - id: black
41
41
  types: [python]
@@ -44,7 +44,7 @@ repos:
44
44
  rev: 1.16.0
45
45
  hooks:
46
46
  - id: blacken-docs
47
- additional_dependencies: [black==23.1.0]
47
+ additional_dependencies: [black==23.10.0]
48
48
 
49
49
  - repo: https://github.com/pre-commit/mirrors-isort
50
50
  rev: v5.10.1
@@ -54,7 +54,7 @@ repos:
54
54
  additional_dependencies: ["isort[pyproject]"]
55
55
 
56
56
  - repo: https://github.com/pre-commit/mirrors-mypy
57
- rev: v1.5.1
57
+ rev: v1.6.1
58
58
  hooks:
59
59
  - id: mypy
60
60
  exclude: ^(docs/|test/|test-corpus/|example/).*$
@@ -62,14 +62,14 @@ repos:
62
62
  additional_dependencies: [types-click, types-requests, types-PyYAML]
63
63
 
64
64
  - repo: https://github.com/charliermarsh/ruff-pre-commit
65
- rev: "v0.0.285"
65
+ rev: "v0.1.0"
66
66
  hooks:
67
67
  - id: ruff
68
68
 
69
69
  - repo: https://github.com/myint/rstcheck
70
- rev: v6.1.2
70
+ rev: v6.2.0
71
71
  hooks:
72
72
  - id: rstcheck
73
73
  additional_dependencies:
74
- - sphinx==4.5.0
75
- - sphinx-click==3.1.0
74
+ - sphinx==5.3.0
75
+ - sphinx-click==4.3.0
@@ -1,6 +1,10 @@
1
1
  version: 2
2
+ build:
3
+ os: "ubuntu-22.04"
4
+ tools:
5
+ python: "3.11"
6
+
2
7
  python:
3
- version: 3.7
4
8
  install:
5
9
  - method: pip
6
10
  path: .
@@ -1,3 +1,3 @@
1
1
  [rstcheck]
2
2
  ignore_directives=code,autofunction,autoclass,automodule,click
3
- ignore_messages=(Hyperlink target ".+" is not referenced\.$|Enumerated list start value)
3
+ ignore_messages=(Hyperlink target ".+" is not referenced\.$|Enumerated list start value|Duplicate implicit target name)
@@ -0,0 +1,123 @@
1
+ Contributing to Schemathesis
2
+ ============================
3
+
4
+ Welcome! Thank you for considering contributing to Schemathesis. Your feedback and contributions are invaluable to us!
5
+
6
+ .. contents::
7
+ :depth: 2
8
+ :backlinks: none
9
+
10
+ Prerequisites for Code Contributions
11
+ ------------------------------------
12
+
13
+ **For code contributions**: Make sure you have the following installed:
14
+
15
+ - Python 3.7 or higher
16
+ - ``pre-commit``
17
+ - ``tox``
18
+
19
+ .. code:: bash
20
+
21
+ python -m pip install pre-commit tox
22
+
23
+ **For documentation contributions**: No specific prerequisites are required.
24
+
25
+ Feature Requests and Feedback
26
+ -----------------------------
27
+
28
+ If you'd like to suggest a feature or provide feedback, feel free to `submit an issue <https://github.com/schemathesis/schemathesis/issues>`_. When submitting your issue, it helps to provide:
29
+
30
+ - **Title**: Write a simple and descriptive title to identify your suggestion.
31
+ - **Details**: Provide as many details as possible. Explain your context and how you envision the feature working.
32
+ - **Usefulness**: Explain why this feature or improvement would be beneficial.
33
+ - **Scope**: Keep the scope of the feature narrow to make it easier to implement. For example, focus on a specific use-case rather than a broad feature set.
34
+
35
+ Reporting Bugs
36
+ --------------
37
+
38
+ If you encounter a bug, please report it in the `issue tracker <https://github.com/schemathesis/schemathesis/issues>`_. When filing a bug report, please include:
39
+
40
+ - **Title**: Write a simple and descriptive title to identify the problem.
41
+ - **Reproduction Steps**: Describe the exact steps to reproduce the problem in as much detail as possible.
42
+ - **Observed Behavior**: Describe the behavior you observed and what makes it a problem.
43
+ - **Expected Behavior**: Explain which behavior you expected to see instead and why.
44
+ - **Versions**: Include Python and Schemathesis versions. Also, confirm if the issue persists in the latest version of Schemathesis.
45
+ - **Additional Context**: Logs, error messages, or screenshots are often very helpful.
46
+
47
+ **What happens next?**: After you submit an issue, we aim to review and respond as soon as possible.
48
+ If you don't receive a response within a few days, feel free to add a new comment to the thread to bring it to our attention again.
49
+
50
+ Submitting Pull Requests
51
+ ------------------------
52
+
53
+ We welcome contributions to the codebase! If you'd like to submit a pull request (PR), please follow these steps:
54
+
55
+ 1. **Fork the Repository**: Fork the Schemathesis repository on GitHub.
56
+ 2. **Install Development Tools**: Install the development dependencies using the following command:
57
+
58
+ .. code:: bash
59
+
60
+ python -m pip install -e ".[dev]"
61
+
62
+ This will install all the necessary packages for development, including those for documentation and tests.
63
+
64
+ 3. **Set Up Pre-commit Hooks**: Enable `pre-commit <https://pre-commit.com>`_.
65
+
66
+ .. code:: bash
67
+
68
+ pre-commit install
69
+
70
+ 4. **Branching**: Create a new branch and switch to it. Target your pull request to the ``master`` branch of the main repository.
71
+ 5. **Coding Standards**: Follow `PEP-8 <https://pep8.org/>`_ for naming conventions and use `black <https://github.com/psf/black>`_ for code formatting.
72
+ 6. **Write Tests**: Preferably, write integration tests that run the whole Schemathesis CLI.
73
+ 7. **Run Tests**:
74
+
75
+ .. code:: bash
76
+
77
+ tox -e py39
78
+
79
+ 8. **Update Changelog**: Add a corresponding entry to ``changelog.rst`` located in the ``docs`` directory.
80
+ 9. **Commit Your Changes**: Use the `Conventional Commits <https://www.conventionalcommits.org/en/>`_ format. For example, features could be ``feat: add new validation feature`` and bug fixes could be ``fix: resolve issue with validation``.
81
+
82
+ **What happens next?**: After submitting, your pull request will be reviewed.
83
+ If you don't hear back within a few days, feel free to add a comment to the pull request to draw our attention.
84
+
85
+ Contributing to Documentation
86
+ -----------------------------
87
+
88
+ We recommend installing Schemathesis with the "docs" extra for all the dependencies needed for documentation:
89
+
90
+ .. code:: bash
91
+
92
+ python -m pip install -e ".[docs]"
93
+
94
+ To preview your changes:
95
+
96
+ .. code:: bash
97
+
98
+ cd docs/
99
+ make html
100
+ python -m http.server -d _build/html/
101
+
102
+ Then open ``http://0.0.0.0:8000/`` in your browser.
103
+
104
+ Community and Support
105
+ ---------------------
106
+
107
+ For more informal discussions or questions, join us on `Discord <https://discord.gg/R9ASRAmHnA>`_.
108
+
109
+ Maintainers
110
+ -----------
111
+
112
+ At present, the core developers are:
113
+
114
+ - Dmitry Dygalo (`@Stranger6667`_)
115
+
116
+ Preferred communication language
117
+ --------------------------------
118
+
119
+ We prefer to keep all communications in English.
120
+
121
+ Thanks!
122
+
123
+ .. _@Stranger6667: https://github.com/Stranger6667
@@ -0,0 +1,342 @@
1
+ Metadata-Version: 2.1
2
+ Name: schemathesis
3
+ Version: 3.20.1
4
+ Summary: Property-based testing framework for Open API and GraphQL based apps
5
+ Project-URL: Documentation, https://schemathesis.readthedocs.io/en/stable/
6
+ Project-URL: Changelog, https://schemathesis.readthedocs.io/en/stable/changelog.html
7
+ Project-URL: Bug Tracker, https://github.com/schemathesis/schemathesis
8
+ Project-URL: Funding, https://github.com/sponsors/Stranger6667
9
+ Project-URL: Source Code, https://github.com/schemathesis/schemathesis
10
+ Author-email: Dmitry Dygalo <dadygalo@gmail.com>
11
+ Maintainer-email: Dmitry Dygalo <dadygalo@gmail.com>
12
+ License-Expression: MIT
13
+ License-File: LICENSE
14
+ Keywords: graphql,hypothesis,openapi,pytest,swagger,testing
15
+ Classifier: Development Status :: 5 - Production/Stable
16
+ Classifier: Environment :: Console
17
+ Classifier: Framework :: Hypothesis
18
+ Classifier: Framework :: Pytest
19
+ Classifier: Intended Audience :: Developers
20
+ Classifier: License :: OSI Approved :: MIT License
21
+ Classifier: Operating System :: OS Independent
22
+ Classifier: Programming Language :: Python :: 3 :: Only
23
+ Classifier: Programming Language :: Python :: 3.7
24
+ Classifier: Programming Language :: Python :: 3.8
25
+ Classifier: Programming Language :: Python :: 3.9
26
+ Classifier: Programming Language :: Python :: 3.10
27
+ Classifier: Programming Language :: Python :: 3.11
28
+ Classifier: Programming Language :: Python :: Implementation :: CPython
29
+ Classifier: Topic :: Software Development :: Testing
30
+ Requires-Python: >=3.7
31
+ Requires-Dist: backoff<3.0,>=2.1.2
32
+ Requires-Dist: click<9.0,>=7.0
33
+ Requires-Dist: colorama<1.0,>=0.4
34
+ Requires-Dist: httpx<1.0,>=0.22.0
35
+ Requires-Dist: hypothesis-graphql<1,>=0.9.0
36
+ Requires-Dist: hypothesis-jsonschema<0.23,>=0.22.1
37
+ Requires-Dist: hypothesis<7,>=6.31.6
38
+ Requires-Dist: importlib-metadata!=3.8,<5,>=1.1; python_version < '3.8'
39
+ Requires-Dist: jsonschema<5.0,>=4.3.2
40
+ Requires-Dist: junit-xml<2.0,>=1.9
41
+ Requires-Dist: pyrate-limiter<3.0,>=2.10
42
+ Requires-Dist: pytest-subtests<0.8.0,>=0.2.1
43
+ Requires-Dist: pytest<8,>=4.6.4
44
+ Requires-Dist: pyyaml<7.0,>=5.1
45
+ Requires-Dist: requests<3,>=2.22
46
+ Requires-Dist: starlette-testclient==0.2.0
47
+ Requires-Dist: starlette<1,>=0.13
48
+ Requires-Dist: tomli-w<2.0,>=1.0.0
49
+ Requires-Dist: tomli<3.0,>=2.0.1
50
+ Requires-Dist: typing-extensions<5,>=3.7
51
+ Requires-Dist: werkzeug<4,>=0.16.0
52
+ Requires-Dist: yarl<2.0,>=1.5
53
+ Provides-Extra: cov
54
+ Requires-Dist: coverage-enable-subprocess; extra == 'cov'
55
+ Requires-Dist: coverage[toml]>=5.3; extra == 'cov'
56
+ Provides-Extra: dev
57
+ Requires-Dist: schemathesis[cov,docs,tests]; extra == 'dev'
58
+ Provides-Extra: docs
59
+ Requires-Dist: sphinx; extra == 'docs'
60
+ Requires-Dist: sphinx-click; extra == 'docs'
61
+ Requires-Dist: sphinx-rtd-theme; extra == 'docs'
62
+ Provides-Extra: tests
63
+ Requires-Dist: aiohttp<4.0,>=3.8.3; extra == 'tests'
64
+ Requires-Dist: coverage>=6; extra == 'tests'
65
+ Requires-Dist: fastapi>=0.86.0; extra == 'tests'
66
+ Requires-Dist: flask<3.0,>=2.1.1; extra == 'tests'
67
+ Requires-Dist: pydantic>=1.10.2; extra == 'tests'
68
+ Requires-Dist: pytest-asyncio<1.0,>=0.18.0; extra == 'tests'
69
+ Requires-Dist: pytest-httpserver<2.0,>=1.0; extra == 'tests'
70
+ Requires-Dist: pytest-mock<4.0,>=3.7.0; extra == 'tests'
71
+ Requires-Dist: pytest-xdist<4.0,>=3; extra == 'tests'
72
+ Requires-Dist: strawberry-graphql[fastapi]>=0.109.0; extra == 'tests'
73
+ Requires-Dist: trustme<1.0,>=0.9.0; extra == 'tests'
74
+ Description-Content-Type: text/markdown
75
+
76
+ <p align="center">
77
+ <em>Automate your API Testing: catch crashes, validate specs, and save time</em>
78
+ </p>
79
+
80
+ <p align="center">
81
+ <a href="https://github.com/schemathesis/schemathesis/actions" target="_blank">
82
+ <img src="https://github.com/schemathesis/schemathesis/actions/workflows/build.yml/badge.svg" alt="Build">
83
+ </a>
84
+ <a href="https://codecov.io/gh/schemathesis/schemathesis/branch/master" target="_blank">
85
+ <img src="https://codecov.io/gh/schemathesis/schemathesis/branch/master/graph/badge.svg" alt="Coverage">
86
+ </a>
87
+ <a href="https://pypi.org/project/schemathesis/" target="_blank">
88
+ <img src="https://img.shields.io/pypi/v/schemathesis.svg" alt="Version">
89
+ </a>
90
+ <a href="https://pypi.org/project/schemathesis/" target="_blank">
91
+ <img src="https://img.shields.io/pypi/pyversions/schemathesis.svg" alt="Python versions">
92
+ </a>
93
+ <a href="https://discord.gg/R9ASRAmHnA" target="_blank">
94
+ <img src="https://img.shields.io/discord/938139740912369755" alt="Discord">
95
+ </a>
96
+ <a href="https://opensource.org/licenses/MIT" target="_blank">
97
+ <img src="https://img.shields.io/pypi/l/schemathesis.svg" alt="License">
98
+ </a>
99
+ </p>
100
+
101
+ ---
102
+
103
+ **Documentation**: <a href="https://schemathesis.readthedocs.io/en/stable/" target="_blank">https://schemathesis.readthedocs.io/en/stable/ </a>
104
+
105
+ **Chat**: <a href="https://discord.gg/R9ASRAmHnA" target="_blank">https://discord.gg/R9ASRAmHnA </a> - active community support available
106
+
107
+ ---
108
+
109
+ ## Why Schemathesis?
110
+
111
+ Schemathesis focuses on automating your API testing to catch crashes and spec violations. Built on top of the widely-used <a href="https://hypothesis.works/" target="_blank">Hypothesis</a> framework for property-based testing, it offers the following advantages:
112
+
113
+ 🕒 **Time-Saving**
114
+
115
+ Automatically generates test cases, freeing you from manual test writing.
116
+
117
+ 🔍 **Comprehensive**
118
+
119
+ Utilizes fuzzing techniques to probe both common and edge-case scenarios, including those you might overlook.
120
+
121
+ 🛠️ **Flexible**
122
+
123
+ Supports OpenAPI, GraphQL, and can work even with partially complete schemas. Only the parts describing data generation or responses are required.
124
+
125
+ 🎛️ **Customizable**
126
+
127
+ Customize the framework by writing Python extensions to modify almost any aspect of the testing process.
128
+
129
+ 🔄 **Reproducible**
130
+
131
+ Generates code samples to help you quickly replicate and investigate any failing test cases.
132
+
133
+ ## Quick Demo
134
+
135
+ ![image](https://raw.githubusercontent.com/schemathesis/schemathesis/master/img/demo.gif)
136
+
137
+ ## Getting Started
138
+
139
+ Choose from multiple ways to start testing your API with Schemathesis.
140
+
141
+ > 💡 Your API schema can be either a URL or a local path to a JSON/YAML file.
142
+
143
+ ### 💻 Command-Line Interface
144
+
145
+ Quick and easy for those who prefer the command line.
146
+
147
+ **Python**
148
+
149
+ 1. Install via pip: `python -m pip install schemathesis`
150
+ 2. Run tests
151
+
152
+ ```bash
153
+ st run --checks all https://example.schemathesis.io/openapi.json
154
+ ```
155
+
156
+ **Docker**
157
+
158
+ 1. Pull Docker image: `docker pull schemathesis/schemathesis:stable`
159
+ 2. Run tests
160
+
161
+ ```bash
162
+ docker run schemathesis/schemathesis:stable
163
+ run --checks all https://example.schemathesis.io/openapi.json
164
+ ```
165
+
166
+ ### 🐍 Python Library
167
+
168
+ For more control and customization, integrate Schemathesis into your Python codebase.
169
+
170
+ 1. Install via pip: `python -m pip install schemathesis`
171
+ 2. Add to your tests:
172
+
173
+ ```python
174
+ import schemathesis
175
+
176
+ schema = schemathesis.from_uri("https://example.schemathesis.io/openapi.json")
177
+
178
+
179
+ @schema.parametrize()
180
+ def test_api(case):
181
+ case.call_and_validate()
182
+ ```
183
+
184
+ > 💡 See a complete working example project in the [/example](https://github.com/schemathesis/schemathesis/tree/master/example) directory.
185
+
186
+ ### :octocat: GitHub Integration
187
+
188
+ **GitHub Actions**
189
+
190
+ Run Schemathesis tests as a part of your CI/CD pipeline.
191
+
192
+ Add this YAML configuration to your GitHub Actions:
193
+
194
+ ```yaml
195
+ api-tests:
196
+ runs-on: ubuntu-20.04
197
+ steps:
198
+ - uses: schemathesis/action@v1
199
+ with:
200
+ schema: "https://example.schemathesis.io/openapi.json"
201
+ # OPTIONAL. Add Schemathesis.io token for pull request reports
202
+ token: ${{ secrets.SCHEMATHESIS_TOKEN }}
203
+ ```
204
+
205
+ For more details, check out our [GitHub Action](https://github.com/schemathesis/action) repository.
206
+
207
+ **GitHub App**
208
+
209
+ Receive automatic comments in your pull requests and updates on GitHub checks status. Requires usage of our SaaS platform.
210
+
211
+ 1. Install the [GitHub app](https://github.com/apps/schemathesis).
212
+ 2. Enable in your repository settings.
213
+
214
+ ### Software as a Service
215
+
216
+ If you prefer an all-in-one solution with quick setup, we have a [free tier](https://schemathesis.io/#pricing) available.
217
+
218
+ ## How it works
219
+
220
+ Here’s a simplified overview of how Schemathesis operates:
221
+
222
+ 1. **Test Generation**: Using the API schema to create a test generator that you can fine-tune to your testing requirements.
223
+ 2. **Execution and Adaptation**: Sending tests to the API and adapting through statistical models and heuristics to optimize subsequent cases based on responses.
224
+ 3. **Analysis and Minimization**: Checking responses to identify issues. Minimizing means simplifying failing test cases for easier debugging.
225
+ 4. **Stateful Testing**: Running multistep tests to assess API operations in both isolated and integrated scenarios.
226
+ 5. **Reporting**: Generating detailed reports with insights and cURL commands for easy issue reproduction.
227
+
228
+ ### Research Findings on Open-Source API Testing Tools
229
+
230
+ Our study, presented at the **44th International Conference on Software Engineering**, highlighted Schemathesis's performance:
231
+
232
+ - **Defect Detection**: identified a total of **755 bugs** in **16 services**, finding between **1.4× to 4.5× more defects** than the second-best tool in each case.
233
+
234
+ - **High Reliability**: consistently operates seamlessly on any project, ensuring unwavering stability and reliability.
235
+
236
+ Explore the full paper at https://ieeexplore.ieee.org/document/9793781 or pre-print at https://arxiv.org/abs/2112.10328
237
+
238
+ ## Testimonials
239
+
240
+ "_The world needs modern, spec-based API tests, so we can deliver APIs as-designed. Schemathesis is the right tool for that job._"
241
+
242
+ <div>Emmanuel Paraskakis - <strong>Level 250</strong></div>
243
+
244
+ ---
245
+
246
+ "_Schemathesis is the only sane way to thoroughly test an API._"
247
+
248
+ <div>Zdenek Nemec - <strong>superface.ai</strong></div>
249
+
250
+ ---
251
+
252
+ "_The tool is absolutely amazing as it can do the negative scenario testing instead of me and much faster! Before I was doing the same tests in Postman client. But it's much slower and brings maintenance burden._"
253
+
254
+ <div>Luděk Nový - <strong>JetBrains</strong></div>
255
+
256
+ ---
257
+
258
+ "_Schemathesis is the best tool for fuzz testing of REST API on the market. We are at Red Hat use it for examining our applications in functional and integrations testing levels._"
259
+
260
+ <div>Dmitry Misharov - <strong>RedHat</strong></div>
261
+
262
+ ---
263
+
264
+ "_There are different levels of usability and documentation quality among these tools which have been reported, where Schemathesis clearly stands out among the most user-friendly and industry-strength tools._"
265
+
266
+ <div>Testing RESTful APIs: A Survey - <strong>a research paper by Golmohammadi, at al</strong></div>
267
+
268
+ ---
269
+
270
+ ## Contributing
271
+
272
+ We welcome contributions in code and are especially interested in learning about your use cases.
273
+ Understanding how you use Schemathesis helps us extend its capabilities to better meet your needs.
274
+
275
+ Feel free to discuss ideas and questions through [GitHub issues](https://github.com/schemathesis/schemathesis/issues) or on our [Discord channel](https://discord.gg/R9ASRAmHnA).
276
+ For more details on how to contribute, see our [contributing guidelines](https://github.com/schemathesis/schemathesis/blob/master/CONTRIBUTING.rst).
277
+
278
+ ## Let's make it better together 🤝
279
+
280
+ Your feedback is essential for improving Schemathesis.
281
+ By sharing your thoughts, you help us develop features that meet your needs and expedite bug fixes.
282
+
283
+ 1. **Why Give Feedback**: Your input directly influences future updates, making the tool more effective for you.
284
+ 2. **How to Provide Feedback**: Use [this form](<(https://forms.gle/kJ4hSxc1Yp6Ga96t5)>) to share your experience.
285
+ 3. **Data Privacy**: We value your privacy. All data is kept confidential and may be used in anonymized form to improve our test suite and documentation.
286
+
287
+ Thank you for contributing to making Schemathesis better! 👍
288
+
289
+ ## Commercial support
290
+
291
+ If you're a large enterprise or startup seeking specialized assistance, we offer commercial support to help you integrate Schemathesis effectively into your workflows.
292
+ This includes:
293
+
294
+ - Quicker response time for your queries.
295
+ - Direct consultation to work closely with your API specification, optimizing the Schemathesis setup for your specific needs.
296
+
297
+ To discuss a custom support arrangement that best suits your organization, please contact our support team at <a href="mailto:support@schemathesis.io">support@schemathesis.io</a>.
298
+
299
+ ## Additional content
300
+
301
+ ### Papers
302
+
303
+ - [Deriving Semantics-Aware Fuzzers from Web API Schemas](https://ieeexplore.ieee.org/document/9793781) by **@Zac-HD** and **@Stranger6667**
304
+ - **Description**: Explores the automation of API testing through semantics-aware fuzzing. Presented at ICSE 2022.
305
+ - **Date**: 20 Dec 2021
306
+
307
+ ### Articles
308
+
309
+ - [Auto-Generating & Validating OpenAPI Docs in Rust: A Streamlined Approach with Utoipa and Schemathesis](https://identeco.de/en/blog/generating_and_validating_openapi_docs_in_rust/) by **identeco**
310
+ - **Description**: Demonstrates OpenAPI doc generation with Utoipa and validating it with Schemathesis.
311
+ - **Date**: 01 Jun 2023
312
+ - [Testing APIFlask with schemathesis](http://blog.pamelafox.org/2023/02/testing-apiflask-with-schemathesis.html) by **@pamelafox**
313
+ - **Description**: Explains how to test APIFlask applications using Schemathesis.
314
+ - **Date**: 27 Feb 2023
315
+ - [Using Hypothesis and Schemathesis to Test FastAPI](https://testdriven.io/blog/fastapi-hypothesis/) by **@amalshaji**
316
+ - **Description**: Discusses property-based testing in FastAPI with Hypothesis and Schemathesis.
317
+ - **Date**: 06 Sep 2022
318
+ - [How to use Schemathesis to test Flask API in GitHub Actions](https://notes.lina-is-here.com/2022/08/04/schemathesis-docker-compose.html) by **@lina-is-here**
319
+ - **Description**: Guides you through setting up Schemathesis with Flask API in GitHub Actions.
320
+ - **Date**: 04 Aug 2022
321
+ - [Using API schemas for property-based testing](https://habr.com/ru/company/oleg-bunin/blog/576496/) (RUS) about Schemathesis by **@Stranger6667**
322
+ - **Description**: Covers the usage of Schemathesis for property-based API testing.
323
+ - **Date**: 07 Sep 2021
324
+ - [Schemathesis: property-based testing for API schemas](https://dygalo.dev/blog/schemathesis-property-based-testing-for-api-schemas/) by **@Stranger6667**
325
+ - **Description**: Introduces property-based testing for OpenAPI schemas using Schemathesis.
326
+ - **Date**: 26 Nov 2019
327
+
328
+ ### Videos
329
+
330
+ - [Schemathesis tutorial](https://appdev.consulting.redhat.com/tracks/contract-first/automated-testing-with-schemathesis.html) with an accompanying [video](https://www.youtube.com/watch?v=4r7OC-lBKMg) by **Red Hat**
331
+ - **Description**: Provides a hands-on tutorial for API testing with Schemathesis.
332
+ - **Date**: 09 Feb 2023
333
+ - [Effective API schemas testing](https://youtu.be/VVLZ25JgjD4) from DevConf.cz by **@Stranger6667**
334
+ - **Description**: Talks about using Schemathesis for property-based API schema testing.
335
+ - **Date**: 24 Mar 2021
336
+ - [API-schema-based testing with schemathesis](https://www.youtube.com/watch?v=9FHRwrv-xuQ) from EuroPython 2020 by **@hultner**
337
+ - **Description**: Introduces property-based API testing with Schemathesis.
338
+ - **Date**: 23 Jul 2020
339
+
340
+ ## License
341
+
342
+ This project is licensed under the terms of the [MIT license](https://opensource.org/licenses/MIT).