schemathesis 4.0.0a3__py3-none-any.whl → 4.0.0a4__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.
- schemathesis/cli/__init__.py +3 -3
- schemathesis/cli/commands/run/__init__.py +148 -94
- schemathesis/cli/commands/run/context.py +72 -2
- schemathesis/cli/commands/run/executor.py +32 -12
- schemathesis/cli/commands/run/filters.py +1 -0
- schemathesis/cli/commands/run/handlers/cassettes.py +27 -46
- schemathesis/cli/commands/run/handlers/junitxml.py +1 -1
- schemathesis/cli/commands/run/handlers/output.py +72 -16
- schemathesis/cli/commands/run/hypothesis.py +30 -19
- schemathesis/cli/commands/run/reports.py +72 -0
- schemathesis/cli/commands/run/validation.py +18 -12
- schemathesis/cli/ext/groups.py +42 -13
- schemathesis/cli/ext/options.py +15 -8
- schemathesis/core/errors.py +79 -11
- schemathesis/core/failures.py +2 -1
- schemathesis/core/transforms.py +1 -1
- schemathesis/engine/errors.py +8 -3
- schemathesis/engine/phases/stateful/_executor.py +1 -1
- schemathesis/engine/phases/unit/__init__.py +2 -3
- schemathesis/engine/phases/unit/_executor.py +16 -13
- schemathesis/errors.py +6 -2
- schemathesis/filters.py +8 -0
- schemathesis/generation/coverage.py +6 -1
- schemathesis/generation/stateful/state_machine.py +49 -3
- schemathesis/pytest/lazy.py +2 -3
- schemathesis/pytest/plugin.py +2 -3
- schemathesis/schemas.py +1 -1
- schemathesis/specs/openapi/checks.py +27 -10
- schemathesis/specs/openapi/expressions/__init__.py +22 -6
- schemathesis/specs/openapi/expressions/nodes.py +15 -21
- schemathesis/specs/openapi/expressions/parser.py +1 -1
- schemathesis/specs/openapi/parameters.py +0 -2
- schemathesis/specs/openapi/schemas.py +13 -13
- schemathesis/specs/openapi/stateful/__init__.py +96 -23
- schemathesis/specs/openapi/{links.py → stateful/links.py} +60 -16
- {schemathesis-4.0.0a3.dist-info → schemathesis-4.0.0a4.dist-info}/METADATA +1 -1
- {schemathesis-4.0.0a3.dist-info → schemathesis-4.0.0a4.dist-info}/RECORD +40 -39
- {schemathesis-4.0.0a3.dist-info → schemathesis-4.0.0a4.dist-info}/WHEEL +0 -0
- {schemathesis-4.0.0a3.dist-info → schemathesis-4.0.0a4.dist-info}/entry_points.txt +0 -0
- {schemathesis-4.0.0a3.dist-info → schemathesis-4.0.0a4.dist-info}/licenses/LICENSE +0 -0
@@ -5,14 +5,13 @@ from functools import lru_cache
|
|
5
5
|
from typing import TYPE_CHECKING, Any, Callable, Generator, Literal, Union, cast
|
6
6
|
|
7
7
|
from schemathesis.core import NOT_SET, NotSet
|
8
|
-
from schemathesis.core.errors import
|
8
|
+
from schemathesis.core.errors import InvalidTransition, OperationNotFound, TransitionValidationError
|
9
9
|
from schemathesis.core.result import Err, Ok, Result
|
10
10
|
from schemathesis.generation.stateful.state_machine import ExtractedParam, StepOutput, Transition
|
11
11
|
from schemathesis.schemas import APIOperation
|
12
|
-
|
13
|
-
from . import
|
14
|
-
from .
|
15
|
-
from .references import RECURSION_DEPTH_LIMIT
|
12
|
+
from schemathesis.specs.openapi import expressions
|
13
|
+
from schemathesis.specs.openapi.constants import LOCATION_TO_CONTAINER
|
14
|
+
from schemathesis.specs.openapi.references import RECURSION_DEPTH_LIMIT
|
16
15
|
|
17
16
|
if TYPE_CHECKING:
|
18
17
|
from jsonschema import RefResolver
|
@@ -55,6 +54,7 @@ class OpenApiLink:
|
|
55
54
|
self.status_code = status_code
|
56
55
|
self.source = source
|
57
56
|
assert isinstance(source.schema, BaseOpenAPISchema)
|
57
|
+
errors = []
|
58
58
|
|
59
59
|
get_operation: Callable[[str], APIOperation]
|
60
60
|
if "operationId" in definition:
|
@@ -66,19 +66,30 @@ class OpenApiLink:
|
|
66
66
|
|
67
67
|
try:
|
68
68
|
self.target = get_operation(operation_reference)
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
69
|
+
target = self.target.label
|
70
|
+
except OperationNotFound:
|
71
|
+
target = operation_reference
|
72
|
+
errors.append(TransitionValidationError(f"Operation '{operation_reference}' not found"))
|
73
73
|
|
74
74
|
extension = definition.get(SCHEMATHESIS_LINK_EXTENSION)
|
75
|
-
self.parameters = self._normalize_parameters(definition.get("parameters", {}))
|
75
|
+
self.parameters = self._normalize_parameters(definition.get("parameters", {}), errors)
|
76
76
|
self.body = definition.get("requestBody", NOT_SET)
|
77
77
|
self.merge_body = extension.get("merge_body", True) if extension else True
|
78
78
|
|
79
|
+
if errors:
|
80
|
+
raise InvalidTransition(
|
81
|
+
name=self.name,
|
82
|
+
source=self.source.label,
|
83
|
+
target=target,
|
84
|
+
status_code=self.status_code,
|
85
|
+
errors=errors,
|
86
|
+
)
|
87
|
+
|
79
88
|
self._cached_extract = lru_cache(8)(self._extract_impl)
|
80
89
|
|
81
|
-
def _normalize_parameters(
|
90
|
+
def _normalize_parameters(
|
91
|
+
self, parameters: dict[str, str], errors: list[TransitionValidationError]
|
92
|
+
) -> list[NormalizedParameter]:
|
82
93
|
"""Process link parameters and resolve their container locations.
|
83
94
|
|
84
95
|
Handles both explicit locations (e.g., "path.id") and implicit ones resolved from target operation.
|
@@ -94,7 +105,34 @@ class OpenApiLink:
|
|
94
105
|
location = None
|
95
106
|
name = parameter
|
96
107
|
|
97
|
-
|
108
|
+
if isinstance(expression, str):
|
109
|
+
try:
|
110
|
+
parsed = expressions.parser.parse(expression)
|
111
|
+
# Find NonBodyRequest nodes that reference source parameters
|
112
|
+
for node in parsed:
|
113
|
+
if isinstance(node, expressions.nodes.NonBodyRequest):
|
114
|
+
# Check if parameter exists in source operation
|
115
|
+
if not any(
|
116
|
+
p.name == node.parameter and p.location == node.location
|
117
|
+
for p in self.source.iter_parameters()
|
118
|
+
):
|
119
|
+
errors.append(
|
120
|
+
TransitionValidationError(
|
121
|
+
f"Expression `{expression}` references non-existent {node.location} parameter "
|
122
|
+
f"`{node.parameter}` in `{self.source.label}`"
|
123
|
+
)
|
124
|
+
)
|
125
|
+
except Exception as exc:
|
126
|
+
errors.append(TransitionValidationError(str(exc)))
|
127
|
+
|
128
|
+
if hasattr(self, "target"):
|
129
|
+
try:
|
130
|
+
container_name = self._get_parameter_container(location, name)
|
131
|
+
except TransitionValidationError as exc:
|
132
|
+
errors.append(exc)
|
133
|
+
continue
|
134
|
+
else:
|
135
|
+
continue
|
98
136
|
result.append(NormalizedParameter(location, name, expression, container_name))
|
99
137
|
return result
|
100
138
|
|
@@ -106,7 +144,7 @@ class OpenApiLink:
|
|
106
144
|
for param in self.target.iter_parameters():
|
107
145
|
if param.name == name:
|
108
146
|
return LOCATION_TO_CONTAINER[param.location]
|
109
|
-
raise
|
147
|
+
raise TransitionValidationError(f"Parameter `{name}` is not defined in API operation `{self.target.label}`")
|
110
148
|
|
111
149
|
def extract(self, output: StepOutput) -> Transition:
|
112
150
|
return self._cached_extract(StepOutputWrapper(output))
|
@@ -114,7 +152,7 @@ class OpenApiLink:
|
|
114
152
|
def _extract_impl(self, wrapper: StepOutputWrapper) -> Transition:
|
115
153
|
output = wrapper.output
|
116
154
|
return Transition(
|
117
|
-
id=f"{self.source.label}
|
155
|
+
id=f"{self.source.label} -> [{self.status_code}] {self.name} -> {self.target.label}",
|
118
156
|
parent_id=output.case.id,
|
119
157
|
parameters=self.extract_parameters(output),
|
120
158
|
request_body=self.extract_body(output),
|
@@ -162,11 +200,17 @@ class StepOutputWrapper:
|
|
162
200
|
return self.output.case.id == other.output.case.id
|
163
201
|
|
164
202
|
|
165
|
-
def get_all_links(
|
203
|
+
def get_all_links(
|
204
|
+
operation: APIOperation,
|
205
|
+
) -> Generator[tuple[str, Result[OpenApiLink, InvalidTransition]], None, None]:
|
166
206
|
for status_code, definition in operation.definition.raw["responses"].items():
|
167
207
|
definition = operation.schema.resolver.resolve_all(definition, RECURSION_DEPTH_LIMIT - 8) # type: ignore[attr-defined]
|
168
208
|
for name, link_definition in definition.get(operation.schema.links_field, {}).items(): # type: ignore
|
169
|
-
|
209
|
+
try:
|
210
|
+
link = OpenApiLink(name, status_code, link_definition, operation)
|
211
|
+
yield status_code, Ok(link)
|
212
|
+
except InvalidTransition as exc:
|
213
|
+
yield status_code, Err(exc)
|
170
214
|
|
171
215
|
|
172
216
|
StatusCode = Union[str, int]
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: schemathesis
|
3
|
-
Version: 4.0.
|
3
|
+
Version: 4.0.0a4
|
4
4
|
Summary: Property-based testing framework for Open API and GraphQL based apps
|
5
5
|
Project-URL: Documentation, https://schemathesis.readthedocs.io/en/stable/
|
6
6
|
Project-URL: Changelog, https://schemathesis.readthedocs.io/en/stable/changelog.html
|
@@ -1,35 +1,36 @@
|
|
1
1
|
schemathesis/__init__.py,sha256=ggp1CxctLo__wwFwlDhvtrexxDXGSbRjFKzXw_Twi7k,1139
|
2
2
|
schemathesis/auths.py,sha256=t-YuPyoLqL7jlRUH-45JxO7Ir3pYxpe31CRmNIJh7rI,15423
|
3
3
|
schemathesis/checks.py,sha256=B5-ROnjvvwpaqgj_iQ7eCjGqvRRVT30eWNPLKmwdrM8,5084
|
4
|
-
schemathesis/errors.py,sha256=
|
5
|
-
schemathesis/filters.py,sha256=
|
4
|
+
schemathesis/errors.py,sha256=VSZ-h9Bt7QvrvywOGB-MoHCshR8OWJegYlBxfVh5Vuw,899
|
5
|
+
schemathesis/filters.py,sha256=CzVPnNSRLNgvLlU5_WssPEC0wpdQi0dMvDpHSQbAlkE,13577
|
6
6
|
schemathesis/hooks.py,sha256=jTdN5GJbxHRMshxgcuI_th9ouuL32CN4m2Jt0pmT_bs,13148
|
7
7
|
schemathesis/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
8
|
-
schemathesis/schemas.py,sha256=
|
9
|
-
schemathesis/cli/__init__.py,sha256=
|
8
|
+
schemathesis/schemas.py,sha256=Hs2pJTUa2Od3x5YRprrKYIfE7ndpKbAqeDylAWkB6yM,27407
|
9
|
+
schemathesis/cli/__init__.py,sha256=U9gjzWWpiFhaqevPjZbwyTNjABdpvXETI4HgwdGKnvs,877
|
10
10
|
schemathesis/cli/__main__.py,sha256=MWaenjaUTZIfNPFzKmnkTiawUri7DVldtg3mirLwzU8,92
|
11
11
|
schemathesis/cli/constants.py,sha256=rUixnqorraUFDtOu3Nmm1x_k0qbgmW9xW96kQB_fBCQ,338
|
12
12
|
schemathesis/cli/core.py,sha256=Qm5xvpIIMwJDTeR3N3TjKhMCHV5d5Rp0UstVS2GjWgw,459
|
13
13
|
schemathesis/cli/hooks.py,sha256=vTrA8EN99whRns5K5AnExViQ6WL9cak5RGsC-ZBEiJM,1458
|
14
14
|
schemathesis/cli/commands/__init__.py,sha256=FFalEss3D7mnCRO0udtYb65onXSjQCCOv8sOSjqvTTM,1059
|
15
|
-
schemathesis/cli/commands/run/__init__.py,sha256=
|
15
|
+
schemathesis/cli/commands/run/__init__.py,sha256=5hxw_Xxn8cleTFF6eUBxeQBBW1Ztlmi3BLPCsAA_fqg,23871
|
16
16
|
schemathesis/cli/commands/run/checks.py,sha256=-p6bzuc98kNR1VhkTI2s4xaJx-b5zYSMwdlhONwUhRM,3337
|
17
|
-
schemathesis/cli/commands/run/context.py,sha256=
|
17
|
+
schemathesis/cli/commands/run/context.py,sha256=fXt7kMZc-O1cddknb_NCs23SP7JZ05eVhEn00TxXass,7187
|
18
18
|
schemathesis/cli/commands/run/events.py,sha256=Dj-xvIr-Hkms8kvh4whNwKSk1Q2Hx4NIENi_4A8nQO8,1224
|
19
|
-
schemathesis/cli/commands/run/executor.py,sha256=
|
20
|
-
schemathesis/cli/commands/run/filters.py,sha256=
|
21
|
-
schemathesis/cli/commands/run/hypothesis.py,sha256=
|
19
|
+
schemathesis/cli/commands/run/executor.py,sha256=AbLqlTBsbIFNoTlUZZTcChAmCeA-1iony-XgQU8g6Gw,5405
|
20
|
+
schemathesis/cli/commands/run/filters.py,sha256=MdymOZtzOolvXCNBIdfHbBbWEXVF7Se0mmDpy3sVWu4,7411
|
21
|
+
schemathesis/cli/commands/run/hypothesis.py,sha256=kUPm8W5JB2Njt9ZvrWsrskwx33n3qYh6Xqkp0YBGY_0,4000
|
22
22
|
schemathesis/cli/commands/run/loaders.py,sha256=VedoeIE1tgFBqVokWxOoUReAjBl-Zhx87RjCEBtCVfs,4840
|
23
|
-
schemathesis/cli/commands/run/
|
23
|
+
schemathesis/cli/commands/run/reports.py,sha256=OjyakiV0lpNDBZb1xsb_2HmLtcqhTThPYMpJGXyNNO8,2147
|
24
|
+
schemathesis/cli/commands/run/validation.py,sha256=7fvLeDREQ9FTV8ZMJRnCdycD858j21k7j56ow4_iIcY,12789
|
24
25
|
schemathesis/cli/commands/run/handlers/__init__.py,sha256=TPZ3KdGi8m0fjlN0GjA31MAXXn1qI7uU4FtiDwroXZI,1915
|
25
26
|
schemathesis/cli/commands/run/handlers/base.py,sha256=yDsTtCiztLksfk7cRzg8JlaAVOfS-zwK3tsJMOXAFyc,530
|
26
|
-
schemathesis/cli/commands/run/handlers/cassettes.py,sha256=
|
27
|
-
schemathesis/cli/commands/run/handlers/junitxml.py,sha256=
|
28
|
-
schemathesis/cli/commands/run/handlers/output.py,sha256=
|
27
|
+
schemathesis/cli/commands/run/handlers/cassettes.py,sha256=SVk13xPhsQduCpgvvBwzEMDNTju-SHQCW90xTQ6iL1U,18525
|
28
|
+
schemathesis/cli/commands/run/handlers/junitxml.py,sha256=c24UiwXqRCnv2eWQWEaNXLOghMI9JtGoZ9RTJY4ao6M,2350
|
29
|
+
schemathesis/cli/commands/run/handlers/output.py,sha256=O95Ap8_HtnNtNPf9kaV-rNa7mGG6_A06ySlMUhgNwVg,54505
|
29
30
|
schemathesis/cli/ext/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
30
31
|
schemathesis/cli/ext/fs.py,sha256=OA3mRzra4rq3NyDTcBvlRh0WJrh4ByN-QQ8loI04m88,408
|
31
|
-
schemathesis/cli/ext/groups.py,sha256=
|
32
|
-
schemathesis/cli/ext/options.py,sha256=
|
32
|
+
schemathesis/cli/ext/groups.py,sha256=kQ37t6qeArcKaY2y5VxyK3_KwAkBKCVm58IYV8gewds,2720
|
33
|
+
schemathesis/cli/ext/options.py,sha256=gBjfYPoiSoxCymWq41x0oKcQ2frv1fQnweETVpYiIsA,4096
|
33
34
|
schemathesis/contrib/__init__.py,sha256=wxpX86xrEGRAS3f7eugQfKVbnqV6ZfOqFBS_DmWxOok,120
|
34
35
|
schemathesis/contrib/openapi/__init__.py,sha256=-7mBZ9RQj0EGzzmC-HKiT5ZslwHcoWFqCVpRG0GHO_o,162
|
35
36
|
schemathesis/contrib/openapi/fill_missing_examples.py,sha256=BfBpuy3vCKbE_uILqPXnm7kxEDopAr5tNQwP5E9xX8A,585
|
@@ -38,8 +39,8 @@ schemathesis/core/compat.py,sha256=Lflo6z-nQ6S4uKZINc4Fr90pd3LTN6cIG9HJJmmaHeY,7
|
|
38
39
|
schemathesis/core/control.py,sha256=IzwIc8HIAEMtZWW0Q0iXI7T1niBpjvcLlbuwOSmy5O8,130
|
39
40
|
schemathesis/core/curl.py,sha256=yuaCe_zHLGwUjEeloQi6W3tOA3cGdnHDNI17-5jia0o,1723
|
40
41
|
schemathesis/core/deserialization.py,sha256=ygIj4fNaOd0mJ2IvTsn6bsabBt_2AbSLCz-z9UqfpdQ,2406
|
41
|
-
schemathesis/core/errors.py,sha256=
|
42
|
-
schemathesis/core/failures.py,sha256=
|
42
|
+
schemathesis/core/errors.py,sha256=97Fk3udsMaS5xZrco7ZaShqe4W6g2aZ55J7d58HPRac,15881
|
43
|
+
schemathesis/core/failures.py,sha256=jbbxOXB8LDYoLI97YrLCKi9XLuSqVqFJSLeeixVJPRU,8828
|
43
44
|
schemathesis/core/fs.py,sha256=ItQT0_cVwjDdJX9IiI7EnU75NI2H3_DCEyyUjzg_BgI,472
|
44
45
|
schemathesis/core/lazy_import.py,sha256=aMhWYgbU2JOltyWBb32vnWBb6kykOghucEzI_F70yVE,470
|
45
46
|
schemathesis/core/loaders.py,sha256=SQQ-8m64-D2FaOgvwKZLyTtLJuzP3RPo7Ud2BERK1c0,3404
|
@@ -48,7 +49,7 @@ schemathesis/core/media_types.py,sha256=vV0CEu34sDoZWXvu4R1Y1HosxVS4YXZV8iTov8fU
|
|
48
49
|
schemathesis/core/rate_limit.py,sha256=7tg9Znk11erTfw8-ANutjEmu7hbfUHZx_iEdkoaP174,1757
|
49
50
|
schemathesis/core/registries.py,sha256=T4jZB4y3zBHdeSgQc0pRbgSeMblvO-6z4I3zmzIfTi0,811
|
50
51
|
schemathesis/core/result.py,sha256=d449YvyONjqjDs-A5DAPgtAI96iT753K8sU6_1HLo2Q,461
|
51
|
-
schemathesis/core/transforms.py,sha256=
|
52
|
+
schemathesis/core/transforms.py,sha256=63aeLkR93r3krq4CwYtDcoS_pFBky4L16c9DcFsBHuE,3535
|
52
53
|
schemathesis/core/transport.py,sha256=VqtVF4JxMuPXSBORzS8SOSLUnCEZL6gPOr0kuymMCAk,3249
|
53
54
|
schemathesis/core/validation.py,sha256=JJbSymYUKKcbkY2L3nECKrbIVUb9PRyUsTqa-aeDEAw,1153
|
54
55
|
schemathesis/core/version.py,sha256=O-6yFbNocbD4RDwiBZLborxTp54htyKxBWTqpZDnPvg,202
|
@@ -59,21 +60,21 @@ schemathesis/engine/config.py,sha256=vWwtaWuSLvE-w0S9n4_MlJADjN58zlgSp84ZQS2z0ls
|
|
59
60
|
schemathesis/engine/context.py,sha256=HeLX-0aqSAbXJe_ZlkqVfg3QlhmbCrazbb9-ZPbi0h0,3723
|
60
61
|
schemathesis/engine/control.py,sha256=QKUOs5VMphe7EcAIro_DDo9ZqdOU6ZVwTU1gMNndHWw,1006
|
61
62
|
schemathesis/engine/core.py,sha256=_Z89tc_aWQ0kHajVXmoTaEbIRYeERvb1s0rD82XpYxg,5085
|
62
|
-
schemathesis/engine/errors.py,sha256=
|
63
|
+
schemathesis/engine/errors.py,sha256=8PHYsuq2qIEJHm2FDf_UnWa4IDc-DRFTPckLAr22yhE,16895
|
63
64
|
schemathesis/engine/events.py,sha256=7tpxCxptKx_WvcFgv9_6v0E-5wiQfDs1O5bsOH46xb8,5989
|
64
65
|
schemathesis/engine/recorder.py,sha256=K3HfMARrT5mPWXPnYebjjcq5CcsBRhMrtZwEL9_Lvtg,8432
|
65
66
|
schemathesis/engine/phases/__init__.py,sha256=HZmlOjGvtDkfTwAw2rJFcfsJ2qg2h973l4zDy3AzsQg,2034
|
66
67
|
schemathesis/engine/phases/probes.py,sha256=3M9g3E7CXbDDK_8inuvkRZibCCcoO2Ce5U3lnyTeWXQ,5131
|
67
68
|
schemathesis/engine/phases/stateful/__init__.py,sha256=lWo2RLrutNblHvohTzofQqL22GORwBRA8bf6jvLuGPg,2391
|
68
|
-
schemathesis/engine/phases/stateful/_executor.py,sha256=
|
69
|
+
schemathesis/engine/phases/stateful/_executor.py,sha256=m1ZMqFUPc4Hdql10l0gF3tpP4JOImSA-XeBd4jg3Ll8,12443
|
69
70
|
schemathesis/engine/phases/stateful/context.py,sha256=SKWsok-tlWbUDagiUmP7cLNW6DsgFDc_Afv0vQfWv6c,2964
|
70
|
-
schemathesis/engine/phases/unit/__init__.py,sha256=
|
71
|
-
schemathesis/engine/phases/unit/_executor.py,sha256=
|
71
|
+
schemathesis/engine/phases/unit/__init__.py,sha256=R6ZLed54p_kXUE_tVF60ucj8J6V04--Tf6smm4qavFg,7468
|
72
|
+
schemathesis/engine/phases/unit/_executor.py,sha256=LjdR6pcvtqCV3nXszU_IOBtR-lnRGKg0aLGDwz9PRVM,13016
|
72
73
|
schemathesis/engine/phases/unit/_pool.py,sha256=01xRGJnmfLqGBH-f3nQEDv7vOufmen5ZCiXwNLpkxOw,2210
|
73
74
|
schemathesis/experimental/__init__.py,sha256=36H1vLQhrw4SMD_jx76Wt07PHneELRDY1jfBSh7VxU0,2257
|
74
75
|
schemathesis/generation/__init__.py,sha256=2htA0TlQee6AvQmLl1VNxEptRDqvPjksXKJLMVLAJng,1580
|
75
76
|
schemathesis/generation/case.py,sha256=Rt5MCUtPVYVQzNyjUx8magocPJpHV1svyuqQSTwUE-I,7306
|
76
|
-
schemathesis/generation/coverage.py,sha256=
|
77
|
+
schemathesis/generation/coverage.py,sha256=hyDb465tBoCWE7nI-ZJjhTUzk7f2WDufaadWdSAkdr0,39276
|
77
78
|
schemathesis/generation/meta.py,sha256=36h6m4E7jzLGa8TCvl7eBl_xUWLiRul3qxzexl5cB58,2515
|
78
79
|
schemathesis/generation/modes.py,sha256=t_EvKr2aOXYMsEfdMu4lLF4KCGcX1LVVyvzTkcpJqhk,663
|
79
80
|
schemathesis/generation/overrides.py,sha256=FhqcFoliEvgW6MZyFPYemfLgzKt3Miy8Cud7OMOCb7g,3045
|
@@ -85,7 +86,7 @@ schemathesis/generation/hypothesis/given.py,sha256=sTZR1of6XaHAPWtHx2_WLlZ50M8D5
|
|
85
86
|
schemathesis/generation/hypothesis/reporting.py,sha256=uDVow6Ya8YFkqQuOqRsjbzsbyP4KKfr3jA7ZaY4FuKY,279
|
86
87
|
schemathesis/generation/hypothesis/strategies.py,sha256=RurE81E06d99YKG48dizy9346ayfNswYTt38zewmGgw,483
|
87
88
|
schemathesis/generation/stateful/__init__.py,sha256=kXpCGbo1-QqfR2N0Z07tLw0Z5_tvbuG3Tk-WI_I1doI,653
|
88
|
-
schemathesis/generation/stateful/state_machine.py,sha256=
|
89
|
+
schemathesis/generation/stateful/state_machine.py,sha256=3NoB3pYd3BZ0XzlQlhCf8WBCMGttJw25DWCTDsuulGc,12306
|
89
90
|
schemathesis/graphql/__init__.py,sha256=_eO6MAPHGgiADVGRntnwtPxmuvk666sAh-FAU4cG9-0,326
|
90
91
|
schemathesis/graphql/checks.py,sha256=IADbxiZjgkBWrC5yzHDtohRABX6zKXk5w_zpWNwdzYo,3186
|
91
92
|
schemathesis/graphql/loaders.py,sha256=96R_On1jFvsNuLwqXnO3_TTpsYhdCv0LAmR5jWRXXnY,4756
|
@@ -96,9 +97,9 @@ schemathesis/openapi/generation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm
|
|
96
97
|
schemathesis/openapi/generation/filters.py,sha256=MB2t_k6OVc2Rt6qXUrV-u-3sDg5wX6c0Mli9WgfMUF4,2001
|
97
98
|
schemathesis/pytest/__init__.py,sha256=7W0q-Thcw03IAQfXE_Mo8JPZpUdHJzfu85fjK1ZdfQM,88
|
98
99
|
schemathesis/pytest/control_flow.py,sha256=F8rAPsPeNv_sJiJgbZYtTpwKWjauZmqFUaKroY2GmQI,217
|
99
|
-
schemathesis/pytest/lazy.py,sha256=
|
100
|
+
schemathesis/pytest/lazy.py,sha256=tPW8_VfMWy4vqk-XgzswqvL9jCYxhIyYieq1HFf4UTw,10480
|
100
101
|
schemathesis/pytest/loaders.py,sha256=oQJ78yyuIm3Ye9X7giVjDB1vYfaW5UY5YuhaTLm_ZFU,266
|
101
|
-
schemathesis/pytest/plugin.py,sha256=
|
102
|
+
schemathesis/pytest/plugin.py,sha256=kon8stIVLCySkeyTTk0gBunEs5sUkXwQY8Nviwb-dxA,12303
|
102
103
|
schemathesis/python/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
103
104
|
schemathesis/python/asgi.py,sha256=5PyvuTBaivvyPUEi3pwJni91K1kX5Zc0u9c6c1D8a1Q,287
|
104
105
|
schemathesis/python/wsgi.py,sha256=uShAgo_NChbfYaV1117e6UHp0MTg7jaR0Sy_to3Jmf8,219
|
@@ -112,41 +113,41 @@ schemathesis/specs/graphql/validation.py,sha256=-W1Noc1MQmTb4RX-gNXMeU2qkgso4mzV
|
|
112
113
|
schemathesis/specs/openapi/__init__.py,sha256=C5HOsfuDJGq_3mv8CRBvRvb0Diy1p0BFdqyEXMS-loE,238
|
113
114
|
schemathesis/specs/openapi/_cache.py,sha256=HpglmETmZU0RCHxp3DO_sg5_B_nzi54Zuw9vGzzYCxY,4295
|
114
115
|
schemathesis/specs/openapi/_hypothesis.py,sha256=n_39iyz1rt2EdSe-Lyr-3sOIEyJIthnCVR4tGUUvH1c,21328
|
115
|
-
schemathesis/specs/openapi/checks.py,sha256=
|
116
|
+
schemathesis/specs/openapi/checks.py,sha256=Fk2_2MdKjhMuHGkWtm_lu_8c8DenF9ttZfDGN9nPnj0,27697
|
116
117
|
schemathesis/specs/openapi/constants.py,sha256=JqM_FHOenqS_MuUE9sxVQ8Hnw0DNM8cnKDwCwPLhID4,783
|
117
118
|
schemathesis/specs/openapi/converter.py,sha256=lil8IewM5j8tvt4lpA9g_KITvIwx1M96i45DNSHNjoc,3505
|
118
119
|
schemathesis/specs/openapi/definitions.py,sha256=8htclglV3fW6JPBqs59lgM4LnA25Mm9IptXBPb_qUT0,93949
|
119
120
|
schemathesis/specs/openapi/examples.py,sha256=Uy6naFBq-m1vo_18j4KuZBUYc9qKrBk19jBCWT7tnRg,20464
|
120
121
|
schemathesis/specs/openapi/formats.py,sha256=ViVF3aFeFI1ctwGQbiRDXhU3so82P0BCaF2aDDbUUm8,2816
|
121
|
-
schemathesis/specs/openapi/links.py,sha256=eVlZVnlIcBUSSnYEEb_Bes3tfY5F_BNsOo0IZCBb-io,9452
|
122
122
|
schemathesis/specs/openapi/media_types.py,sha256=ADedOaNWjbAtAekyaKmNj9fY6zBTeqcNqBEjN0EWNhI,1014
|
123
|
-
schemathesis/specs/openapi/parameters.py,sha256=
|
123
|
+
schemathesis/specs/openapi/parameters.py,sha256=hv1reNpSjVuzFbtMpSTwWZ75zcWTOy5ZE0ah6AVEqAo,14565
|
124
124
|
schemathesis/specs/openapi/patterns.py,sha256=6qNZRYQkHtJ98_JMjwhqIGpeR4aR7rlxcCmr1nOHMzk,11258
|
125
125
|
schemathesis/specs/openapi/references.py,sha256=YjD1xMlaYS7xLt6PrrVS20R72ZWHuFZFTa8Llzf54Rg,8808
|
126
|
-
schemathesis/specs/openapi/schemas.py,sha256=
|
126
|
+
schemathesis/specs/openapi/schemas.py,sha256=VSeacEAVJJ6EKJ-llwOaX4aalzUTXyWP8s4wbxTqtWc,54720
|
127
127
|
schemathesis/specs/openapi/security.py,sha256=6UWYMhL-dPtkTineqqBFNKca1i4EuoTduw-EOLeE0aQ,7149
|
128
128
|
schemathesis/specs/openapi/serialization.py,sha256=JFxMqCr8YWwPT4BVrbvVytcAmkzGXyL1_Q1xR1JKBPs,11464
|
129
129
|
schemathesis/specs/openapi/utils.py,sha256=ER4vJkdFVDIE7aKyxyYatuuHVRNutytezgE52pqZNE8,900
|
130
|
-
schemathesis/specs/openapi/expressions/__init__.py,sha256=
|
130
|
+
schemathesis/specs/openapi/expressions/__init__.py,sha256=hfuRtXD75tQFhzSo6QgDZ3zByyWeZRKevB8edszAVj4,2272
|
131
131
|
schemathesis/specs/openapi/expressions/errors.py,sha256=YLVhps-sYcslgVaahfcUYxUSHlIfWL-rQMeT5PZSMZ8,219
|
132
132
|
schemathesis/specs/openapi/expressions/extractors.py,sha256=Py3of3_vBACP4ljiZIcgd-xQCrWIpcMsfQFc0EtAUoA,470
|
133
133
|
schemathesis/specs/openapi/expressions/lexer.py,sha256=LeVE6fgYT9-fIsXrv0-YrRHnI4VPisbwsexyh9Q5YU0,3982
|
134
|
-
schemathesis/specs/openapi/expressions/nodes.py,sha256=
|
135
|
-
schemathesis/specs/openapi/expressions/parser.py,sha256=
|
134
|
+
schemathesis/specs/openapi/expressions/nodes.py,sha256=YvpbAi8OFdb6RqqrqReGBeADpAmFaoyWN-lGiyYOXTc,4072
|
135
|
+
schemathesis/specs/openapi/expressions/parser.py,sha256=e-ZxshrGE_5CVbgcZLYgdGSjdifgyzgKkLQp0dI0cJY,4503
|
136
136
|
schemathesis/specs/openapi/negative/__init__.py,sha256=60QqVBTXPTsAojcf7GDs7v8WbOE_k3g_VC_DBeQUqBw,3749
|
137
137
|
schemathesis/specs/openapi/negative/mutations.py,sha256=7jTjD9rt5vxWSVBL5Hx8Avj4WhTA63frDQiFMKysrUU,19248
|
138
138
|
schemathesis/specs/openapi/negative/types.py,sha256=a7buCcVxNBG6ILBM3A7oNTAX0lyDseEtZndBuej8MbI,174
|
139
139
|
schemathesis/specs/openapi/negative/utils.py,sha256=ozcOIuASufLqZSgnKUACjX-EOZrrkuNdXX0SDnLoGYA,168
|
140
|
-
schemathesis/specs/openapi/stateful/__init__.py,sha256=
|
140
|
+
schemathesis/specs/openapi/stateful/__init__.py,sha256=0pu_iGjRiKuqUDN3ewz1zUOt6f1SdvSxVtHC5uK-CYw,14750
|
141
141
|
schemathesis/specs/openapi/stateful/control.py,sha256=QaXLSbwQWtai5lxvvVtQV3BLJ8n5ePqSKB00XFxp-MA,3695
|
142
|
+
schemathesis/specs/openapi/stateful/links.py,sha256=8oHpmb-yBa3kZKoCv9ytndpOp80dG1vVis2-EpbkeVA,11432
|
142
143
|
schemathesis/transport/__init__.py,sha256=z-mRNSOlMBKwQyaEIhpmYv0plWTmK5dJqc9UmQOry80,3949
|
143
144
|
schemathesis/transport/asgi.py,sha256=qTClt6oT_xUEWnRHokACN_uqCNNUZrRPT6YG0PjbElY,926
|
144
145
|
schemathesis/transport/prepare.py,sha256=qQ6zXBw5NN2AIM0bzLAc5Ryc3dmMb0R6xN14lnR49pU,3826
|
145
146
|
schemathesis/transport/requests.py,sha256=OObRvcTL72-BZ7AfuDUrZZU9nZtfBqr22oF8nkzaOLE,8389
|
146
147
|
schemathesis/transport/serialization.py,sha256=jIMra1LqRGav0OX3Hx7mvORt38ll4cd2DKit2D58FN0,10531
|
147
148
|
schemathesis/transport/wsgi.py,sha256=RWSuUXPrl91GxAy8a4jyNNozOWVMRBxKx_tljlWA_Lo,5697
|
148
|
-
schemathesis-4.0.
|
149
|
-
schemathesis-4.0.
|
150
|
-
schemathesis-4.0.
|
151
|
-
schemathesis-4.0.
|
152
|
-
schemathesis-4.0.
|
149
|
+
schemathesis-4.0.0a4.dist-info/METADATA,sha256=dCVDX4dbQi5yTEg-CRNkZBEuWl3s0lDOKs6w-BNakzI,12292
|
150
|
+
schemathesis-4.0.0a4.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
151
|
+
schemathesis-4.0.0a4.dist-info/entry_points.txt,sha256=hiK3un-xfgPdwj9uj16YVDtTNpO128bmk0U82SMv8ZQ,152
|
152
|
+
schemathesis-4.0.0a4.dist-info/licenses/LICENSE,sha256=PsPYgrDhZ7g9uwihJXNG-XVb55wj2uYhkl2DD8oAzY0,1103
|
153
|
+
schemathesis-4.0.0a4.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|