schemathesis 3.20.0__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 (324) 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.20.0 → schemathesis-3.20.1}/.pre-commit-config.yaml +6 -6
  5. {schemathesis-3.20.0 → schemathesis-3.20.1}/.readthedocs.yml +5 -1
  6. {schemathesis-3.20.0 → schemathesis-3.20.1}/PKG-INFO +1 -1
  7. {schemathesis-3.20.0 → schemathesis-3.20.1}/docs/changelog.rst +11 -1
  8. {schemathesis-3.20.0 → schemathesis-3.20.1}/docs/index.rst +0 -1
  9. schemathesis-3.20.1/docs/service.rst +44 -0
  10. {schemathesis-3.20.0 → schemathesis-3.20.1}/pyproject.toml +1 -1
  11. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/cli/callbacks.py +23 -15
  12. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/cli/test_commands.py +14 -13
  13. schemathesis-3.20.0/.github/ISSUE_TEMPLATE/bug_report.md +0 -43
  14. schemathesis-3.20.0/.github/ISSUE_TEMPLATE/feature_request.md +0 -19
  15. schemathesis-3.20.0/.github/PULL_REQUEST_TEMPLATE.md +0 -12
  16. schemathesis-3.20.0/docs/introduction.rst +0 -28
  17. schemathesis-3.20.0/docs/service.rst +0 -153
  18. schemathesis-3.20.0/img/service_api_created.png +0 -0
  19. schemathesis-3.20.0/img/service_api_form.png +0 -0
  20. schemathesis-3.20.0/img/service_no_apis_yet.png +0 -0
  21. schemathesis-3.20.0/img/service_non_conforming_response.png +0 -0
  22. schemathesis-3.20.0/img/service_run_results.png +0 -0
  23. schemathesis-3.20.0/img/service_server_error.png +0 -0
  24. {schemathesis-3.20.0 → schemathesis-3.20.1}/.dockerignore +0 -0
  25. {schemathesis-3.20.0 → schemathesis-3.20.1}/.github/FUNDING.yml +0 -0
  26. {schemathesis-3.20.0 → schemathesis-3.20.1}/.github/workflows/build.yml +0 -0
  27. {schemathesis-3.20.0 → schemathesis-3.20.1}/.github/workflows/codeql-analysis.yml +0 -0
  28. {schemathesis-3.20.0 → schemathesis-3.20.1}/.github/workflows/commit.yml +0 -0
  29. {schemathesis-3.20.0 → schemathesis-3.20.1}/.github/workflows/example-build.yml +0 -0
  30. {schemathesis-3.20.0 → schemathesis-3.20.1}/.github/workflows/example-no-build.yml +0 -0
  31. {schemathesis-3.20.0 → schemathesis-3.20.1}/.github/workflows/master_update.yml +0 -0
  32. {schemathesis-3.20.0 → schemathesis-3.20.1}/.github/workflows/release.yml +0 -0
  33. {schemathesis-3.20.0 → schemathesis-3.20.1}/.github/workflows/scheduled.yml +0 -0
  34. {schemathesis-3.20.0 → schemathesis-3.20.1}/.gitignore +0 -0
  35. {schemathesis-3.20.0 → schemathesis-3.20.1}/.gitmodules +0 -0
  36. {schemathesis-3.20.0 → schemathesis-3.20.1}/.relint.yml +0 -0
  37. {schemathesis-3.20.0 → schemathesis-3.20.1}/.rstcheck.cfg +0 -0
  38. {schemathesis-3.20.0 → schemathesis-3.20.1}/.yamllint +0 -0
  39. {schemathesis-3.20.0 → schemathesis-3.20.1}/CITATION.cff +0 -0
  40. {schemathesis-3.20.0 → schemathesis-3.20.1}/CODE_OF_CONDUCT.md +0 -0
  41. {schemathesis-3.20.0 → schemathesis-3.20.1}/CONTRIBUTING.rst +0 -0
  42. {schemathesis-3.20.0 → schemathesis-3.20.1}/Dockerfile +0 -0
  43. {schemathesis-3.20.0 → schemathesis-3.20.1}/Dockerfile.buster +0 -0
  44. {schemathesis-3.20.0 → schemathesis-3.20.1}/LICENSE +0 -0
  45. {schemathesis-3.20.0 → schemathesis-3.20.1}/README.md +0 -0
  46. {schemathesis-3.20.0 → schemathesis-3.20.1}/changelog.py +0 -0
  47. {schemathesis-3.20.0 → schemathesis-3.20.1}/docs/Makefile +0 -0
  48. {schemathesis-3.20.0 → schemathesis-3.20.1}/docs/api.rst +0 -0
  49. {schemathesis-3.20.0 → schemathesis-3.20.1}/docs/auth.rst +0 -0
  50. {schemathesis-3.20.0 → schemathesis-3.20.1}/docs/cli.rst +0 -0
  51. {schemathesis-3.20.0 → schemathesis-3.20.1}/docs/compatibility.rst +0 -0
  52. {schemathesis-3.20.0 → schemathesis-3.20.1}/docs/conf.py +0 -0
  53. {schemathesis-3.20.0 → schemathesis-3.20.1}/docs/continuous_integration.rst +0 -0
  54. {schemathesis-3.20.0 → schemathesis-3.20.1}/docs/contrib.rst +0 -0
  55. {schemathesis-3.20.0 → schemathesis-3.20.1}/docs/examples.rst +0 -0
  56. {schemathesis-3.20.0 → schemathesis-3.20.1}/docs/experimental.rst +0 -0
  57. {schemathesis-3.20.0 → schemathesis-3.20.1}/docs/extending.rst +0 -0
  58. {schemathesis-3.20.0 → schemathesis-3.20.1}/docs/faq.rst +0 -0
  59. {schemathesis-3.20.0 → schemathesis-3.20.1}/docs/graphql.rst +0 -0
  60. {schemathesis-3.20.0 → schemathesis-3.20.1}/docs/how.rst +0 -0
  61. {schemathesis-3.20.0 → schemathesis-3.20.1}/docs/python.rst +0 -0
  62. {schemathesis-3.20.0 → schemathesis-3.20.1}/docs/recipes.rst +0 -0
  63. {schemathesis-3.20.0 → schemathesis-3.20.1}/docs/requirements.txt +0 -0
  64. {schemathesis-3.20.0 → schemathesis-3.20.1}/docs/sanitizing.rst +0 -0
  65. {schemathesis-3.20.0 → schemathesis-3.20.1}/docs/stateful.rst +0 -0
  66. {schemathesis-3.20.0 → schemathesis-3.20.1}/docs/targeted.rst +0 -0
  67. {schemathesis-3.20.0 → schemathesis-3.20.1}/example/Dockerfile +0 -0
  68. {schemathesis-3.20.0 → schemathesis-3.20.1}/example/README.rst +0 -0
  69. {schemathesis-3.20.0 → schemathesis-3.20.1}/example/app/app.py +0 -0
  70. {schemathesis-3.20.0 → schemathesis-3.20.1}/example/app/db.py +0 -0
  71. {schemathesis-3.20.0 → schemathesis-3.20.1}/example/app/models.py +0 -0
  72. {schemathesis-3.20.0 → schemathesis-3.20.1}/example/app/openapi.yaml +0 -0
  73. {schemathesis-3.20.0 → schemathesis-3.20.1}/example/app/validation.py +0 -0
  74. {schemathesis-3.20.0 → schemathesis-3.20.1}/example/app/views.py +0 -0
  75. {schemathesis-3.20.0 → schemathesis-3.20.1}/example/database/schema.sql +0 -0
  76. {schemathesis-3.20.0 → schemathesis-3.20.1}/example/docker-compose.yml +0 -0
  77. {schemathesis-3.20.0 → schemathesis-3.20.1}/example/main.py +0 -0
  78. {schemathesis-3.20.0 → schemathesis-3.20.1}/example/requirements.in +0 -0
  79. {schemathesis-3.20.0 → schemathesis-3.20.1}/example/requirements.txt +0 -0
  80. {schemathesis-3.20.0 → schemathesis-3.20.1}/example/test/__init__.py +0 -0
  81. {schemathesis-3.20.0 → schemathesis-3.20.1}/example/test/conftest.py +0 -0
  82. {schemathesis-3.20.0 → schemathesis-3.20.1}/example/test/hooks.py +0 -0
  83. {schemathesis-3.20.0 → schemathesis-3.20.1}/example/test/test_app.py +0 -0
  84. {schemathesis-3.20.0 → schemathesis-3.20.1}/img/demo.gif +0 -0
  85. {schemathesis-3.20.0 → schemathesis-3.20.1}/img/service_github_report.png +0 -0
  86. {schemathesis-3.20.0 → schemathesis-3.20.1}/mypy.ini +0 -0
  87. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/__init__.py +0 -0
  88. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/_compat.py +0 -0
  89. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/_hypothesis.py +0 -0
  90. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/_xml.py +0 -0
  91. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/auths.py +0 -0
  92. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/checks.py +0 -0
  93. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/cli/__init__.py +0 -0
  94. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/cli/cassettes.py +0 -0
  95. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/cli/constants.py +0 -0
  96. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/cli/context.py +0 -0
  97. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/cli/debug.py +0 -0
  98. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/cli/handlers.py +0 -0
  99. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/cli/junitxml.py +0 -0
  100. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/cli/options.py +0 -0
  101. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/cli/output/__init__.py +0 -0
  102. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/cli/output/default.py +0 -0
  103. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/cli/output/short.py +0 -0
  104. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/cli/sanitization.py +0 -0
  105. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/code_samples.py +0 -0
  106. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/constants.py +0 -0
  107. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/contrib/__init__.py +0 -0
  108. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/contrib/openapi/__init__.py +0 -0
  109. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/contrib/openapi/formats/__init__.py +0 -0
  110. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/contrib/openapi/formats/uuid.py +0 -0
  111. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/contrib/unique_data.py +0 -0
  112. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/exceptions.py +0 -0
  113. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/experimental/__init__.py +0 -0
  114. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/extra/__init__.py +0 -0
  115. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/extra/_aiohttp.py +0 -0
  116. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/extra/_flask.py +0 -0
  117. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/extra/_server.py +0 -0
  118. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/extra/pytest_plugin.py +0 -0
  119. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/failures.py +0 -0
  120. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/filters.py +0 -0
  121. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/fixups/__init__.py +0 -0
  122. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/fixups/fast_api.py +0 -0
  123. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/fixups/utf8_bom.py +0 -0
  124. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/graphql.py +0 -0
  125. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/hooks.py +0 -0
  126. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/internal.py +0 -0
  127. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/lazy.py +0 -0
  128. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/loaders.py +0 -0
  129. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/models.py +0 -0
  130. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/parameters.py +0 -0
  131. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/py.typed +0 -0
  132. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/runner/__init__.py +0 -0
  133. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/runner/events.py +0 -0
  134. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/runner/impl/__init__.py +0 -0
  135. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/runner/impl/core.py +0 -0
  136. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/runner/impl/solo.py +0 -0
  137. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/runner/impl/threadpool.py +0 -0
  138. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/runner/serialization.py +0 -0
  139. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/sanitization.py +0 -0
  140. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/schemas.py +0 -0
  141. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/serializers.py +0 -0
  142. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/service/__init__.py +0 -0
  143. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/service/auth.py +0 -0
  144. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/service/ci.py +0 -0
  145. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/service/client.py +0 -0
  146. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/service/constants.py +0 -0
  147. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/service/events.py +0 -0
  148. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/service/hosts.py +0 -0
  149. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/service/metadata.py +0 -0
  150. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/service/models.py +0 -0
  151. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/service/report.py +0 -0
  152. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/service/serialization.py +0 -0
  153. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/service/usage.py +0 -0
  154. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/specs/__init__.py +0 -0
  155. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/specs/graphql/__init__.py +0 -0
  156. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/specs/graphql/loaders.py +0 -0
  157. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/specs/graphql/nodes.py +0 -0
  158. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/specs/graphql/scalars.py +0 -0
  159. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/specs/graphql/schemas.py +0 -0
  160. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/__init__.py +0 -0
  161. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/_hypothesis.py +0 -0
  162. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/checks.py +0 -0
  163. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/constants.py +0 -0
  164. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/converter.py +0 -0
  165. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/definitions.py +0 -0
  166. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/examples.py +0 -0
  167. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/expressions/__init__.py +0 -0
  168. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/expressions/context.py +0 -0
  169. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/expressions/errors.py +0 -0
  170. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/expressions/lexer.py +0 -0
  171. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/expressions/nodes.py +0 -0
  172. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/expressions/parser.py +0 -0
  173. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/filters.py +0 -0
  174. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/links.py +0 -0
  175. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/loaders.py +0 -0
  176. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/negative/__init__.py +0 -0
  177. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/negative/mutations.py +0 -0
  178. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/negative/types.py +0 -0
  179. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/negative/utils.py +0 -0
  180. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/parameters.py +0 -0
  181. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/references.py +0 -0
  182. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/schemas.py +0 -0
  183. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/security.py +0 -0
  184. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/serialization.py +0 -0
  185. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/stateful/__init__.py +0 -0
  186. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/stateful/links.py +0 -0
  187. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/utils.py +0 -0
  188. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/specs/openapi/validation.py +0 -0
  189. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/stateful.py +0 -0
  190. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/targets.py +0 -0
  191. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/throttling.py +0 -0
  192. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/types.py +0 -0
  193. {schemathesis-3.20.0 → schemathesis-3.20.1}/src/schemathesis/utils.py +0 -0
  194. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/__init__.py +0 -0
  195. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/apps/__init__.py +0 -0
  196. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/apps/_graphql/__init__.py +0 -0
  197. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/apps/_graphql/_fastapi/__init__.py +0 -0
  198. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/apps/_graphql/_fastapi/app.py +0 -0
  199. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/apps/_graphql/_flask/__init__.py +0 -0
  200. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/apps/_graphql/_flask/app.py +0 -0
  201. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/apps/_graphql/schema.py +0 -0
  202. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/apps/openapi/__init__.py +0 -0
  203. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/apps/openapi/_aiohttp/__init__.py +0 -0
  204. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/apps/openapi/_aiohttp/app.py +0 -0
  205. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/apps/openapi/_aiohttp/handlers.py +0 -0
  206. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/apps/openapi/_fastapi/__init__.py +0 -0
  207. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/apps/openapi/_fastapi/app.py +0 -0
  208. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/apps/openapi/_flask/__init__.py +0 -0
  209. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/apps/openapi/_flask/app.py +0 -0
  210. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/apps/openapi/schema.py +0 -0
  211. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/auth/__init__.py +0 -0
  212. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/auth/conftest.py +0 -0
  213. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/auth/test_cli.py +0 -0
  214. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/auth/test_provider.py +0 -0
  215. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/auth/test_pytest.py +0 -0
  216. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/cli/__init__.py +0 -0
  217. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/cli/cert.pem +0 -0
  218. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/cli/conftest.py +0 -0
  219. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/cli/output/__init__.py +0 -0
  220. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/cli/output/test_default.py +0 -0
  221. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/cli/test_asgi.py +0 -0
  222. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/cli/test_callbacks.py +0 -0
  223. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/cli/test_cassettes.py +0 -0
  224. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/cli/test_checks.py +0 -0
  225. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/cli/test_crashes.py +0 -0
  226. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/cli/test_hooks.py +0 -0
  227. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/cli/test_junitxml.py +0 -0
  228. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/cli/test_options.py +0 -0
  229. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/cli/test_targeted.py +0 -0
  230. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/code_samples/conftest.py +0 -0
  231. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/code_samples/test_curl.py +0 -0
  232. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/code_samples/test_python.py +0 -0
  233. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/conftest.py +0 -0
  234. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/contrib/openapi/formats/test_uuid.py +0 -0
  235. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/contrib/test_install.py +0 -0
  236. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/contrib/test_unique_data.py +0 -0
  237. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/data/petstore_v2.yaml +0 -0
  238. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/data/petstore_v3.yaml +0 -0
  239. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/data/simple_openapi.yaml +0 -0
  240. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/data/simple_swagger.yaml +0 -0
  241. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/experimental/conftest.py +0 -0
  242. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/experimental/test_experiments.py +0 -0
  243. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/experimental/test_openapi_3_1.py +0 -0
  244. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/extra/__init__.py +0 -0
  245. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/extra/test_aiohttp.py +0 -0
  246. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/filters/test_matching.py +0 -0
  247. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/hooks/test_filter_operations.py +0 -0
  248. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/hooks/test_hooks.py +0 -0
  249. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/loaders/conftest.py +0 -0
  250. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/loaders/test_common.py +0 -0
  251. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/loaders/test_graphql.py +0 -0
  252. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/loaders/test_openapi.py +0 -0
  253. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/runner/test_checks.py +0 -0
  254. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/runner/test_events.py +0 -0
  255. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/runner/test_runner.py +0 -0
  256. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/service/__init__.py +0 -0
  257. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/service/conftest.py +0 -0
  258. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/service/test_auth.py +0 -0
  259. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/service/test_ci.py +0 -0
  260. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/service/test_cli.py +0 -0
  261. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/service/test_report.py +0 -0
  262. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/service/test_serialization.py +0 -0
  263. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/service/test_usage.py +0 -0
  264. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/specs/graphql/test_basic.py +0 -0
  265. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/specs/graphql/test_custom_scalars.py +0 -0
  266. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/specs/graphql/test_pytest.py +0 -0
  267. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/specs/openapi/conftest.py +0 -0
  268. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/specs/openapi/parameters/test_forms.py +0 -0
  269. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/specs/openapi/parameters/test_non_payload.py +0 -0
  270. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/specs/openapi/parameters/test_simple_payloads.py +0 -0
  271. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/specs/openapi/test_examples.py +0 -0
  272. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/specs/openapi/test_expressions.py +0 -0
  273. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/specs/openapi/test_hypothesis.py +0 -0
  274. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/specs/openapi/test_links.py +0 -0
  275. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/specs/openapi/test_negative.py +0 -0
  276. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/specs/openapi/test_openapi_checks.py +0 -0
  277. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/specs/openapi/test_parameters.py +0 -0
  278. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/specs/openapi/test_schemas.py +0 -0
  279. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/specs/openapi/test_security.py +0 -0
  280. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/specs/openapi/test_serializing.py +0 -0
  281. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/specs/openapi/test_stateful.py +0 -0
  282. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/specs/openapi/test_utils.py +0 -0
  283. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/specs/openapi/test_validation.py +0 -0
  284. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/test_app.py +0 -0
  285. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/test_asgi.py +0 -0
  286. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/test_async.py +0 -0
  287. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/test_common_parameters.py +0 -0
  288. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/test_converter.py +0 -0
  289. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/test_dereferencing.py +0 -0
  290. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/test_direct_access.py +0 -0
  291. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/test_errors.py +0 -0
  292. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/test_examples.py +0 -0
  293. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/test_filters.py +0 -0
  294. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/test_fixups.py +0 -0
  295. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/test_hypothesis.py +0 -0
  296. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/test_internal.py +0 -0
  297. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/test_lazy.py +0 -0
  298. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/test_models.py +0 -0
  299. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/test_package.py +0 -0
  300. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/test_parameters.py +0 -0
  301. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/test_parametrization.py +0 -0
  302. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/test_petstore.py +0 -0
  303. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/test_pytest.py +0 -0
  304. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/test_rate_limit.py +0 -0
  305. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/test_recoverable_errors.py +0 -0
  306. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/test_required.py +0 -0
  307. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/test_sanitizing_output.py +0 -0
  308. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/test_schemas.py +0 -0
  309. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/test_serialization.py +0 -0
  310. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/test_stateful.py +0 -0
  311. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/test_unittest.py +0 -0
  312. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/test_utils.py +0 -0
  313. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/test_wsgi.py +0 -0
  314. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/test_yaml.py +0 -0
  315. {schemathesis-3.20.0 → schemathesis-3.20.1}/test/utils.py +0 -0
  316. {schemathesis-3.20.0 → schemathesis-3.20.1}/test-corpus/flaky.json +0 -0
  317. {schemathesis-3.20.0 → schemathesis-3.20.1}/test-corpus/incompatible_enums.json +0 -0
  318. {schemathesis-3.20.0 → schemathesis-3.20.1}/test-corpus/incompatible_regex.json +0 -0
  319. {schemathesis-3.20.0 → schemathesis-3.20.1}/test-corpus/incomplete_azure.json +0 -0
  320. {schemathesis-3.20.0 → schemathesis-3.20.1}/test-corpus/invalid_path_parameters.json +0 -0
  321. {schemathesis-3.20.0 → schemathesis-3.20.1}/test-corpus/recursive_references.json +0 -0
  322. {schemathesis-3.20.0 → schemathesis-3.20.1}/test-corpus/test_corpus.py +0 -0
  323. {schemathesis-3.20.0 → schemathesis-3.20.1}/test_server.sh +0 -0
  324. {schemathesis-3.20.0 → 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
@@ -35,7 +35,7 @@ repos:
35
35
  - id: relint
36
36
 
37
37
  - repo: https://github.com/ambv/black
38
- rev: 23.9.1
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.9.1]
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.6.0
57
+ rev: v1.6.1
58
58
  hooks:
