schemathesis 3.25.5__py3-none-any.whl → 4.0.0a1__py3-none-any.whl

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 (221) hide show
  1. schemathesis/__init__.py +27 -65
  2. schemathesis/auths.py +102 -82
  3. schemathesis/checks.py +126 -46
  4. schemathesis/cli/__init__.py +11 -1766
  5. schemathesis/cli/__main__.py +4 -0
  6. schemathesis/cli/commands/__init__.py +37 -0
  7. schemathesis/cli/commands/run/__init__.py +662 -0
  8. schemathesis/cli/commands/run/checks.py +80 -0
  9. schemathesis/cli/commands/run/context.py +117 -0
  10. schemathesis/cli/commands/run/events.py +35 -0
  11. schemathesis/cli/commands/run/executor.py +138 -0
  12. schemathesis/cli/commands/run/filters.py +194 -0
  13. schemathesis/cli/commands/run/handlers/__init__.py +46 -0
  14. schemathesis/cli/commands/run/handlers/base.py +18 -0
  15. schemathesis/cli/commands/run/handlers/cassettes.py +494 -0
  16. schemathesis/cli/commands/run/handlers/junitxml.py +54 -0
  17. schemathesis/cli/commands/run/handlers/output.py +746 -0
  18. schemathesis/cli/commands/run/hypothesis.py +105 -0
  19. schemathesis/cli/commands/run/loaders.py +129 -0
  20. schemathesis/cli/{callbacks.py → commands/run/validation.py} +103 -174
  21. schemathesis/cli/constants.py +5 -52
  22. schemathesis/cli/core.py +17 -0
  23. schemathesis/cli/ext/fs.py +14 -0
  24. schemathesis/cli/ext/groups.py +55 -0
  25. schemathesis/cli/{options.py → ext/options.py} +39 -10
  26. schemathesis/cli/hooks.py +36 -0
  27. schemathesis/contrib/__init__.py +1 -3
  28. schemathesis/contrib/openapi/__init__.py +1 -3
  29. schemathesis/contrib/openapi/fill_missing_examples.py +3 -5
  30. schemathesis/core/__init__.py +58 -0
  31. schemathesis/core/compat.py +25 -0
  32. schemathesis/core/control.py +2 -0
  33. schemathesis/core/curl.py +58 -0
  34. schemathesis/core/deserialization.py +65 -0
  35. schemathesis/core/errors.py +370 -0
  36. schemathesis/core/failures.py +285 -0
  37. schemathesis/core/fs.py +19 -0
  38. schemathesis/{_lazy_import.py → core/lazy_import.py} +1 -0
  39. schemathesis/core/loaders.py +104 -0
  40. schemathesis/core/marks.py +66 -0
  41. schemathesis/{transports/content_types.py → core/media_types.py} +17 -13
  42. schemathesis/core/output/__init__.py +69 -0
  43. schemathesis/core/output/sanitization.py +197 -0
  44. schemathesis/core/rate_limit.py +60 -0
  45. schemathesis/core/registries.py +31 -0
  46. schemathesis/{internal → core}/result.py +1 -1
  47. schemathesis/core/transforms.py +113 -0
  48. schemathesis/core/transport.py +108 -0
  49. schemathesis/core/validation.py +38 -0
  50. schemathesis/core/version.py +7 -0
  51. schemathesis/engine/__init__.py +30 -0
  52. schemathesis/engine/config.py +59 -0
  53. schemathesis/engine/context.py +119 -0
  54. schemathesis/engine/control.py +36 -0
  55. schemathesis/engine/core.py +157 -0
  56. schemathesis/engine/errors.py +394 -0
  57. schemathesis/engine/events.py +337 -0
  58. schemathesis/engine/phases/__init__.py +66 -0
  59. schemathesis/{cli → engine/phases}/probes.py +63 -70
  60. schemathesis/engine/phases/stateful/__init__.py +65 -0
  61. schemathesis/engine/phases/stateful/_executor.py +326 -0
  62. schemathesis/engine/phases/stateful/context.py +85 -0
  63. schemathesis/engine/phases/unit/__init__.py +174 -0
  64. schemathesis/engine/phases/unit/_executor.py +321 -0
  65. schemathesis/engine/phases/unit/_pool.py +74 -0
  66. schemathesis/engine/recorder.py +241 -0
  67. schemathesis/errors.py +31 -0
  68. schemathesis/experimental/__init__.py +18 -14
  69. schemathesis/filters.py +103 -14
  70. schemathesis/generation/__init__.py +21 -37
  71. schemathesis/generation/case.py +190 -0
  72. schemathesis/generation/coverage.py +931 -0
  73. schemathesis/generation/hypothesis/__init__.py +30 -0
  74. schemathesis/generation/hypothesis/builder.py +585 -0
  75. schemathesis/generation/hypothesis/examples.py +50 -0
  76. schemathesis/generation/hypothesis/given.py +66 -0
  77. schemathesis/generation/hypothesis/reporting.py +14 -0
  78. schemathesis/generation/hypothesis/strategies.py +16 -0
  79. schemathesis/generation/meta.py +115 -0
  80. schemathesis/generation/modes.py +28 -0
  81. schemathesis/generation/overrides.py +96 -0
  82. schemathesis/generation/stateful/__init__.py +20 -0
  83. schemathesis/{stateful → generation/stateful}/state_machine.py +68 -81
  84. schemathesis/generation/targets.py +69 -0
  85. schemathesis/graphql/__init__.py +15 -0
  86. schemathesis/graphql/checks.py +115 -0
  87. schemathesis/graphql/loaders.py +131 -0
  88. schemathesis/hooks.py +99 -67
  89. schemathesis/openapi/__init__.py +13 -0
  90. schemathesis/openapi/checks.py +412 -0
  91. schemathesis/openapi/generation/__init__.py +0 -0
  92. schemathesis/openapi/generation/filters.py +63 -0
  93. schemathesis/openapi/loaders.py +178 -0
  94. schemathesis/pytest/__init__.py +5 -0
  95. schemathesis/pytest/control_flow.py +7 -0
  96. schemathesis/pytest/lazy.py +273 -0
  97. schemathesis/pytest/loaders.py +12 -0
  98. schemathesis/{extra/pytest_plugin.py → pytest/plugin.py} +106 -127
  99. schemathesis/python/__init__.py +0 -0
  100. schemathesis/python/asgi.py +12 -0
  101. schemathesis/python/wsgi.py +12 -0
  102. schemathesis/schemas.py +537 -261
  103. schemathesis/specs/graphql/__init__.py +0 -1
  104. schemathesis/specs/graphql/_cache.py +25 -0
  105. schemathesis/specs/graphql/nodes.py +1 -0
  106. schemathesis/specs/graphql/scalars.py +7 -5
  107. schemathesis/specs/graphql/schemas.py +215 -187
  108. schemathesis/specs/graphql/validation.py +11 -18
  109. schemathesis/specs/openapi/__init__.py +7 -1
  110. schemathesis/specs/openapi/_cache.py +122 -0
  111. schemathesis/specs/openapi/_hypothesis.py +146 -165
  112. schemathesis/specs/openapi/checks.py +565 -67
  113. schemathesis/specs/openapi/converter.py +33 -6
  114. schemathesis/specs/openapi/definitions.py +11 -18
  115. schemathesis/specs/openapi/examples.py +153 -39
  116. schemathesis/specs/openapi/expressions/__init__.py +37 -2
  117. schemathesis/specs/openapi/expressions/context.py +4 -6
  118. schemathesis/specs/openapi/expressions/extractors.py +23 -0
  119. schemathesis/specs/openapi/expressions/lexer.py +20 -18
  120. schemathesis/specs/openapi/expressions/nodes.py +38 -14
  121. schemathesis/specs/openapi/expressions/parser.py +26 -5
  122. schemathesis/specs/openapi/formats.py +45 -0
  123. schemathesis/specs/openapi/links.py +65 -165
  124. schemathesis/specs/openapi/media_types.py +32 -0
  125. schemathesis/specs/openapi/negative/__init__.py +7 -3
  126. schemathesis/specs/openapi/negative/mutations.py +24 -8
  127. schemathesis/specs/openapi/parameters.py +46 -30
  128. schemathesis/specs/openapi/patterns.py +137 -0
  129. schemathesis/specs/openapi/references.py +47 -57
  130. schemathesis/specs/openapi/schemas.py +483 -367
  131. schemathesis/specs/openapi/security.py +25 -7
  132. schemathesis/specs/openapi/serialization.py +11 -6
  133. schemathesis/specs/openapi/stateful/__init__.py +185 -73
  134. schemathesis/specs/openapi/utils.py +6 -1
  135. schemathesis/transport/__init__.py +104 -0
  136. schemathesis/transport/asgi.py +26 -0
  137. schemathesis/transport/prepare.py +99 -0
  138. schemathesis/transport/requests.py +221 -0
  139. schemathesis/{_xml.py → transport/serialization.py} +143 -28
  140. schemathesis/transport/wsgi.py +165 -0
  141. schemathesis-4.0.0a1.dist-info/METADATA +297 -0
  142. schemathesis-4.0.0a1.dist-info/RECORD +152 -0
  143. {schemathesis-3.25.5.dist-info → schemathesis-4.0.0a1.dist-info}/WHEEL +1 -1
  144. {schemathesis-3.25.5.dist-info → schemathesis-4.0.0a1.dist-info}/entry_points.txt +1 -1
  145. schemathesis/_compat.py +0 -74
  146. schemathesis/_dependency_versions.py +0 -17
  147. schemathesis/_hypothesis.py +0 -246
  148. schemathesis/_override.py +0 -49
  149. schemathesis/cli/cassettes.py +0 -375
  150. schemathesis/cli/context.py +0 -55
  151. schemathesis/cli/debug.py +0 -26
  152. schemathesis/cli/handlers.py +0 -16
  153. schemathesis/cli/junitxml.py +0 -43
  154. schemathesis/cli/output/__init__.py +0 -1
  155. schemathesis/cli/output/default.py +0 -765
  156. schemathesis/cli/output/short.py +0 -40
  157. schemathesis/cli/sanitization.py +0 -20
  158. schemathesis/code_samples.py +0 -149
  159. schemathesis/constants.py +0 -55
  160. schemathesis/contrib/openapi/formats/__init__.py +0 -9
  161. schemathesis/contrib/openapi/formats/uuid.py +0 -15
  162. schemathesis/contrib/unique_data.py +0 -41
  163. schemathesis/exceptions.py +0 -560
  164. schemathesis/extra/_aiohttp.py +0 -27
  165. schemathesis/extra/_flask.py +0 -10
  166. schemathesis/extra/_server.py +0 -17
  167. schemathesis/failures.py +0 -209
  168. schemathesis/fixups/__init__.py +0 -36
  169. schemathesis/fixups/fast_api.py +0 -41
  170. schemathesis/fixups/utf8_bom.py +0 -29
  171. schemathesis/graphql.py +0 -4
  172. schemathesis/internal/__init__.py +0 -7
  173. schemathesis/internal/copy.py +0 -13
  174. schemathesis/internal/datetime.py +0 -5
  175. schemathesis/internal/deprecation.py +0 -34
  176. schemathesis/internal/jsonschema.py +0 -35
  177. schemathesis/internal/transformation.py +0 -15
  178. schemathesis/internal/validation.py +0 -34
  179. schemathesis/lazy.py +0 -361
  180. schemathesis/loaders.py +0 -120
  181. schemathesis/models.py +0 -1231
  182. schemathesis/parameters.py +0 -86
  183. schemathesis/runner/__init__.py +0 -555
  184. schemathesis/runner/events.py +0 -309
  185. schemathesis/runner/impl/__init__.py +0 -3
  186. schemathesis/runner/impl/core.py +0 -986
  187. schemathesis/runner/impl/solo.py +0 -90
  188. schemathesis/runner/impl/threadpool.py +0 -400
  189. schemathesis/runner/serialization.py +0 -411
  190. schemathesis/sanitization.py +0 -248
  191. schemathesis/serializers.py +0 -315
  192. schemathesis/service/__init__.py +0 -18
  193. schemathesis/service/auth.py +0 -11
  194. schemathesis/service/ci.py +0 -201
  195. schemathesis/service/client.py +0 -100
  196. schemathesis/service/constants.py +0 -38
  197. schemathesis/service/events.py +0 -57
  198. schemathesis/service/hosts.py +0 -107
  199. schemathesis/service/metadata.py +0 -46
  200. schemathesis/service/models.py +0 -49
  201. schemathesis/service/report.py +0 -255
  202. schemathesis/service/serialization.py +0 -184
  203. schemathesis/service/usage.py +0 -65
  204. schemathesis/specs/graphql/loaders.py +0 -344
  205. schemathesis/specs/openapi/filters.py +0 -49
  206. schemathesis/specs/openapi/loaders.py +0 -667
  207. schemathesis/specs/openapi/stateful/links.py +0 -92
  208. schemathesis/specs/openapi/validation.py +0 -25
  209. schemathesis/stateful/__init__.py +0 -133
  210. schemathesis/targets.py +0 -45
  211. schemathesis/throttling.py +0 -41
  212. schemathesis/transports/__init__.py +0 -5
  213. schemathesis/transports/auth.py +0 -15
  214. schemathesis/transports/headers.py +0 -35
  215. schemathesis/transports/responses.py +0 -52
  216. schemathesis/types.py +0 -35
  217. schemathesis/utils.py +0 -169
  218. schemathesis-3.25.5.dist-info/METADATA +0 -356
  219. schemathesis-3.25.5.dist-info/RECORD +0 -134
  220. /schemathesis/{extra → cli/ext}/__init__.py +0 -0
  221. {schemathesis-3.25.5.dist-info → schemathesis-4.0.0a1.dist-info}/licenses/LICENSE +0 -0
