schemathesis 3.25.6__py3-none-any.whl → 3.26.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.
- schemathesis/_dependency_versions.py +1 -0
- schemathesis/_hypothesis.py +1 -0
- schemathesis/_xml.py +1 -0
- schemathesis/auths.py +1 -0
- schemathesis/cli/__init__.py +26 -18
- schemathesis/cli/cassettes.py +4 -4
- schemathesis/cli/context.py +4 -1
- schemathesis/cli/output/default.py +154 -39
- schemathesis/cli/output/short.py +4 -0
- schemathesis/experimental/__init__.py +7 -0
- schemathesis/filters.py +1 -0
- schemathesis/parameters.py +1 -0
- schemathesis/runner/__init__.py +12 -0
- schemathesis/runner/events.py +12 -0
- schemathesis/runner/impl/core.py +29 -2
- schemathesis/runner/probes.py +1 -0
- schemathesis/runner/serialization.py +4 -2
- schemathesis/schemas.py +1 -0
- schemathesis/serializers.py +1 -1
- schemathesis/service/client.py +35 -2
- schemathesis/service/extensions.py +224 -0
- schemathesis/service/hosts.py +1 -0
- schemathesis/service/metadata.py +24 -0
- schemathesis/service/models.py +210 -2
- schemathesis/service/serialization.py +29 -1
- schemathesis/specs/openapi/__init__.py +1 -0
- schemathesis/specs/openapi/_hypothesis.py +8 -0
- schemathesis/specs/openapi/expressions/__init__.py +1 -0
- schemathesis/specs/openapi/expressions/lexer.py +1 -0
- schemathesis/specs/openapi/expressions/nodes.py +1 -0
- schemathesis/specs/openapi/links.py +1 -0
- schemathesis/specs/openapi/media_types.py +34 -0
- schemathesis/specs/openapi/negative/mutations.py +1 -0
- schemathesis/specs/openapi/security.py +5 -1
- {schemathesis-3.25.6.dist-info → schemathesis-3.26.0.dist-info}/METADATA +8 -5
- {schemathesis-3.25.6.dist-info → schemathesis-3.26.0.dist-info}/RECORD +39 -37
- {schemathesis-3.25.6.dist-info → schemathesis-3.26.0.dist-info}/WHEEL +0 -0
- {schemathesis-3.25.6.dist-info → schemathesis-3.26.0.dist-info}/entry_points.txt +0 -0
- {schemathesis-3.25.6.dist-info → schemathesis-3.26.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
|
+
|
|
2
3
|
from dataclasses import asdict
|
|
3
4
|
from typing import Any, Callable, Dict, Optional, TypeVar, cast
|
|
4
5
|
|
|
6
|
+
from ..exceptions import format_exception
|
|
7
|
+
from ..internal.result import Err, Ok
|
|
8
|
+
from ..internal.transformation import merge_recursively
|
|
5
9
|
from ..models import Response
|
|
10
|
+
from .models import AnalysisSuccess
|
|
6
11
|
from ..runner import events
|
|
7
12
|
from ..runner.serialization import SerializedCase
|
|
8
|
-
from ..internal.transformation import merge_recursively
|
|
9
13
|
|
|
10
14
|
S = TypeVar("S", bound=events.ExecutionEvent)
|
|
11
15
|
SerializeFunc = Callable[[S], Optional[Dict[str, Any]]]
|
|
@@ -28,6 +32,24 @@ def serialize_after_probing(event: events.AfterProbing) -> dict[str, Any] | None
|
|
|
28
32
|
return {"probes": [probe.serialize() for probe in probes]}
|
|
29
33
|
|
|
30
34
|
|
|
35
|
+
def serialize_before_analysis(_: events.BeforeAnalysis) -> None:
|
|
36
|
+
return None
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def serialize_after_analysis(event: events.AfterAnalysis) -> dict[str, Any] | None:
|
|
40
|
+
data = {}
|
|
41
|
+
analysis = event.analysis
|
|
42
|
+
if isinstance(analysis, Ok):
|
|
43
|
+
result = analysis.ok()
|
|
44
|
+
if isinstance(result, AnalysisSuccess):
|
|
45
|
+
data["analysis_id"] = result.id
|
|
46
|
+
else:
|
|
47
|
+
data["error"] = result.message
|
|
48
|
+
elif isinstance(analysis, Err):
|
|
49
|
+
data["error"] = format_exception(analysis.err())
|
|
50
|
+
return data
|
|
51
|
+
|
|
52
|
+
|
|
31
53
|
def serialize_before_execution(event: events.BeforeExecution) -> dict[str, Any] | None:
|
|
32
54
|
return {
|
|
33
55
|
"correlation_id": event.correlation_id,
|
|
@@ -127,6 +149,8 @@ SERIALIZER_MAP = {
|
|
|
127
149
|
events.Initialized: serialize_initialized,
|
|
128
150
|
events.BeforeProbing: serialize_before_probing,
|
|
129
151
|
events.AfterProbing: serialize_after_probing,
|
|
152
|
+
events.BeforeAnalysis: serialize_before_analysis,
|
|
153
|
+
events.AfterAnalysis: serialize_after_analysis,
|
|
130
154
|
events.BeforeExecution: serialize_before_execution,
|
|
131
155
|
events.AfterExecution: serialize_after_execution,
|
|
132
156
|
events.Interrupted: serialize_interrupted,
|
|
@@ -141,6 +165,8 @@ def serialize_event(
|
|
|
141
165
|
on_initialized: SerializeFunc | None = None,
|
|
142
166
|
on_before_probing: SerializeFunc | None = None,
|
|
143
167
|
on_after_probing: SerializeFunc | None = None,
|
|
168
|
+
on_before_analysis: SerializeFunc | None = None,
|
|
169
|
+
on_after_analysis: SerializeFunc | None = None,
|
|
144
170
|
on_before_execution: SerializeFunc | None = None,
|
|
145
171
|
on_after_execution: SerializeFunc | None = None,
|
|
146
172
|
on_interrupted: SerializeFunc | None = None,
|
|
@@ -154,6 +180,8 @@ def serialize_event(
|
|
|
154
180
|
events.Initialized: on_initialized,
|
|
155
181
|
events.BeforeProbing: on_before_probing,
|
|
156
182
|
events.AfterProbing: on_after_probing,
|
|
183
|
+
events.BeforeAnalysis: on_before_analysis,
|
|
184
|
+
events.AfterAnalysis: on_after_analysis,
|
|
157
185
|
events.BeforeExecution: on_before_execution,
|
|
158
186
|
events.AfterExecution: on_after_execution,
|
|
159
187
|
events.Interrupted: on_interrupted,
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
from .formats import register_string_format as format
|
|
2
2
|
from .formats import unregister_string_format
|
|
3
3
|
from .loaders import from_aiohttp, from_asgi, from_dict, from_file, from_path, from_pytest_fixture, from_uri, from_wsgi
|
|
4
|
+
from .media_types import register_media_type as media_type
|
|
@@ -30,6 +30,7 @@ from ...types import NotSet
|
|
|
30
30
|
from ...serializers import Binary
|
|
31
31
|
from ...utils import compose, skip
|
|
32
32
|
from .constants import LOCATION_TO_CONTAINER
|
|
33
|
+
from .media_types import MEDIA_TYPES
|
|
33
34
|
from .negative import negative_schema
|
|
34
35
|
from .negative.utils import can_negate
|
|
35
36
|
from .parameters import OpenAPIBody, parameters_to_json_schema
|
|
@@ -175,6 +176,11 @@ def get_case_strategy(
|
|
|
175
176
|
else:
|
|
176
177
|
body_ = ValueContainer(value=body, location="body", generator=None)
|
|
177
178
|
else:
|
|
179
|
+
# This explicit body payload comes for a media type that has a custom strategy registered
|
|
180
|
+
# Such strategies only support binary payloads, otherwise they can't be serialized
|
|
181
|
+
if not isinstance(body, bytes) and media_type in MEDIA_TYPES:
|
|
182
|
+
all_media_types = operation.get_request_payload_content_types()
|
|
183
|
+
raise SerializationNotPossible.from_media_types(*all_media_types)
|
|
178
184
|
body_ = ValueContainer(value=body, location="body", generator=None)
|
|
179
185
|
|
|
180
186
|
if operation.schema.validate_schema and operation.method.upper() == "GET" and operation.body:
|
|
@@ -212,6 +218,8 @@ def _get_body_strategy(
|
|
|
212
218
|
operation: APIOperation,
|
|
213
219
|
generation_config: GenerationConfig,
|
|
214
220
|
) -> st.SearchStrategy:
|
|
221
|
+
if parameter.media_type in MEDIA_TYPES:
|
|
222
|
+
return MEDIA_TYPES[parameter.media_type]
|
|
215
223
|
# The cache key relies on object ids, which means that the parameter should not be mutated
|
|
216
224
|
# Note, the parent schema is not included as each parameter belong only to one schema
|
|
217
225
|
if parameter in _BODY_STRATEGIES_CACHE and strategy_factory in _BODY_STRATEGIES_CACHE[parameter]:
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import TYPE_CHECKING, Any, Collection
|
|
4
|
+
|
|
5
|
+
if TYPE_CHECKING:
|
|
6
|
+
from hypothesis import strategies as st
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
MEDIA_TYPES: dict[str, st.SearchStrategy[bytes]] = {}
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def register_media_type(name: str, strategy: st.SearchStrategy[bytes], *, aliases: Collection[str] = ()) -> None:
|
|
13
|
+
"""Register a strategy for the given media type."""
|
|
14
|
+
from ...serializers import SerializerContext, register
|
|
15
|
+
|
|
16
|
+
@register(name, aliases=aliases)
|
|
17
|
+
class MediaTypeSerializer:
|
|
18
|
+
def as_requests(self, context: SerializerContext, value: Any) -> dict[str, Any]:
|
|
19
|
+
return {"data": value}
|
|
20
|
+
|
|
21
|
+
def as_werkzeug(self, context: SerializerContext, value: Any) -> dict[str, Any]:
|
|
22
|
+
return {"data": value}
|
|
23
|
+
|
|
24
|
+
MEDIA_TYPES[name] = strategy
|
|
25
|
+
for alias in aliases:
|
|
26
|
+
MEDIA_TYPES[alias] = strategy
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def unregister_all() -> None:
|
|
30
|
+
from ...serializers import unregister
|
|
31
|
+
|
|
32
|
+
for media_type in MEDIA_TYPES:
|
|
33
|
+
unregister(media_type)
|
|
34
|
+
MEDIA_TYPES.clear()
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"""Processing of ``securityDefinitions`` or ``securitySchemes`` keywords."""
|
|
2
|
+
|
|
2
3
|
from __future__ import annotations
|
|
3
4
|
from dataclasses import dataclass
|
|
4
5
|
from typing import Any, ClassVar, Generator
|
|
@@ -126,7 +127,10 @@ class OpenAPISecurityProcessor(BaseSecurityProcessor):
|
|
|
126
127
|
security_schemes = components.get("securitySchemes", {})
|
|
127
128
|
if "$ref" in security_schemes:
|
|
128
129
|
return resolver.resolve(security_schemes["$ref"])[1]
|
|
129
|
-
return
|
|
130
|
+
return {
|
|
131
|
+
key: resolver.resolve(value["$ref"])[1] if "$ref" in value else value
|
|
132
|
+
for key, value in security_schemes.items()
|
|
133
|
+
}
|
|
130
134
|
|
|
131
135
|
def _make_http_auth_parameter(self, definition: dict[str, Any]) -> dict[str, Any]:
|
|
132
136
|
schema = make_auth_header_schema(definition)
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: schemathesis
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.26.0
|
|
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
|
|
7
7
|
Project-URL: Bug Tracker, https://github.com/schemathesis/schemathesis
|
|
8
8
|
Project-URL: Funding, https://github.com/sponsors/Stranger6667
|
|
9
9
|
Project-URL: Source Code, https://github.com/schemathesis/schemathesis
|
|
10
|
-
Author-email: Dmitry Dygalo <
|
|
11
|
-
Maintainer-email: Dmitry Dygalo <
|
|
10
|
+
Author-email: Dmitry Dygalo <dmitry@dygalo.dev>
|
|
11
|
+
Maintainer-email: Dmitry Dygalo <dmitry@dygalo.dev>
|
|
12
12
|
License-Expression: MIT
|
|
13
13
|
License-File: LICENSE
|
|
14
14
|
Keywords: graphql,hypothesis,openapi,pytest,testing
|
|
@@ -35,7 +35,8 @@ Requires-Dist: colorama<1.0,>=0.4
|
|
|
35
35
|
Requires-Dist: httpx<1.0,>=0.22.0
|
|
36
36
|
Requires-Dist: hypothesis-graphql<1,>=0.11.0
|
|
37
37
|
Requires-Dist: hypothesis-jsonschema<0.24,>=0.23.1
|
|
38
|
-
Requires-Dist: hypothesis<7,>=6.84.3
|
|
38
|
+
Requires-Dist: hypothesis<7,>=6.84.3; python_version > '3.8'
|
|
39
|
+
Requires-Dist: hypothesis[zoneinfo]<7,>=6.84.3; python_version == '3.8'
|
|
39
40
|
Requires-Dist: jsonschema<5.0,>=4.18.0
|
|
40
41
|
Requires-Dist: junit-xml<2.0,>=1.9
|
|
41
42
|
Requires-Dist: pyrate-limiter<3.0,>=2.10
|
|
@@ -224,7 +225,9 @@ Receive automatic comments in your pull requests and updates on GitHub checks st
|
|
|
224
225
|
|
|
225
226
|
### Software as a Service
|
|
226
227
|
|
|
227
|
-
|
|
228
|
+
Schemathesis CLI integrates with Schemathesis.io to enhance bug detection by optimizing test case generation for efficiency and realism. It leverages various techniques to infer appropriate data generation strategies, provide support for uncommon media types, and adjust schemas for faster data generation. The integration also detects the web server being used to generate more targeted test data.
|
|
229
|
+
|
|
230
|
+
Schemathesis.io offers a user-friendly UI that simplifies viewing and analyzing test results. If you prefer an all-in-one solution with quick setup, we have a [free tier](https://schemathesis.io/#pricing) available.
|
|
228
231
|
|
|
229
232
|
## How it works
|
|
230
233
|
|
|
@@ -1,51 +1,51 @@
|
|
|
1
1
|
schemathesis/__init__.py,sha256=WW1NBZxmc5jRR0c24xz-ZtTkJMUQG5MOw1MGVRRGc1s,1970
|
|
2
2
|
schemathesis/_compat.py,sha256=VizWR0QAVj4l7WZautNe_zmo3AJ7WBl2zrJQOfJAQtk,1837
|
|
3
|
-
schemathesis/_dependency_versions.py,sha256=
|
|
4
|
-
schemathesis/_hypothesis.py,sha256=
|
|
3
|
+
schemathesis/_dependency_versions.py,sha256=sLlY3jGtnjIg2JRMbVt89lYKiD3K2zl1A5QF0_5_O08,728
|
|
4
|
+
schemathesis/_hypothesis.py,sha256=9qqO4xlNRXm8lYJaYN53N5HoQTHKljjZ1M3jzWKKnbU,10244
|
|
5
5
|
schemathesis/_lazy_import.py,sha256=LTki2tM168fCcXet1e6qDoQq8SLgInUA3xjXgi7cXJk,469
|
|
6
6
|
schemathesis/_override.py,sha256=oetGCvMGqP8plf2Suvql2E0n3P-PU9SIySKwlBjzuR4,1629
|
|
7
|
-
schemathesis/_xml.py,sha256=
|
|
8
|
-
schemathesis/auths.py,sha256=
|
|
7
|
+
schemathesis/_xml.py,sha256=5AMZuno3fS4YWPqBlrv5V-f-BmawkdwmpD3GpAsaxnA,6922
|
|
8
|
+
schemathesis/auths.py,sha256=tUuaHvXO96HJr22Gu9OmlSpL2wbAqKZr3TRbb9dVyA4,14732
|
|
9
9
|
schemathesis/checks.py,sha256=SYts1Teecg-5kSHBo32Pzhh7YQ4a1Y7DIfldd-0VTj8,2155
|
|
10
10
|
schemathesis/code_samples.py,sha256=QFwyA7dmc_ij2FRwfbe0uMRm6j2yeofQ8zXynZV3SZI,4122
|
|
11
11
|
schemathesis/constants.py,sha256=gptQZnXJwEJjuLgw62n7LL_kbkE7dhxUgyyJw_dEEAc,2672
|
|
12
12
|
schemathesis/exceptions.py,sha256=fAkismvT-QcIunr6rZ6OllhXFK3sHjwiZJlD63fttQw,19631
|
|
13
13
|
schemathesis/failures.py,sha256=oKbIDD075ymLT4h7SQK-herHDT608d-StPX9pXmOSVU,5996
|
|
14
|
-
schemathesis/filters.py,sha256=
|
|
14
|
+
schemathesis/filters.py,sha256=9SJyZ8mcuDyKG2G1hp2Nfz-TvyJWP_NcntsgwFWYY_Q,10250
|
|
15
15
|
schemathesis/graphql.py,sha256=YkoKWY5K8lxp7H3ikAs-IsoDbiPwJvChG7O8p3DgwtI,229
|
|
16
16
|
schemathesis/hooks.py,sha256=cNJgCh7SyLWT1sYDKF5ncDC80ld08CinvKo2IqLMV4g,12396
|
|
17
17
|
schemathesis/lazy.py,sha256=CivWpvesh4iYLSkatXbQPTEOruWmXvuZQ29gng5p9wM,14846
|
|
18
18
|
schemathesis/loaders.py,sha256=RJnrbf-3vZ7KXmRBkmr3uqWyg0eHzOnONABuudWcTIg,4586
|
|
19
19
|
schemathesis/models.py,sha256=F2aWZW_BqCFzgv9s7KFkRt-EGQTimhKbYaehRtqC6Lw,46757
|
|
20
|
-
schemathesis/parameters.py,sha256=
|
|
20
|
+
schemathesis/parameters.py,sha256=VheEffVzoSfYaSEcG7KhPlA4ypifosG8biiHifzwL8g,2257
|
|
21
21
|
schemathesis/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
22
22
|
schemathesis/sanitization.py,sha256=WSV_MB5YRrYkp1pQRPHrzsidqsKcqYZiq64N9grKobo,8956
|
|
23
|
-
schemathesis/schemas.py,sha256=
|
|
24
|
-
schemathesis/serializers.py,sha256=
|
|
23
|
+
schemathesis/schemas.py,sha256=rtlbHoEmZt5sF31E7Mn_MJdfcaCRUejVAkxFicrq3c0,18252
|
|
24
|
+
schemathesis/serializers.py,sha256=_xoebWkVrgbGbPjPgTgwuN-fN4YT004aj7kImyPComY,11619
|
|
25
25
|
schemathesis/targets.py,sha256=tzp7VZ2-7g2nZHCooRgFzTMtOVcbl0rvtNR421hQthA,1162
|
|
26
26
|
schemathesis/throttling.py,sha256=QQcS7TFpXHavUjm0kdFaCcCRhAGlgQ4y3XIbkdRoW20,1079
|
|
27
27
|
schemathesis/types.py,sha256=AglR5M0bce-YXeDRkweToXTP0GjNOWVjS_mIsxLobwc,919
|
|
28
28
|
schemathesis/utils.py,sha256=4HXvHysnHp-Uz2HfNgLfW5F5VjL-mtixrjjzRCEJhYo,5233
|
|
29
|
-
schemathesis/cli/__init__.py,sha256=
|
|
29
|
+
schemathesis/cli/__init__.py,sha256=MSdz9Xt2qvey-3HbWj5nfwV2nZ-rdV05u_Eh_Be9m0c,64909
|
|
30
30
|
schemathesis/cli/callbacks.py,sha256=HmD0WmSYf5x8v4xeZdOKzy_8CEk23NitUlL8JQ7LHdQ,14950
|
|
31
|
-
schemathesis/cli/cassettes.py,sha256=
|
|
31
|
+
schemathesis/cli/cassettes.py,sha256=1ucgYyOZiNu44uOv044FdfKTzQolUyhAM2onk4m3MD0,12988
|
|
32
32
|
schemathesis/cli/constants.py,sha256=XoezT0_fHuiOY2e--cmBUhNieJsepcUoW8e48QuLSDI,1544
|
|
33
|
-
schemathesis/cli/context.py,sha256=
|
|
33
|
+
schemathesis/cli/context.py,sha256=wwfdSL_NKHEyzQnj8PcnaJdzasa_N08e2KPvy4Wl8N4,1874
|
|
34
34
|
schemathesis/cli/debug.py,sha256=PDEa-oHyz5bZ8aYjRYARwQaCv_AC6HM_L43LJfe4vUM,657
|
|
35
35
|
schemathesis/cli/handlers.py,sha256=62GPWPmgeGUz3pkDd01H4UCXcIy5a9yRtU7qaAeeR-A,389
|
|
36
36
|
schemathesis/cli/junitxml.py,sha256=jMZzYBYpBE7Rl5n1ct3J0bhhPa1lhBeYb33lTZE1eW8,1792
|
|
37
37
|
schemathesis/cli/options.py,sha256=7_dXcrPT0kWqAkm60cAT1J0IsTOcvNFxT1pcHYttBuI,2558
|
|
38
38
|
schemathesis/cli/sanitization.py,sha256=v-9rsMCBpWhom0Bfzj_8c6InqxkVjSWK6kRoURa52Nk,727
|
|
39
39
|
schemathesis/cli/output/__init__.py,sha256=AXaUzQ1nhQ-vXhW4-X-91vE2VQtEcCOrGtQXXNN55iQ,29
|
|
40
|
-
schemathesis/cli/output/default.py,sha256=
|
|
41
|
-
schemathesis/cli/output/short.py,sha256=
|
|
40
|
+
schemathesis/cli/output/default.py,sha256=XxnfZXXERuB1X3M8dlVBZnYUuZ0JXsQMCX4EEv5-oYg,38213
|
|
41
|
+
schemathesis/cli/output/short.py,sha256=MmFMOKBRqqvgq7Kmx6XJc7Vqkr9g5BrJBxRbyZ0Rh-k,2068
|
|
42
42
|
schemathesis/contrib/__init__.py,sha256=FH8NL8NXgSKBFOF8Jy_EB6T4CJEaiM-tmDhz16B2o4k,187
|
|
43
43
|
schemathesis/contrib/unique_data.py,sha256=zxrmAlQH7Bcil9YSfy2EazwLj2rxLzOvAE3O6QRRkFY,1317
|
|
44
44
|
schemathesis/contrib/openapi/__init__.py,sha256=YMj_b2f3ohGwEt8QQXlxBT60wqvdCFS6516I4EHWVNM,217
|
|
45
45
|
schemathesis/contrib/openapi/fill_missing_examples.py,sha256=dY1ygG41PWmITOegdv2uwpDm-UiBcyDSOuGCZMGxYAg,582
|
|
46
46
|
schemathesis/contrib/openapi/formats/__init__.py,sha256=OpHWPW8MkTLVv83QXPYY1HVLflhmSH49hSVefm1oVV0,111
|
|
47
47
|
schemathesis/contrib/openapi/formats/uuid.py,sha256=SsTH_bInSXnlGLNyYLmwUfvafVnVOTHdmhmKytQVoUQ,390
|
|
48
|
-
schemathesis/experimental/__init__.py,sha256=
|
|
48
|
+
schemathesis/experimental/__init__.py,sha256=e4QbqDYeGU769e5XhWOK6nJeCj9GfNFqdernZw05bQs,2275
|
|
49
49
|
schemathesis/extra/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
50
50
|
schemathesis/extra/_aiohttp.py,sha256=YQIV-jHdlAyyw5O4FQDQC8KTLjwKi-LWfD3U7JU4Pns,956
|
|
51
51
|
schemathesis/extra/_flask.py,sha256=BHCbxBDoMlIvNS5sRNyrPN1NwHxiDQt0IsyfYwwoFes,289
|
|
@@ -63,25 +63,26 @@ schemathesis/internal/jsonschema.py,sha256=eQEkBLTdJ__U7Z0XYXB_RVBQJ4texfFO0AaOo
|
|
|
63
63
|
schemathesis/internal/result.py,sha256=Og_ZfwwQ6JFmW79ExC1ndjVMIOHJB7o9XtrfhYIjOOs,461
|
|
64
64
|
schemathesis/internal/transformation.py,sha256=ZNEtL8ezryLdP9-of4eSRBMSjjV_lBQ5DZZfoPGZFEU,449
|
|
65
65
|
schemathesis/internal/validation.py,sha256=G7i8jIMUpAeOnDsDF_eWYvRZe_yMprRswx0QAtMPyEw,966
|
|
66
|
-
schemathesis/runner/__init__.py,sha256=
|
|
67
|
-
schemathesis/runner/events.py,sha256=
|
|
68
|
-
schemathesis/runner/probes.py,sha256=
|
|
69
|
-
schemathesis/runner/serialization.py,sha256=
|
|
66
|
+
schemathesis/runner/__init__.py,sha256=kkqjC_5G2Mrq00syLNUDHP3sXqwiId8_cusKtIlOyXM,21419
|
|
67
|
+
schemathesis/runner/events.py,sha256=eZc4TT8C8mWCMr9h4JvlijvQQ-x8wFry8LntdsYIL-A,10200
|
|
68
|
+
schemathesis/runner/probes.py,sha256=t_B38-ljy-p3Odw-dqcZUVIjYTPwBvac8KE5GaLnz4M,5546
|
|
69
|
+
schemathesis/runner/serialization.py,sha256=SOyEvO87ZtGCG_zfYW5uaKZBiXbVtEM7yGDuVp0wrI8,16003
|
|
70
70
|
schemathesis/runner/impl/__init__.py,sha256=1E2iME8uthYPBh9MjwVBCTFV-P3fi7AdphCCoBBspjs,199
|
|
71
|
-
schemathesis/runner/impl/core.py,sha256=
|
|
71
|
+
schemathesis/runner/impl/core.py,sha256=vaw6OBgYOVT44-gR2t_EiWLArX2RmtAxITR3WZWCX8k,39558
|
|
72
72
|
schemathesis/runner/impl/solo.py,sha256=Y_tNhVBVxcuxv65hN0FjxLlVSC41ebHMOM1xSzVrNk8,3358
|
|
73
73
|
schemathesis/runner/impl/threadpool.py,sha256=2-2Wvw7msezZtenZY5vU_x3FGLLVlH-ywvhU9hTwAAo,15073
|
|
74
74
|
schemathesis/service/__init__.py,sha256=cDVTCFD1G-vvhxZkJUwiToTAEQ-0ByIoqwXvJBCf_V8,472
|
|
75
75
|
schemathesis/service/auth.py,sha256=AiZXvSNwz1Hi3fn-OCp6XD-E4GAMDlfcX8fORJ8_dLo,445
|
|
76
76
|
schemathesis/service/ci.py,sha256=Nke_GHtUlbJtZA-7JmjD1Nu4aKBCtkUo8AwFwm38qpk,6781
|
|
77
|
-
schemathesis/service/client.py,sha256=
|
|
77
|
+
schemathesis/service/client.py,sha256=TcUnLyiGYuU3ENZRStycx5p6tQe_iknioYKPqlEe5Xk,5218
|
|
78
78
|
schemathesis/service/constants.py,sha256=Q1bhtLRkmhso4KSVAtWl0u446Wlbk3ShOL3ZdbPoJOM,1502
|
|
79
79
|
schemathesis/service/events.py,sha256=oysiTeHkE1r65CZTPlyNXW3XFh0_Xt0eq9-FNBUy5U0,1237
|
|
80
|
-
schemathesis/service/
|
|
81
|
-
schemathesis/service/
|
|
82
|
-
schemathesis/service/
|
|
80
|
+
schemathesis/service/extensions.py,sha256=PuG-Qfb9Y1oWOaa2Dxb8qhTH0t9CyawzZ2xkUoL7Sd4,7827
|
|
81
|
+
schemathesis/service/hosts.py,sha256=Qxa-BGV56z9pRHl8kUm8LNZQiW3fALDYVcgZqUMh4qQ,3122
|
|
82
|
+
schemathesis/service/metadata.py,sha256=ajiDb2VDquXRoYl7h9LGDoj9GWq6pKv5nN-WVtTnCIE,2086
|
|
83
|
+
schemathesis/service/models.py,sha256=45J7lugoFP1QbQFAEFCi9aj-yuTBKKHtil9vA8BWnfk,6577
|
|
83
84
|
schemathesis/service/report.py,sha256=ua1-cfa-TgGshZgimUQ3-YQqykhZqMHCkEificBKncM,8294
|
|
84
|
-
schemathesis/service/serialization.py,sha256=
|
|
85
|
+
schemathesis/service/serialization.py,sha256=si3NF9_nN7l2f2EPnVGWNN07Oc9lFh_ZhaqhO78qtWg,8305
|
|
85
86
|
schemathesis/service/usage.py,sha256=Z-GCwFcW1pS6YdC-ziEOynikqgOttxp2Uyj_dfK5Q7A,2437
|
|
86
87
|
schemathesis/specs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
87
88
|
schemathesis/specs/graphql/__init__.py,sha256=fgyHtvWNUVWismBTOqxQtgLoTighTfvMv6v6QCD_Oyc,85
|
|
@@ -90,8 +91,8 @@ schemathesis/specs/graphql/nodes.py,sha256=7F5jbk96uTZZXK9Ulr86KpCAn8z6LKMBcrLrd
|
|
|
90
91
|
schemathesis/specs/graphql/scalars.py,sha256=W5oj6AcjiXpR-Z6eSSp1oPWl0mjH2NF-w87nRFhrHHg,1805
|
|
91
92
|
schemathesis/specs/graphql/schemas.py,sha256=pbonjYD2neMujoMZZMM_MXFJt-gk1qsW59Qkfed9Ltg,13967
|
|
92
93
|
schemathesis/specs/graphql/validation.py,sha256=SqQbj9uymGUQxlHXc8HkQccIq25uwP5CvLF1zReb1Xg,1636
|
|
93
|
-
schemathesis/specs/openapi/__init__.py,sha256=
|
|
94
|
-
schemathesis/specs/openapi/_hypothesis.py,sha256=
|
|
94
|
+
schemathesis/specs/openapi/__init__.py,sha256=HDcx3bqpa6qWPpyMrxAbM3uTo0Lqpg-BUNZhDJSJKnw,279
|
|
95
|
+
schemathesis/specs/openapi/_hypothesis.py,sha256=Z-Zapvv734eBrZVdKukhJ-fDXqPDIPez5OOgvSCI5Sg,22716
|
|
95
96
|
schemathesis/specs/openapi/checks.py,sha256=1WB_UGNqptfJThWLUNbds1Q-IzOGbbHCOYPIhBYk-zs,5411
|
|
96
97
|
schemathesis/specs/openapi/constants.py,sha256=JqM_FHOenqS_MuUE9sxVQ8Hnw0DNM8cnKDwCwPLhID4,783
|
|
97
98
|
schemathesis/specs/openapi/converter.py,sha256=9TKeKvNi9MVvoNMfqoPz_cODO8oNrMSTXTOwLLfjD_Q,2799
|
|
@@ -99,23 +100,24 @@ schemathesis/specs/openapi/definitions.py,sha256=t5xffHLBnSgptBdDkSqYN1OfT-DaXoe
|
|
|
99
100
|
schemathesis/specs/openapi/examples.py,sha256=igLDfMpNhRMAk7mYBqi93CtVRQTZCWjCJ2KxlQFotdA,14932
|
|
100
101
|
schemathesis/specs/openapi/filters.py,sha256=Ei-QTFcGCvGSIunT-GYQrtqzB-kqvUePOcUuC7B7mT8,1436
|
|
101
102
|
schemathesis/specs/openapi/formats.py,sha256=JmmkQWNAj5XreXb7Edgj4LADAf4m86YulR_Ec8evpJ4,1220
|
|
102
|
-
schemathesis/specs/openapi/links.py,sha256=
|
|
103
|
+
schemathesis/specs/openapi/links.py,sha256=FUjqEf6Sv6PeS0UX7CLL5p2VHa9vA1MGDPhx2pfYg1s,14576
|
|
103
104
|
schemathesis/specs/openapi/loaders.py,sha256=Jm37MTUmbVVkOxoRAJOo_T_Ex-tWu2ir7YG7y-v-BjM,24014
|
|
105
|
+
schemathesis/specs/openapi/media_types.py,sha256=dNTxpRQbY3SubdVjh4Cjb38R6Bc9MF9BsRQwPD87x0g,1017
|
|
104
106
|
schemathesis/specs/openapi/parameters.py,sha256=5jMZQZFsZNBFjG22Bqot-Rc65emiSA4E95rIzwImThk,13610
|
|
105
107
|
schemathesis/specs/openapi/references.py,sha256=YGunHAGubYPKbMqQtpFWZm1D4AGxB8wLuiVhE6T6cWo,8978
|
|
106
108
|
schemathesis/specs/openapi/schemas.py,sha256=mIoJkuaQeF5fcrjBFGuudglQJz93vbaMc0wFVJjdVTg,50424
|
|
107
|
-
schemathesis/specs/openapi/security.py,sha256=
|
|
109
|
+
schemathesis/specs/openapi/security.py,sha256=nCUIaZTzI6t26HAfd8YTHW6mFxXAPN9Ds-P9UnXxmNA,6628
|
|
108
110
|
schemathesis/specs/openapi/serialization.py,sha256=jajqowTIiyEVWEx-Gy4ZinXZewNg0n_ipsGzz7JXP7c,11383
|
|
109
111
|
schemathesis/specs/openapi/utils.py,sha256=gmW4v6o6sZQifajfPquhFeWmZWGQM89mOOBYZvjnE7g,741
|
|
110
112
|
schemathesis/specs/openapi/validation.py,sha256=UJWtW7VTRyMbbBHMRhMwNSUn92k1Hnp4p7IIVqCvqiI,998
|
|
111
|
-
schemathesis/specs/openapi/expressions/__init__.py,sha256=
|
|
113
|
+
schemathesis/specs/openapi/expressions/__init__.py,sha256=GIOeU0wU40LJ5V8vSdrDjpChAkGibZyGFijNSoF81xw,661
|
|
112
114
|
schemathesis/specs/openapi/expressions/context.py,sha256=ngZQPUvN8PKqvH8SIvhM3yyDZjb_g1aPzH9hzquRsKE,350
|
|
113
115
|
schemathesis/specs/openapi/expressions/errors.py,sha256=YLVhps-sYcslgVaahfcUYxUSHlIfWL-rQMeT5PZSMZ8,219
|
|
114
|
-
schemathesis/specs/openapi/expressions/lexer.py,sha256=
|
|
115
|
-
schemathesis/specs/openapi/expressions/nodes.py,sha256=
|
|
116
|
+
schemathesis/specs/openapi/expressions/lexer.py,sha256=j-zGtpeJlaMsuZXbOvLI-m0BF2cYJMs4o0FkMN8tykg,3825
|
|
117
|
+
schemathesis/specs/openapi/expressions/nodes.py,sha256=YkYcMq_myhdBQrjPCYoBdxadVNtrxyt4y226HjLGGK8,3299
|
|
116
118
|
schemathesis/specs/openapi/expressions/parser.py,sha256=xFA3cTTxl7VgAOiFF-vSDZ3usUFXpd3jk6ewMLeg6ao,3523
|
|
117
119
|
schemathesis/specs/openapi/negative/__init__.py,sha256=Nhe6qeSCnlgf5l-Fu6yHvL--3tkAkxYyIGffuo77bLs,3696
|
|
118
|
-
schemathesis/specs/openapi/negative/mutations.py,sha256=
|
|
120
|
+
schemathesis/specs/openapi/negative/mutations.py,sha256=SQjQR5aK-LpbSWzwrtbFX3PQ2xb5hzJV7eZXw6MlRJo,18643
|
|
119
121
|
schemathesis/specs/openapi/negative/types.py,sha256=a7buCcVxNBG6ILBM3A7oNTAX0lyDseEtZndBuej8MbI,174
|
|
120
122
|
schemathesis/specs/openapi/negative/utils.py,sha256=ozcOIuASufLqZSgnKUACjX-EOZrrkuNdXX0SDnLoGYA,168
|
|
121
123
|
schemathesis/specs/openapi/stateful/__init__.py,sha256=R8RhPJD3rDzqL4eA9jSnUwh9Q_Mv27ka1C5FdRuyusY,4509
|
|
@@ -127,8 +129,8 @@ schemathesis/transports/auth.py,sha256=ZKFku9gjhIG6445qNC2p_64Yt9Iz_4azbvja8AMpt
|
|
|
127
129
|
schemathesis/transports/content_types.py,sha256=xU8RZWxz-CyWRqQTI2fGYQacB7KasoY7LL_bxPQdyPY,2144
|
|
128
130
|
schemathesis/transports/headers.py,sha256=EDxpm8su0AuhyqZUkMex-OFZMAJN_5NHah7fDT2HDZE,989
|
|
129
131
|
schemathesis/transports/responses.py,sha256=U6z1VW5w19c9qRRoyf2ljkuXR2smTfWikmrTGqlgl18,1619
|
|
130
|
-
schemathesis-3.
|
|
131
|
-
schemathesis-3.
|
|
132
|
-
schemathesis-3.
|
|
133
|
-
schemathesis-3.
|
|
134
|
-
schemathesis-3.
|
|
132
|
+
schemathesis-3.26.0.dist-info/METADATA,sha256=hx0GrhFy5iphwAsc2_2SZZhNYFtr1hXSjL_xY8J_AEo,16257
|
|
133
|
+
schemathesis-3.26.0.dist-info/WHEEL,sha256=hKi7AIIx6qfnsRbr087vpeJnrVUuDokDHZacPPMW7-Y,87
|
|
134
|
+
schemathesis-3.26.0.dist-info/entry_points.txt,sha256=VHyLcOG7co0nOeuk8WjgpRETk5P1E2iCLrn26Zkn5uk,158
|
|
135
|
+
schemathesis-3.26.0.dist-info/licenses/LICENSE,sha256=PsPYgrDhZ7g9uwihJXNG-XVb55wj2uYhkl2DD8oAzY0,1103
|
|
136
|
+
schemathesis-3.26.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|