59
59
  - id: mypy
60
60
  exclude: ^(docs/|test/|test-corpus/|example/).*$
@@ -62,7 +62,7 @@ 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.292"
65
+ rev: "v0.1.0"
66
66
  hooks:
67
67
  - id: ruff
68
68
 
@@ -71,5 +71,5 @@ repos:
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,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: schemathesis
3
- Version: 3.20.0
3
+ Version: 3.20.1
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
@@ -4,6 +4,15 @@ Changelog
4
4
  `Unreleased`_ - TBD
5
5
  -------------------
6
6
 
7
+ .. _v3.20.1:
8
+
9
+ `3.20.1`_ - 2023-10-20
10
+ ----------------------
11
+
12
+ **Changed**
13
+
14
+ - Improved CLI error messages for missing or invalid arguments.
15
+
7
16
  .. _v3.20.0:
8
17
 
9
18
  `3.20.0`_ - 2023-10-18
@@ -3246,7 +3255,8 @@ Deprecated
3246
3255
 
3247
3256
  - Initial public release
3248
3257
 
3249
- .. _Unreleased: https://github.com/schemathesis/schemathesis/compare/v3.20.0...HEAD
3258
+ .. _Unreleased: https://github.com/schemathesis/schemathesis/compare/v3.20.1...HEAD
3259
+ .. _3.20.1: https://github.com/schemathesis/schemathesis/compare/v3.20.0...v3.20.1
3250
3260
  .. _3.20.0: https://github.com/schemathesis/schemathesis/compare/v3.19.7...v3.20.0
