schemathesis 3.38.3__py3-none-any.whl → 3.38.5__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 +29 -0
- schemathesis/hooks.py +1 -3
- schemathesis/models.py +4 -9
- schemathesis/parameters.py +1 -4
- schemathesis/runner/impl/context.py +2 -5
- schemathesis/schemas.py +1 -3
- schemathesis/specs/openapi/parameters.py +1 -5
- schemathesis/transports/__init__.py +1 -3
- {schemathesis-3.38.3.dist-info → schemathesis-3.38.5.dist-info}/METADATA +1 -1
- {schemathesis-3.38.3.dist-info → schemathesis-3.38.5.dist-info}/RECORD +13 -13
- {schemathesis-3.38.3.dist-info → schemathesis-3.38.5.dist-info}/WHEEL +0 -0
- {schemathesis-3.38.3.dist-info → schemathesis-3.38.5.dist-info}/entry_points.txt +0 -0
- {schemathesis-3.38.3.dist-info → schemathesis-3.38.5.dist-info}/licenses/LICENSE +0 -0
schemathesis/_hypothesis.py
CHANGED
|
@@ -23,6 +23,7 @@ from .experimental import COVERAGE_PHASE
|
|
|
23
23
|
from .generation import DataGenerationMethod, GenerationConfig, combine_strategies, coverage, get_single_example
|
|
24
24
|
from .hooks import GLOBAL_HOOK_DISPATCHER, HookContext, HookDispatcher
|
|
25
25
|
from .models import APIOperation, Case, GenerationMetadata, TestPhase
|
|
26
|
+
from .parameters import ParameterSet
|
|
26
27
|
from .transports.content_types import parse_content_type
|
|
27
28
|
from .transports.headers import has_invalid_characters, is_latin_1_encodable
|
|
28
29
|
from .types import NotSet
|
|
@@ -356,16 +357,44 @@ def _iter_coverage_cases(
|
|
|
356
357
|
)
|
|
357
358
|
return case
|
|
358
359
|
|
|
360
|
+
def _combination_schema(
|
|
361
|
+
combination: dict[str, Any], _required: set[str], _parameter_set: ParameterSet
|
|
362
|
+
) -> dict[str, Any]:
|
|
363
|
+
return {
|
|
364
|
+
"properties": {
|
|
365
|
+
parameter.name: parameter.as_json_schema(operation)
|
|
366
|
+
for parameter in _parameter_set
|
|
367
|
+
if parameter.name in combination
|
|
368
|
+
},
|
|
369
|
+
"required": list(_required),
|
|
370
|
+
"additionalProperties": False,
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
def _yield_negative(
|
|
374
|
+
subschema: dict[str, Any], _location: str, _container_name: str
|
|
375
|
+
) -> Generator[Case, None, None]:
|
|
376
|
+
for more in coverage.cover_schema_iter(
|
|
377
|
+
coverage.CoverageContext(data_generation_methods=[DataGenerationMethod.negative]),
|
|
378
|
+
subschema,
|
|
379
|
+
):
|
|
380
|
+
yield make_case(more.value, more.description, _location, _container_name)
|
|
381
|
+
|
|
359
382
|
# 1. Generate only required properties
|
|
360
383
|
if required and all_params != required:
|
|
361
384
|
only_required = {k: v for k, v in base_container.items() if k in required}
|
|
362
385
|
yield make_case(only_required, "Only required properties", location, container_name)
|
|
386
|
+
if DataGenerationMethod.negative in data_generation_methods:
|
|
387
|
+
subschema = _combination_schema(only_required, required, parameter_set)
|
|
388
|
+
yield from _yield_negative(subschema, location, container_name)
|
|
363
389
|
|
|
364
390
|
# 2. Generate combinations with required properties and one optional property
|
|
365
391
|
for opt_param in optional:
|
|
366
392
|
combo = {k: v for k, v in base_container.items() if k in required or k == opt_param}
|
|
367
393
|
if combo != base_container:
|
|
368
394
|
yield make_case(combo, f"All required properties and optional '{opt_param}'", location, container_name)
|
|
395
|
+
if DataGenerationMethod.negative in data_generation_methods:
|
|
396
|
+
subschema = _combination_schema(combo, required, parameter_set)
|
|
397
|
+
yield from _yield_negative(subschema, location, container_name)
|
|
369
398
|
|
|
370
399
|
# 3. Generate one combination for each size from 2 to N-1 of optional parameters
|
|
371
400
|
if len(optional) > 1:
|
schemathesis/hooks.py
CHANGED
|
@@ -13,7 +13,6 @@ from .internal.deprecation import deprecated_property
|
|
|
13
13
|
|
|
14
14
|
if TYPE_CHECKING:
|
|
15
15
|
from hypothesis import strategies as st
|
|
16
|
-
from hypothesis.vendor.pretty import RepresentationPrinter
|
|
17
16
|
|
|
18
17
|
from .models import APIOperation, Case
|
|
19
18
|
from .schemas import BaseSchema
|
|
@@ -33,8 +32,7 @@ class RegisteredHook:
|
|
|
33
32
|
signature: inspect.Signature
|
|
34
33
|
scopes: list[HookScope]
|
|
35
34
|
|
|
36
|
-
def _repr_pretty_(self,
|
|
37
|
-
return None
|
|
35
|
+
def _repr_pretty_(self, *args: Any, **kwargs: Any) -> None: ...
|
|
38
36
|
|
|
39
37
|
|
|
40
38
|
@dataclass
|
schemathesis/models.py
CHANGED
|
@@ -64,7 +64,6 @@ if TYPE_CHECKING:
|
|
|
64
64
|
import requests.auth
|
|
65
65
|
import werkzeug
|
|
66
66
|
from hypothesis import strategies as st
|
|
67
|
-
from hypothesis.vendor.pretty import RepresentationPrinter
|
|
68
67
|
from requests.structures import CaseInsensitiveDict
|
|
69
68
|
|
|
70
69
|
from .auths import AuthStorage
|
|
@@ -250,8 +249,7 @@ class Case:
|
|
|
250
249
|
cookies=self._get_diff("cookies"),
|
|
251
250
|
)
|
|
252
251
|
|
|
253
|
-
def _repr_pretty_(self,
|
|
254
|
-
return None
|
|
252
|
+
def _repr_pretty_(self, *args: Any, **kwargs: Any) -> None: ...
|
|
255
253
|
|
|
256
254
|
@deprecated_property(removed_in="4.0", replacement="`operation`")
|
|
257
255
|
def endpoint(self) -> APIOperation:
|
|
@@ -668,8 +666,7 @@ class OperationDefinition(Generic[D]):
|
|
|
668
666
|
|
|
669
667
|
__slots__ = ("raw", "resolved", "scope")
|
|
670
668
|
|
|
671
|
-
def _repr_pretty_(self,
|
|
672
|
-
return None
|
|
669
|
+
def _repr_pretty_(self, *args: Any, **kwargs: Any) -> None: ...
|
|
673
670
|
|
|
674
671
|
|
|
675
672
|
C = TypeVar("C", bound=Case)
|
|
@@ -1174,8 +1171,7 @@ class TestResult:
|
|
|
1174
1171
|
# DEPRECATED: Seed is the same per test run
|
|
1175
1172
|
seed: int | None = None
|
|
1176
1173
|
|
|
1177
|
-
def _repr_pretty_(self,
|
|
1178
|
-
return None
|
|
1174
|
+
def _repr_pretty_(self, *args: Any, **kwargs: Any) -> None: ...
|
|
1179
1175
|
|
|
1180
1176
|
def mark_errored(self) -> None:
|
|
1181
1177
|
self.is_errored = True
|
|
@@ -1270,8 +1266,7 @@ class TestResultSet:
|
|
|
1270
1266
|
generic_errors: list[OperationSchemaError] = field(default_factory=list)
|
|
1271
1267
|
warnings: list[str] = field(default_factory=list)
|
|
1272
1268
|
|
|
1273
|
-
def _repr_pretty_(self,
|
|
1274
|
-
return None
|
|
1269
|
+
def _repr_pretty_(self, *args: Any, **kwargs: Any) -> None: ...
|
|
1275
1270
|
|
|
1276
1271
|
def __iter__(self) -> Iterator[TestResult]:
|
|
1277
1272
|
return iter(self.results)
|
schemathesis/parameters.py
CHANGED
|
@@ -9,8 +9,6 @@ from dataclasses import dataclass, field
|
|
|
9
9
|
from typing import TYPE_CHECKING, Any, Generator, Generic, TypeVar
|
|
10
10
|
|
|
11
11
|
if TYPE_CHECKING:
|
|
12
|
-
from hypothesis.vendor.pretty import RepresentationPrinter
|
|
13
|
-
|
|
14
12
|
from .models import APIOperation
|
|
15
13
|
|
|
16
14
|
|
|
@@ -57,8 +55,7 @@ class ParameterSet(Generic[P]):
|
|
|
57
55
|
|
|
58
56
|
items: list[P] = field(default_factory=list)
|
|
59
57
|
|
|
60
|
-
def _repr_pretty_(self,
|
|
61
|
-
return None
|
|
58
|
+
def _repr_pretty_(self, *args: Any, **kwargs: Any) -> None: ...
|
|
62
59
|
|
|
63
60
|
def add(self, parameter: P) -> None:
|
|
64
61
|
"""Add a new parameter."""
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from dataclasses import dataclass
|
|
4
|
-
from typing import TYPE_CHECKING
|
|
4
|
+
from typing import TYPE_CHECKING, Any
|
|
5
5
|
|
|
6
6
|
from ...constants import NOT_SET
|
|
7
7
|
from ...internal.checks import CheckConfig
|
|
@@ -10,8 +10,6 @@ from ...models import TestResult, TestResultSet
|
|
|
10
10
|
if TYPE_CHECKING:
|
|
11
11
|
import threading
|
|
12
12
|
|
|
13
|
-
from hypothesis.vendor.pretty import RepresentationPrinter
|
|
14
|
-
|
|
15
13
|
from ..._override import CaseOverride
|
|
16
14
|
from ...exceptions import OperationSchemaError
|
|
17
15
|
from ...models import Case
|
|
@@ -52,8 +50,7 @@ class RunnerContext:
|
|
|
52
50
|
self.checks_config = checks_config
|
|
53
51
|
self.override = override
|
|
54
52
|
|
|
55
|
-
def _repr_pretty_(self,
|
|
56
|
-
return None
|
|
53
|
+
def _repr_pretty_(self, *args: Any, **kwargs: Any) -> None: ...
|
|
57
54
|
|
|
58
55
|
@property
|
|
59
56
|
def is_stopped(self) -> bool:
|
schemathesis/schemas.py
CHANGED
|
@@ -49,7 +49,6 @@ from .utils import PARAMETRIZE_MARKER, GivenInput, given_proxy
|
|
|
49
49
|
if TYPE_CHECKING:
|
|
50
50
|
import hypothesis
|
|
51
51
|
from hypothesis.strategies import SearchStrategy
|
|
52
|
-
from hypothesis.vendor.pretty import RepresentationPrinter
|
|
53
52
|
from pyrate_limiter import Limiter
|
|
54
53
|
|
|
55
54
|
from .stateful import Stateful, StatefulTest
|
|
@@ -103,8 +102,7 @@ class BaseSchema(Mapping):
|
|
|
103
102
|
def __post_init__(self) -> None:
|
|
104
103
|
self.hook = to_filterable_hook(self.hooks) # type: ignore[method-assign]
|
|
105
104
|
|
|
106
|
-
def _repr_pretty_(self,
|
|
107
|
-
return None
|
|
105
|
+
def _repr_pretty_(self, *args: Any, **kwargs: Any) -> None: ...
|
|
108
106
|
|
|
109
107
|
def include(
|
|
110
108
|
self,
|
|
@@ -9,8 +9,6 @@ from ...parameters import Parameter
|
|
|
9
9
|
from .converter import to_json_schema_recursive
|
|
10
10
|
|
|
11
11
|
if TYPE_CHECKING:
|
|
12
|
-
from hypothesis.vendor.pretty import RepresentationPrinter
|
|
13
|
-
|
|
14
12
|
from ...models import APIOperation
|
|
15
13
|
|
|
16
14
|
|
|
@@ -23,9 +21,7 @@ class OpenAPIParameter(Parameter):
|
|
|
23
21
|
nullable_field: ClassVar[str]
|
|
24
22
|
supported_jsonschema_keywords: ClassVar[tuple[str, ...]]
|
|
25
23
|
|
|
26
|
-
def _repr_pretty_(self,
|
|
27
|
-
return None
|
|
28
|
-
|
|
24
|
+
def _repr_pretty_(self, *args: Any, **kwargs: Any) -> None: ...
|
|
29
25
|
@property
|
|
30
26
|
def description(self) -> str | None:
|
|
31
27
|
"""A brief parameter description."""
|
|
@@ -21,7 +21,6 @@ if TYPE_CHECKING:
|
|
|
21
21
|
import requests
|
|
22
22
|
import werkzeug
|
|
23
23
|
from _typeshed.wsgi import WSGIApplication
|
|
24
|
-
from hypothesis.vendor.pretty import RepresentationPrinter
|
|
25
24
|
from starlette_testclient._testclient import ASGI2App, ASGI3App
|
|
26
25
|
|
|
27
26
|
from ..models import Case
|
|
@@ -35,8 +34,7 @@ class RequestConfig:
|
|
|
35
34
|
proxy: str | None = None
|
|
36
35
|
cert: RequestCert | None = None
|
|
37
36
|
|
|
38
|
-
def _repr_pretty_(self,
|
|
39
|
-
return None
|
|
37
|
+
def _repr_pretty_(self, *args: Any, **kwargs: Any) -> None: ...
|
|
40
38
|
|
|
41
39
|
@property
|
|
42
40
|
def prepared_timeout(self) -> float | None:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: schemathesis
|
|
3
|
-
Version: 3.38.
|
|
3
|
+
Version: 3.38.5
|
|
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,7 +1,7 @@
|
|
|
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=lm0J9uQFENfm7-6_wEaNKshGF1wmZebfZJ9G_sUhlqE,20839
|
|
5
5
|
schemathesis/_lazy_import.py,sha256=aMhWYgbU2JOltyWBb32vnWBb6kykOghucEzI_F70yVE,470
|
|
6
6
|
schemathesis/_override.py,sha256=TAjYB3eJQmlw9K_xiR9ptt9Wj7if4U7UFlUhGjpBAoM,1625
|
|
7
7
|
schemathesis/_patches.py,sha256=Hsbpn4UVeXUQD2Kllrbq01CSWsTYENWa0VJTyhX5C2k,895
|
|
@@ -15,14 +15,14 @@ schemathesis/exceptions.py,sha256=5zjPlyVoQNJGbwufplL6ZVV7FEBPBNPHGdlQRJ7xnhE,20
|
|
|
15
15
|
schemathesis/failures.py,sha256=fybNkCF2rqH90e3KW_XwpgZnSM6f7_FERcxHT9Pd3NM,7911
|
|
16
16
|
schemathesis/filters.py,sha256=f3c_yXIBwIin-9Y0qU2TkcC1NEM_Mw34jGUHQc0BOyw,17026
|
|
17
17
|
schemathesis/graphql.py,sha256=XiuKcfoOB92iLFC8zpz2msLkM0_V0TLdxPNBqrrGZ8w,216
|
|
18
|
-
schemathesis/hooks.py,sha256=
|
|
18
|
+
schemathesis/hooks.py,sha256=p5AXgjVGtka0jn9MOeyBaRUtNbqZTs4iaJqytYTacHc,14856
|
|
19
19
|
schemathesis/lazy.py,sha256=Ddhkk7Tpc_VcRGYkCtKDmP2gpjxVmEZ3b01ZTNjbm8I,19004
|
|
20
20
|
schemathesis/loaders.py,sha256=MoEhcdOEBJxNRn5X-ZNhWB9jZDHQQNpkNfEdQjf_NDw,4590
|
|
21
|
-
schemathesis/models.py,sha256=
|
|
22
|
-
schemathesis/parameters.py,sha256=
|
|
21
|
+
schemathesis/models.py,sha256=s0lt63sBShsgKoM_kqLPb56jIeHSwTfk-TDQmQowXH8,49669
|
|
22
|
+
schemathesis/parameters.py,sha256=izlu4MFYT1RWrC4RBxrV6weeCal-ODbdLQLMb0PYCZY,2327
|
|
23
23
|
schemathesis/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
24
24
|
schemathesis/sanitization.py,sha256=Lycn1VVfula9B6XpzkxTHja7CZ7RHqbUh9kBic0Yi4M,9056
|
|
25
|
-
schemathesis/schemas.py,sha256=
|
|
25
|
+
schemathesis/schemas.py,sha256=kwgdRD7JdE0iovuZVqArQCf_Dqfo2CsqqWYeR_bgsZo,20526
|
|
26
26
|
schemathesis/serializers.py,sha256=HyYVSVR71FhWfIErnH6OoGLOa4tkh9mTeVUTIpzEW24,11739
|
|
27
27
|
schemathesis/targets.py,sha256=XIGRghvEzbmEJjse9aZgNEj67L3jAbiazm2rxURWgDE,2351
|
|
28
28
|
schemathesis/throttling.py,sha256=aisUc4MJDGIOGUAs9L2DlWWpdd4KyAFuNVKhYoaUC9M,1719
|
|
@@ -79,7 +79,7 @@ schemathesis/runner/events.py,sha256=cRKKSDvHvKLBIyFBz-J0JtAKshbGGKco9eaMyLCgzsY
|
|
|
79
79
|
schemathesis/runner/probes.py,sha256=no5AfO3kse25qvHevjeUfB0Q3C860V2AYzschUW3QMQ,5688
|
|
80
80
|
schemathesis/runner/serialization.py,sha256=vZi1wd9HX9Swp9VJ_hZFeDgy3Y726URpHra-TbPvQhk,20762
|
|
81
81
|
schemathesis/runner/impl/__init__.py,sha256=1E2iME8uthYPBh9MjwVBCTFV-P3fi7AdphCCoBBspjs,199
|
|
82
|
-
schemathesis/runner/impl/context.py,sha256=
|
|
82
|
+
schemathesis/runner/impl/context.py,sha256=8pedlvOnh7pjvEMveaSWCUiG4s12ST4EZCJqcWLu5Bg,2950
|
|
83
83
|
schemathesis/runner/impl/core.py,sha256=3bCwPcZB1br-clz3oQz8KV9yF9hZK7t3F29ZEq2ErBQ,47642
|
|
84
84
|
schemathesis/runner/impl/solo.py,sha256=y5QSxgK8nBCEjZVD5BpFvYUXmB6tEjk6TwxAo__NejA,2911
|
|
85
85
|
schemathesis/runner/impl/threadpool.py,sha256=yNR5LYE8f3N_4t42OwSgy0_qdGgBPM7d11F9c9oEAAs,15075
|
|
@@ -116,7 +116,7 @@ schemathesis/specs/openapi/formats.py,sha256=3KtEC-8nQRwMErS-WpMadXsr8R0O-NzYwFi
|
|
|
116
116
|
schemathesis/specs/openapi/links.py,sha256=C4Uir2P_EcpqME8ee_a1vdUM8Tm3ZcKNn2YsGjZiMUQ,17935
|
|
117
117
|
schemathesis/specs/openapi/loaders.py,sha256=5B1cgYEBj3h2psPQxzrQ5Xq5owLVGw-u9HsCQIx7yFE,25705
|
|
118
118
|
schemathesis/specs/openapi/media_types.py,sha256=dNTxpRQbY3SubdVjh4Cjb38R6Bc9MF9BsRQwPD87x0g,1017
|
|
119
|
-
schemathesis/specs/openapi/parameters.py,sha256=
|
|
119
|
+
schemathesis/specs/openapi/parameters.py,sha256=LUahlWKCDSlp94v2IA1Q90pyeECgO6FmrqbzCU-9Z0Y,14658
|
|
120
120
|
schemathesis/specs/openapi/patterns.py,sha256=IK2BkXI1xByEz5if6jvydFE07nq5rDa4k_-2xX7ifG8,4715
|
|
121
121
|
schemathesis/specs/openapi/references.py,sha256=euxM02kQGMHh4Ss1jWjOY_gyw_HazafKITIsvOEiAvI,9831
|
|
122
122
|
schemathesis/specs/openapi/schemas.py,sha256=MLU2h9DrQNCDkk74MFFSj-8BsKjkJsf9lJQHPxLFVps,53845
|
|
@@ -147,14 +147,14 @@ schemathesis/stateful/sink.py,sha256=bHYlgh-fMwg1Srxk_XGs0-WV34YccotwH9PGrxCK57A
|
|
|
147
147
|
schemathesis/stateful/state_machine.py,sha256=PFztY82W5enuXjO6k4Mz8fbHmDJ7Z8OLYZRWtuBeyjg,12956
|
|
148
148
|
schemathesis/stateful/statistic.py,sha256=2-uU5xpT9CbMulKgJWLZN6MUpC0Fskf5yXTt4ef4NFA,542
|
|
149
149
|
schemathesis/stateful/validation.py,sha256=23qSZjC1_xRmtCX4OqsyG6pGxdlo6IZYid695ZpDQyU,3747
|
|
150
|
-
schemathesis/transports/__init__.py,sha256=
|
|
150
|
+
schemathesis/transports/__init__.py,sha256=k35qBp-657qnHE9FfCowqO3rqOgCwSUnrdl2vAV3hnQ,12951
|
|
151
151
|
schemathesis/transports/asgi.py,sha256=bwW9vMd1h89Jh7I4jHJVwSNUQzHvc7-JOD5u4hSHZd8,212
|
|
152
152
|
schemathesis/transports/auth.py,sha256=urSTO9zgFO1qU69xvnKHPFQV0SlJL3d7_Ojl0tLnZwo,1143
|
|
153
153
|
schemathesis/transports/content_types.py,sha256=MiKOm-Hy5i75hrROPdpiBZPOTDzOwlCdnthJD12AJzI,2187
|
|
154
154
|
schemathesis/transports/headers.py,sha256=hr_AIDOfUxsJxpHfemIZ_uNG3_vzS_ZeMEKmZjbYiBE,990
|
|
155
155
|
schemathesis/transports/responses.py,sha256=OFD4ZLqwEFpo7F9vaP_SVgjhxAqatxIj38FS4XVq8Qs,1680
|
|
156
|
-
schemathesis-3.38.
|
|
157
|
-
schemathesis-3.38.
|
|
158
|
-
schemathesis-3.38.
|
|
159
|
-
schemathesis-3.38.
|
|
160
|
-
schemathesis-3.38.
|
|
156
|
+
schemathesis-3.38.5.dist-info/METADATA,sha256=Bd928CBGxx6iB8XZyXL8M1VR85eXY2wUm9h2o5uwuEg,12956
|
|
157
|
+
schemathesis-3.38.5.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
|
|
158
|
+
schemathesis-3.38.5.dist-info/entry_points.txt,sha256=VHyLcOG7co0nOeuk8WjgpRETk5P1E2iCLrn26Zkn5uk,158
|
|
159
|
+
schemathesis-3.38.5.dist-info/licenses/LICENSE,sha256=PsPYgrDhZ7g9uwihJXNG-XVb55wj2uYhkl2DD8oAzY0,1103
|
|
160
|
+
schemathesis-3.38.5.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|