schemathesis 3.25.5__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 +39 -37
- schemathesis/cli/cassettes.py +4 -4
- schemathesis/cli/context.py +6 -0
- schemathesis/cli/output/default.py +185 -45
- schemathesis/cli/output/short.py +8 -0
- schemathesis/experimental/__init__.py +7 -0
- schemathesis/filters.py +1 -0
- schemathesis/models.py +5 -2
- schemathesis/parameters.py +1 -0
- schemathesis/runner/__init__.py +36 -9
- schemathesis/runner/events.py +33 -1
- schemathesis/runner/impl/core.py +99 -23
- schemathesis/{cli → runner}/probes.py +32 -21
- schemathesis/runner/serialization.py +4 -2
- schemathesis/schemas.py +1 -0
- schemathesis/serializers.py +11 -3
- 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 +44 -1
- schemathesis/specs/openapi/__init__.py +1 -0
- schemathesis/specs/openapi/_hypothesis.py +9 -1
- schemathesis/specs/openapi/examples.py +22 -24
- 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/schemas.py +10 -3
- schemathesis/specs/openapi/security.py +5 -1
- {schemathesis-3.25.5.dist-info → schemathesis-3.26.0.dist-info}/METADATA +8 -5
- {schemathesis-3.25.5.dist-info → schemathesis-3.26.0.dist-info}/RECORD +42 -40
- {schemathesis-3.25.5.dist-info → schemathesis-3.26.0.dist-info}/WHEEL +0 -0
- {schemathesis-3.25.5.dist-info → schemathesis-3.26.0.dist-info}/entry_points.txt +0 -0
- {schemathesis-3.25.5.dist-info → schemathesis-3.26.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -3,19 +3,24 @@ from __future__ import annotations
|
|
|
3
3
|
from contextlib import suppress
|
|
4
4
|
from dataclasses import dataclass
|
|
5
5
|
from functools import lru_cache
|
|
6
|
-
from itertools import
|
|
7
|
-
from typing import Any, Generator, Union, cast
|
|
6
|
+
from itertools import chain, cycle, islice
|
|
7
|
+
from typing import TYPE_CHECKING, Any, Generator, Union, cast
|
|
8
8
|
|
|
9
9
|
import requests
|
|
10
|
-
import hypothesis
|
|
11
|
-
from hypothesis_jsonschema import from_schema
|
|
12
10
|
from hypothesis.strategies import SearchStrategy
|
|
11
|
+
from hypothesis_jsonschema import from_schema
|
|
13
12
|
|
|
14
|
-
from .parameters import OpenAPIParameter, OpenAPIBody
|
|
15
13
|
from ...constants import DEFAULT_RESPONSE_TIMEOUT
|
|
16
14
|
from ...models import APIOperation, Case
|
|
17
|
-
from
|
|
15
|
+
from ..._hypothesis import get_single_example
|
|
16
|
+
from ._hypothesis import get_case_strategy, get_default_format_strategies
|
|
17
|
+
from .formats import STRING_FORMATS
|
|
18
18
|
from .constants import LOCATION_TO_CONTAINER
|
|
19
|
+
from .parameters import OpenAPIBody, OpenAPIParameter
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
if TYPE_CHECKING:
|
|
23
|
+
from ...generation import GenerationConfig
|
|
19
24
|
|
|
20
25
|
|
|
21
26
|
@dataclass
|
|
@@ -248,7 +253,7 @@ def extract_from_schema(
|
|
|
248
253
|
# Generated by one of `anyOf` or similar sub-schemas
|
|
249
254
|
continue
|
|
250
255
|
subschema = operation.schema.prepare_schema(subschema)
|
|
251
|
-
generated = _generate_single_example(subschema)
|
|
256
|
+
generated = _generate_single_example(subschema, operation.schema.generation_config)
|
|
252
257
|
variants[name] = [generated]
|
|
253
258
|
# Calculate the maximum number of examples any property has
|
|
254
259
|
total_combos = max(len(examples) for examples in variants.values())
|
|
@@ -264,24 +269,17 @@ def extract_from_schema(
|
|
|
264
269
|
yield [value]
|
|
265
270
|
|
|
266
271
|
|
|
267
|
-
def _generate_single_example(
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
phases=(hypothesis.Phase.generate,),
|
|
277
|
-
suppress_health_check=list(hypothesis.HealthCheck),
|
|
272
|
+
def _generate_single_example(
|
|
273
|
+
schema: dict[str, Any],
|
|
274
|
+
generation_config: GenerationConfig,
|
|
275
|
+
) -> Any:
|
|
276
|
+
strategy = from_schema(
|
|
277
|
+
schema,
|
|
278
|
+
custom_formats={**get_default_format_strategies(), **STRING_FORMATS},
|
|
279
|
+
allow_x00=generation_config.allow_x00,
|
|
280
|
+
codec=generation_config.codec,
|
|
278
281
|
)
|
|
279
|
-
|
|
280
|
-
examples.append(ex)
|
|
281
|
-
|
|
282
|
-
example_generating_inner_function()
|
|
283
|
-
|
|
284
|
-
return examples[0]
|
|
282
|
+
return get_single_example(strategy)
|
|
285
283
|
|
|
286
284
|
|
|
287
285
|
def produce_combinations(examples: list[Example]) -> Generator[dict[str, Any], None, None]:
|
|
@@ -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()
|
|
@@ -33,6 +33,7 @@ from ...auths import AuthStorage
|
|
|
33
33
|
from ...generation import DataGenerationMethod, GenerationConfig
|
|
34
34
|
from ...constants import HTTP_METHODS, NOT_SET
|
|
35
35
|
from ...exceptions import (
|
|
36
|
+
InternalError,
|
|
36
37
|
OperationSchemaError,
|
|
37
38
|
UsageError,
|
|
38
39
|
get_missing_content_type_error,
|
|
@@ -808,7 +809,7 @@ class SwaggerV20(BaseOpenAPISchema):
|
|
|
808
809
|
|
|
809
810
|
@property
|
|
810
811
|
def spec_version(self) -> str:
|
|
811
|
-
return self.raw_schema
|
|
812
|
+
return self.raw_schema.get("swagger", "2.0")
|
|
812
813
|
|
|
813
814
|
@property
|
|
814
815
|
def verbose_name(self) -> str:
|
|
@@ -1060,8 +1061,14 @@ class OpenApi30(SwaggerV20):
|
|
|
1060
1061
|
files = []
|
|
1061
1062
|
content = operation.definition.resolved["requestBody"]["content"]
|
|
1062
1063
|
# Open API 3.0 requires media types to be present. We can get here only if the schema defines
|
|
1063
|
-
# the "multipart/form-data" media type
|
|
1064
|
-
|
|
1064
|
+
# the "multipart/form-data" media type, or any other more general media type that matches it (like `*/*`)
|
|
1065
|
+
for media_type, entry in content.items():
|
|
1066
|
+
main, sub = parse_content_type(media_type)
|
|
1067
|
+
if main in ("*", "multipart") and sub in ("*", "form-data"):
|
|
1068
|
+
schema = entry["schema"]
|
|
1069
|
+
break
|
|
1070
|
+
else:
|
|
1071
|
+
raise InternalError("No 'multipart/form-data' media type found in the schema")
|
|
1065
1072
|
for name, property_schema in schema.get("properties", {}).items():
|
|
1066
1073
|
if name in form_data:
|
|
1067
1074
|
if isinstance(form_data[name], list):
|
|
@@ -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,52 +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
|
-
schemathesis/models.py,sha256=
|
|
20
|
-
schemathesis/parameters.py,sha256=
|
|
19
|
+
schemathesis/models.py,sha256=F2aWZW_BqCFzgv9s7KFkRt-EGQTimhKbYaehRtqC6Lw,46757
|
|
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
|
-
schemathesis/cli/probes.py,sha256=HAz5kWeXL9NiRFtLC86rDvBgpwDLJ8NnCDyVU74Yp9I,5245
|
|
39
38
|
schemathesis/cli/sanitization.py,sha256=v-9rsMCBpWhom0Bfzj_8c6InqxkVjSWK6kRoURa52Nk,727
|
|
40
39
|
schemathesis/cli/output/__init__.py,sha256=AXaUzQ1nhQ-vXhW4-X-91vE2VQtEcCOrGtQXXNN55iQ,29
|
|
41
|
-
schemathesis/cli/output/default.py,sha256=
|
|
42
|
-
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
|
|
43
42
|
schemathesis/contrib/__init__.py,sha256=FH8NL8NXgSKBFOF8Jy_EB6T4CJEaiM-tmDhz16B2o4k,187
|
|
44
43
|
schemathesis/contrib/unique_data.py,sha256=zxrmAlQH7Bcil9YSfy2EazwLj2rxLzOvAE3O6QRRkFY,1317
|
|
45
44
|
schemathesis/contrib/openapi/__init__.py,sha256=YMj_b2f3ohGwEt8QQXlxBT60wqvdCFS6516I4EHWVNM,217
|
|
46
45
|
schemathesis/contrib/openapi/fill_missing_examples.py,sha256=dY1ygG41PWmITOegdv2uwpDm-UiBcyDSOuGCZMGxYAg,582
|
|
47
46
|
schemathesis/contrib/openapi/formats/__init__.py,sha256=OpHWPW8MkTLVv83QXPYY1HVLflhmSH49hSVefm1oVV0,111
|
|
48
47
|
schemathesis/contrib/openapi/formats/uuid.py,sha256=SsTH_bInSXnlGLNyYLmwUfvafVnVOTHdmhmKytQVoUQ,390
|
|
49
|
-
schemathesis/experimental/__init__.py,sha256=
|
|
48
|
+
schemathesis/experimental/__init__.py,sha256=e4QbqDYeGU769e5XhWOK6nJeCj9GfNFqdernZw05bQs,2275
|
|
50
49
|
schemathesis/extra/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
51
50
|
schemathesis/extra/_aiohttp.py,sha256=YQIV-jHdlAyyw5O4FQDQC8KTLjwKi-LWfD3U7JU4Pns,956
|
|
52
51
|
schemathesis/extra/_flask.py,sha256=BHCbxBDoMlIvNS5sRNyrPN1NwHxiDQt0IsyfYwwoFes,289
|
|
@@ -64,24 +63,26 @@ schemathesis/internal/jsonschema.py,sha256=eQEkBLTdJ__U7Z0XYXB_RVBQJ4texfFO0AaOo
|
|
|
64
63
|
schemathesis/internal/result.py,sha256=Og_ZfwwQ6JFmW79ExC1ndjVMIOHJB7o9XtrfhYIjOOs,461
|
|
65
64
|
schemathesis/internal/transformation.py,sha256=ZNEtL8ezryLdP9-of4eSRBMSjjV_lBQ5DZZfoPGZFEU,449
|
|
66
65
|
schemathesis/internal/validation.py,sha256=G7i8jIMUpAeOnDsDF_eWYvRZe_yMprRswx0QAtMPyEw,966
|
|
67
|
-
schemathesis/runner/__init__.py,sha256=
|
|
68
|
-
schemathesis/runner/events.py,sha256=
|
|
69
|
-
schemathesis/runner/
|
|
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,32 +91,33 @@ 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
|
|
98
99
|
schemathesis/specs/openapi/definitions.py,sha256=t5xffHLBnSgptBdDkSqYN1OfT-DaXoeUw2tIgNEe2q8,94057
|
|
99
|
-
schemathesis/specs/openapi/examples.py,sha256=
|
|
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
|
-
schemathesis/specs/openapi/schemas.py,sha256=
|
|
107
|
-
schemathesis/specs/openapi/security.py,sha256=
|
|
108
|
+
schemathesis/specs/openapi/schemas.py,sha256=mIoJkuaQeF5fcrjBFGuudglQJz93vbaMc0wFVJjdVTg,50424
|
|
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
|