3251
3261
  .. _3.19.7: https://github.com/schemathesis/schemathesis/compare/v3.19.6...v3.19.7
3252
3262
  .. _3.19.6: https://github.com/schemathesis/schemathesis/compare/v3.19.5...v3.19.6
@@ -207,7 +207,6 @@ User's Guide
207
207
  .. toctree::
208
208
  :maxdepth: 2
209
209
 
210
- introduction
211
210
  cli
212
211
  python
213
212
  continuous_integration
@@ -0,0 +1,44 @@
1
+ Schemathesis as a Service
2
+ =========================
3
+
4
+ Schemathesis as a Service on `Schemathesis.io <https://app.schemathesis.io/auth/sign-up/?utm_source=oss_docs&utm_content=saas_docs_top>`_ provides a hosted environment, extending your testing capabilities with additional features accessible in both free and premium plans.
5
+
6
+ .. note::
7
+
8
+ For a step-by-step guide on getting started with Schemathesis.io, visit our `Quick Start Guide <https://docs.schemathesis.io/quick-start/>`_.
9
+
10
+ Uploading Reports to Schemathesis.io
11
+ ------------------------------------
12
+
13
+ When you use the Schemathesis CLI to run tests, you have the option to upload test reports to Schemathesis.io for a more detailed analysis and continuous tracking over time.
14
+ This can be done by using the ``--report`` flag with your CLI commands.
15
+
16
+ What Data is Sent?
17
+ ------------------
18
+
19
+ When you choose to upload your test reports, the following data is included in the reports sent to Schemathesis.io by the CLI:
20
+
21
+ - **Metadata**:
22
+
23
+ - Information about your host machine to help us understand our users better.
24
+ - Collected data includes your Python interpreter version, implementation, system/OS name, and release.
25
+
26
+ - **Test Runs**:
27
+
28
+ - Most of the Schemathesis runner's events are included, encompassing all generated data and explicitly passed headers.
29
+ - Sensitive data within the generated test cases and received responses is automatically sanitized by default, replaced with the string ``[Filtered]`` to prevent accidental exposure.
30
+ - Further information on what is considered sensitive and how it is sanitized can be found at :ref:`Sanitizing Output <sanitizing-output>`.
31
+
32
+ - **Environment Variables**:
33
+
34
+ - Some environment variables specific to CI providers are included.
35
+ - These are used to comment on pull requests.
36
+
37
+ - **Command-Line Options**:
38
+
39
+ - Command-line options without free-form values are sent to help us understand how you use the CLI.
40
+ - Rest assured, any sensitive data passed through command-line options is sanitized by default.
41
+
42
+ For more details on our data handling practices, please refer to our `Privacy Policy <https://schemathesis.io/legal/privacy>`_. If you have further questions or concerns about data handling, feel free to contact us at `support@schemathesis.io <mailto:support@schemathesis.io>`_.
43
+
44
+ For information on data access, retention, and deletion, please refer to the `FAQ section <https://docs.schemathesis.io/faq>`_ in our SaaS documentation.
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "schemathesis"
7
- version = "3.20.0"
7
+ version = "3.20.1"
8
8
  description = "Property-based testing framework for Open API and GraphQL based apps"
