schemathesis 3.39.15__py3-none-any.whl → 4.0.0__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 (255) hide show
  1. schemathesis/__init__.py +41 -79
  2. schemathesis/auths.py +111 -122
  3. schemathesis/checks.py +169 -60
  4. schemathesis/cli/__init__.py +15 -2117
  5. schemathesis/cli/commands/__init__.py +85 -0
  6. schemathesis/cli/commands/data.py +10 -0
  7. schemathesis/cli/commands/run/__init__.py +590 -0
  8. schemathesis/cli/commands/run/context.py +204 -0
  9. schemathesis/cli/commands/run/events.py +60 -0
  10. schemathesis/cli/commands/run/executor.py +157 -0
  11. schemathesis/cli/commands/run/filters.py +53 -0
  12. schemathesis/cli/commands/run/handlers/__init__.py +46 -0
  13. schemathesis/cli/commands/run/handlers/base.py +18 -0
  14. schemathesis/cli/commands/run/handlers/cassettes.py +474 -0
  15. schemathesis/cli/commands/run/handlers/junitxml.py +55 -0
  16. schemathesis/cli/commands/run/handlers/output.py +1628 -0
  17. schemathesis/cli/commands/run/loaders.py +114 -0
  18. schemathesis/cli/commands/run/validation.py +246 -0
  19. schemathesis/cli/constants.py +5 -58
  20. schemathesis/cli/core.py +19 -0
  21. schemathesis/cli/ext/fs.py +16 -0
  22. schemathesis/cli/ext/groups.py +84 -0
  23. schemathesis/cli/{options.py → ext/options.py} +36 -34
  24. schemathesis/config/__init__.py +189 -0
  25. schemathesis/config/_auth.py +51 -0
  26. schemathesis/config/_checks.py +268 -0
  27. schemathesis/config/_diff_base.py +99 -0
  28. schemathesis/config/_env.py +21 -0
  29. schemathesis/config/_error.py +156 -0
  30. schemathesis/config/_generation.py +149 -0
  31. schemathesis/config/_health_check.py +24 -0
  32. schemathesis/config/_operations.py +327 -0
  33. schemathesis/config/_output.py +171 -0
  34. schemathesis/config/_parameters.py +19 -0
  35. schemathesis/config/_phases.py +187 -0
  36. schemathesis/config/_projects.py +527 -0
  37. schemathesis/config/_rate_limit.py +17 -0
  38. schemathesis/config/_report.py +120 -0
  39. schemathesis/config/_validator.py +9 -0
  40. schemathesis/config/_warnings.py +25 -0
  41. schemathesis/config/schema.json +885 -0
  42. schemathesis/core/__init__.py +67 -0
  43. schemathesis/core/compat.py +32 -0
  44. schemathesis/core/control.py +2 -0
  45. schemathesis/core/curl.py +58 -0
  46. schemathesis/core/deserialization.py +65 -0
  47. schemathesis/core/errors.py +459 -0
  48. schemathesis/core/failures.py +315 -0
  49. schemathesis/core/fs.py +19 -0
  50. schemathesis/core/hooks.py +20 -0
  51. schemathesis/core/loaders.py +104 -0
  52. schemathesis/core/marks.py +66 -0
  53. schemathesis/{transports/content_types.py → core/media_types.py} +14 -12
  54. schemathesis/core/output/__init__.py +46 -0
  55. schemathesis/core/output/sanitization.py +54 -0
  56. schemathesis/{throttling.py → core/rate_limit.py} +16 -17
  57. schemathesis/core/registries.py +31 -0
  58. schemathesis/core/transforms.py +113 -0
  59. schemathesis/core/transport.py +223 -0
  60. schemathesis/core/validation.py +54 -0
  61. schemathesis/core/version.py +7 -0
  62. schemathesis/engine/__init__.py +28 -0
  63. schemathesis/engine/context.py +118 -0
  64. schemathesis/engine/control.py +36 -0
  65. schemathesis/engine/core.py +169 -0
  66. schemathesis/engine/errors.py +464 -0
  67. schemathesis/engine/events.py +258 -0
  68. schemathesis/engine/phases/__init__.py +88 -0
  69. schemathesis/{runner → engine/phases}/probes.py +52 -68
  70. schemathesis/engine/phases/stateful/__init__.py +68 -0
  71. schemathesis/engine/phases/stateful/_executor.py +356 -0
  72. schemathesis/engine/phases/stateful/context.py +85 -0
  73. schemathesis/engine/phases/unit/__init__.py +212 -0
  74. schemathesis/engine/phases/unit/_executor.py +416 -0
  75. schemathesis/engine/phases/unit/_pool.py +82 -0
  76. schemathesis/engine/recorder.py +247 -0
  77. schemathesis/errors.py +43 -0
  78. schemathesis/filters.py +17 -98
  79. schemathesis/generation/__init__.py +5 -33
  80. schemathesis/generation/case.py +317 -0
  81. schemathesis/generation/coverage.py +282 -175
  82. schemathesis/generation/hypothesis/__init__.py +36 -0
  83. schemathesis/generation/hypothesis/builder.py +800 -0
  84. schemathesis/generation/{_hypothesis.py → hypothesis/examples.py} +2 -11
  85. schemathesis/generation/hypothesis/given.py +66 -0
  86. schemathesis/generation/hypothesis/reporting.py +14 -0
  87. schemathesis/generation/hypothesis/strategies.py +16 -0
  88. schemathesis/generation/meta.py +115 -0
  89. schemathesis/generation/metrics.py +93 -0
  90. schemathesis/generation/modes.py +20 -0
  91. schemathesis/generation/overrides.py +116 -0
  92. schemathesis/generation/stateful/__init__.py +37 -0
  93. schemathesis/generation/stateful/state_machine.py +278 -0
  94. schemathesis/graphql/__init__.py +15 -0
  95. schemathesis/graphql/checks.py +109 -0
  96. schemathesis/graphql/loaders.py +284 -0
  97. schemathesis/hooks.py +80 -101
  98. schemathesis/openapi/__init__.py +13 -0
  99. schemathesis/openapi/checks.py +455 -0
  100. schemathesis/openapi/generation/__init__.py +0 -0
  101. schemathesis/openapi/generation/filters.py +72 -0
  102. schemathesis/openapi/loaders.py +313 -0
  103. schemathesis/pytest/__init__.py +5 -0
  104. schemathesis/pytest/control_flow.py +7 -0
  105. schemathesis/pytest/lazy.py +281 -0
  106. schemathesis/pytest/loaders.py +36 -0
  107. schemathesis/{extra/pytest_plugin.py → pytest/plugin.py} +128 -108
  108. schemathesis/python/__init__.py +0 -0
  109. schemathesis/python/asgi.py +12 -0
  110. schemathesis/python/wsgi.py +12 -0
  111. schemathesis/schemas.py +537 -273
  112. schemathesis/specs/graphql/__init__.py +0 -1
  113. schemathesis/specs/graphql/_cache.py +1 -2
  114. schemathesis/specs/graphql/scalars.py +42 -6
  115. schemathesis/specs/graphql/schemas.py +141 -137
  116. schemathesis/specs/graphql/validation.py +11 -17
  117. schemathesis/specs/openapi/__init__.py +6 -1
  118. schemathesis/specs/openapi/_cache.py +1 -2
  119. schemathesis/specs/openapi/_hypothesis.py +142 -156
  120. schemathesis/specs/openapi/checks.py +368 -257
  121. schemathesis/specs/openapi/converter.py +4 -4
  122. schemathesis/specs/openapi/definitions.py +1 -1
  123. schemathesis/specs/openapi/examples.py +23 -21
  124. schemathesis/specs/openapi/expressions/__init__.py +31 -19
  125. schemathesis/specs/openapi/expressions/extractors.py +1 -4
  126. schemathesis/specs/openapi/expressions/lexer.py +1 -1
  127. schemathesis/specs/openapi/expressions/nodes.py +36 -41
  128. schemathesis/specs/openapi/expressions/parser.py +1 -1
  129. schemathesis/specs/openapi/formats.py +35 -7
  130. schemathesis/specs/openapi/media_types.py +53 -12
  131. schemathesis/specs/openapi/negative/__init__.py +7 -4
  132. schemathesis/specs/openapi/negative/mutations.py +6 -5
  133. schemathesis/specs/openapi/parameters.py +7 -10
  134. schemathesis/specs/openapi/patterns.py +94 -31
  135. schemathesis/specs/openapi/references.py +12 -53
  136. schemathesis/specs/openapi/schemas.py +238 -308
  137. schemathesis/specs/openapi/security.py +1 -1
  138. schemathesis/specs/openapi/serialization.py +12 -6
  139. schemathesis/specs/openapi/stateful/__init__.py +268 -133
  140. schemathesis/specs/openapi/stateful/control.py +87 -0
  141. schemathesis/specs/openapi/stateful/links.py +209 -0
  142. schemathesis/transport/__init__.py +142 -0
  143. schemathesis/transport/asgi.py +26 -0
  144. schemathesis/transport/prepare.py +124 -0
  145. schemathesis/transport/requests.py +244 -0
  146. schemathesis/{_xml.py → transport/serialization.py} +69 -11
  147. schemathesis/transport/wsgi.py +171 -0
  148. schemathesis-4.0.0.dist-info/METADATA +204 -0
  149. schemathesis-4.0.0.dist-info/RECORD +164 -0
  150. {schemathesis-3.39.15.dist-info → schemathesis-4.0.0.dist-info}/entry_points.txt +1 -1
  151. {schemathesis-3.39.15.dist-info → schemathesis-4.0.0.dist-info}/licenses/LICENSE +1 -1
  152. schemathesis/_compat.py +0 -74
  153. schemathesis/_dependency_versions.py +0 -19
  154. schemathesis/_hypothesis.py +0 -712
  155. schemathesis/_override.py +0 -50
  156. schemathesis/_patches.py +0 -21
  157. schemathesis/_rate_limiter.py +0 -7
  158. schemathesis/cli/callbacks.py +0 -466
  159. schemathesis/cli/cassettes.py +0 -561
  160. schemathesis/cli/context.py +0 -75
  161. schemathesis/cli/debug.py +0 -27
  162. schemathesis/cli/handlers.py +0 -19
  163. schemathesis/cli/junitxml.py +0 -124
  164. schemathesis/cli/output/__init__.py +0 -1
  165. schemathesis/cli/output/default.py +0 -920
  166. schemathesis/cli/output/short.py +0 -59
  167. schemathesis/cli/reporting.py +0 -79
  168. schemathesis/cli/sanitization.py +0 -26
  169. schemathesis/code_samples.py +0 -151
  170. schemathesis/constants.py +0 -54
  171. schemathesis/contrib/__init__.py +0 -11
  172. schemathesis/contrib/openapi/__init__.py +0 -11
  173. schemathesis/contrib/openapi/fill_missing_examples.py +0 -24
  174. schemathesis/contrib/openapi/formats/__init__.py +0 -9
  175. schemathesis/contrib/openapi/formats/uuid.py +0 -16
  176. schemathesis/contrib/unique_data.py +0 -41
  177. schemathesis/exceptions.py +0 -571
  178. schemathesis/experimental/__init__.py +0 -109
  179. schemathesis/extra/_aiohttp.py +0 -28
  180. schemathesis/extra/_flask.py +0 -13
  181. schemathesis/extra/_server.py +0 -18
  182. schemathesis/failures.py +0 -284
  183. schemathesis/fixups/__init__.py +0 -37
  184. schemathesis/fixups/fast_api.py +0 -41
  185. schemathesis/fixups/utf8_bom.py +0 -28
  186. schemathesis/generation/_methods.py +0 -44
  187. schemathesis/graphql.py +0 -3
  188. schemathesis/internal/__init__.py +0 -7
  189. schemathesis/internal/checks.py +0 -86
  190. schemathesis/internal/copy.py +0 -32
  191. schemathesis/internal/datetime.py +0 -5
  192. schemathesis/internal/deprecation.py +0 -37
  193. schemathesis/internal/diff.py +0 -15
  194. schemathesis/internal/extensions.py +0 -27
  195. schemathesis/internal/jsonschema.py +0 -36
  196. schemathesis/internal/output.py +0 -68
  197. schemathesis/internal/transformation.py +0 -26
  198. schemathesis/internal/validation.py +0 -34
  199. schemathesis/lazy.py +0 -474
  200. schemathesis/loaders.py +0 -122
  201. schemathesis/models.py +0 -1341
  202. schemathesis/parameters.py +0 -90
  203. schemathesis/runner/__init__.py +0 -605
  204. schemathesis/runner/events.py +0 -389
  205. schemathesis/runner/impl/__init__.py +0 -3
  206. schemathesis/runner/impl/context.py +0 -88
  207. schemathesis/runner/impl/core.py +0 -1280
  208. schemathesis/runner/impl/solo.py +0 -80
  209. schemathesis/runner/impl/threadpool.py +0 -391
  210. schemathesis/runner/serialization.py +0 -544
  211. schemathesis/sanitization.py +0 -252
  212. schemathesis/serializers.py +0 -328
  213. schemathesis/service/__init__.py +0 -18
  214. schemathesis/service/auth.py +0 -11
  215. schemathesis/service/ci.py +0 -202
  216. schemathesis/service/client.py +0 -133
  217. schemathesis/service/constants.py +0 -38
  218. schemathesis/service/events.py +0 -61
  219. schemathesis/service/extensions.py +0 -224
  220. schemathesis/service/hosts.py +0 -111
  221. schemathesis/service/metadata.py +0 -71
  222. schemathesis/service/models.py +0 -258
  223. schemathesis/service/report.py +0 -255
  224. schemathesis/service/serialization.py +0 -173
  225. schemathesis/service/usage.py +0 -66
  226. schemathesis/specs/graphql/loaders.py +0 -364
  227. schemathesis/specs/openapi/expressions/context.py +0 -16
  228. schemathesis/specs/openapi/links.py +0 -389
  229. schemathesis/specs/openapi/loaders.py +0 -707
  230. schemathesis/specs/openapi/stateful/statistic.py +0 -198
  231. schemathesis/specs/openapi/stateful/types.py +0 -14
  232. schemathesis/specs/openapi/validation.py +0 -26
  233. schemathesis/stateful/__init__.py +0 -147
  234. schemathesis/stateful/config.py +0 -97
  235. schemathesis/stateful/context.py +0 -135
  236. schemathesis/stateful/events.py +0 -274
  237. schemathesis/stateful/runner.py +0 -309
  238. schemathesis/stateful/sink.py +0 -68
  239. schemathesis/stateful/state_machine.py +0 -328
  240. schemathesis/stateful/statistic.py +0 -22
  241. schemathesis/stateful/validation.py +0 -100
  242. schemathesis/targets.py +0 -77
  243. schemathesis/transports/__init__.py +0 -369
  244. schemathesis/transports/asgi.py +0 -7
  245. schemathesis/transports/auth.py +0 -38
  246. schemathesis/transports/headers.py +0 -36
  247. schemathesis/transports/responses.py +0 -57
  248. schemathesis/types.py +0 -44
  249. schemathesis/utils.py +0 -164
  250. schemathesis-3.39.15.dist-info/METADATA +0 -293
  251. schemathesis-3.39.15.dist-info/RECORD +0 -160
  252. /schemathesis/{extra → cli/ext}/__init__.py +0 -0
  253. /schemathesis/{_lazy_import.py → core/lazy_import.py} +0 -0
  254. /schemathesis/{internal → core}/result.py +0 -0
  255. {schemathesis-3.39.15.dist-info → schemathesis-4.0.0.dist-info}/WHEEL +0 -0
