schemathesis 3.25.5__py3-none-any.whl → 4.0.0a1__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/__init__.py +27 -65
- schemathesis/auths.py +102 -82
- schemathesis/checks.py +126 -46
- schemathesis/cli/__init__.py +11 -1766
- schemathesis/cli/__main__.py +4 -0
- schemathesis/cli/commands/__init__.py +37 -0
- schemathesis/cli/commands/run/__init__.py +662 -0
- schemathesis/cli/commands/run/checks.py +80 -0
- schemathesis/cli/commands/run/context.py +117 -0
- schemathesis/cli/commands/run/events.py +35 -0
- schemathesis/cli/commands/run/executor.py +138 -0
- schemathesis/cli/commands/run/filters.py +194 -0
- schemathesis/cli/commands/run/handlers/__init__.py +46 -0
- schemathesis/cli/commands/run/handlers/base.py +18 -0
- schemathesis/cli/commands/run/handlers/cassettes.py +494 -0
- schemathesis/cli/commands/run/handlers/junitxml.py +54 -0
- schemathesis/cli/commands/run/handlers/output.py +746 -0
- schemathesis/cli/commands/run/hypothesis.py +105 -0
- schemathesis/cli/commands/run/loaders.py +129 -0
- schemathesis/cli/{callbacks.py → commands/run/validation.py} +103 -174
- schemathesis/cli/constants.py +5 -52
- schemathesis/cli/core.py +17 -0
- schemathesis/cli/ext/fs.py +14 -0
- schemathesis/cli/ext/groups.py +55 -0
- schemathesis/cli/{options.py → ext/options.py} +39 -10
- schemathesis/cli/hooks.py +36 -0
- schemathesis/contrib/__init__.py +1 -3
- schemathesis/contrib/openapi/__init__.py +1 -3
- schemathesis/contrib/openapi/fill_missing_examples.py +3 -5
- schemathesis/core/__init__.py +58 -0
- schemathesis/core/compat.py +25 -0
- schemathesis/core/control.py +2 -0
- schemathesis/core/curl.py +58 -0
- schemathesis/core/deserialization.py +65 -0
- schemathesis/core/errors.py +370 -0
- schemathesis/core/failures.py +285 -0
- schemathesis/core/fs.py +19 -0
- schemathesis/{_lazy_import.py → core/lazy_import.py} +1 -0
- schemathesis/core/loaders.py +104 -0
- schemathesis/core/marks.py +66 -0
- schemathesis/{transports/content_types.py → core/media_types.py} +17 -13
- schemathesis/core/output/__init__.py +69 -0
- schemathesis/core/output/sanitization.py +197 -0
- schemathesis/core/rate_limit.py +60 -0
- schemathesis/core/registries.py +31 -0
- schemathesis/{internal → core}/result.py +1 -1
- schemathesis/core/transforms.py +113 -0
- schemathesis/core/transport.py +108 -0
- schemathesis/core/validation.py +38 -0
- schemathesis/core/version.py +7 -0
- schemathesis/engine/__init__.py +30 -0
- schemathesis/engine/config.py +59 -0
- schemathesis/engine/context.py +119 -0
- schemathesis/engine/control.py +36 -0
- schemathesis/engine/core.py +157 -0
- schemathesis/engine/errors.py +394 -0
- schemathesis/engine/events.py +337 -0
- schemathesis/engine/phases/__init__.py +66 -0
- schemathesis/{cli → engine/phases}/probes.py +63 -70
- schemathesis/engine/phases/stateful/__init__.py +65 -0
- schemathesis/engine/phases/stateful/_executor.py +326 -0
- schemathesis/engine/phases/stateful/context.py +85 -0
- schemathesis/engine/phases/unit/__init__.py +174 -0
- schemathesis/engine/phases/unit/_executor.py +321 -0
- schemathesis/engine/phases/unit/_pool.py +74 -0
- schemathesis/engine/recorder.py +241 -0
- schemathesis/errors.py +31 -0
- schemathesis/experimental/__init__.py +18 -14
- schemathesis/filters.py +103 -14
- schemathesis/generation/__init__.py +21 -37
- schemathesis/generation/case.py +190 -0
- schemathesis/generation/coverage.py +931 -0
- schemathesis/generation/hypothesis/__init__.py +30 -0
- schemathesis/generation/hypothesis/builder.py +585 -0
- schemathesis/generation/hypothesis/examples.py +50 -0
- schemathesis/generation/hypothesis/given.py +66 -0
- schemathesis/generation/hypothesis/reporting.py +14 -0
- schemathesis/generation/hypothesis/strategies.py +16 -0
- schemathesis/generation/meta.py +115 -0
- schemathesis/generation/modes.py +28 -0
- schemathesis/generation/overrides.py +96 -0
- schemathesis/generation/stateful/__init__.py +20 -0
- schemathesis/{stateful → generation/stateful}/state_machine.py +68 -81
- schemathesis/generation/targets.py +69 -0
- schemathesis/graphql/__init__.py +15 -0
- schemathesis/graphql/checks.py +115 -0
- schemathesis/graphql/loaders.py +131 -0
- schemathesis/hooks.py +99 -67
- schemathesis/openapi/__init__.py +13 -0
- schemathesis/openapi/checks.py +412 -0
- schemathesis/openapi/generation/__init__.py +0 -0
- schemathesis/openapi/generation/filters.py +63 -0
- schemathesis/openapi/loaders.py +178 -0
- schemathesis/pytest/__init__.py +5 -0
- schemathesis/pytest/control_flow.py +7 -0
- schemathesis/pytest/lazy.py +273 -0
- schemathesis/pytest/loaders.py +12 -0
- schemathesis/{extra/pytest_plugin.py → pytest/plugin.py} +106 -127
- schemathesis/python/__init__.py +0 -0
- schemathesis/python/asgi.py +12 -0
- schemathesis/python/wsgi.py +12 -0
- schemathesis/schemas.py +537 -261
- schemathesis/specs/graphql/__init__.py +0 -1
- schemathesis/specs/graphql/_cache.py +25 -0
- schemathesis/specs/graphql/nodes.py +1 -0
- schemathesis/specs/graphql/scalars.py +7 -5
- schemathesis/specs/graphql/schemas.py +215 -187
- schemathesis/specs/graphql/validation.py +11 -18
- schemathesis/specs/openapi/__init__.py +7 -1
- schemathesis/specs/openapi/_cache.py +122 -0
- schemathesis/specs/openapi/_hypothesis.py +146 -165
- schemathesis/specs/openapi/checks.py +565 -67
- schemathesis/specs/openapi/converter.py +33 -6
- schemathesis/specs/openapi/definitions.py +11 -18
- schemathesis/specs/openapi/examples.py +153 -39
- schemathesis/specs/openapi/expressions/__init__.py +37 -2
- schemathesis/specs/openapi/expressions/context.py +4 -6
- schemathesis/specs/openapi/expressions/extractors.py +23 -0
- schemathesis/specs/openapi/expressions/lexer.py +20 -18
- schemathesis/specs/openapi/expressions/nodes.py +38 -14
- schemathesis/specs/openapi/expressions/parser.py +26 -5
- schemathesis/specs/openapi/formats.py +45 -0
- schemathesis/specs/openapi/links.py +65 -165
- schemathesis/specs/openapi/media_types.py +32 -0
- schemathesis/specs/openapi/negative/__init__.py +7 -3
- schemathesis/specs/openapi/negative/mutations.py +24 -8
- schemathesis/specs/openapi/parameters.py +46 -30
- schemathesis/specs/openapi/patterns.py +137 -0
- schemathesis/specs/openapi/references.py +47 -57
- schemathesis/specs/openapi/schemas.py +483 -367
- schemathesis/specs/openapi/security.py +25 -7
- schemathesis/specs/openapi/serialization.py +11 -6
- schemathesis/specs/openapi/stateful/__init__.py +185 -73
- schemathesis/specs/openapi/utils.py +6 -1
- schemathesis/transport/__init__.py +104 -0
- schemathesis/transport/asgi.py +26 -0
- schemathesis/transport/prepare.py +99 -0
- schemathesis/transport/requests.py +221 -0
- schemathesis/{_xml.py → transport/serialization.py} +143 -28
- schemathesis/transport/wsgi.py +165 -0
- schemathesis-4.0.0a1.dist-info/METADATA +297 -0
- schemathesis-4.0.0a1.dist-info/RECORD +152 -0
- {schemathesis-3.25.5.dist-info → schemathesis-4.0.0a1.dist-info}/WHEEL +1 -1
- {schemathesis-3.25.5.dist-info → schemathesis-4.0.0a1.dist-info}/entry_points.txt +1 -1
- schemathesis/_compat.py +0 -74
- schemathesis/_dependency_versions.py +0 -17
- schemathesis/_hypothesis.py +0 -246
- schemathesis/_override.py +0 -49
- schemathesis/cli/cassettes.py +0 -375
- schemathesis/cli/context.py +0 -55
- schemathesis/cli/debug.py +0 -26
- schemathesis/cli/handlers.py +0 -16
- schemathesis/cli/junitxml.py +0 -43
- schemathesis/cli/output/__init__.py +0 -1
- schemathesis/cli/output/default.py +0 -765
- schemathesis/cli/output/short.py +0 -40
- schemathesis/cli/sanitization.py +0 -20
- schemathesis/code_samples.py +0 -149
- schemathesis/constants.py +0 -55
- schemathesis/contrib/openapi/formats/__init__.py +0 -9
- schemathesis/contrib/openapi/formats/uuid.py +0 -15
- schemathesis/contrib/unique_data.py +0 -41
- schemathesis/exceptions.py +0 -560
- schemathesis/extra/_aiohttp.py +0 -27
- schemathesis/extra/_flask.py +0 -10
- schemathesis/extra/_server.py +0 -17
- schemathesis/failures.py +0 -209
- schemathesis/fixups/__init__.py +0 -36
- schemathesis/fixups/fast_api.py +0 -41
- schemathesis/fixups/utf8_bom.py +0 -29
- schemathesis/graphql.py +0 -4
- schemathesis/internal/__init__.py +0 -7
- schemathesis/internal/copy.py +0 -13
- schemathesis/internal/datetime.py +0 -5
- schemathesis/internal/deprecation.py +0 -34
- schemathesis/internal/jsonschema.py +0 -35
- schemathesis/internal/transformation.py +0 -15
- schemathesis/internal/validation.py +0 -34
- schemathesis/lazy.py +0 -361
- schemathesis/loaders.py +0 -120
- schemathesis/models.py +0 -1231
- schemathesis/parameters.py +0 -86
- schemathesis/runner/__init__.py +0 -555
- schemathesis/runner/events.py +0 -309
- schemathesis/runner/impl/__init__.py +0 -3
- schemathesis/runner/impl/core.py +0 -986
- schemathesis/runner/impl/solo.py +0 -90
- schemathesis/runner/impl/threadpool.py +0 -400
- schemathesis/runner/serialization.py +0 -411
- schemathesis/sanitization.py +0 -248
- schemathesis/serializers.py +0 -315
- schemathesis/service/__init__.py +0 -18
- schemathesis/service/auth.py +0 -11
- schemathesis/service/ci.py +0 -201
- schemathesis/service/client.py +0 -100
- schemathesis/service/constants.py +0 -38
- schemathesis/service/events.py +0 -57
- schemathesis/service/hosts.py +0 -107
- schemathesis/service/metadata.py +0 -46
- schemathesis/service/models.py +0 -49
- schemathesis/service/report.py +0 -255
- schemathesis/service/serialization.py +0 -184
- schemathesis/service/usage.py +0 -65
- schemathesis/specs/graphql/loaders.py +0 -344
- schemathesis/specs/openapi/filters.py +0 -49
- schemathesis/specs/openapi/loaders.py +0 -667
- schemathesis/specs/openapi/stateful/links.py +0 -92
- schemathesis/specs/openapi/validation.py +0 -25
- schemathesis/stateful/__init__.py +0 -133
- schemathesis/targets.py +0 -45
- schemathesis/throttling.py +0 -41
- schemathesis/transports/__init__.py +0 -5
- schemathesis/transports/auth.py +0 -15
- schemathesis/transports/headers.py +0 -35
- schemathesis/transports/responses.py +0 -52
- schemathesis/types.py +0 -35
- schemathesis/utils.py +0 -169
- schemathesis-3.25.5.dist-info/METADATA +0 -356
- schemathesis-3.25.5.dist-info/RECORD +0 -134
- /schemathesis/{extra → cli/ext}/__init__.py +0 -0
- {schemathesis-3.25.5.dist-info → schemathesis-4.0.0a1.dist-info}/licenses/LICENSE +0 -0
schemathesis/cli/context.py
DELETED
@@ -1,55 +0,0 @@
|
|
1
|
-
from __future__ import annotations
|
2
|
-
import os
|
3
|
-
import shutil
|
4
|
-
from dataclasses import dataclass, field
|
5
|
-
from queue import Queue
|
6
|
-
from typing import TYPE_CHECKING
|
7
|
-
|
8
|
-
from ..code_samples import CodeSampleStyle
|
9
|
-
from ..internal.deprecation import deprecated_property
|
10
|
-
from ..runner.serialization import SerializedTestResult
|
11
|
-
|
12
|
-
if TYPE_CHECKING:
|
13
|
-
import hypothesis
|
14
|
-
|
15
|
-
|
16
|
-
@dataclass
|
17
|
-
class ServiceReportContext:
|
18
|
-
queue: Queue
|
19
|
-
service_base_url: str
|
20
|
-
|
21
|
-
|
22
|
-
@dataclass
|
23
|
-
class FileReportContext:
|
24
|
-
queue: Queue
|
25
|
-
filename: str | None = None
|
26
|
-
|
27
|
-
|
28
|
-
@dataclass
|
29
|
-
class ExecutionContext:
|
30
|
-
"""Storage for the current context of the execution."""
|
31
|
-
|
32
|
-
hypothesis_settings: hypothesis.settings
|
33
|
-
hypothesis_output: list[str] = field(default_factory=list)
|
34
|
-
workers_num: int = 1
|
35
|
-
rate_limit: str | None = None
|
36
|
-
show_trace: bool = False
|
37
|
-
wait_for_schema: float | None = None
|
38
|
-
validate_schema: bool = True
|
39
|
-
operations_processed: int = 0
|
40
|
-
# It is set in runtime, from the `Initialized` event
|
41
|
-
operations_count: int | None = None
|
42
|
-
seed: int | None = None
|
43
|
-
current_line_length: int = 0
|
44
|
-
terminal_size: os.terminal_size = field(default_factory=shutil.get_terminal_size)
|
45
|
-
results: list[SerializedTestResult] = field(default_factory=list)
|
46
|
-
cassette_path: str | None = None
|
47
|
-
junit_xml_file: str | None = None
|
48
|
-
is_interrupted: bool = False
|
49
|
-
verbosity: int = 0
|
50
|
-
code_sample_style: CodeSampleStyle = CodeSampleStyle.default()
|
51
|
-
report: ServiceReportContext | FileReportContext | None = None
|
52
|
-
|
53
|
-
@deprecated_property(removed_in="4.0", replacement="show_trace")
|
54
|
-
def show_errors_tracebacks(self) -> bool:
|
55
|
-
return self.show_trace
|
schemathesis/cli/debug.py
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
from __future__ import annotations
|
2
|
-
import json
|
3
|
-
from dataclasses import dataclass
|
4
|
-
from typing import TYPE_CHECKING
|
5
|
-
|
6
|
-
|
7
|
-
from .handlers import EventHandler
|
8
|
-
|
9
|
-
if TYPE_CHECKING:
|
10
|
-
from click.utils import LazyFile
|
11
|
-
from ..runner import events
|
12
|
-
from .context import ExecutionContext
|
13
|
-
|
14
|
-
|
15
|
-
@dataclass
|
16
|
-
class DebugOutputHandler(EventHandler):
|
17
|
-
file_handle: LazyFile
|
18
|
-
|
19
|
-
def handle_event(self, context: ExecutionContext, event: events.ExecutionEvent) -> None:
|
20
|
-
stream = self.file_handle.open()
|
21
|
-
data = event.asdict()
|
22
|
-
stream.write(json.dumps(data))
|
23
|
-
stream.write("\n")
|
24
|
-
|
25
|
-
def shutdown(self) -> None:
|
26
|
-
self.file_handle.close()
|
schemathesis/cli/handlers.py
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
from __future__ import annotations
|
2
|
-
from typing import TYPE_CHECKING
|
3
|
-
|
4
|
-
|
5
|
-
if TYPE_CHECKING:
|
6
|
-
from ..runner import events
|
7
|
-
from .context import ExecutionContext
|
8
|
-
|
9
|
-
|
10
|
-
class EventHandler:
|
11
|
-
def handle_event(self, context: ExecutionContext, event: events.ExecutionEvent) -> None:
|
12
|
-
raise NotImplementedError
|
13
|
-
|
14
|
-
def shutdown(self) -> None:
|
15
|
-
# Do nothing by default
|
16
|
-
pass
|
schemathesis/cli/junitxml.py
DELETED
@@ -1,43 +0,0 @@
|
|
1
|
-
from __future__ import annotations
|
2
|
-
import platform
|
3
|
-
from dataclasses import dataclass, field
|
4
|
-
from typing import TYPE_CHECKING
|
5
|
-
|
6
|
-
from junit_xml import TestCase, TestSuite, to_xml_report_file
|
7
|
-
|
8
|
-
from ..models import Status
|
9
|
-
from ..runner import events
|
10
|
-
from ..runner.serialization import deduplicate_failures
|
11
|
-
from .handlers import EventHandler
|
12
|
-
|
13
|
-
|
14
|
-
if TYPE_CHECKING:
|
15
|
-
from click.utils import LazyFile
|
16
|
-
from .context import ExecutionContext
|
17
|
-
|
18
|
-
|
19
|
-
@dataclass
|
20
|
-
class JunitXMLHandler(EventHandler):
|
21
|
-
file_handle: LazyFile
|
22
|
-
test_cases: list = field(default_factory=list)
|
23
|
-
|
24
|
-
def handle_event(self, context: ExecutionContext, event: events.ExecutionEvent) -> None:
|
25
|
-
if isinstance(event, events.AfterExecution):
|
26
|
-
test_case = TestCase(
|
27
|
-
f"{event.result.method} {event.result.path}",
|
28
|
-
elapsed_sec=event.elapsed_time,
|
29
|
-
allow_multiple_subelements=True,
|
30
|
-
)
|
31
|
-
if event.status == Status.failure:
|
32
|
-
checks = deduplicate_failures(event.result.checks)
|
33
|
-
for idx, check in enumerate(checks, 1):
|
34
|
-
# `check.message` is always not empty for events with `failure` status
|
35
|
-
test_case.add_failure_info(message=f"{idx}. {check.message}")
|
36
|
-
if event.status == Status.error:
|
37
|
-
test_case.add_error_info(
|
38
|
-
message=event.result.errors[-1].exception, output=event.result.errors[-1].exception_with_traceback
|
39
|
-
)
|
40
|
-
self.test_cases.append(test_case)
|
41
|
-
if isinstance(event, events.Finished):
|
42
|
-
test_suites = [TestSuite("schemathesis", test_cases=self.test_cases, hostname=platform.node())]
|
43
|
-
to_xml_report_file(file_descriptor=self.file_handle, test_suites=test_suites, prettyprint=True)
|
@@ -1 +0,0 @@
|
|
1
|
-
from . import default, short
|