9
9
  keywords = ["pytest", "hypothesis", "openapi", "swagger", "graphql", "testing"]
10
10
  authors = [{ name = "Dmitry Dygalo", email = "dadygalo@gmail.com" }]
@@ -18,11 +18,29 @@ from ..stateful import Stateful
18
18
  from ..types import PathLike
19
19
  from .constants import DEFAULT_WORKERS
20
20
 
21
+ INVALID_DERANDOMIZE_MESSAGE = (
22
+ "`--hypothesis-derandomize` implies no database, so passing `--hypothesis-database` too is invalid."
23
+ )
21
24
  MISSING_CASSETTE_PATH_ARGUMENT_MESSAGE = (
22
25
  'Missing argument, "--cassette-path" should be specified as well if you use "--cassette-preserve-exact-body-bytes".'
23
26
  )
24
27
  INVALID_SCHEMA_MESSAGE = "Invalid SCHEMA, must be a valid URL, file path or an API name from Schemathesis.io."
25
28
  FILE_DOES_NOT_EXIST_MESSAGE = "The specified file does not exist. Please provide a valid path to an existing file."
29
+ INVALID_BASE_URL_MESSAGE = (
30
+ "The provided base URL is invalid. This URL serves as a prefix for all API endpoints you want to test. "
31
+ "Make sure it is a properly formatted URL."
32
+ )
33
+ MISSING_BASE_URL_MESSAGE = "The `--base-url` option is required when specifying a schema via a file."
34
+ APPLICATION_FORMAT_MESSAGE = """Unable to import application from the provided module.
35
+ The `--app` option should follow this format:
36
+
37
+ module_path:variable_name
38
+
39
+ - `module_path`: A path to an importable Python module.
40
+ - `variable_name`: The name of the application variable within that module.
41
+
42
+ Example: `st run --app=your_module:app ...`"""
43
+ MISSING_REQUEST_CERT_MESSAGE = "The `--request-cert` option must be specified if `--request-cert-key` is used."
26
44
 