schemathesis/utils.py DELETED
@@ -1,164 +0,0 @@
1
- from __future__ import annotations
2
-
3
- from contextlib import contextmanager
4
- from inspect import getfullargspec
5
- from pathlib import Path
6
- from typing import (
7
- TYPE_CHECKING,
8
- Any,
9
- Callable,
10
- Generator,
11
- NoReturn,
12
- Union,
13
- )
14
-
15
- import pytest
16
- from hypothesis.core import is_invalid_test
17
- from hypothesis.reporting import with_reporter
18
- from hypothesis.strategies import SearchStrategy
19
-
20
- from ._compat import InferType, get_signature
21
-
22
- # Backward-compat
23
- from .exceptions import SkipTest, UsageError
24
-
25
- if TYPE_CHECKING:
26
- from .types import GenericTest, PathLike
27
-
28
-
29
- def is_schemathesis_test(func: Callable) -> bool:
30
- """Check whether test is parametrized with schemathesis."""
31
- try:
32
- from .schemas import BaseSchema
33
-
34
- item = getattr(func, PARAMETRIZE_MARKER, None)
35
- # Comparison is needed to avoid false-positives when mocks are collected by pytest
36
- return isinstance(item, BaseSchema)
37
- except Exception:
38
- return False
39
-
40
-
41
- def fail_on_no_matches(node_id: str) -> NoReturn: # type: ignore
42
- pytest.fail(f"Test function {node_id} does not match any API operations and therefore has no effect")
43
-
44
-
45
- IGNORED_PATTERNS = (
46
- "Falsifying example: ",
47
- "Falsifying explicit example: ",
48
- "You can add @seed",
49
- "Failed to reproduce exception. Expected:",
50
- "Flaky example!",
51
- "Traceback (most recent call last):",
52
- "You can reproduce this example by temporarily",
53
- "Unreliable test timings",
54
- )
55
-
56
-
57
- @contextmanager
58
- def capture_hypothesis_output() -> Generator[list[str], None, None]:
59
- """Capture all output of Hypothesis into a list of strings.
60
-
61
- It allows us to have more granular control over Schemathesis output.
62
-
63
- Usage::
64
-
65
- @given(i=st.integers())
66
- def test(i):
67
- assert 0
68
-
69
- with capture_hypothesis_output() as output:
70
- test() # hypothesis test
71
- # output == ["Falsifying example: test(i=0)"]
72
- """
73
- output = []
74
-
75
- def get_output(value: str) -> None:
76
- # Drop messages that could be confusing in the Schemathesis context
77
- if value.startswith(IGNORED_PATTERNS):
78
- return
79
- output.append(value)
80
-
81
- # the following context manager is untyped
82
- with with_reporter(get_output): # type: ignore
83
- yield output
84
-
85
-
86
- GivenInput = Union[SearchStrategy, InferType]
87
- PARAMETRIZE_MARKER = "_schemathesis_test"
88
- GIVEN_ARGS_MARKER = "_schemathesis_given_args"
89
- GIVEN_KWARGS_MARKER = "_schemathesis_given_kwargs"
90
-
91
-
92
- def get_given_args(func: GenericTest) -> tuple:
93
- return getattr(func, GIVEN_ARGS_MARKER, ())
94
-
95
-
96
- def get_given_kwargs(func: GenericTest) -> dict[str, Any]:
97
- return getattr(func, GIVEN_KWARGS_MARKER, {})
98
-
99
-
100
- def is_given_applied(func: GenericTest) -> bool:
101
- return hasattr(func, GIVEN_ARGS_MARKER) or hasattr(func, GIVEN_KWARGS_MARKER)
102
-
103
-
104
- def given_proxy(*args: GivenInput, **kwargs: GivenInput) -> Callable[[GenericTest], GenericTest]:
105
- """Proxy Hypothesis strategies to ``hypothesis.given``."""
106
-
107
- def wrapper(func: GenericTest) -> GenericTest:
108
- if hasattr(func, GIVEN_ARGS_MARKER):
109
-
110
- def wrapped_test(*_: Any, **__: Any) -> NoReturn:
111
- raise UsageError(
112
- f"You have applied `given` to the `{func.__name__}` test more than once, which "
113
- "overrides the previous decorator. You need to pass all arguments to the same `given` call."
114
- )
115
-
116
- return wrapped_test
117
-
118
- setattr(func, GIVEN_ARGS_MARKER, args)
119
- setattr(func, GIVEN_KWARGS_MARKER, kwargs)
120
- return func
121
-
122
- return wrapper
123
-
124
-
125
- def merge_given_args(func: GenericTest, args: tuple, kwargs: dict[str, Any]) -> dict[str, Any]:
126
- """Merge positional arguments to ``@schema.given`` into a dictionary with keyword arguments.
127
-
128
- Kwargs are modified inplace.
129
- """
130
- if args:
131
- argspec = getfullargspec(func)
132
- for name, strategy in zip(reversed([arg for arg in argspec.args if arg != "case"]), reversed(args)):
133
- kwargs[name] = strategy
134
- return kwargs
135
-
136
-
137
- def validate_given_args(func: GenericTest, args: tuple, kwargs: dict[str, Any]) -> Callable | None:
138
- signature = get_signature(func)
139
- return is_invalid_test(func, signature, args, kwargs) # type: ignore
140
-
141
-
142
- def compose(*functions: Callable) -> Callable:
143
- """Compose multiple functions into a single one."""
144
-
145
- def composed(x: Any) -> Any:
146
- result = x
147
- for func in reversed(functions):
148
- result = func(result)
149
- return result
150
-
151
- return composed
152
-
153
-
154
- def skip(operation_name: str) -> NoReturn:
155
- raise SkipTest(f"It is not possible to generate negative test cases for `{operation_name}`")
156
-
157
-
158
- def _ensure_parent(path: PathLike, fail_silently: bool = True) -> None:
159
- # Try to create the parent dir
160
- try:
161
- Path(path).parent.mkdir(mode=0o755, parents=True, exist_ok=True)
162
- except OSError:
163
- if not fail_silently:
164
- raise
@@ -1,293 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: schemathesis
3
- Version: 3.39.15
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 <dmitry@dygalo.dev>
11
- Maintainer-email: Dmitry Dygalo <dmitry@dygalo.dev>
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 :: 3.13
29
- Classifier: Programming Language :: Python :: Implementation :: CPython
30
- Classifier: Topic :: Software Development :: Testing
31
- Requires-Python: >=3.8
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: harfile<1.0,>=0.3.0
36
- Requires-Dist: httpx<1.0,>=0.22.0
37
- Requires-Dist: hypothesis-graphql<1,>=0.11.1
38
- Requires-Dist: hypothesis-jsonschema<0.24,>=0.23.1
39
- Requires-Dist: hypothesis<7,>=6.103.4; python_version > '3.8'
40
- Requires-Dist: hypothesis[zoneinfo]<7,>=6.103.4; python_version == '3.8'
41
- Requires-Dist: jsonschema[format]<5.0,>=4.18.0
42
- Requires-Dist: junit-xml<2.0,>=1.9
43
- Requires-Dist: pyrate-limiter<4.0,>=2.10
44
- Requires-Dist: pytest-subtests<0.15.0,>=0.2.1
45
- Requires-Dist: pytest<9,>=4.6.4
46
- Requires-Dist: pyyaml<7.0,>=5.1
47
- Requires-Dist: requests<3,>=2.22
48
- Requires-Dist: starlette-testclient<1,>=0.4.1
49
- Requires-Dist: starlette<1,>=0.13
50
- Requires-Dist: tomli-w<2.0,>=1.0.0
51
- Requires-Dist: tomli<3.0,>=2.0.1
52
- Requires-Dist: werkzeug<4,>=0.16.0
53
- Requires-Dist: yarl<2.0,>=1.5
54
- Provides-Extra: bench
55
- Requires-Dist: pytest-codspeed==2.2.1; extra == 'bench'
56
- Provides-Extra: cov
57
- Requires-Dist: coverage-enable-subprocess; extra == 'cov'
58
- Requires-Dist: coverage[toml]>=5.3; extra == 'cov'
59
- Provides-Extra: dev
60
- Requires-Dist: aiohttp<4.0,>=3.9.1; extra == 'dev'
61
- Requires-Dist: coverage-enable-subprocess; extra == 'dev'
62
- Requires-Dist: coverage>=6; extra == 'dev'
63
- Requires-Dist: coverage[toml]>=5.3; extra == 'dev'
64
- Requires-Dist: fastapi>=0.86.0; extra == 'dev'
65
- Requires-Dist: flask<3.0,>=2.1.1; extra == 'dev'
66
- Requires-Dist: hypothesis-openapi<1,>=0.2; (python_version >= '3.10') and extra == 'dev'
67
- Requires-Dist: pydantic>=1.10.2; extra == 'dev'
68
- Requires-Dist: pytest-asyncio<1.0,>=0.18.0; extra == 'dev'
69
- Requires-Dist: pytest-codspeed==2.2.1; extra == 'dev'
70
- Requires-Dist: pytest-httpserver<2.0,>=1.0; extra == 'dev'
71
- Requires-Dist: pytest-mock<4.0,>=3.7.0; extra == 'dev'
72
- Requires-Dist: pytest-trio<1.0,>=0.8; extra == 'dev'
73
- Requires-Dist: pytest-xdist<4.0,>=3; extra == 'dev'
74
- Requires-Dist: sphinx; extra == 'dev'
75
- Requires-Dist: sphinx-click; extra == 'dev'
76
- Requires-Dist: sphinx-rtd-theme; extra == 'dev'
77
- Requires-Dist: strawberry-graphql[fastapi]>=0.109.0; extra == 'dev'
78
- Requires-Dist: syrupy<5.0,>=2; extra == 'dev'
79
- Requires-Dist: trustme<1.0,>=0.9.0; extra == 'dev'
80
- Provides-Extra: docs
81
- Requires-Dist: sphinx; extra == 'docs'
82
- Requires-Dist: sphinx-click; extra == 'docs'
83
- Requires-Dist: sphinx-rtd-theme; extra == 'docs'
84
- Provides-Extra: tests
85
- Requires-Dist: aiohttp<4.0,>=3.9.1; extra == 'tests'
86
- Requires-Dist: coverage>=6; extra == 'tests'
87
- Requires-Dist: fastapi>=0.86.0; extra == 'tests'
88
- Requires-Dist: flask<3.0,>=2.1.1; extra == 'tests'
89
- Requires-Dist: hypothesis-openapi<1,>=0.2; (python_version >= '3.10') and extra == 'tests'
90
- Requires-Dist: pydantic>=1.10.2; extra == 'tests'
91
- Requires-Dist: pytest-asyncio<1.0,>=0.18.0; extra == 'tests'
92
- Requires-Dist: pytest-httpserver<2.0,>=1.0; extra == 'tests'
93
- Requires-Dist: pytest-mock<4.0,>=3.7.0; extra == 'tests'
94
- Requires-Dist: pytest-trio<1.0,>=0.8; extra == 'tests'
95
- Requires-Dist: pytest-xdist<4.0,>=3; extra == 'tests'
96
- Requires-Dist: strawberry-graphql[fastapi]>=0.109.0; extra == 'tests'
97
- Requires-Dist: syrupy<5.0,>=2; extra == 'tests'
98
- Requires-Dist: trustme<1.0,>=0.9.0; extra == 'tests'
99
- Description-Content-Type: text/markdown
100
-
101
- <p align="center">
102
- <a href="https://github.com/schemathesis/schemathesis/actions" target="_blank">
103
- <img src="https://github.com/schemathesis/schemathesis/actions/workflows/build.yml/badge.svg" alt="Build">
104
- </a>
105
- <a href="https://codecov.io/gh/schemathesis/schemathesis/branch/master" target="_blank">
106
- <img src="https://codecov.io/gh/schemathesis/schemathesis/branch/master/graph/badge.svg" alt="Coverage">
107
- </a>
108
- <a href="https://pypi.org/project/schemathesis/" target="_blank">
109
- <img src="https://img.shields.io/pypi/v/schemathesis.svg" alt="Version">
110
- </a>
111
- <a href="https://pypi.org/project/schemathesis/" target="_blank">
112
- <img src="https://img.shields.io/pypi/pyversions/schemathesis.svg" alt="Python versions">
113
- </a>
114
- <a href="https://discord.gg/R9ASRAmHnA" target="_blank">
115
- <img src="https://img.shields.io/discord/938139740912369755" alt="Discord">
116
- </a>
117
- <a href="https://opensource.org/licenses/MIT" target="_blank">
118
- <img src="https://img.shields.io/pypi/l/schemathesis.svg" alt="License">
119
- </a>
120
- </p>
121
-
122
- ## Schemathesis
123
-
124
- Schemathesis is an API testing tool that automatically finds crashes and validates spec compliance.
125
-
126
- <p align="center">
127
- <img src="https://raw.githubusercontent.com/schemathesis/schemathesis/master/img/demo.gif" alt="Schemathesis Demo"/>
128
- </p>
129
-
130
- <p align="center">
131
- <i>Finding server crashes in the Demo API.</i>
132
- </p>
133
-
134
- ### Highlights
135
-
136
- 🎯 **Catches Hard-to-Find Bugs**
137
-
138
- - Uncover hidden crashes and edge cases that manual testing might miss
139
- - Identify spec violations and ensure your API adheres to its contract
140
-
141
- ⚡ **Accelerates Testing Cycles**
142
-
143
- - Automatically generate a wide range of test cases based on your API schema
144
- - Save time by reducing the need for manual test case creation
145
-
146
- 🧩 **Integrates Seamlessly**
147
-
148
- - Works with popular API formats such as OpenAPI, GraphQL.
149
- - Easily integrate into your existing CI/CD workflows.
150
-
151
- 🔧 **Customizable and Extendable**
152
-
153
- - Tune the testing process using Python extensions.
154
- - Adjust the testing flow to suit your needs with rich configuration options.
155
-
156
- 🐞 **Simplifies Debugging**
157
-
158
- - Get detailed reports to identify and fix issues quickly.
159
- - Reproduce failing test cases with cURL commands.
160
-
161
- 🔬 **Proven by Research**
162
-
163
- - Validated through academic studies on API testing automation
164
- - Featured in [ICSE 2022 paper](https://ieeexplore.ieee.org/document/9793781) on semantics-aware fuzzing
165
- - Recognized in [ACM survey](https://dl.acm.org/doi/10.1145/3617175) as state-of-the-art RESTful API testing tool
166
-
167
- ## Installation
168
-
169
- Use Schemathesis via Docker, or install it from [PyPI](https://pypi.org/project/schemathesis/)
170
-
171
- ```console
172
- # Via Docker.
173
- $ docker pull schemathesis/schemathesis:stable
174
-
175
- # With pip.
176
- $ pip install schemathesis
177
- ```
178
-
179
- ## Getting Started
180
-
181
- Schemathesis works as a standalone CLI:
182
-
183
- ```console
184
- docker run schemathesis/schemathesis:stable
185
- run --checks all https://example.schemathesis.io/openapi.json
186
- # Or when installed with pip
187
- schemathesis run --checks all https://example.schemathesis.io/openapi.json
188
- ```
189
-
190
- Or a Python library:
191
-
192
- ```python
193
- import schemathesis
194
-
195
- schema = schemathesis.from_uri("https://example.schemathesis.io/openapi.json")
196
-
197
-
198
- @schema.parametrize()
199
- def test_api(case):
200
- case.call_and_validate()
201
- ```
202
-
203
- See a complete working example project in the [/example](https://github.com/schemathesis/schemathesis/tree/master/example) directory.
204
-
205
- Schemathesis can be easily integrated into your CI/CD pipeline using GitHub Actions. Add this block to your GitHub Actions to run Schemathesis against your API:
206
-
207
- ```yaml
208
- api-tests:
209
- runs-on: ubuntu-latest
210
- steps:
211
- - uses: schemathesis/action@v1
212
- with:
213
- schema: "https://example.schemathesis.io/openapi.json"
214
- ```
215
-
216
- For more details, check out our [GitHub Action](https://github.com/schemathesis/action) repository.
217
-
218
- ## Who's Using Schemathesis?
219
-
220
- Schemathesis is used by a number of projects and companies, including direct usage or integration into other tools:
221
-
222
- - Abstract Machines ([Magistrala](https://github.com/absmach/magistrala))
223
- - Bundesstelle für Open Data ([smard-api](https://github.com/bundesAPI/smard-api))
224
- - [CheckMK](https://github.com/Checkmk/checkmk)
225
- - Chronosphere.io ([Calyptia](https://github.com/chronosphereio/calyptia-api))
226
- - HXSecurity ([DongTai](https://github.com/HXSecurity/DongTai))
227
- - Netflix ([Dispatch](https://github.com/Netflix/dispatch))
228
- - [Pixie](https://github.com/pixie-io/pixie)
229
- - [Qdrant](https://github.com/qdrant/qdrant)
230
- - Spotify ([Backstage](https://github.com/backstage/backstage))
231
- - [Weechat](https://github.com/weechat/weechat)
232
- - WordPress ([OpenVerse](https://github.com/WordPress/openverse))
233
-
234
- ## Testimonials
235
-
236
- "_The world needs modern, spec-based API tests, so we can deliver APIs as-designed. Schemathesis is the right tool for that job._"
237
-
238
- <div>Emmanuel Paraskakis - <strong>Level 250</strong></div>
239
-
240
- ---
241
-
242
- "_Schemathesis is the only sane way to thoroughly test an API._"
243
-
244
- <div>Zdenek Nemec - <strong>superface.ai</strong></div>
245
-
246
- ---
247
-
248
- "_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._"
249
-
250
- <div>Luděk Nový - <strong>JetBrains</strong></div>
251
-
252
- ---
253
-
254
- "_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._"
255
-
256
- <div>Dmitry Misharov - <strong>RedHat</strong></div>
257
-
258
- ---
259
-
260
- "_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._"
261
-
262
- <div>Testing RESTful APIs: A Survey - <strong>a research paper by Golmohammadi, at al</strong></div>
263
-
264
- ---
265
-
266
- ## Contributing
267
-
268
- We welcome contributions in code and are especially interested in learning about your use cases. Your input is essential for improving Schemathesis and directly influences future updates.
269
-
270
- ### How to Contribute
271
-
272
- 1. Discuss ideas and questions through [GitHub issues](https://github.com/schemathesis/schemathesis/issues) or on our [Discord channel](https://discord.gg/R9ASRAmHnA).
273
- 2. For code contributions, see our [contributing guidelines](https://github.com/schemathesis/schemathesis/blob/master/CONTRIBUTING.rst).
274
- 3. Share your experience and thoughts using [this feedback form](https://forms.gle/kJ4hSxc1Yp6Ga96t5).
275
-
276
- ### Why Your Input Matters
277
-
278
- - Enables us to develop useful features and fix bugs faster
279
- - Improves our test suite and documentation
280
-
281
- Thank you for contributing to making Schemathesis better! 👍
282
-
283
- ## Get in Touch
284
-
285
- If you need assistance with integrating Schemathesis into your workflows or have specific questions, feel free to reach out at <a href="mailto:support@schemathesis.io">support@schemathesis.io</a>.
286
-
287
- ## Acknowledgements
288
-
289
- Schemathesis is built on top of <a href="https://hypothesis.works/" target="_blank">Hypothesis</a>, a powerful property-based testing library for Python.
290
-
291
- ## License
292
-
293
- This project is licensed under the terms of the [MIT license](https://opensource.org/licenses/MIT).
@@ -1,160 +0,0 @@
1
- schemathesis/__init__.py,sha256=AGpMI329waZiHwU05CW7cB1cxqQsXvRPB5vs4N7ktB4,2090
2
- schemathesis/_compat.py,sha256=y4RZd59i2NCnZ91VQhnKeMn_8t3SgvLOk2Xm8nymUHY,1837
3
- schemathesis/_dependency_versions.py,sha256=pjEkkGAfOQJYNb-9UOo84V8nj_lKHr_TGDVdFwY2UU0,816
4
- schemathesis/_hypothesis.py,sha256=CEfWX38CsPy-RzwMGdKuJD9mY_AV8fIq_ZhabGp4tW0,30759
5
- schemathesis/_lazy_import.py,sha256=aMhWYgbU2JOltyWBb32vnWBb6kykOghucEzI_F70yVE,470
6
- schemathesis/_override.py,sha256=TAjYB3eJQmlw9K_xiR9ptt9Wj7if4U7UFlUhGjpBAoM,1625
7
- schemathesis/_patches.py,sha256=Hsbpn4UVeXUQD2Kllrbq01CSWsTYENWa0VJTyhX5C2k,895
8
- schemathesis/_rate_limiter.py,sha256=q_XWst5hzuAyXQRiZc4s_bx7-JlPYZM_yKDmeavt3oo,242
9
- schemathesis/_xml.py,sha256=qc2LydEwIqcSfgqQOJqiYicivA4YFJGKgCBOem_JqNc,8560
10
- schemathesis/auths.py,sha256=De97IS_iOlC36-jRhkZ2DUndjUpXYgsd8R-nA-iHn88,16837
11
- schemathesis/checks.py,sha256=YPUI1N5giGBy1072vd77e6HWelGAKrJUmJLEG4oqfF8,2630
12
- schemathesis/code_samples.py,sha256=rsdTo6ksyUs3ZMhqx0mmmkPSKUCFa--snIOYsXgZd80,4120
13
- schemathesis/constants.py,sha256=RHwog2lAz84qG6KCpP1U15A4a9w1xcwbgZ97aY4juQg,2555
14
- schemathesis/exceptions.py,sha256=5zjPlyVoQNJGbwufplL6ZVV7FEBPBNPHGdlQRJ7xnhE,20449
15
- schemathesis/failures.py,sha256=OsQM5FDs79usUM4MLA20WIDaoW6SKTR39IyKDjeiwtQ,8197
16
- schemathesis/filters.py,sha256=f3c_yXIBwIin-9Y0qU2TkcC1NEM_Mw34jGUHQc0BOyw,17026
17
- schemathesis/graphql.py,sha256=XiuKcfoOB92iLFC8zpz2msLkM0_V0TLdxPNBqrrGZ8w,216
18
- schemathesis/hooks.py,sha256=p5AXgjVGtka0jn9MOeyBaRUtNbqZTs4iaJqytYTacHc,14856
19
- schemathesis/lazy.py,sha256=Ddhkk7Tpc_VcRGYkCtKDmP2gpjxVmEZ3b01ZTNjbm8I,19004
20
- schemathesis/loaders.py,sha256=MoEhcdOEBJxNRn5X-ZNhWB9jZDHQQNpkNfEdQjf_NDw,4590
21
- schemathesis/models.py,sha256=8V3ZDTq2l45iFB-kE_NWb64iTy-hkf-hXCI-bIp4oxw,50010
22
- schemathesis/parameters.py,sha256=izlu4MFYT1RWrC4RBxrV6weeCal-ODbdLQLMb0PYCZY,2327
23
- schemathesis/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
24
- schemathesis/sanitization.py,sha256=Lycn1VVfula9B6XpzkxTHja7CZ7RHqbUh9kBic0Yi4M,9056
25
- schemathesis/schemas.py,sha256=kwgdRD7JdE0iovuZVqArQCf_Dqfo2CsqqWYeR_bgsZo,20526
26
- schemathesis/serializers.py,sha256=HyYVSVR71FhWfIErnH6OoGLOa4tkh9mTeVUTIpzEW24,11739
27
- schemathesis/targets.py,sha256=XIGRghvEzbmEJjse9aZgNEj67L3jAbiazm2rxURWgDE,2351
28
- schemathesis/throttling.py,sha256=aisUc4MJDGIOGUAs9L2DlWWpdd4KyAFuNVKhYoaUC9M,1719
29
- schemathesis/types.py,sha256=Tem2Q_zyMCd0Clp5iGKv6Fu13wdcbxVE8tCVH9WWt7A,1065
30
- schemathesis/utils.py,sha256=LwqxqoAKmRiAdj-qUbNmgQgsamc49V5lc5TnOIDuuMA,4904
31
- schemathesis/cli/__init__.py,sha256=jiDVw31fF8oNl0TyAWJpDo-166PkCqNV4t1rUcy_4oo,76352
32
- schemathesis/cli/__main__.py,sha256=MWaenjaUTZIfNPFzKmnkTiawUri7DVldtg3mirLwzU8,92
33
- schemathesis/cli/callbacks.py,sha256=UMCYPfoHXgxtT-uui0zlfeNoOLzteJu90q9ID3qt1m4,16540
34
- schemathesis/cli/cassettes.py,sha256=zji-B-uuwyr0Z0BzQX-DLMV6lWb58JtLExcUE1v3m4Y,20153
35
- schemathesis/cli/constants.py,sha256=wk-0GsoJIel8wFFerQ6Kf_6eAYUtIWkwMFwyAqv3yj4,1635
36
- schemathesis/cli/context.py,sha256=j_lvYQiPa6Q7P4P_IGCM9V2y2gJSpDbpxIIzR5oFB2I,2567
37
- schemathesis/cli/debug.py,sha256=_YA-bX1ujHl4bqQDEum7M-I2XHBTEGbvgkhvcvKhmgU,658
38
- schemathesis/cli/handlers.py,sha256=EXSAFe5TQlHANz1AVlSttfsoDT2oeaeFbqq1N7e2udw,467
39
- schemathesis/cli/junitxml.py,sha256=_psBdqGwH4OKySSWeva41mbgGLav86UnWhQyOt99gnU,5331
40
- schemathesis/cli/options.py,sha256=jPqJxkuAb91wtB_aOUFkGDdGtJ3UDwT2Nn3vvL-odsE,3062
41
- schemathesis/cli/reporting.py,sha256=KC3sxSc1u4aFQ-0Q8CQ3G4HTEl7QxlubGnJgNKmVJdQ,3627
42
- schemathesis/cli/sanitization.py,sha256=Onw_NWZSom6XTVNJ5NHnC0PAhrYAcGzIXJbsBCzLkn4,1005
43
- schemathesis/cli/output/__init__.py,sha256=AXaUzQ1nhQ-vXhW4-X-91vE2VQtEcCOrGtQXXNN55iQ,29
44
- schemathesis/cli/output/default.py,sha256=kRJPcZ5RL9Nsy9k4bSZaRtAezzPiHE6hybdNZLfrEhs,39071
45
- schemathesis/cli/output/short.py,sha256=CL6-Apxr5tuZ3BL1vecV1MiRY1wDt21g0wiUwZu6mLM,2607
46
- schemathesis/contrib/__init__.py,sha256=FH8NL8NXgSKBFOF8Jy_EB6T4CJEaiM-tmDhz16B2o4k,187
47
- schemathesis/contrib/unique_data.py,sha256=cTjJfoNpfLMobUzmGnm3k6kVrZcL34_FMPLlpDDsg4c,1249
48
- schemathesis/contrib/openapi/__init__.py,sha256=N-BoCzrLGq9aynubhmQBS-LJUBv1wPJcveMCJDhyQl4,217
49
- schemathesis/contrib/openapi/fill_missing_examples.py,sha256=SL3LXG4khjGKneU3aBu1MGIhYtwRMjK77NH8L--9JBE,583
50
- schemathesis/contrib/openapi/formats/__init__.py,sha256=OpHWPW8MkTLVv83QXPYY1HVLflhmSH49hSVefm1oVV0,111
51
- schemathesis/contrib/openapi/formats/uuid.py,sha256=PG7aV0QAQnQ1zKmKiDK3cJue3Xy-TLGzyMeCB_RQbgk,391
52
- schemathesis/experimental/__init__.py,sha256=0YVz037-Koc1OZ9Y5oYujc4if0gE9SdtfFlWnfzrWNo,3498
53
- schemathesis/extra/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
54
- schemathesis/extra/_aiohttp.py,sha256=-bIY0ucv7pfK3gA9PHiO4n7ajtZJJM9pS3EY3cLau9c,957
55
- schemathesis/extra/_flask.py,sha256=lpKQxg_kdEFo59Q8sV5T78IJYhgx6p4SCwIohJYSycw,345
56
- schemathesis/extra/_server.py,sha256=JFJTgJjpZu_eVZkI16rLaXJSv55Awbl7JNqegCLnQBg,541
57
- schemathesis/extra/pytest_plugin.py,sha256=3FF7pcqK26J__FGq6uOZdaD-1tZ-khQEwpdwb1ueFPc,12617
58
- schemathesis/fixups/__init__.py,sha256=RP5QYJVJhp8LXjhH89fCRaIVU26dHCy74jD9seoYMuc,967
59
- schemathesis/fixups/fast_api.py,sha256=mn-KzBqnR8jl4W5fY-_ZySabMDMUnpzCIESMHnlvE1c,1304
60
- schemathesis/fixups/utf8_bom.py,sha256=lWT9RNmJG8i-l5AXIpaCT3qCPUwRgzXPW3eoOjmZETA,745
61
- schemathesis/generation/__init__.py,sha256=PClFLK3bu-8Gsy71rgdD0ULMqySrzX-Um8Tan77x_5A,1628
62
- schemathesis/generation/_hypothesis.py,sha256=74fzLPHugZgMQXerWYFAMqCAjtAXz5E4gek7Gnkhli4,1756
63
- schemathesis/generation/_methods.py,sha256=r8oVlJ71_gXcnEhU-byw2E0R2RswQQFm8U7yGErSqbw,1204
64
- schemathesis/generation/coverage.py,sha256=bE93UnTpp8FsILzbupgqcc-1pQL5Y2DykuIlwWUweM4,41279
65
- schemathesis/internal/__init__.py,sha256=93HcdG3LF0BbQKbCteOsFMa1w6nXl8yTmx87QLNJOik,161
66
- schemathesis/internal/checks.py,sha256=ZPvsPJ7gWwK0IpzBFgOMaq4L2e0yfeC8qxPrnpauVFA,2741
67
- schemathesis/internal/copy.py,sha256=DcL56z-d69kKR_5u8mlHvjSL1UTyUKNMAwexrwHFY1s,1031
68
- schemathesis/internal/datetime.py,sha256=zPLBL0XXLNfP-KYel3H2m8pnsxjsA_4d-zTOhJg2EPQ,136
69
- schemathesis/internal/deprecation.py,sha256=XnzwSegbbdQyoTF1OGW_s9pdjIfN_Uzzdb2rfah1w2o,1261
70
- schemathesis/internal/diff.py,sha256=upGqM6s9WDT653wzxK_tqclFCxqkzB0j4wsO1foq5_k,466
71
- schemathesis/internal/extensions.py,sha256=h0aHRK_PTKfiAufkeBziegQS8537TL-Gr1hPW48q8Yc,790
72
- schemathesis/internal/jsonschema.py,sha256=-7tF15cXo1ZdhiRFYYfEClXihX2Svc5Loi_Dz1x201k,1157
73
- schemathesis/internal/output.py,sha256=zMaG5knIuBieVH8CrcmPJgbmQukDs2xdekX0BrK7BZs,1989
74
- schemathesis/internal/result.py,sha256=d449YvyONjqjDs-A5DAPgtAI96iT753K8sU6_1HLo2Q,461
75
- schemathesis/internal/transformation.py,sha256=M5LA4pFZC4nD_0iGfih1wLF3_q8xJas94Uuaymt-7Cw,690
76
- schemathesis/internal/validation.py,sha256=G7i8jIMUpAeOnDsDF_eWYvRZe_yMprRswx0QAtMPyEw,966
77
- schemathesis/runner/__init__.py,sha256=r8SoHc3X_wk5lfmt9P87gzv6nvbIowkQ2-WlT7fhReY,22182
78
- schemathesis/runner/events.py,sha256=cRKKSDvHvKLBIyFBz-J0JtAKshbGGKco9eaMyLCgzsY,11734
79
- schemathesis/runner/probes.py,sha256=no5AfO3kse25qvHevjeUfB0Q3C860V2AYzschUW3QMQ,5688
80
- schemathesis/runner/serialization.py,sha256=vZi1wd9HX9Swp9VJ_hZFeDgy3Y726URpHra-TbPvQhk,20762
81
- schemathesis/runner/impl/__init__.py,sha256=1E2iME8uthYPBh9MjwVBCTFV-P3fi7AdphCCoBBspjs,199
82
- schemathesis/runner/impl/context.py,sha256=KY06FXVOFQ6DBaa_FomSBXL81ULs3D21IW1u3yLqs1E,2434
83
- schemathesis/runner/impl/core.py,sha256=pB_0zs_MfzAcbrVvRU85mONAn8QXVqFfM_y7yV8a2l0,49962
84
- schemathesis/runner/impl/solo.py,sha256=y5QSxgK8nBCEjZVD5BpFvYUXmB6tEjk6TwxAo__NejA,2911
85
- schemathesis/runner/impl/threadpool.py,sha256=yNR5LYE8f3N_4t42OwSgy0_qdGgBPM7d11F9c9oEAAs,15075
86
- schemathesis/service/__init__.py,sha256=cDVTCFD1G-vvhxZkJUwiToTAEQ-0ByIoqwXvJBCf_V8,472
87
- schemathesis/service/auth.py,sha256=AiZXvSNwz1Hi3fn-OCp6XD-E4GAMDlfcX8fORJ8_dLo,445
88
- schemathesis/service/ci.py,sha256=3m9xSWFhrpWA6mI_8bXI7sspND9RSqXFM9UseO5nIiM,6782
89
- schemathesis/service/client.py,sha256=9h-y7-GGO3lsuOfSVSMKeHH8nw91rk3Bi06gr23r3E4,5222
90
- schemathesis/service/constants.py,sha256=Q1bhtLRkmhso4KSVAtWl0u446Wlbk3ShOL3ZdbPoJOM,1502
91
- schemathesis/service/events.py,sha256=YHhVB66bRODx2ZnG4vjE6lVg3LqzOrsMb8O8vtc8SpE,1294
92
- schemathesis/service/extensions.py,sha256=9TBvH762I4DKUQEE551oTH4cHRlVsRXBMDdMVwaFjQk,7805
93
- schemathesis/service/hosts.py,sha256=gg4xObk3G9p39bkmAvX3gJpZ3Anx-Fnwm9T03qov0LE,3161
94
- schemathesis/service/metadata.py,sha256=6CEyYbf2GkoqUHzC0U1br6DkrF12VBbjr8yhOfRZ0fM,2086
95
- schemathesis/service/models.py,sha256=nUf38yf2AK8-B56KHjviVlVe-fjos9Dp-M8YAWOIkrc,6572
96
- schemathesis/service/report.py,sha256=FHIlt0UcDQkwRlqsnURuBD7O6PdXlAMJlCdWdukIoiY,8302
97
- schemathesis/service/serialization.py,sha256=20APAy8CZ561agg4FP17PIEX8hB0LXtk_p7dpO1Z-JI,6278
98
- schemathesis/service/usage.py,sha256=UbXqxeDq5mAjKkfV4hApZsReZmQHXiqoXUYn_Z6YuZk,2438
99
- schemathesis/specs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
100
- schemathesis/specs/graphql/__init__.py,sha256=fgyHtvWNUVWismBTOqxQtgLoTighTfvMv6v6QCD_Oyc,85
101
- schemathesis/specs/graphql/_cache.py,sha256=7ras3q_InDJBPykgHroerl9f2jFamC8xJD35376Zs6I,795
102
- schemathesis/specs/graphql/loaders.py,sha256=-PUdzGiGo1BZWe9slaUmqeamMqCM6daq2lSrFblomCc,12339
103
- schemathesis/specs/graphql/nodes.py,sha256=bE3G1kNmqJ8OV4igBvIK-UORrkQA6Nofduf87O3TD9I,541
104
- schemathesis/specs/graphql/scalars.py,sha256=9tvLTiYVe8A_E8ASA0czz3Z0Mp9lyak7R4wHpAE_jKo,1805
105
- schemathesis/specs/graphql/schemas.py,sha256=6oTsg730KBswaeZK9EttVCxxk8FWV1JHjyiVzU6qXlQ,14445
106
- schemathesis/specs/graphql/validation.py,sha256=uINIOt-2E7ZuQV2CxKzwez-7L9tDtqzMSpnVoRWvxy0,1635
107
- schemathesis/specs/openapi/__init__.py,sha256=HDcx3bqpa6qWPpyMrxAbM3uTo0Lqpg-BUNZhDJSJKnw,279
108
- schemathesis/specs/openapi/_cache.py,sha256=PAiAu4X_a2PQgD2lG5H3iisXdyg4SaHpU46bRZvfNkM,4320
109
- schemathesis/specs/openapi/_hypothesis.py,sha256=nU8UDn1PzGCre4IVmwIuO9-CZv1KJe1fYY0d2BojhSo,22981
110
- schemathesis/specs/openapi/checks.py,sha256=cuHTZsoHV2fdUz23_F99-mLelT1xtvaiS9EcG7R-hZs,26897
111
- schemathesis/specs/openapi/constants.py,sha256=JqM_FHOenqS_MuUE9sxVQ8Hnw0DNM8cnKDwCwPLhID4,783
112
- schemathesis/specs/openapi/converter.py,sha256=Yxw9lS_JKEyi-oJuACT07fm04bqQDlAu-iHwzkeDvE4,3546
113
- schemathesis/specs/openapi/definitions.py,sha256=WTkWwCgTc3OMxfKsqh6YDoGfZMTThSYrHGp8h0vLAK0,93935
114
- schemathesis/specs/openapi/examples.py,sha256=fpZ8gzc1wxgpcUeOpIYaS_WOC-O0oPCLI4tcqmgNpog,21082
115
- schemathesis/specs/openapi/formats.py,sha256=3KtEC-8nQRwMErS-WpMadXsr8R0O-NzYwFisZqMuc-8,2761
116
- schemathesis/specs/openapi/links.py,sha256=C4Uir2P_EcpqME8ee_a1vdUM8Tm3ZcKNn2YsGjZiMUQ,17935
117
- schemathesis/specs/openapi/loaders.py,sha256=jlTYLoG5sVRh8xycIF2M2VDCZ44M80Sct07a_ycg1Po,25698
118
- schemathesis/specs/openapi/media_types.py,sha256=dNTxpRQbY3SubdVjh4Cjb38R6Bc9MF9BsRQwPD87x0g,1017
119
- schemathesis/specs/openapi/parameters.py,sha256=fP4BupY_1wFbjL9n0lTtpQZY0YBt2mCjrG598LF8ZOI,14712
120
- schemathesis/specs/openapi/patterns.py,sha256=L99UtslPvwObCVf5ndq3vL2YjQ7H1nMb-ZNMcyz_Qvk,12677
121
- schemathesis/specs/openapi/references.py,sha256=0-gqbAxvBfrvFXA7YqmcNh7zRY7V_pKEnak0ncwQljI,9894
122
- schemathesis/specs/openapi/schemas.py,sha256=bgtDwlHcXtw27bYx4mCj1GVnjO2ZazdMaWAxXESyo2I,54024
123
- schemathesis/specs/openapi/security.py,sha256=Z-6pk2Ga1PTUtBe298KunjVHsNh5A-teegeso7zcPIE,7138
124
- schemathesis/specs/openapi/serialization.py,sha256=rcZfqQbWer_RELedu4Sh5h_RhKYPWTfUjnmLwpP2R_A,11842
125
- schemathesis/specs/openapi/utils.py,sha256=ER4vJkdFVDIE7aKyxyYatuuHVRNutytezgE52pqZNE8,900
126
- schemathesis/specs/openapi/validation.py,sha256=Q9ThZlwU-mSz7ExDnIivnZGi1ivC5hlX2mIMRAM79kc,999
127
- schemathesis/specs/openapi/expressions/__init__.py,sha256=hFpJrIWbPi55GcIVjNFRDDUL8xmDu3mdbdldoHBoFJ0,1729
128
- schemathesis/specs/openapi/expressions/context.py,sha256=GsraXq4azVg4pn0vilc6P7zZjzUWvoO7VUqmshqvmeQ,350
129
- schemathesis/specs/openapi/expressions/errors.py,sha256=YLVhps-sYcslgVaahfcUYxUSHlIfWL-rQMeT5PZSMZ8,219
130
- schemathesis/specs/openapi/expressions/extractors.py,sha256=FK7NIFuZ3voqRwQ4Uz0wIX_tlXqP7fc4m6MG6EBUOok,526
131
- schemathesis/specs/openapi/expressions/lexer.py,sha256=LeVE6fgYT9-fIsXrv0-YrRHnI4VPisbwsexyh9Q5YU0,3982
132
- schemathesis/specs/openapi/expressions/nodes.py,sha256=UOVrK8fRHACv0T460CPSyO6OU5aeKnE2eKX4HF9SiFs,3990
133
- schemathesis/specs/openapi/expressions/parser.py,sha256=gM_Ob-TlTGxpgjZGRHNyPhBj1YAvRgRoSlNCrE7-djk,4452
134
- schemathesis/specs/openapi/negative/__init__.py,sha256=MG0tx3a7BYx0mVg0pjTojq1fLufMmd_x4zppR3oz-Mk,3739
135
- schemathesis/specs/openapi/negative/mutations.py,sha256=_BfeqOeqlEo8KuPuFLv3Z7kAR_9G7dvTtyMyMGlkp6o,19244
136
- schemathesis/specs/openapi/negative/types.py,sha256=a7buCcVxNBG6ILBM3A7oNTAX0lyDseEtZndBuej8MbI,174
137
- schemathesis/specs/openapi/negative/utils.py,sha256=ozcOIuASufLqZSgnKUACjX-EOZrrkuNdXX0SDnLoGYA,168
138
- schemathesis/specs/openapi/stateful/__init__.py,sha256=Iu77XE4iUuiz32UoYFqIe7H3yLEC4HKflG0ZX0JCyHg,9451
139
- schemathesis/specs/openapi/stateful/statistic.py,sha256=xV_I2Oy-H7K_53nedLMy0rR6kIEvgtXwnGl53UixDZQ,7441
140
- schemathesis/specs/openapi/stateful/types.py,sha256=DtxmxdvCbzlgoyecudXP84qF7NuCv3fRal3oJJs7eAU,456
141
- schemathesis/stateful/__init__.py,sha256=HBg-h131EI8IipHQgufSaXe-CrFTKmffPVsoEFjPUmE,5100
142
- schemathesis/stateful/config.py,sha256=huYzqDoD6x20p_VNAR79NgxPwUFO8UXoc3_z4BEuHqU,3586
143
- schemathesis/stateful/context.py,sha256=lpCOVhJEbPOp8F_Z_YvU5ptVTgaKJsllvI1NK28Dtvs,5085
144
- schemathesis/stateful/events.py,sha256=CyYvyQebOaeTn6UevaB7HXOrUhxCWbqXMfQ7pZK7fV8,6727
145
- schemathesis/stateful/runner.py,sha256=3tRRmWcXp5GCeRWGOtQ9-W0rxljoR06qSCKC4r7EQyY,12672
146
- schemathesis/stateful/sink.py,sha256=bHYlgh-fMwg1Srxk_XGs0-WV34YccotwH9PGrxCK57A,2474
147
- schemathesis/stateful/state_machine.py,sha256=EE1T0L21vBU0UHGiCmfPfIfnhU1WptB16h0t1iNVro0,13037
148
- schemathesis/stateful/statistic.py,sha256=2-uU5xpT9CbMulKgJWLZN6MUpC0Fskf5yXTt4ef4NFA,542
149
- schemathesis/stateful/validation.py,sha256=23qSZjC1_xRmtCX4OqsyG6pGxdlo6IZYid695ZpDQyU,3747
150
- schemathesis/transports/__init__.py,sha256=9ahByCU8HNCWX8zc6ngGFrkW4kAHJZKGc1fpajKGYJU,13308
151
- schemathesis/transports/asgi.py,sha256=bwW9vMd1h89Jh7I4jHJVwSNUQzHvc7-JOD5u4hSHZd8,212
152
- schemathesis/transports/auth.py,sha256=urSTO9zgFO1qU69xvnKHPFQV0SlJL3d7_Ojl0tLnZwo,1143
153
- schemathesis/transports/content_types.py,sha256=MiKOm-Hy5i75hrROPdpiBZPOTDzOwlCdnthJD12AJzI,2187
154
- schemathesis/transports/headers.py,sha256=hr_AIDOfUxsJxpHfemIZ_uNG3_vzS_ZeMEKmZjbYiBE,990
155
- schemathesis/transports/responses.py,sha256=OFD4ZLqwEFpo7F9vaP_SVgjhxAqatxIj38FS4XVq8Qs,1680
156
- schemathesis-3.39.15.dist-info/METADATA,sha256=_4VLl1QXjO3WQhtKtojjaD68tz6wGveA2s1CMwWteUE,11901
157
- schemathesis-3.39.15.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
158
- schemathesis-3.39.15.dist-info/entry_points.txt,sha256=VHyLcOG7co0nOeuk8WjgpRETk5P1E2iCLrn26Zkn5uk,158
159
- schemathesis-3.39.15.dist-info/licenses/LICENSE,sha256=PsPYgrDhZ7g9uwihJXNG-XVb55wj2uYhkl2DD8oAzY0,1103
160
- schemathesis-3.39.15.dist-info/RECORD,,
File without changes
File without changes
File without changes