@@ -1,356 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: schemathesis
3
- Version: 3.25.5
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,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.8
24
- Classifier: Programming Language :: Python :: 3.9
25
- Classifier: Programming Language :: Python :: 3.10
26
- Classifier: Programming Language :: Python :: 3.11
27
- Classifier: Programming Language :: Python :: 3.12
28
- Classifier: Programming Language :: Python :: Implementation :: CPython
29
- Classifier: Topic :: Software Development :: Testing
30
- Requires-Python: >=3.8
31
- Requires-Dist: anyio<4
32
- Requires-Dist: backoff<3.0,>=2.1.2
33
- Requires-Dist: click<9.0,>=7.0
34
- Requires-Dist: colorama<1.0,>=0.4
35
- Requires-Dist: httpx<1.0,>=0.22.0
36
- Requires-Dist: hypothesis-graphql<1,>=0.11.0
37
- Requires-Dist: hypothesis-jsonschema<0.24,>=0.23.1
38
- Requires-Dist: hypothesis<7,>=6.84.3
39
- Requires-Dist: jsonschema<5.0,>=4.18.0
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<9,>=4.6.4
44
- Requires-Dist: pyyaml<7.0,>=5.1
45
- Requires-Dist: requests<3,>=2.22
46
- Requires-Dist: starlette-testclient<1
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: werkzeug<4,>=0.16.0
51
- Requires-Dist: yarl<2.0,>=1.5
52
- Provides-Extra: bench
53
- Requires-Dist: pytest-codspeed==2.2.0; extra == 'bench'
54
- Provides-Extra: cov
55
- Requires-Dist: coverage-enable-subprocess; extra == 'cov'
56
- Requires-Dist: coverage[toml]>=5.3; extra == 'cov'
57
- Provides-Extra: dev
58
- Requires-Dist: schemathesis[bench,cov,docs,tests]; extra == 'dev'
59
- Provides-Extra: docs
60
- Requires-Dist: sphinx; extra == 'docs'
61
- Requires-Dist: sphinx-click; extra == 'docs'
62
- Requires-Dist: sphinx-rtd-theme; extra == 'docs'
63
- Provides-Extra: tests
64
- Requires-Dist: aiohttp<4.0,>=3.9.1; extra == 'tests'
65
- Requires-Dist: coverage>=6; extra == 'tests'
66
- Requires-Dist: fastapi>=0.86.0; extra == 'tests'
67
- Requires-Dist: flask<3.0,>=2.1.1; extra == 'tests'
68
- Requires-Dist: pydantic>=1.10.2; extra == 'tests'
69
- Requires-Dist: pytest-asyncio<1.0,>=0.18.0; extra == 'tests'
70
- Requires-Dist: pytest-httpserver<2.0,>=1.0; extra == 'tests'
71
- Requires-Dist: pytest-mock<4.0,>=3.7.0; extra == 'tests'
72
- Requires-Dist: pytest-trio<1.0,>=0.8; extra == 'tests'
73
- Requires-Dist: pytest-xdist<4.0,>=3; extra == 'tests'
74
- Requires-Dist: strawberry-graphql[fastapi]>=0.109.0; extra == 'tests'
75
- Requires-Dist: syrupy<5.0,>=2; extra == 'tests'
76
- Requires-Dist: trustme<1.0,>=0.9.0; extra == 'tests'
77
- Description-Content-Type: text/markdown
78
-
79
- <p align="center">
80
- <em>Schemathesis: catch crashes, validate specs, and save time</em>
81
- </p>
82
-
83
- <p align="center">
84
- <a href="https://github.com/schemathesis/schemathesis/actions" target="_blank">
85
- <img src="https://github.com/schemathesis/schemathesis/actions/workflows/build.yml/badge.svg" alt="Build">
86
- </a>
87
- <a href="https://codecov.io/gh/schemathesis/schemathesis/branch/master" target="_blank">
88
- <img src="https://codecov.io/gh/schemathesis/schemathesis/branch/master/graph/badge.svg" alt="Coverage">
89
- </a>
90
- <a href="https://pypi.org/project/schemathesis/" target="_blank">
91
- <img src="https://img.shields.io/pypi/v/schemathesis.svg" alt="Version">
92
- </a>
93
- <a href="https://pypi.org/project/schemathesis/" target="_blank">
94
- <img src="https://img.shields.io/pypi/pyversions/schemathesis.svg" alt="Python versions">
95
- </a>
96
- <a href="https://discord.gg/R9ASRAmHnA" target="_blank">
97
- <img src="https://img.shields.io/discord/938139740912369755" alt="Discord">
98
- </a>
99
- <a href="https://opensource.org/licenses/MIT" target="_blank">
100
- <img src="https://img.shields.io/pypi/l/schemathesis.svg" alt="License">
101
- </a>
102
- </p>
103
-
104
- ---
105
-
106
- **Documentation**: <a href="https://schemathesis.readthedocs.io/en/stable/" target="_blank">https://schemathesis.readthedocs.io/en/stable/ </a>
107
-
108
- **Chat**: <a href="https://discord.gg/R9ASRAmHnA" target="_blank">https://discord.gg/R9ASRAmHnA </a>
109
-
110
- ---
111
-
112
- ## Why Schemathesis?
113
-
114
- Schemathesis is a tool that automates 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:
115
-
116
- 🕒 **Time-Saving**
117
-
118
- Automatically generates test cases, freeing you from manual test writing.
119
-
120
- 🔍 **Comprehensive**
121
-
122
- Utilizes fuzzing techniques to probe both common and edge-case scenarios, including those you might overlook.
123
-
124
- 🛠️ **Flexible**
125
-
126
- Supports OpenAPI, GraphQL, and can work even with partially complete schemas. Only the parts describing data generation or responses are required.
127
-
128
- 🎛️ **Customizable**
129
-
130
- Customize the framework by writing Python extensions to modify almost any aspect of the testing process.
131
-
132
- 🔄 **Reproducible**
133
-
134
- Generates code samples to help you quickly replicate and investigate any failing test cases.
135
-
136
- ## Quick Demo
137
-
138
- <p align="center">
139
- <img src="https://raw.githubusercontent.com/schemathesis/schemathesis/master/img/demo.gif" alt="Schemathesis Demo"/>
140
- </p>
141
-
142
- With a summary right in your PRs:
143
-
144
- ![image](https://raw.githubusercontent.com/schemathesis/schemathesis/master/img/service_github_report.png)
145
-
146
- ## Getting Started
147
-
148
- Choose from multiple ways to start testing your API with Schemathesis.
149
-
150
- > 💡 Your API schema can be either a URL or a local path to a JSON/YAML file.
151
-
152
- ### 💻 Command-Line Interface
153
-
154
- Quick and easy for those who prefer the command line.
155
-
156
- **Python**
157
-
158
- 1. Install via pip: `python -m pip install schemathesis`
159
- 2. Run tests
160
-
161
- ```bash
162
- st run --checks all https://example.schemathesis.io/openapi.json
163
- ```
164
-
165
- **Docker**
166
-
167
- 1. Pull Docker image: `docker pull schemathesis/schemathesis:stable`
168
- 2. Run tests
169
-
170
- ```bash
171
- docker run schemathesis/schemathesis:stable
172
- run --checks all https://example.schemathesis.io/openapi.json
173
- ```
174
-
175
- ### 🐍 Python Library
176
-
177
- For more control and customization, integrate Schemathesis into your Python codebase.
178
-
179
- 1. Install via pip: `python -m pip install schemathesis`
180
- 2. Add to your tests:
181
-
182
- ```python
183
- import schemathesis
184
-
185
- schema = schemathesis.from_uri("https://example.schemathesis.io/openapi.json")
186
-
187
-
188
- @schema.parametrize()
189
- def test_api(case):
190
- case.call_and_validate()
191
- ```
192
-
193
- > 💡 See a complete working example project in the [/example](https://github.com/schemathesis/schemathesis/tree/master/example) directory.
194
-
195
- ### :octocat: GitHub Integration
196
-
197
- **GitHub Actions**
198
-
199
- Run Schemathesis tests as a part of your CI/CD pipeline.
200
-
201
- Add this YAML configuration to your GitHub Actions:
202
-
203
- ```yaml
204
- api-tests:
205
- runs-on: ubuntu-22.04
206
- steps:
207
- - uses: schemathesis/action@v1
208
- with:
209
- schema: "https://example.schemathesis.io/openapi.json"
210
- # OPTIONAL. Add Schemathesis.io token for pull request reports
211
- token: ${{ secrets.SCHEMATHESIS_TOKEN }}
212
- ```
213
-
214
- For more details, check out our [GitHub Action](https://github.com/schemathesis/action) repository.
215
-
216
- > 💡 See our [GitHub Tutorial](https://docs.schemathesis.io/tutorials/github) for a step-by-step guidance.
217
-
218
- **GitHub App**
219
-
220
- Receive automatic comments in your pull requests and updates on GitHub checks status. Requires usage of our SaaS platform.
221
-
222
- 1. Install the [GitHub app](https://github.com/apps/schemathesis).
223
- 2. Enable in your repository settings.
224
-
225
- ### Software as a Service
226
-
227
- If you prefer an all-in-one solution with quick setup, we have a [free tier](https://schemathesis.io/#pricing) available.
228
-
229
- ## How it works
230
-
231
- Here’s a simplified overview of how Schemathesis operates:
232
-
233
- 1. **Test Generation**: Using the API schema to create a test generator that you can fine-tune to your testing requirements.
234
- 2. **Execution and Adaptation**: Sending tests to the API and adapting through statistical models and heuristics to optimize subsequent cases based on responses.
235
- 3. **Analysis and Minimization**: Checking responses to identify issues. Minimizing means simplifying failing test cases for easier debugging.
236
- 4. **Stateful Testing**: Running multistep tests to assess API operations in both isolated and integrated scenarios.
237
- 5. **Reporting**: Generating detailed reports with insights and cURL commands for easy issue reproduction.
238
-
239
- ### Research Findings on Open-Source API Testing Tools
240
-
241
- Our study, presented at the **44th International Conference on Software Engineering**, highlighted Schemathesis's performance:
242
-
243
- - **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.
244
-
245
- - **High Reliability**: consistently operates seamlessly on any project, ensuring unwavering stability and reliability.
246
-
247
- Explore the full paper at https://ieeexplore.ieee.org/document/9793781 or pre-print at https://arxiv.org/abs/2112.10328
248
-
249
- ## Testimonials
250
-
251
- "_The world needs modern, spec-based API tests, so we can deliver APIs as-designed. Schemathesis is the right tool for that job._"
252
-
253
- <div>Emmanuel Paraskakis - <strong>Level 250</strong></div>
254
-
255
- ---
256
-
257
- "_Schemathesis is the only sane way to thoroughly test an API._"
258
-
259
- <div>Zdenek Nemec - <strong>superface.ai</strong></div>
260
-
261
- ---
262
-
263
- "_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._"
264
-
265
- <div>Luděk Nový - <strong>JetBrains</strong></div>
266
-
267
- ---
268
-
269
- "_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._"
270
-
271
- <div>Dmitry Misharov - <strong>RedHat</strong></div>
272
-
273
- ---
274
-
275
- "_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._"
276
-
277
- <div>Testing RESTful APIs: A Survey - <strong>a research paper by Golmohammadi, at al</strong></div>
278
-
279
- ---
280
-
281
- ## Contributing
282
-
283
- We welcome contributions in code and are especially interested in learning about your use cases.
284
- Understanding how you use Schemathesis helps us extend its capabilities to better meet your needs.
285
-
286
- 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).
287
- For more details on how to contribute, see our [contributing guidelines](https://github.com/schemathesis/schemathesis/blob/master/CONTRIBUTING.rst).
288
-
289
- ## Let's make it better together 🤝
290
-
291
- Your feedback is essential for improving Schemathesis.
292
- By sharing your thoughts, you help us develop features that meet your needs and expedite bug fixes.
293
-
294
- 1. **Why Give Feedback**: Your input directly influences future updates, making the tool more effective for you.
295
- 2. **How to Provide Feedback**: Use [this form](https://forms.gle/kJ4hSxc1Yp6Ga96t5) to share your experience.
296
- 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.
297
-
298
- Thank you for contributing to making Schemathesis better! 👍
299
-
300
- ## Commercial support
301
-
302
- If you're a large enterprise or startup seeking specialized assistance, we offer commercial support to help you integrate Schemathesis effectively into your workflows.
303
- This includes:
304
-
305
- - Quicker response time for your queries.
306
- - Direct consultation to work closely with your API specification, optimizing the Schemathesis setup for your specific needs.
307
-
308
- 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>.
309
-
310
- ## Additional content
311
-
312
- ### Papers
313
-
314
- - [Deriving Semantics-Aware Fuzzers from Web API Schemas](https://ieeexplore.ieee.org/document/9793781) by **@Zac-HD** and **@Stranger6667**
315
- - **Description**: Explores the automation of API testing through semantics-aware fuzzing. Presented at ICSE 2022.
316
- - **Date**: 20 Dec 2021
317
-
318
- ### Articles
319
-
320
- - [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**
321
- - **Description**: Demonstrates OpenAPI doc generation with Utoipa and validating it with Schemathesis.
322
- - **Date**: 01 Jun 2023
323
- - [Testing APIFlask with schemathesis](http://blog.pamelafox.org/2023/02/testing-apiflask-with-schemathesis.html) by **@pamelafox**
324
- - **Description**: Explains how to test APIFlask applications using Schemathesis.
325
- - **Date**: 27 Feb 2023
326
- - [Using Hypothesis and Schemathesis to Test FastAPI](https://testdriven.io/blog/fastapi-hypothesis/) by **@amalshaji**
327
- - **Description**: Discusses property-based testing in FastAPI with Hypothesis and Schemathesis.
328
- - **Date**: 06 Sep 2022
329
- - [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**
330
- - **Description**: Guides you through setting up Schemathesis with Flask API in GitHub Actions.
331
- - **Date**: 04 Aug 2022
332
- - [Using API schemas for property-based testing](https://habr.com/ru/company/oleg-bunin/blog/576496/) (RUS) about Schemathesis by **@Stranger6667**
333
- - **Description**: Covers the usage of Schemathesis for property-based API testing.
334
- - **Date**: 07 Sep 2021
335
- - [Schemathesis: property-based testing for API schemas](https://dygalo.dev/blog/schemathesis-property-based-testing-for-api-schemas/) by **@Stranger6667**
336
- - **Description**: Introduces property-based testing for OpenAPI schemas using Schemathesis.
337
- - **Date**: 26 Nov 2019
338
-
339
- ### Videos
340
-
341
- - [API Fuzzing: What it is and why you should use it](https://youtu.be/wX3GMJY9B6A) by **José Haro Peralta**
342
- - **Description**: A comprehensive overview and demo of Schemathesis.
343
- - **Date**: 14 Feb 2023
344
- - [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**
345
- - **Description**: Provides a hands-on tutorial for API testing with Schemathesis.
346
- - **Date**: 09 Feb 2023
347
- - [Effective API schemas testing](https://youtu.be/VVLZ25JgjD4) from DevConf.cz by **@Stranger6667**
348
- - **Description**: Talks about using Schemathesis for property-based API schema testing.
349
- - **Date**: 24 Mar 2021
350
- - [API-schema-based testing with schemathesis](https://www.youtube.com/watch?v=9FHRwrv-xuQ) from EuroPython 2020 by **@hultner**
351
- - **Description**: Introduces property-based API testing with Schemathesis.
352
- - **Date**: 23 Jul 2020
353
-
354
- ## License
355
-
356
- This project is licensed under the terms of the [MIT license](https://opensource.org/licenses/MIT).
@@ -1,134 +0,0 @@
1
- schemathesis/__init__.py,sha256=WW1NBZxmc5jRR0c24xz-ZtTkJMUQG5MOw1MGVRRGc1s,1970
2
- schemathesis/_compat.py,sha256=VizWR0QAVj4l7WZautNe_zmo3AJ7WBl2zrJQOfJAQtk,1837
3
- schemathesis/_dependency_versions.py,sha256=_y0aBRMxa5ey6duwMy6cSaMVUAtfbJNBINjFd1ObWF0,727
4
- schemathesis/_hypothesis.py,sha256=AI7N7n4g7IPx2CeF5sHaaDkw9DJzVO-MQPkDKICnBn0,10243
5
- schemathesis/_lazy_import.py,sha256=LTki2tM168fCcXet1e6qDoQq8SLgInUA3xjXgi7cXJk,469
6
- schemathesis/_override.py,sha256=oetGCvMGqP8plf2Suvql2E0n3P-PU9SIySKwlBjzuR4,1629
7
- schemathesis/_xml.py,sha256=VatOQxdMFzD1vDnaHFNtK69uY9R0RlICa5UplgALyMM,6921
8
- schemathesis/auths.py,sha256=09tlGuNGpl3rrsU3ua3UI3rIefqUIpaVtG89U5P6rJo,14731
9
- schemathesis/checks.py,sha256=SYts1Teecg-5kSHBo32Pzhh7YQ4a1Y7DIfldd-0VTj8,2155
10
- schemathesis/code_samples.py,sha256=QFwyA7dmc_ij2FRwfbe0uMRm6j2yeofQ8zXynZV3SZI,4122
11
- schemathesis/constants.py,sha256=gptQZnXJwEJjuLgw62n7LL_kbkE7dhxUgyyJw_dEEAc,2672
12
- schemathesis/exceptions.py,sha256=fAkismvT-QcIunr6rZ6OllhXFK3sHjwiZJlD63fttQw,19631
13
- schemathesis/failures.py,sha256=oKbIDD075ymLT4h7SQK-herHDT608d-StPX9pXmOSVU,5996
14
- schemathesis/filters.py,sha256=cNwU2TUpCpEx2W8VuEzhpXQ0s9DVSXIoTwRdlus4Eeg,10249
15
- schemathesis/graphql.py,sha256=YkoKWY5K8lxp7H3ikAs-IsoDbiPwJvChG7O8p3DgwtI,229
16
- schemathesis/hooks.py,sha256=cNJgCh7SyLWT1sYDKF5ncDC80ld08CinvKo2IqLMV4g,12396
17
- schemathesis/lazy.py,sha256=CivWpvesh4iYLSkatXbQPTEOruWmXvuZQ29gng5p9wM,14846
18
- schemathesis/loaders.py,sha256=RJnrbf-3vZ7KXmRBkmr3uqWyg0eHzOnONABuudWcTIg,4586
19
- schemathesis/models.py,sha256=OcKi__d_PyLcvjc05jCsmLNJwj5DlEdxiBktAo_HxOQ,46634
20
- schemathesis/parameters.py,sha256=xHd3DAkq7z9FAnYDJXXeeOW8XKRsCIW23qtFOPYvGVs,2256
21
- schemathesis/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
- schemathesis/sanitization.py,sha256=WSV_MB5YRrYkp1pQRPHrzsidqsKcqYZiq64N9grKobo,8956
23
- schemathesis/schemas.py,sha256=VfNMjBzQNSY7YFhtM_IfpjI48wyff0yZ_QnXM6gA48A,18251
24
- schemathesis/serializers.py,sha256=cYWblkz-fghGClYWlBdxiebqXqksxuHVFonRBj7daL8,11296
25
- schemathesis/targets.py,sha256=tzp7VZ2-7g2nZHCooRgFzTMtOVcbl0rvtNR421hQthA,1162
26
- schemathesis/throttling.py,sha256=QQcS7TFpXHavUjm0kdFaCcCRhAGlgQ4y3XIbkdRoW20,1079
27
- schemathesis/types.py,sha256=AglR5M0bce-YXeDRkweToXTP0GjNOWVjS_mIsxLobwc,919
28
- schemathesis/utils.py,sha256=4HXvHysnHp-Uz2HfNgLfW5F5VjL-mtixrjjzRCEJhYo,5233
29
- schemathesis/cli/__init__.py,sha256=aijICr5cRlKISUWYAQOurcOhZOhLxk1u04pXM0cNb-U,64814
30
- schemathesis/cli/callbacks.py,sha256=HmD0WmSYf5x8v4xeZdOKzy_8CEk23NitUlL8JQ7LHdQ,14950
31
- schemathesis/cli/cassettes.py,sha256=gPPvcuIj1WnoP-yqqvGCJNe49SWlDFu8OdQkOmY453A,12988
32
- schemathesis/cli/constants.py,sha256=XoezT0_fHuiOY2e--cmBUhNieJsepcUoW8e48QuLSDI,1544
33
- schemathesis/cli/context.py,sha256=QrNr-5-7Z8TWGNzlD87hJZau6wU--ZboYHN92cyg82k,1652
34
- schemathesis/cli/debug.py,sha256=PDEa-oHyz5bZ8aYjRYARwQaCv_AC6HM_L43LJfe4vUM,657
35
- schemathesis/cli/handlers.py,sha256=62GPWPmgeGUz3pkDd01H4UCXcIy5a9yRtU7qaAeeR-A,389
36
- schemathesis/cli/junitxml.py,sha256=jMZzYBYpBE7Rl5n1ct3J0bhhPa1lhBeYb33lTZE1eW8,1792
37
- schemathesis/cli/options.py,sha256=7_dXcrPT0kWqAkm60cAT1J0IsTOcvNFxT1pcHYttBuI,2558
38
- schemathesis/cli/probes.py,sha256=HAz5kWeXL9NiRFtLC86rDvBgpwDLJ8NnCDyVU74Yp9I,5245
39
- schemathesis/cli/sanitization.py,sha256=v-9rsMCBpWhom0Bfzj_8c6InqxkVjSWK6kRoURa52Nk,727
40
- schemathesis/cli/output/__init__.py,sha256=AXaUzQ1nhQ-vXhW4-X-91vE2VQtEcCOrGtQXXNN55iQ,29
41
- schemathesis/cli/output/default.py,sha256=WUIWgqzqlRR3afBIt9EnCEwSzgT46gEs6dMtwZ1AMZg,31980
42
- schemathesis/cli/output/short.py,sha256=Ui21Ko7eY5igs4CyNFb88-KRXKmMjz776l9aCHpYq8o,1628
43
- schemathesis/contrib/__init__.py,sha256=FH8NL8NXgSKBFOF8Jy_EB6T4CJEaiM-tmDhz16B2o4k,187
44
- schemathesis/contrib/unique_data.py,sha256=zxrmAlQH7Bcil9YSfy2EazwLj2rxLzOvAE3O6QRRkFY,1317
45
- schemathesis/contrib/openapi/__init__.py,sha256=YMj_b2f3ohGwEt8QQXlxBT60wqvdCFS6516I4EHWVNM,217
46
- schemathesis/contrib/openapi/fill_missing_examples.py,sha256=dY1ygG41PWmITOegdv2uwpDm-UiBcyDSOuGCZMGxYAg,582
47
- schemathesis/contrib/openapi/formats/__init__.py,sha256=OpHWPW8MkTLVv83QXPYY1HVLflhmSH49hSVefm1oVV0,111
48
- schemathesis/contrib/openapi/formats/uuid.py,sha256=SsTH_bInSXnlGLNyYLmwUfvafVnVOTHdmhmKytQVoUQ,390
49
- schemathesis/experimental/__init__.py,sha256=9q_ok4f7djj4Ur9Ji0ABHsYsOzW_8GM5IMjbLglcMEM,1977
50
- schemathesis/extra/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
- schemathesis/extra/_aiohttp.py,sha256=YQIV-jHdlAyyw5O4FQDQC8KTLjwKi-LWfD3U7JU4Pns,956
52
- schemathesis/extra/_flask.py,sha256=BHCbxBDoMlIvNS5sRNyrPN1NwHxiDQt0IsyfYwwoFes,289
53
- schemathesis/extra/_server.py,sha256=ZX_Fiv_aTJGWVG0QTHDZQKXPVasu9Zq-EPV8iGY3xQ0,540
54
- schemathesis/extra/pytest_plugin.py,sha256=44RRkjkN1JupWu0muq9B5b3K9goucYndB394QS2Cxak,12914
55
- schemathesis/fixups/__init__.py,sha256=iTpOm-cwyZQRglbWRJHxj3k7WO9a4a-MCq-UDQa6U0Y,966
56
- schemathesis/fixups/fast_api.py,sha256=-gjYNSUtiKl7cKgyQ_rON0Oo_sGm6r7rOQDH0ahG32A,1322
57
- schemathesis/fixups/utf8_bom.py,sha256=ttzPOaJb6K7QtNAbIZ_TWrrm0N9FylS8QzO6zI0jXgY,764
58
- schemathesis/generation/__init__.py,sha256=NOmYWmbTt0uW5Vlx2-xfoXV_lLQs08d9T12v9pFBhrA,1951
59
- schemathesis/internal/__init__.py,sha256=93HcdG3LF0BbQKbCteOsFMa1w6nXl8yTmx87QLNJOik,161
60
- schemathesis/internal/copy.py,sha256=xsC7RyrFa9KadMsj9ai_aAy0XZg0oplz3cFZCka_2fg,459
61
- schemathesis/internal/datetime.py,sha256=zPLBL0XXLNfP-KYel3H2m8pnsxjsA_4d-zTOhJg2EPQ,136
62
- schemathesis/internal/deprecation.py,sha256=Ure1yZQ4cmNfRXQKy9Z94t-4iK3vguV7JfWeeuT_nLc,1107
63
- schemathesis/internal/jsonschema.py,sha256=eQEkBLTdJ__U7Z0XYXB_RVBQJ4texfFO0AaOoyXzh7I,1156
64
- schemathesis/internal/result.py,sha256=Og_ZfwwQ6JFmW79ExC1ndjVMIOHJB7o9XtrfhYIjOOs,461
65
- schemathesis/internal/transformation.py,sha256=ZNEtL8ezryLdP9-of4eSRBMSjjV_lBQ5DZZfoPGZFEU,449
66
- schemathesis/internal/validation.py,sha256=G7i8jIMUpAeOnDsDF_eWYvRZe_yMprRswx0QAtMPyEw,966
67
- schemathesis/runner/__init__.py,sha256=mEfQP6_u_HTVxJe4YlXr0ddSu3NUcEwuWfen4gqKfUA,20358
68
- schemathesis/runner/events.py,sha256=whpHGXcT7esnJ2bNsFirUrrELI3GtDAAoJ7VVTty2mc,9416
69
- schemathesis/runner/serialization.py,sha256=WvAVInu_Pe088p5lWupHvWVDMUjepcf8CIfPi0tLYdg,15900
70
- schemathesis/runner/impl/__init__.py,sha256=1E2iME8uthYPBh9MjwVBCTFV-P3fi7AdphCCoBBspjs,199
71
- schemathesis/runner/impl/core.py,sha256=koma7LEah5YJJTmqlLV9An5x-dBUMiKn1oEq1umDtTA,36760
72
- schemathesis/runner/impl/solo.py,sha256=Y_tNhVBVxcuxv65hN0FjxLlVSC41ebHMOM1xSzVrNk8,3358
73
- schemathesis/runner/impl/threadpool.py,sha256=2-2Wvw7msezZtenZY5vU_x3FGLLVlH-ywvhU9hTwAAo,15073
74
- schemathesis/service/__init__.py,sha256=cDVTCFD1G-vvhxZkJUwiToTAEQ-0ByIoqwXvJBCf_V8,472
75
- schemathesis/service/auth.py,sha256=AiZXvSNwz1Hi3fn-OCp6XD-E4GAMDlfcX8fORJ8_dLo,445
76
- schemathesis/service/ci.py,sha256=Nke_GHtUlbJtZA-7JmjD1Nu4aKBCtkUo8AwFwm38qpk,6781
77
- schemathesis/service/client.py,sha256=lkop8gLgv0KN4Y_vA6RWVFqIzVPUdJWn144dgZlqxo4,3953
78
- schemathesis/service/constants.py,sha256=Q1bhtLRkmhso4KSVAtWl0u446Wlbk3ShOL3ZdbPoJOM,1502
79
- schemathesis/service/events.py,sha256=oysiTeHkE1r65CZTPlyNXW3XFh0_Xt0eq9-FNBUy5U0,1237
80
- schemathesis/service/hosts.py,sha256=WEiVaLpVka3mhl-T0LjD4WJDEGC-dqOFNmiB4H7Cx5Q,3121
81
- schemathesis/service/metadata.py,sha256=jsPeif2XbrwjZgzDD3YysuUgGaSZm6Hkc4e3raDewqo,1475
82
- schemathesis/service/models.py,sha256=bY9g48TdtEPS0yO2lTKEsHtKl81Hh5vSJtMDe8kkWSI,850
83
- schemathesis/service/report.py,sha256=ua1-cfa-TgGshZgimUQ3-YQqykhZqMHCkEificBKncM,8294
84
- schemathesis/service/serialization.py,sha256=uXB-pRi1oylJ6n2CveoVyaK9m1tbQgykDcgTNPvGhHc,6781
85
- schemathesis/service/usage.py,sha256=Z-GCwFcW1pS6YdC-ziEOynikqgOttxp2Uyj_dfK5Q7A,2437
86
- schemathesis/specs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
87
- schemathesis/specs/graphql/__init__.py,sha256=fgyHtvWNUVWismBTOqxQtgLoTighTfvMv6v6QCD_Oyc,85
88
- schemathesis/specs/graphql/loaders.py,sha256=16fGT4rSqVF91DPY90cKDaFsbtRb9_ZdLnlGY1Gb_vg,11391
89
- schemathesis/specs/graphql/nodes.py,sha256=7F5jbk96uTZZXK9Ulr86KpCAn8z6LKMBcrLrdJHggH0,540
90
- schemathesis/specs/graphql/scalars.py,sha256=W5oj6AcjiXpR-Z6eSSp1oPWl0mjH2NF-w87nRFhrHHg,1805
91
- schemathesis/specs/graphql/schemas.py,sha256=pbonjYD2neMujoMZZMM_MXFJt-gk1qsW59Qkfed9Ltg,13967
92
- schemathesis/specs/graphql/validation.py,sha256=SqQbj9uymGUQxlHXc8HkQccIq25uwP5CvLF1zReb1Xg,1636
93
- schemathesis/specs/openapi/__init__.py,sha256=Ue1Qod8IpzeJ5dwxjAHNv97Nh8NVzm_6fnHR2BIzfHY,220
94
- schemathesis/specs/openapi/_hypothesis.py,sha256=bJHTlz4SYq7Z79ihxlsZ1WpK5q-1tVTJHBAaPvuq0xg,22157
95
- schemathesis/specs/openapi/checks.py,sha256=1WB_UGNqptfJThWLUNbds1Q-IzOGbbHCOYPIhBYk-zs,5411
96
- schemathesis/specs/openapi/constants.py,sha256=JqM_FHOenqS_MuUE9sxVQ8Hnw0DNM8cnKDwCwPLhID4,783
97
- schemathesis/specs/openapi/converter.py,sha256=9TKeKvNi9MVvoNMfqoPz_cODO8oNrMSTXTOwLLfjD_Q,2799
98
- schemathesis/specs/openapi/definitions.py,sha256=t5xffHLBnSgptBdDkSqYN1OfT-DaXoeUw2tIgNEe2q8,94057
99
- schemathesis/specs/openapi/examples.py,sha256=6SKlA3DyOTivaetWmKTata3ehlFGFaRh5pajZKNEdJ4,14917
100
- schemathesis/specs/openapi/filters.py,sha256=Ei-QTFcGCvGSIunT-GYQrtqzB-kqvUePOcUuC7B7mT8,1436
101
- schemathesis/specs/openapi/formats.py,sha256=JmmkQWNAj5XreXb7Edgj4LADAf4m86YulR_Ec8evpJ4,1220
102
- schemathesis/specs/openapi/links.py,sha256=YryI35djHOhTikRV3FLafy_jhYFypF7E8Yb6dg9ksWc,14575
103
- schemathesis/specs/openapi/loaders.py,sha256=Jm37MTUmbVVkOxoRAJOo_T_Ex-tWu2ir7YG7y-v-BjM,24014
104
- schemathesis/specs/openapi/parameters.py,sha256=5jMZQZFsZNBFjG22Bqot-Rc65emiSA4E95rIzwImThk,13610
105
- schemathesis/specs/openapi/references.py,sha256=YGunHAGubYPKbMqQtpFWZm1D4AGxB8wLuiVhE6T6cWo,8978
106
- schemathesis/specs/openapi/schemas.py,sha256=QmcA7ACKRpebO3iYnWKC9hcx_jkLeEy6ll72x-eDu90,50039
107
- schemathesis/specs/openapi/security.py,sha256=lNRD4RSYe341f_ayhl_bQuYlFbGzx4luhXi6qJwzrOY,6495
108
- schemathesis/specs/openapi/serialization.py,sha256=jajqowTIiyEVWEx-Gy4ZinXZewNg0n_ipsGzz7JXP7c,11383
109
- schemathesis/specs/openapi/utils.py,sha256=gmW4v6o6sZQifajfPquhFeWmZWGQM89mOOBYZvjnE7g,741
110
- schemathesis/specs/openapi/validation.py,sha256=UJWtW7VTRyMbbBHMRhMwNSUn92k1Hnp4p7IIVqCvqiI,998
111
- schemathesis/specs/openapi/expressions/__init__.py,sha256=7TZeRPpCPt0Bjzs5L--AkQnnIbDgTRnpkgYeJKma5Bc,660
112
- schemathesis/specs/openapi/expressions/context.py,sha256=ngZQPUvN8PKqvH8SIvhM3yyDZjb_g1aPzH9hzquRsKE,350
113
- schemathesis/specs/openapi/expressions/errors.py,sha256=YLVhps-sYcslgVaahfcUYxUSHlIfWL-rQMeT5PZSMZ8,219
114
- schemathesis/specs/openapi/expressions/lexer.py,sha256=pYoqIlogmw2gyAwec01OTvUb_d8fG1zLiKwlCkLK8RA,3824
115
- schemathesis/specs/openapi/expressions/nodes.py,sha256=fb9yvxDWfq3WQcrtsn1dcj8GSMyzsvofW3Tn2mFOdL4,3298
116
- schemathesis/specs/openapi/expressions/parser.py,sha256=xFA3cTTxl7VgAOiFF-vSDZ3usUFXpd3jk6ewMLeg6ao,3523
117
- schemathesis/specs/openapi/negative/__init__.py,sha256=Nhe6qeSCnlgf5l-Fu6yHvL--3tkAkxYyIGffuo77bLs,3696
118
- schemathesis/specs/openapi/negative/mutations.py,sha256=I2YKm6N3VoP3TpxRQMbYQze3XSVdLn1k7z8vqV1oJ4s,18642
119
- schemathesis/specs/openapi/negative/types.py,sha256=a7buCcVxNBG6ILBM3A7oNTAX0lyDseEtZndBuej8MbI,174
120
- schemathesis/specs/openapi/negative/utils.py,sha256=ozcOIuASufLqZSgnKUACjX-EOZrrkuNdXX0SDnLoGYA,168
121
- schemathesis/specs/openapi/stateful/__init__.py,sha256=R8RhPJD3rDzqL4eA9jSnUwh9Q_Mv27ka1C5FdRuyusY,4509
122
- schemathesis/specs/openapi/stateful/links.py,sha256=cSIwho2Hroty6au-gyCD-OwqnuCcIpnIIHU6FvF0SwA,3533
123
- schemathesis/stateful/__init__.py,sha256=T7rvhzftfl3wumEsir33DBBzCTK2PtRp9CxBxMLdMSE,4693
124
- schemathesis/stateful/state_machine.py,sha256=o940A5Uk-7DaeaVUg4Yf_xbG11v36eoEz-I5D4JKpOY,11717
125
- schemathesis/transports/__init__.py,sha256=Wix_WnOxZlDFD_XFqPMIqz_3TAc7Xda6UGicONaLnNM,108
126
- schemathesis/transports/auth.py,sha256=ZKFku9gjhIG6445qNC2p_64Yt9Iz_4azbvja8AMptBk,404
127
- schemathesis/transports/content_types.py,sha256=xU8RZWxz-CyWRqQTI2fGYQacB7KasoY7LL_bxPQdyPY,2144
128
- schemathesis/transports/headers.py,sha256=EDxpm8su0AuhyqZUkMex-OFZMAJN_5NHah7fDT2HDZE,989
129
- schemathesis/transports/responses.py,sha256=U6z1VW5w19c9qRRoyf2ljkuXR2smTfWikmrTGqlgl18,1619
130
- schemathesis-3.25.5.dist-info/METADATA,sha256=1MNBBPfjk_19WvZfNbZDjxVBkgyNyUFxl5fA51R7rYI,15668
131
- schemathesis-3.25.5.dist-info/WHEEL,sha256=hKi7AIIx6qfnsRbr087vpeJnrVUuDokDHZacPPMW7-Y,87
132
- schemathesis-3.25.5.dist-info/entry_points.txt,sha256=VHyLcOG7co0nOeuk8WjgpRETk5P1E2iCLrn26Zkn5uk,158
133
- schemathesis-3.25.5.dist-info/licenses/LICENSE,sha256=PsPYgrDhZ7g9uwihJXNG-XVb55wj2uYhkl2DD8oAzY0,1103
134
- schemathesis-3.25.5.dist-info/RECORD,,
File without changes