27
45
 
28
46
  @enum.unique
@@ -74,7 +92,7 @@ def validate_schema(
74
92
  if not utils.file_exists(schema):
75
93
  message = FILE_DOES_NOT_EXIST_MESSAGE
76
94
  else:
77
- message = 'Missing argument, "--base-url" is required for SCHEMA specified by file.'
95
+ message = MISSING_BASE_URL_MESSAGE
78
96
  raise click.UsageError(message)
79
97
  if kind == SchemaInputKind.NAME:
80
98
  if api_name is not None:
@@ -92,9 +110,9 @@ def validate_base_url(ctx: click.core.Context, param: click.core.Parameter, raw_
92
110
  try:
93
111
  netloc = urlparse(raw_value).netloc
94
112
  except ValueError as exc:
95
- raise click.UsageError("Invalid base URL") from exc
113
+ raise click.UsageError(INVALID_BASE_URL_MESSAGE) from exc
96
114
  if raw_value and not netloc:
97
- raise click.UsageError("Invalid base URL")
115
+ raise click.UsageError(INVALID_BASE_URL_MESSAGE)
98
116
  return raw_value
99
117
 
100
118
 
@@ -110,14 +128,6 @@ def validate_rate_limit(
110
128
  raise click.UsageError(exc.args[0]) from exc
111
129
 
112
130
 
113
- APPLICATION_FORMAT_MESSAGE = (
114
- "Can not import application from the given module!\n"
115
- "The `--app` option value should be in format:\n\n path:variable\n\n"
116
- "where `path` is an importable path to a Python module,\n"
117
- "and `variable` is a variable name inside that module."
118
- )
119
-
120
-
121
131
  def validate_app(ctx: click.core.Context, param: click.core.Parameter, raw_value: Optional[str]) -> Optional[str]:
122
132
  if raw_value is None:
123
133
  return raw_value
@@ -145,9 +155,7 @@ def validate_hypothesis_database(
145
155
  if raw_value is None:
146
156
  return raw_value
147
157
  if ctx.params.get("hypothesis_derandomize"):
148
- raise click.UsageError(
149
- "--hypothesis-derandomize implies no database, so passing --hypothesis-database too is invalid."
150
- )
158
+ raise click.UsageError(INVALID_DERANDOMIZE_MESSAGE)
151
159
  return raw_value
152
160
 
153
161
 
@@ -201,7 +209,7 @@ def validate_request_cert_key(
201
209
  ctx: click.core.Context, param: click.core.Parameter, raw_value: Optional[str]
202
210
  ) -> Optional[str]:
203
211
  if raw_value is not None and "request_cert" not in ctx.params:
204
- raise click.UsageError('Missing argument, "--request-cert" should be specified as well.')
212
+ raise click.UsageError(MISSING_REQUEST_CERT_MESSAGE)
205
213
  return raw_value
206
214
 
207
215
 
@@ -34,7 +34,14 @@ from schemathesis.cli import (
34
34
  get_exit_code,
35
35
  reset_checks,
36
36
  )
37
- from schemathesis.cli.callbacks import FILE_DOES_NOT_EXIST_MESSAGE, INVALID_SCHEMA_MESSAGE
37
+ from schemathesis.cli.callbacks import (
38
+ FILE_DOES_NOT_EXIST_MESSAGE,
39
+ INVALID_BASE_URL_MESSAGE,
40
+ INVALID_DERANDOMIZE_MESSAGE,
41
+ INVALID_SCHEMA_MESSAGE,
42
+ MISSING_BASE_URL_MESSAGE,
43
+ MISSING_REQUEST_CERT_MESSAGE,
44
+ )
38
45
  from schemathesis.code_samples import CodeSampleStyle
39
46
  from schemathesis.constants import (
40
47
  DEFAULT_RESPONSE_TIMEOUT,
@@ -90,9 +97,9 @@ def test_commands_version(cli):
90
97
  (
91
98
  (("run",), "Error: Missing argument 'SCHEMA'."),
92
99
  (("run", "not-url"), "See https://schemathesis.readthedocs.io/en/stable/service.html for more details"),
93
- (("run", SIMPLE_PATH), 'Error: Missing argument, "--base-url" is required for SCHEMA specified by file.'),
94
- (("run", SIMPLE_PATH, "--base-url=test"), "Error: Invalid base URL"),
95
- (("run", SIMPLE_PATH, "--base-url=127.0.0.1:8080"), "Error: Invalid base URL"),
100
+ (("run", SIMPLE_PATH), f"Error: {MISSING_BASE_URL_MESSAGE}"),
101
+ (("run", SIMPLE_PATH, "--base-url=test"), f"Error: {INVALID_BASE_URL_MESSAGE}"),
102
+ (("run", SIMPLE_PATH, "--base-url=127.0.0.1:8080"), f"Error: {INVALID_BASE_URL_MESSAGE}"),
96
103
  (
97
104
  ("run", "http://127.0.0.1", "--request-timeout=-5"),
98
105
  "Error: Invalid value for '--request-timeout': -5 is not in the range x>=1.",
@@ -180,10 +187,7 @@ def test_certificate_only_key(cli, tmp_path):
180
187
 
181
188
  # Then an appropriate error should be displayed
182
189
  assert result.exit_code == ExitCode.INTERRUPTED, result.stdout
183
- assert (
184
- result.stdout.strip().split("\n")[-1]
185
- == 'Error: Missing argument, "--request-cert" should be specified as well.'
186
- )
190
+ assert result.stdout.strip().split("\n")[-1] == f"Error: {MISSING_REQUEST_CERT_MESSAGE}"
187
191
 
188
192
 
189
193
  @pytest.mark.openapi_version("3.0")
@@ -544,10 +548,7 @@ def test_hypothesis_database_with_derandomize(cli, schema_url):
544
548
  result = cli.run(schema_url, "--hypothesis-database=:memory:", "--hypothesis-derandomize")
545
549
  assert result.exit_code == ExitCode.INTERRUPTED, result.stdout
546
550
  lines = result.stdout.split("\n")
547
- assert (
548
- lines[3]
549
- == "Error: --hypothesis-derandomize implies no database, so passing --hypothesis-database too is invalid."
550
- )
551
+ assert lines[3] == f"Error: {INVALID_DERANDOMIZE_MESSAGE}"
551
552
 
552
553
 
553
554
  @pytest.mark.openapi_version("3.0")
@@ -1524,7 +1525,7 @@ def test_wsgi_app_missing(testdir, cli):
1524
1525
  assert result.exit_code == ExitCode.TESTS_FAILED, result.stdout
1525
1526
  lines = result.stdout.strip().split("\n")
1526
1527
  assert "AttributeError: module 'location' has no attribute 'app'" in lines
1527
- assert "Can not import application from the given module!" in lines
1528
+ assert "Unable to import application from the provided module." in lines
1528
1529
 
1529
1530
 
1530
1531
  def test_wsgi_app_internal_exception(testdir, cli):
@@ -1,43 +0,0 @@
1
- ---
2
- name: Bug report
3
- about: Create a report to help us improve
4
- title: "[BUG]"
5
- labels: "Status: Review Needed, 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
-
14
- **Describe the bug**
15
- A clear and concise description of what the bug is.
16
-
17
- **To Reproduce**
18
- Steps to reproduce the behavior:
19
-
20
- 1. Run this command '...'
21
- 2. See error
22
-
23
- If possible, please post a minimal version of your API schema that cause this behavior:
24
-
25
- ```yaml
26
- {
27
- "openapi": "3.0.2"
28
- ... Add more here
29
- }
30
- ```
31
-
32
- **Expected behavior**
33
- A clear and concise description of what you expected to happen.
34
-
35
- **Environment (please complete the following information):**
36
-
37
- - OS: [e.g. Linux or Windows]
38
- - Python version: [e.g. 3.7.2]
39
- - Schemathesis version: [e.g. 2.4.1]
40
- - Spec version: [e.g. Open API 3.0.2]
41
-
42
- **Additional context**
43
- Add any other context about the problem here.
@@ -1,19 +0,0 @@
1
- ---
2
- name: Feature request
3
- about: Suggest an idea for this project
4
- title: "[FEATURE]"
5
- labels: "Status: Review Needed, Type: Feature"
6
- assignees: Stranger6667
7
- ---
8
-
9
- **Is your feature request related to a problem? Please describe.**
10
- A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
11
-
12
- **Describe the solution you'd like**
13
- A clear and concise description of what you want to happen.
14
-
15
- **Describe alternatives you've considered**
16
- A clear and concise description of any alternative solutions or features you've considered.
17
-
18
- **Additional context**
19
- Add any other context or screenshots about the feature request here.
@@ -1,12 +0,0 @@
1
- 🚨Please review the [guidelines for contributing](https://github.com/schemathesis/schemathesis/blob/master/CONTRIBUTING.rst) to this repository.
2
-
3
- ### Description
4
-
5
- Please explain the changes you made here.
6
-
7
- ### Checklist
8
-
9
- - [ ] Created tests which fail without the change (if possible)
10
- - [ ] All tests passing
11
- - [ ] Added a changelog entry
12
- - [ ] Extended the README / documentation, if necessary
@@ -1,28 +0,0 @@
1
- Introduction
2
- ============
3
-
4
- Schemathesis is a tool for testing your web applications built with Open API or GraphQL specifications.
5
-
6
- Installation
7
- ------------
8
-
9
- We recommend using the latest version of Python. Schemathesis supports Python 3.7 and newer.
10
-
11
- Install the most recent Schemathesis version using ``pip``:
12
-
13
- .. code-block:: text
14
-
15
- $ pip install schemathesis
16
-
17
- Supported API specs
18
- -------------------
19
-
20
- We support the following API specifications:
21
-
22
- - Swagger 2.0
23
- - Open API 3.0.x
24
- - GraphQL June 2018
25
-
26
- Experimental Support:
27
-
28
- - OpenAPI 3.1 (see :ref:`Experimental Features <experimental-openapi-31>` for details)
@@ -1,153 +0,0 @@
1
- Schemathesis as a Service
2
- =========================
3
-
4
- `Schemathesis.io <https://app.schemathesis.io/auth/sign-up/?utm_source=oss_docs&utm_content=saas_docs_top>`_ is a platform that runs property-based API tests and visualises their outcomes for you. It also may store
5
- your CLI test results and run additional analysis on them.
6
-
7
- On top of the usual Schemathesis benefits, the platform gives you:
8
-
9
- - Handy visual navigation through test results
10
- - Additional static analysis of your API schema & app responses
11
- - Improved data generation, that finds more bugs
12
- - Many more additional checks for Open API & GraphQL issues
13
- - Visual API schema coverage (**COMING SOON**)
14
- - Tailored tips on API schema improvement (**COMING SOON**)
15
- - Support for gRPC, AsyncAPI, and SOAP (**COMING SOON**)
16
-
17
- Tutorial
18
- --------
19
-
20
- This step-by-step tutorial walks you through the flow of setting up your Schemathesis.io account to test your Open API schema.
21
- As part of this tutorial, you will:
22
-
23
- - Add your Open API schema to Schemathesis.io
24
- - Execute property-based tests against your application
25
- - See what request parameters cause issues
26
-
27
- .. note::
28
-
29
- We provide a sample Flask application with a pre-defined set of problems to demonstrate some of the possible issues
30
- Schemathesis.io can find automatically. You can find the `source code <https://github.com/schemathesis/schemathesis/tree/master/test/apps/openapi/_flask>`_ in the Schemathesis repository.
31
-
32
- Alternatively, you can follow this guide as a reference and run tests against your Open API or GraphQL based application.
33
-
34
- Prerequisites
35
- ~~~~~~~~~~~~~
36
-
37
- - A Schemathesis.io `account <https://app.schemathesis.io/auth/sign-up/?utm_source=oss_docs&utm_content=saas_docs_prerequisites>`_
38
-
39
- Step 1: Add the API schema
40
- ~~~~~~~~~~~~~~~~~~~~~~~~~~
41
-
42
- 1. Open `Schemathesis.io dashboard <https://app.schemathesis.io/apis/>`_
43
- 2. Click on the **Add API** button to get to the API schema submission form
44
-
45
- .. image:: https://raw.githubusercontent.com/schemathesis/schemathesis/master/img/service_no_apis_yet.png
46
-
47
- 3. Enter your API name, so you can easily identify it later (for example, "Example API")
48
- 4. Fill **https://example.schemathesis.io/openapi.json** into the "API Schema" field
49
- 5. **Optional**. If your API requires authentication, choose the appropriate authentication type (HTTP Basic & Header are available at the moment) and fill in its details
50
- 6. **Optional**. If your API is available on a different domain than your API schema, fill the proper base URL into the "Base URL" field
51
- 7. Save the API schema entry by clicking "Add"
52
-
53
- .. image:: https://raw.githubusercontent.com/schemathesis/schemathesis/master/img/service_api_form.png
54
-
55
- .. warning::
56
-
57
- Don't ever run tests against your production deployments!
58
-
59
- Step 2: Run API tests
60
- ~~~~~~~~~~~~~~~~~~~~~
61
-
62
- At this point, you can start testing your API! The simplest option is to use our test runners on the "Cloud" tab.
63
-
64
- .. image:: https://raw.githubusercontent.com/schemathesis/schemathesis/master/img/service_api_created.png
65
-
66
- **Optional**. If you'd like to run tests on your side and upload the results to Schemathesis.io feel free to use one of the provided code samples:
67
-
68
- Generate an access token and authenticate into Schemathesis.io first:
69
-
70
- .. code:: text
71
-
72
- # Replace `LOmOZoBh3V12aP3rRkvqYYKGGGV6Ag` with your token
73
- st auth login LOmOZoBh3V12aP3rRkvqYYKGGGV6Ag
74
-
75
- And then run the tests:
76
-
77
- .. code::
78
-
79
- st run demo-1 --checks all --report
80
-
81
- .. note::
82
-
83
- Replace ``demo-1`` with the appropriate API ID shown in the SaaS code sample
84
-
85
- Once all events are uploaded to Schemathesis.io you'll see a message at the end of the CLI output:
86
-
87
- .. code:: text
88
-
89
- Upload: COMPLETED
90
-
91
- Your test report is successfully uploaded! Please, follow this link for details:
92
-
93
- https://app.schemathesis.io/r/mF9ke/
94
-
95
- To observe the test run results, follow the link from the output.
96
-
97
- Use the ``--report`` argument followed by a file name to save the report as a tar gz file. Inside, you'll find multiple JSON files that capture details like the API schema and test data.
98
-
99
- **Why save the report?** Developers might want to integrate this report into their systems, derive custom analytics, or generate their own formatted reports.
100
-
101
- **Note**: We don't officially document the exact structure or contents of these JSON files. The format might evolve even without a major version bump. Utilizing this report directly is for advanced users; proceed with caution.
102
-
103
- .. note::
104
-
105
- If you'd like to disable the suggestion to visualize test reports, then set the ``SCHEMATHESIS_REPORT_SUGGESTION`` environment variable to ``false``.
106
-
107
- Step 3: Observe the results
108
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~
109
-
110
- As the tests are running you will see failures appear in the UI:
111
-
112
- .. image:: https://raw.githubusercontent.com/schemathesis/schemathesis/master/img/service_run_results.png
113
-
114
- Each entry in the **Failures** list is clickable, and you can check its details. The failure below shows that the application
115
- response does not conform to its API schema and shows what part of the schema was violated.
116
-
117
- .. image:: https://raw.githubusercontent.com/schemathesis/schemathesis/master/img/service_non_conforming_response.png
118
-
119
- In this case, the schema requires the "success" property to be present but it is absent in the response.
120
-
121
- Each failure is accompanied by a cURL snippet you can use to reproduce the issue.
122
-
123
- .. image:: https://raw.githubusercontent.com/schemathesis/schemathesis/master/img/service_server_error.png
124
-
125
- What Data is Sent?
126
- ------------------
127
-
128
- The following data is included in the reports sent to Schemathesis.io by the CLI:
129
-
130
- - **Metadata**:
131
-
132
- - Information about your host machine to help us understand our users better.
133
- - Collected data includes your Python interpreter version, implementation, system/OS name, and release.
134
-
135
- - **Test Runs**:
136
-
137
- - Most of the Schemathesis runner's events are included, encompassing all generated data and explicitly passed headers.
138
- - Sensitive data within the generated test cases and received responses is automatically sanitized by default, replaced with the string ``[Filtered]`` to prevent accidental exposure.
139
- - Further information on what is considered sensitive and how it is sanitized can be found at :ref:`Sanitizing Output <sanitizing-output>`.
140
-
141
- - **Environment Variables**:
142
-
143
- - Some environment variables specific to CI providers are included.
144
- - These are used to comment on pull requests.
145
-
146
- - **Command-Line Options**:
147
-
148
- - Command-line options without free-form values are sent to help us understand how you use the CLI.
149
- - Rest assured, any sensitive data passed through command-line options is sanitized by default.
150
-
151
- For more details on our data handling practices, please refer to our `Privacy Policy <https://schemathesis.io/legal/privacy>`_. If you have further questions or concerns about data handling, feel free to contact us at `support@schemathesis.io <mailto:support@schemathesis.io>`_.
152
-
153
- For information on data access, retention, and deletion, please refer to the `FAQ section <https://docs.schemathesis.io/faq>`_ in our SaaS documentation.