schemathesis 3.37.1__py3-none-any.whl → 3.38.1__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/_hypothesis.py +44 -8
- schemathesis/_patches.py +21 -0
- schemathesis/cli/__init__.py +1 -1
- schemathesis/cli/cassettes.py +18 -0
- schemathesis/extra/pytest_plugin.py +1 -1
- schemathesis/generation/_hypothesis.py +2 -0
- schemathesis/generation/coverage.py +257 -59
- schemathesis/internal/checks.py +5 -3
- schemathesis/internal/diff.py +15 -0
- schemathesis/models.py +76 -4
- schemathesis/runner/impl/context.py +5 -1
- schemathesis/runner/impl/core.py +14 -4
- schemathesis/runner/serialization.py +10 -3
- schemathesis/serializers.py +3 -0
- schemathesis/service/extensions.py +1 -1
- schemathesis/service/metadata.py +3 -3
- schemathesis/specs/openapi/_hypothesis.py +9 -46
- schemathesis/specs/openapi/checks.py +7 -2
- schemathesis/specs/openapi/converter.py +27 -11
- schemathesis/specs/openapi/formats.py +44 -0
- schemathesis/specs/openapi/negative/mutations.py +5 -0
- schemathesis/specs/openapi/parameters.py +16 -14
- schemathesis/specs/openapi/schemas.py +6 -2
- schemathesis/stateful/context.py +1 -1
- schemathesis/stateful/runner.py +6 -2
- schemathesis/utils.py +6 -4
- {schemathesis-3.37.1.dist-info → schemathesis-3.38.1.dist-info}/METADATA +2 -1
- {schemathesis-3.37.1.dist-info → schemathesis-3.38.1.dist-info}/RECORD +31 -29
- {schemathesis-3.37.1.dist-info → schemathesis-3.38.1.dist-info}/WHEEL +0 -0
- {schemathesis-3.37.1.dist-info → schemathesis-3.38.1.dist-info}/entry_points.txt +0 -0
- {schemathesis-3.37.1.dist-info → schemathesis-3.38.1.dist-info}/licenses/LICENSE +0 -0
|
@@ -57,7 +57,7 @@ class OpenAPIParameter(Parameter):
|
|
|
57
57
|
def is_header(self) -> bool:
|
|
58
58
|
return self.location in ("header", "cookie")
|
|
59
59
|
|
|
60
|
-
def as_json_schema(self, operation: APIOperation) -> dict[str, Any]:
|
|
60
|
+
def as_json_schema(self, operation: APIOperation, *, update_quantifiers: bool = True) -> dict[str, Any]:
|
|
61
61
|
"""Convert parameter's definition to JSON Schema."""
|
|
62
62
|
# JSON Schema allows `examples` as an array
|
|
63
63
|
examples = []
|
|
@@ -70,11 +70,11 @@ class OpenAPIParameter(Parameter):
|
|
|
70
70
|
schema = self.from_open_api_to_json_schema(operation, self.definition)
|
|
71
71
|
if examples:
|
|
72
72
|
schema["examples"] = examples
|
|
73
|
-
return self.transform_keywords(schema)
|
|
73
|
+
return self.transform_keywords(schema, update_quantifiers=update_quantifiers)
|
|
74
74
|
|
|
75
|
-
def transform_keywords(self, schema: dict[str, Any]) -> dict[str, Any]:
|
|
75
|
+
def transform_keywords(self, schema: dict[str, Any], *, update_quantifiers: bool = True) -> dict[str, Any]:
|
|
76
76
|
"""Transform Open API specific keywords into JSON Schema compatible form."""
|
|
77
|
-
definition = to_json_schema_recursive(schema, self.nullable_field)
|
|
77
|
+
definition = to_json_schema_recursive(schema, self.nullable_field, update_quantifiers=update_quantifiers)
|
|
78
78
|
# Headers are strings, but it is not always explicitly defined in the schema. By preparing them properly, we
|
|
79
79
|
# can achieve significant performance improvements for such cases.
|
|
80
80
|
# For reference (my machine) - running a single test with 100 examples with the resulting strategy:
|
|
@@ -236,11 +236,11 @@ class OpenAPI20Body(OpenAPIBody, OpenAPI20Parameter):
|
|
|
236
236
|
# NOTE. For Open API 2.0 bodies, we still give `x-example` precedence over the schema-level `example` field to keep
|
|
237
237
|
# the precedence rules consistent.
|
|
238
238
|
|
|
239
|
-
def as_json_schema(self, operation: APIOperation) -> dict[str, Any]:
|
|
239
|
+
def as_json_schema(self, operation: APIOperation, *, update_quantifiers: bool = True) -> dict[str, Any]:
|
|
240
240
|
"""Convert body definition to JSON Schema."""
|
|
241
241
|
# `schema` is required in Open API 2.0 when the `in` keyword is `body`
|
|
242
242
|
schema = self.definition["schema"]
|
|
243
|
-
return self.transform_keywords(schema)
|
|
243
|
+
return self.transform_keywords(schema, update_quantifiers=update_quantifiers)
|
|
244
244
|
|
|
245
245
|
|
|
246
246
|
FORM_MEDIA_TYPES = ("multipart/form-data", "application/x-www-form-urlencoded")
|
|
@@ -259,13 +259,13 @@ class OpenAPI30Body(OpenAPIBody, OpenAPI30Parameter):
|
|
|
259
259
|
required: bool = False
|
|
260
260
|
description: str | None = None
|
|
261
261
|
|
|
262
|
-
def as_json_schema(self, operation: APIOperation) -> dict[str, Any]:
|
|
262
|
+
def as_json_schema(self, operation: APIOperation, *, update_quantifiers: bool = True) -> dict[str, Any]:
|
|
263
263
|
"""Convert body definition to JSON Schema."""
|
|
264
264
|
schema = get_media_type_schema(self.definition)
|
|
265
|
-
return self.transform_keywords(schema)
|
|
265
|
+
return self.transform_keywords(schema, update_quantifiers=update_quantifiers)
|
|
266
266
|
|
|
267
|
-
def transform_keywords(self, schema: dict[str, Any]) -> dict[str, Any]:
|
|
268
|
-
definition = super().transform_keywords(schema)
|
|
267
|
+
def transform_keywords(self, schema: dict[str, Any], *, update_quantifiers: bool = True) -> dict[str, Any]:
|
|
268
|
+
definition = super().transform_keywords(schema, update_quantifiers=update_quantifiers)
|
|
269
269
|
if self.is_form:
|
|
270
270
|
# It significantly reduces the "filtering" part of data generation.
|
|
271
271
|
definition.setdefault("type", "object")
|
|
@@ -303,12 +303,14 @@ class OpenAPI20CompositeBody(OpenAPIBody, OpenAPI20Parameter):
|
|
|
303
303
|
# We generate an object for formData - it is always required.
|
|
304
304
|
return bool(self.definition)
|
|
305
305
|
|
|
306
|
-
def as_json_schema(self, operation: APIOperation) -> dict[str, Any]:
|
|
306
|
+
def as_json_schema(self, operation: APIOperation, *, update_quantifiers: bool = True) -> dict[str, Any]:
|
|
307
307
|
"""The composite body is transformed into an "object" JSON Schema."""
|
|
308
|
-
return parameters_to_json_schema(operation, self.definition)
|
|
308
|
+
return parameters_to_json_schema(operation, self.definition, update_quantifiers=update_quantifiers)
|
|
309
309
|
|
|
310
310
|
|
|
311
|
-
def parameters_to_json_schema(
|
|
311
|
+
def parameters_to_json_schema(
|
|
312
|
+
operation: APIOperation, parameters: Iterable[OpenAPIParameter], *, update_quantifiers: bool = True
|
|
313
|
+
) -> dict[str, Any]:
|
|
312
314
|
"""Create an "object" JSON schema from a list of Open API parameters.
|
|
313
315
|
|
|
314
316
|
:param List[OpenAPIParameter] parameters: A list of Open API parameters related to the same location. All of
|
|
@@ -348,7 +350,7 @@ def parameters_to_json_schema(operation: APIOperation, parameters: Iterable[Open
|
|
|
348
350
|
required = []
|
|
349
351
|
for parameter in parameters:
|
|
350
352
|
name = parameter.name
|
|
351
|
-
properties[name] = parameter.as_json_schema(operation)
|
|
353
|
+
properties[name] = parameter.as_json_schema(operation, update_quantifiers=update_quantifiers)
|
|
352
354
|
# If parameter names are duplicated, we need to avoid duplicate entries in `required` anyway
|
|
353
355
|
if parameter.is_required and name not in required:
|
|
354
356
|
required.append(name)
|
|
@@ -986,7 +986,9 @@ class SwaggerV20(BaseOpenAPISchema):
|
|
|
986
986
|
return scopes, None
|
|
987
987
|
# Extra conversion to JSON Schema is needed here if there was one $ref in the input
|
|
988
988
|
# because it is not converted
|
|
989
|
-
return scopes, to_json_schema_recursive(
|
|
989
|
+
return scopes, to_json_schema_recursive(
|
|
990
|
+
schema, self.nullable_name, is_response_schema=True, update_quantifiers=False
|
|
991
|
+
)
|
|
990
992
|
|
|
991
993
|
def get_content_types(self, operation: APIOperation, response: GenericResponse) -> list[str]:
|
|
992
994
|
produces = operation.definition.raw.get("produces", None)
|
|
@@ -1137,7 +1139,9 @@ class OpenApi30(SwaggerV20):
|
|
|
1137
1139
|
if option and "schema" in option:
|
|
1138
1140
|
# Extra conversion to JSON Schema is needed here if there was one $ref in the input
|
|
1139
1141
|
# because it is not converted
|
|
1140
|
-
return scopes, to_json_schema_recursive(
|
|
1142
|
+
return scopes, to_json_schema_recursive(
|
|
1143
|
+
option["schema"], self.nullable_name, is_response_schema=True, update_quantifiers=False
|
|
1144
|
+
)
|
|
1141
1145
|
return scopes, None
|
|
1142
1146
|
|
|
1143
1147
|
def get_strategies_from_examples(
|
schemathesis/stateful/context.py
CHANGED
|
@@ -18,7 +18,7 @@ FailureKey = Union[Type[CheckFailed], Tuple[str, int]]
|
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
def _failure_cache_key(exc: CheckFailed | AssertionError) -> FailureKey:
|
|
21
|
-
"""Create a
|
|
21
|
+
"""Create a key to identify unique failures."""
|
|
22
22
|
from hypothesis.internal.escalation import get_trimmed_traceback
|
|
23
23
|
|
|
24
24
|
# For CheckFailed, we already have all distinctive information about the failure, which is contained
|
schemathesis/stateful/runner.py
CHANGED
|
@@ -69,7 +69,7 @@ class StatefulTestRunner:
|
|
|
69
69
|
try:
|
|
70
70
|
event = self.event_queue.get(timeout=EVENT_QUEUE_TIMEOUT)
|
|
71
71
|
# Set the run status based on the suite status
|
|
72
|
-
# ERROR &
|
|
72
|
+
# ERROR & INTERRUPTED statuses are terminal, therefore they should not be overridden
|
|
73
73
|
if isinstance(event, events.SuiteFinished):
|
|
74
74
|
if event.status == events.SuiteStatus.FAILURE:
|
|
75
75
|
run_status = events.RunStatus.FAILURE
|
|
@@ -131,7 +131,11 @@ def _execute_state_machine_loop(
|
|
|
131
131
|
if config.auth is not None:
|
|
132
132
|
session.auth = config.auth
|
|
133
133
|
call_kwargs["session"] = session
|
|
134
|
-
check_ctx = CheckContext(
|
|
134
|
+
check_ctx = CheckContext(
|
|
135
|
+
override=config.override,
|
|
136
|
+
auth=config.auth,
|
|
137
|
+
headers=CaseInsensitiveDict(config.headers) if config.headers else None,
|
|
138
|
+
)
|
|
135
139
|
|
|
136
140
|
class _InstrumentedStateMachine(state_machine): # type: ignore[valid-type,misc]
|
|
137
141
|
"""State machine with additional hooks for emitting events."""
|
schemathesis/utils.py
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
import functools
|
|
4
3
|
from contextlib import contextmanager
|
|
5
4
|
from inspect import getfullargspec
|
|
6
5
|
from pathlib import Path
|
|
@@ -143,10 +142,13 @@ def validate_given_args(func: GenericTest, args: tuple, kwargs: dict[str, Any])
|
|
|
143
142
|
def compose(*functions: Callable) -> Callable:
|
|
144
143
|
"""Compose multiple functions into a single one."""
|
|
145
144
|
|
|
146
|
-
def
|
|
147
|
-
|
|
145
|
+
def composed(x: Any) -> Any:
|
|
146
|
+
result = x
|
|
147
|
+
for func in reversed(functions):
|
|
148
|
+
result = func(result)
|
|
149
|
+
return result
|
|
148
150
|
|
|
149
|
-
return
|
|
151
|
+
return composed
|
|
150
152
|
|
|
151
153
|
|
|
152
154
|
def skip(operation_name: str) -> NoReturn:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: schemathesis
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.38.1
|
|
4
4
|
Summary: Property-based testing framework for Open API and GraphQL based apps
|
|
5
5
|
Project-URL: Documentation, https://schemathesis.readthedocs.io/en/stable/
|
|
6
6
|
Project-URL: Changelog, https://schemathesis.readthedocs.io/en/stable/changelog.html
|
|
@@ -25,6 +25,7 @@ Classifier: Programming Language :: Python :: 3.9
|
|
|
25
25
|
Classifier: Programming Language :: Python :: 3.10
|
|
26
26
|
Classifier: Programming Language :: Python :: 3.11
|
|
27
27
|
Classifier: Programming Language :: Python :: 3.12
|
|
28
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
28
29
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
29
30
|
Classifier: Topic :: Software Development :: Testing
|
|
30
31
|
Requires-Python: >=3.8
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
schemathesis/__init__.py,sha256=UW2Bq8hDDkcBeAAA7PzpBFXkOOxkmHox-mfQwzHDjL0,1914
|
|
2
2
|
schemathesis/_compat.py,sha256=y4RZd59i2NCnZ91VQhnKeMn_8t3SgvLOk2Xm8nymUHY,1837
|
|
3
3
|
schemathesis/_dependency_versions.py,sha256=pjEkkGAfOQJYNb-9UOo84V8nj_lKHr_TGDVdFwY2UU0,816
|
|
4
|
-
schemathesis/_hypothesis.py,sha256=
|
|
4
|
+
schemathesis/_hypothesis.py,sha256=9ZwAvjvS07O9tz4LxOFI8ZfQASKIz3rocsYIfE4KTU0,16562
|
|
5
5
|
schemathesis/_lazy_import.py,sha256=aMhWYgbU2JOltyWBb32vnWBb6kykOghucEzI_F70yVE,470
|
|
6
6
|
schemathesis/_override.py,sha256=TAjYB3eJQmlw9K_xiR9ptt9Wj7if4U7UFlUhGjpBAoM,1625
|
|
7
|
+
schemathesis/_patches.py,sha256=Hsbpn4UVeXUQD2Kllrbq01CSWsTYENWa0VJTyhX5C2k,895
|
|
7
8
|
schemathesis/_rate_limiter.py,sha256=q_XWst5hzuAyXQRiZc4s_bx7-JlPYZM_yKDmeavt3oo,242
|
|
8
9
|
schemathesis/_xml.py,sha256=lwRaKEMQvl6SUySnhGgooNsdmXPnDh11YSPpbsW8dR8,6923
|
|
9
10
|
schemathesis/auths.py,sha256=De97IS_iOlC36-jRhkZ2DUndjUpXYgsd8R-nA-iHn88,16837
|
|
@@ -17,20 +18,20 @@ schemathesis/graphql.py,sha256=XiuKcfoOB92iLFC8zpz2msLkM0_V0TLdxPNBqrrGZ8w,216
|
|
|
17
18
|
schemathesis/hooks.py,sha256=f0AUPxyBenpe1YGIWDY_uwSRoT2mE4Tp4Qase7f0L08,14953
|
|
18
19
|
schemathesis/lazy.py,sha256=Ddhkk7Tpc_VcRGYkCtKDmP2gpjxVmEZ3b01ZTNjbm8I,19004
|
|
19
20
|
schemathesis/loaders.py,sha256=MoEhcdOEBJxNRn5X-ZNhWB9jZDHQQNpkNfEdQjf_NDw,4590
|
|
20
|
-
schemathesis/models.py,sha256=
|
|
21
|
+
schemathesis/models.py,sha256=2kMMJ3JVe4_91uhRxgsZ_G1FOyksxTiYAo52M5asWLA,49868
|
|
21
22
|
schemathesis/parameters.py,sha256=_LN3NL5XwoRfvjcU8o2ArrNFK9sbBZo25UFdxuywkRw,2425
|
|
22
23
|
schemathesis/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
23
24
|
schemathesis/sanitization.py,sha256=Lycn1VVfula9B6XpzkxTHja7CZ7RHqbUh9kBic0Yi4M,9056
|
|
24
25
|
schemathesis/schemas.py,sha256=3xTZOZ1lLdAdwLAkiW0eakRb96mQ0MpbcwmrT-XO4KA,20457
|
|
25
|
-
schemathesis/serializers.py,sha256=
|
|
26
|
+
schemathesis/serializers.py,sha256=HyYVSVR71FhWfIErnH6OoGLOa4tkh9mTeVUTIpzEW24,11739
|
|
26
27
|
schemathesis/targets.py,sha256=XIGRghvEzbmEJjse9aZgNEj67L3jAbiazm2rxURWgDE,2351
|
|
27
28
|
schemathesis/throttling.py,sha256=aisUc4MJDGIOGUAs9L2DlWWpdd4KyAFuNVKhYoaUC9M,1719
|
|
28
29
|
schemathesis/types.py,sha256=Tem2Q_zyMCd0Clp5iGKv6Fu13wdcbxVE8tCVH9WWt7A,1065
|
|
29
|
-
schemathesis/utils.py,sha256=
|
|
30
|
-
schemathesis/cli/__init__.py,sha256=
|
|
30
|
+
schemathesis/utils.py,sha256=LwqxqoAKmRiAdj-qUbNmgQgsamc49V5lc5TnOIDuuMA,4904
|
|
31
|
+
schemathesis/cli/__init__.py,sha256=rAebJYQrORWsl4WR6sLUseJCQQZbDEsaQex52kmn6kI,74536
|
|
31
32
|
schemathesis/cli/__main__.py,sha256=MWaenjaUTZIfNPFzKmnkTiawUri7DVldtg3mirLwzU8,92
|
|
32
33
|
schemathesis/cli/callbacks.py,sha256=-VA_I_mVma9WxFNtUR8d2KNICKJD5ScayfSdKKPEP5Y,16321
|
|
33
|
-
schemathesis/cli/cassettes.py,sha256=
|
|
34
|
+
schemathesis/cli/cassettes.py,sha256=zji-B-uuwyr0Z0BzQX-DLMV6lWb58JtLExcUE1v3m4Y,20153
|
|
34
35
|
schemathesis/cli/constants.py,sha256=wk-0GsoJIel8wFFerQ6Kf_6eAYUtIWkwMFwyAqv3yj4,1635
|
|
35
36
|
schemathesis/cli/context.py,sha256=j_lvYQiPa6Q7P4P_IGCM9V2y2gJSpDbpxIIzR5oFB2I,2567
|
|
36
37
|
schemathesis/cli/debug.py,sha256=_YA-bX1ujHl4bqQDEum7M-I2XHBTEGbvgkhvcvKhmgU,658
|
|
@@ -53,19 +54,20 @@ schemathesis/extra/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuF
|
|
|
53
54
|
schemathesis/extra/_aiohttp.py,sha256=-bIY0ucv7pfK3gA9PHiO4n7ajtZJJM9pS3EY3cLau9c,957
|
|
54
55
|
schemathesis/extra/_flask.py,sha256=lpKQxg_kdEFo59Q8sV5T78IJYhgx6p4SCwIohJYSycw,345
|
|
55
56
|
schemathesis/extra/_server.py,sha256=JFJTgJjpZu_eVZkI16rLaXJSv55Awbl7JNqegCLnQBg,541
|
|
56
|
-
schemathesis/extra/pytest_plugin.py,sha256=
|
|
57
|
+
schemathesis/extra/pytest_plugin.py,sha256=3FF7pcqK26J__FGq6uOZdaD-1tZ-khQEwpdwb1ueFPc,12617
|
|
57
58
|
schemathesis/fixups/__init__.py,sha256=RP5QYJVJhp8LXjhH89fCRaIVU26dHCy74jD9seoYMuc,967
|
|
58
59
|
schemathesis/fixups/fast_api.py,sha256=mn-KzBqnR8jl4W5fY-_ZySabMDMUnpzCIESMHnlvE1c,1304
|
|
59
60
|
schemathesis/fixups/utf8_bom.py,sha256=lWT9RNmJG8i-l5AXIpaCT3qCPUwRgzXPW3eoOjmZETA,745
|
|
60
61
|
schemathesis/generation/__init__.py,sha256=29Zys_tD6kfngaC4zHeC6TOBZQcmo7CWm7KDSYsHStQ,1581
|
|
61
|
-
schemathesis/generation/_hypothesis.py,sha256=
|
|
62
|
+
schemathesis/generation/_hypothesis.py,sha256=74fzLPHugZgMQXerWYFAMqCAjtAXz5E4gek7Gnkhli4,1756
|
|
62
63
|
schemathesis/generation/_methods.py,sha256=r8oVlJ71_gXcnEhU-byw2E0R2RswQQFm8U7yGErSqbw,1204
|
|
63
|
-
schemathesis/generation/coverage.py,sha256=
|
|
64
|
+
schemathesis/generation/coverage.py,sha256=hMtISl3fYaTmE78sFCBd42BPJfPvgSEZJztlXnKxTRo,38310
|
|
64
65
|
schemathesis/internal/__init__.py,sha256=93HcdG3LF0BbQKbCteOsFMa1w6nXl8yTmx87QLNJOik,161
|
|
65
|
-
schemathesis/internal/checks.py,sha256=
|
|
66
|
+
schemathesis/internal/checks.py,sha256=SBx2gesB-XzgVSMX_u7Mb416jSxJ68eQKtcdkWlkyOo,2441
|
|
66
67
|
schemathesis/internal/copy.py,sha256=DcL56z-d69kKR_5u8mlHvjSL1UTyUKNMAwexrwHFY1s,1031
|
|
67
68
|
schemathesis/internal/datetime.py,sha256=zPLBL0XXLNfP-KYel3H2m8pnsxjsA_4d-zTOhJg2EPQ,136
|
|
68
69
|
schemathesis/internal/deprecation.py,sha256=Ty5VBFBlufkITpP0WWTPIPbnB7biDi0kQgXVYWZp820,1273
|
|
70
|
+
schemathesis/internal/diff.py,sha256=upGqM6s9WDT653wzxK_tqclFCxqkzB0j4wsO1foq5_k,466
|
|
69
71
|
schemathesis/internal/extensions.py,sha256=h0aHRK_PTKfiAufkeBziegQS8537TL-Gr1hPW48q8Yc,790
|
|
70
72
|
schemathesis/internal/jsonschema.py,sha256=-7tF15cXo1ZdhiRFYYfEClXihX2Svc5Loi_Dz1x201k,1157
|
|
71
73
|
schemathesis/internal/output.py,sha256=zMaG5knIuBieVH8CrcmPJgbmQukDs2xdekX0BrK7BZs,1989
|
|
@@ -75,10 +77,10 @@ schemathesis/internal/validation.py,sha256=G7i8jIMUpAeOnDsDF_eWYvRZe_yMprRswx0QA
|
|
|
75
77
|
schemathesis/runner/__init__.py,sha256=b96aoJQo9Kash0GNKI-uCiLMEKOI8cxKjKCKQlWxkUw,21925
|
|
76
78
|
schemathesis/runner/events.py,sha256=cRKKSDvHvKLBIyFBz-J0JtAKshbGGKco9eaMyLCgzsY,11734
|
|
77
79
|
schemathesis/runner/probes.py,sha256=no5AfO3kse25qvHevjeUfB0Q3C860V2AYzschUW3QMQ,5688
|
|
78
|
-
schemathesis/runner/serialization.py,sha256=
|
|
80
|
+
schemathesis/runner/serialization.py,sha256=vZi1wd9HX9Swp9VJ_hZFeDgy3Y726URpHra-TbPvQhk,20762
|
|
79
81
|
schemathesis/runner/impl/__init__.py,sha256=1E2iME8uthYPBh9MjwVBCTFV-P3fi7AdphCCoBBspjs,199
|
|
80
|
-
schemathesis/runner/impl/context.py,sha256=
|
|
81
|
-
schemathesis/runner/impl/core.py,sha256=
|
|
82
|
+
schemathesis/runner/impl/context.py,sha256=hjJoDHpL9wUXVUGlC-Mx82tUpNAi7qecEB847T-XEvY,3043
|
|
83
|
+
schemathesis/runner/impl/core.py,sha256=3bCwPcZB1br-clz3oQz8KV9yF9hZK7t3F29ZEq2ErBQ,47642
|
|
82
84
|
schemathesis/runner/impl/solo.py,sha256=y5QSxgK8nBCEjZVD5BpFvYUXmB6tEjk6TwxAo__NejA,2911
|
|
83
85
|
schemathesis/runner/impl/threadpool.py,sha256=yNR5LYE8f3N_4t42OwSgy0_qdGgBPM7d11F9c9oEAAs,15075
|
|
84
86
|
schemathesis/service/__init__.py,sha256=cDVTCFD1G-vvhxZkJUwiToTAEQ-0ByIoqwXvJBCf_V8,472
|
|
@@ -87,9 +89,9 @@ schemathesis/service/ci.py,sha256=3m9xSWFhrpWA6mI_8bXI7sspND9RSqXFM9UseO5nIiM,67
|
|
|
87
89
|
schemathesis/service/client.py,sha256=9h-y7-GGO3lsuOfSVSMKeHH8nw91rk3Bi06gr23r3E4,5222
|
|
88
90
|
schemathesis/service/constants.py,sha256=Q1bhtLRkmhso4KSVAtWl0u446Wlbk3ShOL3ZdbPoJOM,1502
|
|
89
91
|
schemathesis/service/events.py,sha256=YHhVB66bRODx2ZnG4vjE6lVg3LqzOrsMb8O8vtc8SpE,1294
|
|
90
|
-
schemathesis/service/extensions.py,sha256=
|
|
92
|
+
schemathesis/service/extensions.py,sha256=9TBvH762I4DKUQEE551oTH4cHRlVsRXBMDdMVwaFjQk,7805
|
|
91
93
|
schemathesis/service/hosts.py,sha256=gg4xObk3G9p39bkmAvX3gJpZ3Anx-Fnwm9T03qov0LE,3161
|
|
92
|
-
schemathesis/service/metadata.py,sha256=
|
|
94
|
+
schemathesis/service/metadata.py,sha256=6CEyYbf2GkoqUHzC0U1br6DkrF12VBbjr8yhOfRZ0fM,2086
|
|
93
95
|
schemathesis/service/models.py,sha256=nUf38yf2AK8-B56KHjviVlVe-fjos9Dp-M8YAWOIkrc,6572
|
|
94
96
|
schemathesis/service/report.py,sha256=FHIlt0UcDQkwRlqsnURuBD7O6PdXlAMJlCdWdukIoiY,8302
|
|
95
97
|
schemathesis/service/serialization.py,sha256=20APAy8CZ561agg4FP17PIEX8hB0LXtk_p7dpO1Z-JI,6278
|
|
@@ -104,20 +106,20 @@ schemathesis/specs/graphql/schemas.py,sha256=b7QwglKbcYQCMjuYmqDsVoFu2o4xaA_kduU
|
|
|
104
106
|
schemathesis/specs/graphql/validation.py,sha256=uINIOt-2E7ZuQV2CxKzwez-7L9tDtqzMSpnVoRWvxy0,1635
|
|
105
107
|
schemathesis/specs/openapi/__init__.py,sha256=HDcx3bqpa6qWPpyMrxAbM3uTo0Lqpg-BUNZhDJSJKnw,279
|
|
106
108
|
schemathesis/specs/openapi/_cache.py,sha256=PAiAu4X_a2PQgD2lG5H3iisXdyg4SaHpU46bRZvfNkM,4320
|
|
107
|
-
schemathesis/specs/openapi/_hypothesis.py,sha256=
|
|
108
|
-
schemathesis/specs/openapi/checks.py,sha256=
|
|
109
|
+
schemathesis/specs/openapi/_hypothesis.py,sha256=nU8UDn1PzGCre4IVmwIuO9-CZv1KJe1fYY0d2BojhSo,22981
|
|
110
|
+
schemathesis/specs/openapi/checks.py,sha256=ugo7-6iAu2fX8OmQgyvSunMO9Nt9cr6PNdT3vyX8Z4I,23914
|
|
109
111
|
schemathesis/specs/openapi/constants.py,sha256=JqM_FHOenqS_MuUE9sxVQ8Hnw0DNM8cnKDwCwPLhID4,783
|
|
110
|
-
schemathesis/specs/openapi/converter.py,sha256=
|
|
112
|
+
schemathesis/specs/openapi/converter.py,sha256=Yxw9lS_JKEyi-oJuACT07fm04bqQDlAu-iHwzkeDvE4,3546
|
|
111
113
|
schemathesis/specs/openapi/definitions.py,sha256=WTkWwCgTc3OMxfKsqh6YDoGfZMTThSYrHGp8h0vLAK0,93935
|
|
112
114
|
schemathesis/specs/openapi/examples.py,sha256=FwhPWca7bpdHpUp_LRoK09DVgusojO3aXXhXYrK373I,20354
|
|
113
|
-
schemathesis/specs/openapi/formats.py,sha256=
|
|
115
|
+
schemathesis/specs/openapi/formats.py,sha256=3KtEC-8nQRwMErS-WpMadXsr8R0O-NzYwFisZqMuc-8,2761
|
|
114
116
|
schemathesis/specs/openapi/links.py,sha256=C4Uir2P_EcpqME8ee_a1vdUM8Tm3ZcKNn2YsGjZiMUQ,17935
|
|
115
117
|
schemathesis/specs/openapi/loaders.py,sha256=5B1cgYEBj3h2psPQxzrQ5Xq5owLVGw-u9HsCQIx7yFE,25705
|
|
116
118
|
schemathesis/specs/openapi/media_types.py,sha256=dNTxpRQbY3SubdVjh4Cjb38R6Bc9MF9BsRQwPD87x0g,1017
|
|
117
|
-
schemathesis/specs/openapi/parameters.py,sha256=
|
|
119
|
+
schemathesis/specs/openapi/parameters.py,sha256=ri_LBnGHLHxDFBw-tExJ54kCfnhgECWRd-tIceCGHiE,14757
|
|
118
120
|
schemathesis/specs/openapi/patterns.py,sha256=IK2BkXI1xByEz5if6jvydFE07nq5rDa4k_-2xX7ifG8,4715
|
|
119
121
|
schemathesis/specs/openapi/references.py,sha256=euxM02kQGMHh4Ss1jWjOY_gyw_HazafKITIsvOEiAvI,9831
|
|
120
|
-
schemathesis/specs/openapi/schemas.py,sha256=
|
|
122
|
+
schemathesis/specs/openapi/schemas.py,sha256=MLU2h9DrQNCDkk74MFFSj-8BsKjkJsf9lJQHPxLFVps,53845
|
|
121
123
|
schemathesis/specs/openapi/security.py,sha256=Z-6pk2Ga1PTUtBe298KunjVHsNh5A-teegeso7zcPIE,7138
|
|
122
124
|
schemathesis/specs/openapi/serialization.py,sha256=5qGdFHZ3n80UlbSXrO_bkr4Al_7ci_Z3aSUjZczNDQY,11384
|
|
123
125
|
schemathesis/specs/openapi/utils.py,sha256=ER4vJkdFVDIE7aKyxyYatuuHVRNutytezgE52pqZNE8,900
|
|
@@ -130,7 +132,7 @@ schemathesis/specs/openapi/expressions/lexer.py,sha256=LeVE6fgYT9-fIsXrv0-YrRHnI
|
|
|
130
132
|
schemathesis/specs/openapi/expressions/nodes.py,sha256=UOVrK8fRHACv0T460CPSyO6OU5aeKnE2eKX4HF9SiFs,3990
|
|
131
133
|
schemathesis/specs/openapi/expressions/parser.py,sha256=gM_Ob-TlTGxpgjZGRHNyPhBj1YAvRgRoSlNCrE7-djk,4452
|
|
132
134
|
schemathesis/specs/openapi/negative/__init__.py,sha256=MG0tx3a7BYx0mVg0pjTojq1fLufMmd_x4zppR3oz-Mk,3739
|
|
133
|
-
schemathesis/specs/openapi/negative/mutations.py,sha256=
|
|
135
|
+
schemathesis/specs/openapi/negative/mutations.py,sha256=_BfeqOeqlEo8KuPuFLv3Z7kAR_9G7dvTtyMyMGlkp6o,19244
|
|
134
136
|
schemathesis/specs/openapi/negative/types.py,sha256=a7buCcVxNBG6ILBM3A7oNTAX0lyDseEtZndBuej8MbI,174
|
|
135
137
|
schemathesis/specs/openapi/negative/utils.py,sha256=ozcOIuASufLqZSgnKUACjX-EOZrrkuNdXX0SDnLoGYA,168
|
|
136
138
|
schemathesis/specs/openapi/stateful/__init__.py,sha256=Iu77XE4iUuiz32UoYFqIe7H3yLEC4HKflG0ZX0JCyHg,9451
|
|
@@ -138,9 +140,9 @@ schemathesis/specs/openapi/stateful/statistic.py,sha256=xV_I2Oy-H7K_53nedLMy0rR6
|
|
|
138
140
|
schemathesis/specs/openapi/stateful/types.py,sha256=DtxmxdvCbzlgoyecudXP84qF7NuCv3fRal3oJJs7eAU,456
|
|
139
141
|
schemathesis/stateful/__init__.py,sha256=HBg-h131EI8IipHQgufSaXe-CrFTKmffPVsoEFjPUmE,5100
|
|
140
142
|
schemathesis/stateful/config.py,sha256=huYzqDoD6x20p_VNAR79NgxPwUFO8UXoc3_z4BEuHqU,3586
|
|
141
|
-
schemathesis/stateful/context.py,sha256=
|
|
143
|
+
schemathesis/stateful/context.py,sha256=lpCOVhJEbPOp8F_Z_YvU5ptVTgaKJsllvI1NK28Dtvs,5085
|
|
142
144
|
schemathesis/stateful/events.py,sha256=CyYvyQebOaeTn6UevaB7HXOrUhxCWbqXMfQ7pZK7fV8,6727
|
|
143
|
-
schemathesis/stateful/runner.py,sha256=
|
|
145
|
+
schemathesis/stateful/runner.py,sha256=3tRRmWcXp5GCeRWGOtQ9-W0rxljoR06qSCKC4r7EQyY,12672
|
|
144
146
|
schemathesis/stateful/sink.py,sha256=bHYlgh-fMwg1Srxk_XGs0-WV34YccotwH9PGrxCK57A,2474
|
|
145
147
|
schemathesis/stateful/state_machine.py,sha256=PFztY82W5enuXjO6k4Mz8fbHmDJ7Z8OLYZRWtuBeyjg,12956
|
|
146
148
|
schemathesis/stateful/statistic.py,sha256=2-uU5xpT9CbMulKgJWLZN6MUpC0Fskf5yXTt4ef4NFA,542
|
|
@@ -151,8 +153,8 @@ schemathesis/transports/auth.py,sha256=urSTO9zgFO1qU69xvnKHPFQV0SlJL3d7_Ojl0tLnZ
|
|
|
151
153
|
schemathesis/transports/content_types.py,sha256=MiKOm-Hy5i75hrROPdpiBZPOTDzOwlCdnthJD12AJzI,2187
|
|
152
154
|
schemathesis/transports/headers.py,sha256=hr_AIDOfUxsJxpHfemIZ_uNG3_vzS_ZeMEKmZjbYiBE,990
|
|
153
155
|
schemathesis/transports/responses.py,sha256=OFD4ZLqwEFpo7F9vaP_SVgjhxAqatxIj38FS4XVq8Qs,1680
|
|
154
|
-
schemathesis-3.
|
|
155
|
-
schemathesis-3.
|
|
156
|
-
schemathesis-3.
|
|
157
|
-
schemathesis-3.
|
|
158
|
-
schemathesis-3.
|
|
156
|
+
schemathesis-3.38.1.dist-info/METADATA,sha256=uff9hJ2ktn_0hhxt3lSUCCJCzkLmVGaJ5CiuXmta8_c,12956
|
|
157
|
+
schemathesis-3.38.1.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
|
|
158
|
+
schemathesis-3.38.1.dist-info/entry_points.txt,sha256=VHyLcOG7co0nOeuk8WjgpRETk5P1E2iCLrn26Zkn5uk,158
|
|
159
|
+
schemathesis-3.38.1.dist-info/licenses/LICENSE,sha256=PsPYgrDhZ7g9uwihJXNG-XVb55wj2uYhkl2DD8oAzY0,1103
|
|
160
|
+
schemathesis-3.38.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|