schemathesis 3.13.0__py3-none-any.whl → 4.4.2__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.
Files changed (245) hide show
  1. schemathesis/__init__.py +53 -25
  2. schemathesis/auths.py +507 -0
  3. schemathesis/checks.py +190 -25
  4. schemathesis/cli/__init__.py +27 -1016
  5. schemathesis/cli/__main__.py +4 -0
  6. schemathesis/cli/commands/__init__.py +133 -0
  7. schemathesis/cli/commands/data.py +10 -0
  8. schemathesis/cli/commands/run/__init__.py +602 -0
  9. schemathesis/cli/commands/run/context.py +228 -0
  10. schemathesis/cli/commands/run/events.py +60 -0
  11. schemathesis/cli/commands/run/executor.py +157 -0
  12. schemathesis/cli/commands/run/filters.py +53 -0
  13. schemathesis/cli/commands/run/handlers/__init__.py +46 -0
  14. schemathesis/cli/commands/run/handlers/base.py +45 -0
  15. schemathesis/cli/commands/run/handlers/cassettes.py +464 -0
  16. schemathesis/cli/commands/run/handlers/junitxml.py +60 -0
  17. schemathesis/cli/commands/run/handlers/output.py +1750 -0
  18. schemathesis/cli/commands/run/loaders.py +118 -0
  19. schemathesis/cli/commands/run/validation.py +256 -0
  20. schemathesis/cli/constants.py +5 -0
  21. schemathesis/cli/core.py +19 -0
  22. schemathesis/cli/ext/fs.py +16 -0
  23. schemathesis/cli/ext/groups.py +203 -0
  24. schemathesis/cli/ext/options.py +81 -0
  25. schemathesis/config/__init__.py +202 -0
  26. schemathesis/config/_auth.py +51 -0
  27. schemathesis/config/_checks.py +268 -0
  28. schemathesis/config/_diff_base.py +101 -0
  29. schemathesis/config/_env.py +21 -0
  30. schemathesis/config/_error.py +163 -0
  31. schemathesis/config/_generation.py +157 -0
  32. schemathesis/config/_health_check.py +24 -0
  33. schemathesis/config/_operations.py +335 -0
  34. schemathesis/config/_output.py +171 -0
  35. schemathesis/config/_parameters.py +19 -0
  36. schemathesis/config/_phases.py +253 -0
  37. schemathesis/config/_projects.py +543 -0
  38. schemathesis/config/_rate_limit.py +17 -0
  39. schemathesis/config/_report.py +120 -0
  40. schemathesis/config/_validator.py +9 -0
  41. schemathesis/config/_warnings.py +89 -0
  42. schemathesis/config/schema.json +975 -0
  43. schemathesis/core/__init__.py +72 -0
  44. schemathesis/core/adapter.py +34 -0
  45. schemathesis/core/compat.py +32 -0
  46. schemathesis/core/control.py +2 -0
  47. schemathesis/core/curl.py +100 -0
  48. schemathesis/core/deserialization.py +210 -0
  49. schemathesis/core/errors.py +588 -0
  50. schemathesis/core/failures.py +316 -0
  51. schemathesis/core/fs.py +19 -0
  52. schemathesis/core/hooks.py +20 -0
  53. schemathesis/core/jsonschema/__init__.py +13 -0
  54. schemathesis/core/jsonschema/bundler.py +183 -0
  55. schemathesis/core/jsonschema/keywords.py +40 -0
  56. schemathesis/core/jsonschema/references.py +222 -0
  57. schemathesis/core/jsonschema/types.py +41 -0
  58. schemathesis/core/lazy_import.py +15 -0
  59. schemathesis/core/loaders.py +107 -0
  60. schemathesis/core/marks.py +66 -0
  61. schemathesis/core/media_types.py +79 -0
  62. schemathesis/core/output/__init__.py +46 -0
  63. schemathesis/core/output/sanitization.py +54 -0
  64. schemathesis/core/parameters.py +45 -0
  65. schemathesis/core/rate_limit.py +60 -0
  66. schemathesis/core/registries.py +34 -0
  67. schemathesis/core/result.py +27 -0
  68. schemathesis/core/schema_analysis.py +17 -0
  69. schemathesis/core/shell.py +203 -0
  70. schemathesis/core/transforms.py +144 -0
  71. schemathesis/core/transport.py +223 -0
  72. schemathesis/core/validation.py +73 -0
  73. schemathesis/core/version.py +7 -0
  74. schemathesis/engine/__init__.py +28 -0
  75. schemathesis/engine/context.py +152 -0
  76. schemathesis/engine/control.py +44 -0
  77. schemathesis/engine/core.py +201 -0
  78. schemathesis/engine/errors.py +446 -0
  79. schemathesis/engine/events.py +284 -0
  80. schemathesis/engine/observations.py +42 -0
  81. schemathesis/engine/phases/__init__.py +108 -0
  82. schemathesis/engine/phases/analysis.py +28 -0
  83. schemathesis/engine/phases/probes.py +172 -0
  84. schemathesis/engine/phases/stateful/__init__.py +68 -0
  85. schemathesis/engine/phases/stateful/_executor.py +364 -0
  86. schemathesis/engine/phases/stateful/context.py +85 -0
  87. schemathesis/engine/phases/unit/__init__.py +220 -0
  88. schemathesis/engine/phases/unit/_executor.py +459 -0
  89. schemathesis/engine/phases/unit/_pool.py +82 -0
  90. schemathesis/engine/recorder.py +254 -0
  91. schemathesis/errors.py +47 -0
  92. schemathesis/filters.py +395 -0
  93. schemathesis/generation/__init__.py +25 -0
  94. schemathesis/generation/case.py +478 -0
  95. schemathesis/generation/coverage.py +1528 -0
  96. schemathesis/generation/hypothesis/__init__.py +121 -0
  97. schemathesis/generation/hypothesis/builder.py +992 -0
  98. schemathesis/generation/hypothesis/examples.py +56 -0
  99. schemathesis/generation/hypothesis/given.py +66 -0
  100. schemathesis/generation/hypothesis/reporting.py +285 -0
  101. schemathesis/generation/meta.py +227 -0
  102. schemathesis/generation/metrics.py +93 -0
  103. schemathesis/generation/modes.py +20 -0
  104. schemathesis/generation/overrides.py +127 -0
  105. schemathesis/generation/stateful/__init__.py +37 -0
  106. schemathesis/generation/stateful/state_machine.py +294 -0
  107. schemathesis/graphql/__init__.py +15 -0
  108. schemathesis/graphql/checks.py +109 -0
  109. schemathesis/graphql/loaders.py +285 -0
  110. schemathesis/hooks.py +270 -91
  111. schemathesis/openapi/__init__.py +13 -0
  112. schemathesis/openapi/checks.py +467 -0
  113. schemathesis/openapi/generation/__init__.py +0 -0
  114. schemathesis/openapi/generation/filters.py +72 -0
  115. schemathesis/openapi/loaders.py +315 -0
  116. schemathesis/pytest/__init__.py +5 -0
  117. schemathesis/pytest/control_flow.py +7 -0
  118. schemathesis/pytest/lazy.py +341 -0
  119. schemathesis/pytest/loaders.py +36 -0
  120. schemathesis/pytest/plugin.py +357 -0
  121. schemathesis/python/__init__.py +0 -0
  122. schemathesis/python/asgi.py +12 -0
  123. schemathesis/python/wsgi.py +12 -0
  124. schemathesis/schemas.py +683 -247
  125. schemathesis/specs/graphql/__init__.py +0 -1
  126. schemathesis/specs/graphql/nodes.py +27 -0
  127. schemathesis/specs/graphql/scalars.py +86 -0
  128. schemathesis/specs/graphql/schemas.py +395 -123
  129. schemathesis/specs/graphql/validation.py +33 -0
  130. schemathesis/specs/openapi/__init__.py +9 -1
  131. schemathesis/specs/openapi/_hypothesis.py +578 -317
  132. schemathesis/specs/openapi/adapter/__init__.py +10 -0
  133. schemathesis/specs/openapi/adapter/parameters.py +729 -0
  134. schemathesis/specs/openapi/adapter/protocol.py +59 -0
  135. schemathesis/specs/openapi/adapter/references.py +19 -0
  136. schemathesis/specs/openapi/adapter/responses.py +368 -0
  137. schemathesis/specs/openapi/adapter/security.py +144 -0
  138. schemathesis/specs/openapi/adapter/v2.py +30 -0
  139. schemathesis/specs/openapi/adapter/v3_0.py +30 -0
  140. schemathesis/specs/openapi/adapter/v3_1.py +30 -0
  141. schemathesis/specs/openapi/analysis.py +96 -0
  142. schemathesis/specs/openapi/checks.py +753 -74
  143. schemathesis/specs/openapi/converter.py +176 -37
  144. schemathesis/specs/openapi/definitions.py +599 -4
  145. schemathesis/specs/openapi/examples.py +581 -165
  146. schemathesis/specs/openapi/expressions/__init__.py +52 -5
  147. schemathesis/specs/openapi/expressions/extractors.py +25 -0
  148. schemathesis/specs/openapi/expressions/lexer.py +34 -31
  149. schemathesis/specs/openapi/expressions/nodes.py +97 -46
  150. schemathesis/specs/openapi/expressions/parser.py +35 -13
  151. schemathesis/specs/openapi/formats.py +122 -0
  152. schemathesis/specs/openapi/media_types.py +75 -0
  153. schemathesis/specs/openapi/negative/__init__.py +117 -68
  154. schemathesis/specs/openapi/negative/mutations.py +294 -104
  155. schemathesis/specs/openapi/negative/utils.py +3 -6
  156. schemathesis/specs/openapi/patterns.py +458 -0
  157. schemathesis/specs/openapi/references.py +60 -81
  158. schemathesis/specs/openapi/schemas.py +648 -650
  159. schemathesis/specs/openapi/serialization.py +53 -30
  160. schemathesis/specs/openapi/stateful/__init__.py +404 -69
  161. schemathesis/specs/openapi/stateful/control.py +87 -0
  162. schemathesis/specs/openapi/stateful/dependencies/__init__.py +232 -0
  163. schemathesis/specs/openapi/stateful/dependencies/inputs.py +428 -0
  164. schemathesis/specs/openapi/stateful/dependencies/models.py +341 -0
  165. schemathesis/specs/openapi/stateful/dependencies/naming.py +491 -0
  166. schemathesis/specs/openapi/stateful/dependencies/outputs.py +34 -0
  167. schemathesis/specs/openapi/stateful/dependencies/resources.py +339 -0
  168. schemathesis/specs/openapi/stateful/dependencies/schemas.py +447 -0
  169. schemathesis/specs/openapi/stateful/inference.py +254 -0
  170. schemathesis/specs/openapi/stateful/links.py +219 -78
  171. schemathesis/specs/openapi/types/__init__.py +3 -0
  172. schemathesis/specs/openapi/types/common.py +23 -0
  173. schemathesis/specs/openapi/types/v2.py +129 -0
  174. schemathesis/specs/openapi/types/v3.py +134 -0
  175. schemathesis/specs/openapi/utils.py +7 -6
  176. schemathesis/specs/openapi/warnings.py +75 -0
  177. schemathesis/transport/__init__.py +224 -0
  178. schemathesis/transport/asgi.py +26 -0
  179. schemathesis/transport/prepare.py +126 -0
  180. schemathesis/transport/requests.py +278 -0
  181. schemathesis/transport/serialization.py +329 -0
  182. schemathesis/transport/wsgi.py +175 -0
  183. schemathesis-4.4.2.dist-info/METADATA +213 -0
  184. schemathesis-4.4.2.dist-info/RECORD +192 -0
  185. {schemathesis-3.13.0.dist-info → schemathesis-4.4.2.dist-info}/WHEEL +1 -1
  186. schemathesis-4.4.2.dist-info/entry_points.txt +6 -0
  187. {schemathesis-3.13.0.dist-info → schemathesis-4.4.2.dist-info/licenses}/LICENSE +1 -1
  188. schemathesis/_compat.py +0 -41
  189. schemathesis/_hypothesis.py +0 -115
  190. schemathesis/cli/callbacks.py +0 -188
  191. schemathesis/cli/cassettes.py +0 -253
  192. schemathesis/cli/context.py +0 -36
  193. schemathesis/cli/debug.py +0 -21
  194. schemathesis/cli/handlers.py +0 -11
  195. schemathesis/cli/junitxml.py +0 -41
  196. schemathesis/cli/options.py +0 -51
  197. schemathesis/cli/output/__init__.py +0 -1
  198. schemathesis/cli/output/default.py +0 -508
  199. schemathesis/cli/output/short.py +0 -40
  200. schemathesis/constants.py +0 -79
  201. schemathesis/exceptions.py +0 -207
  202. schemathesis/extra/_aiohttp.py +0 -27
  203. schemathesis/extra/_flask.py +0 -10
  204. schemathesis/extra/_server.py +0 -16
  205. schemathesis/extra/pytest_plugin.py +0 -216
  206. schemathesis/failures.py +0 -131
  207. schemathesis/fixups/__init__.py +0 -29
  208. schemathesis/fixups/fast_api.py +0 -30
  209. schemathesis/lazy.py +0 -227
  210. schemathesis/models.py +0 -1041
  211. schemathesis/parameters.py +0 -88
  212. schemathesis/runner/__init__.py +0 -460
  213. schemathesis/runner/events.py +0 -240
  214. schemathesis/runner/impl/__init__.py +0 -3
  215. schemathesis/runner/impl/core.py +0 -755
  216. schemathesis/runner/impl/solo.py +0 -85
  217. schemathesis/runner/impl/threadpool.py +0 -367
  218. schemathesis/runner/serialization.py +0 -189
  219. schemathesis/serializers.py +0 -233
  220. schemathesis/service/__init__.py +0 -3
  221. schemathesis/service/client.py +0 -46
  222. schemathesis/service/constants.py +0 -12
  223. schemathesis/service/events.py +0 -39
  224. schemathesis/service/handler.py +0 -39
  225. schemathesis/service/models.py +0 -7
  226. schemathesis/service/serialization.py +0 -153
  227. schemathesis/service/worker.py +0 -40
  228. schemathesis/specs/graphql/loaders.py +0 -215
  229. schemathesis/specs/openapi/constants.py +0 -7
  230. schemathesis/specs/openapi/expressions/context.py +0 -12
  231. schemathesis/specs/openapi/expressions/pointers.py +0 -29
  232. schemathesis/specs/openapi/filters.py +0 -44
  233. schemathesis/specs/openapi/links.py +0 -302
  234. schemathesis/specs/openapi/loaders.py +0 -453
  235. schemathesis/specs/openapi/parameters.py +0 -413
  236. schemathesis/specs/openapi/security.py +0 -129
  237. schemathesis/specs/openapi/validation.py +0 -24
  238. schemathesis/stateful.py +0 -349
  239. schemathesis/targets.py +0 -32
  240. schemathesis/types.py +0 -38
  241. schemathesis/utils.py +0 -436
  242. schemathesis-3.13.0.dist-info/METADATA +0 -202
  243. schemathesis-3.13.0.dist-info/RECORD +0 -91
  244. schemathesis-3.13.0.dist-info/entry_points.txt +0 -6
  245. /schemathesis/{extra → cli/ext}/__init__.py +0 -0
@@ -1,240 +0,0 @@
1
- import threading
2
- import time
3
- from typing import Any, Dict, List, Optional, Union
4
-
5
- import attr
6
- from requests import exceptions
7
-
8
- from ..constants import DataGenerationMethod
9
- from ..exceptions import HTTPError
10
- from ..models import APIOperation, Status, TestResult, TestResultSet
11
- from ..schemas import BaseSchema
12
- from ..utils import format_exception
13
- from .serialization import SerializedError, SerializedTestResult
14
-
15
-
16
- @attr.s() # pragma: no mutate
17
- class ExecutionEvent:
18
- """Generic execution event."""
19
-
20
- # Whether this event is expected to be the last one in the event stream
21
- is_terminal = False
22
-
23
- def asdict(self, **kwargs: Any) -> Dict[str, Any]:
24
- data = attr.asdict(self, **kwargs)
25
- # An internal tag for simpler type identification
26
- data["event_type"] = self.__class__.__name__
27
- return data
28
-
29
-
30
- @attr.s(slots=True) # pragma: no mutate
31
- class Initialized(ExecutionEvent):
32
- """Runner is initialized, settings are prepared, requests session is ready."""
33
-
34
- schema: Dict[str, Any] = attr.ib() # pragma: no mutate
35
- # Total number of operations in the schema
36
- operations_count: Optional[int] = attr.ib() # pragma: no mutate
37
- # The place, where the API schema is located
38
- location: Optional[str] = attr.ib() # pragma: no mutate
39
- # The base URL against which the tests are running
40
- base_url: str = attr.ib() # pragma: no mutate
41
- # API schema specification name
42
- specification_name: str = attr.ib() # pragma: no mutate
43
- # Timestamp of test run start
44
- start_time: float = attr.ib(factory=time.monotonic) # pragma: no mutate
45
- thread_id: int = attr.ib(factory=threading.get_ident) # pragma: no mutate
46
-
47
- @classmethod
48
- def from_schema(cls, *, schema: BaseSchema, count_operations: bool = True) -> "Initialized":
49
- """Computes all needed data from a schema instance."""
50
- return cls(
51
- schema=schema.raw_schema,
52
- operations_count=schema.operations_count if count_operations else None,
53
- location=schema.location,
54
- base_url=schema.get_base_url(),
55
- specification_name=schema.verbose_name,
56
- )
57
-
58
-
59
- class CurrentOperationMixin:
60
- method: str
61
- path: str
62
-
63
- @property
64
- def current_operation(self) -> str:
65
- return f"{self.method} {self.path}"
66
-
67
-
68
- @attr.s(slots=True) # pragma: no mutate
69
- class BeforeExecution(CurrentOperationMixin, ExecutionEvent):
70
- """Happens before each tested API operation.
71
-
72
- It happens before a single hypothesis test, that may contain many examples inside.
73
- """
74
-
75
- # HTTP method
76
- method: str = attr.ib() # pragma: no mutate
77
- # Full path, including the base path
78
- path: str = attr.ib() # pragma: no mutate
79
- # Specification-specific operation name
80
- verbose_name: str = attr.ib() # pragma: no mutate
81
- # Path without the base path
82
- relative_path: str = attr.ib() # pragma: no mutate
83
- # The current level of recursion during stateful testing
84
- recursion_level: int = attr.ib() # pragma: no mutate
85
- # The way data will be generated
86
- data_generation_method: DataGenerationMethod = attr.ib() # pragma: no mutate
87
- # An unique ID which connects events that happen during testing of the same API operation
88
- # It may be useful when multiple threads are involved where incoming events are not ordered
89
- correlation_id: str = attr.ib() # pragma: no mutate
90
- thread_id: int = attr.ib(factory=threading.get_ident) # pragma: no mutate
91
-
92
- @classmethod
93
- def from_operation(
94
- cls,
95
- operation: APIOperation,
96
- recursion_level: int,
97
- data_generation_method: DataGenerationMethod,
98
- correlation_id: str,
99
- ) -> "BeforeExecution":
100
- return cls(
101
- method=operation.method.upper(),
102
- path=operation.full_path,
103
- verbose_name=operation.verbose_name,
104
- relative_path=operation.path,
105
- recursion_level=recursion_level,
106
- data_generation_method=data_generation_method,
107
- correlation_id=correlation_id,
108
- )
109
-
110
-
111
- @attr.s(slots=True) # pragma: no mutate
112
- class AfterExecution(CurrentOperationMixin, ExecutionEvent):
113
- """Happens after each tested API operation."""
114
-
115
- method: str = attr.ib() # pragma: no mutate
116
- path: str = attr.ib() # pragma: no mutate
117
- relative_path: str = attr.ib() # pragma: no mutate
118
- # Specification-specific operation name
119
- verbose_name: str = attr.ib() # pragma: no mutate
120
-
121
- # APIOperation test status - success / failure / error
122
- status: Status = attr.ib() # pragma: no mutate
123
- # The way data was generated
124
- data_generation_method: DataGenerationMethod = attr.ib() # pragma: no mutate
125
- result: SerializedTestResult = attr.ib() # pragma: no mutate
126
- # Test running time
127
- elapsed_time: float = attr.ib() # pragma: no mutate
128
- correlation_id: str = attr.ib() # pragma: no mutate
129
- thread_id: int = attr.ib(factory=threading.get_ident) # pragma: no mutate
130
- # Captured hypothesis stdout
131
- hypothesis_output: List[str] = attr.ib(factory=list) # pragma: no mutate
132
-
133
- @classmethod
134
- def from_result(
135
- cls,
136
- result: TestResult,
137
- status: Status,
138
- elapsed_time: float,
139
- hypothesis_output: List[str],
140
- operation: APIOperation,
141
- data_generation_method: DataGenerationMethod,
142
- correlation_id: str,
143
- ) -> "AfterExecution":
144
- return cls(
145
- method=operation.method.upper(),
146
- path=operation.full_path,
147
- relative_path=operation.path,
148
- verbose_name=operation.verbose_name,
149
- result=SerializedTestResult.from_test_result(result),
150
- status=status,
151
- elapsed_time=elapsed_time,
152
- hypothesis_output=hypothesis_output,
153
- data_generation_method=data_generation_method,
154
- correlation_id=correlation_id,
155
- )
156
-
157
-
158
- @attr.s(slots=True) # pragma: no mutate
159
- class Interrupted(ExecutionEvent):
160
- """If execution was interrupted by Ctrl-C, or a received SIGTERM."""
161
-
162
- thread_id: int = attr.ib(factory=threading.get_ident) # pragma: no mutate
163
-
164
-
165
- @attr.s(slots=True) # pragma: no mutate
166
- class InternalError(ExecutionEvent):
167
- """An error that happened inside the runner."""
168
-
169
- is_terminal = True
170
-
171
- message: str = attr.ib() # pragma: no mutate
172
- exception_type: str = attr.ib() # pragma: no mutate
173
- exception: Optional[str] = attr.ib(default=None) # pragma: no mutate
174
- exception_with_traceback: Optional[str] = attr.ib(default=None) # pragma: no mutate
175
- thread_id: int = attr.ib(factory=threading.get_ident) # pragma: no mutate
176
-
177
- @classmethod
178
- def from_exc(cls, exc: Exception) -> "InternalError":
179
- exception_type = f"{exc.__class__.__module__}.{exc.__class__.__qualname__}"
180
- if isinstance(exc, HTTPError):
181
- if exc.response.status_code == 404:
182
- message = f"Schema was not found at {exc.url}"
183
- else:
184
- message = f"Failed to load schema, code {exc.response.status_code} was returned from {exc.url}"
185
- return cls(message=message, exception_type=exception_type)
186
- exception = format_exception(exc)
187
- exception_with_traceback = format_exception(exc, include_traceback=True)
188
- if isinstance(exc, exceptions.ConnectionError):
189
- message = f"Failed to load schema from {exc.request.url}"
190
- else:
191
- message = "An internal error happened during a test run"
192
- return cls(
193
- message=message,
194
- exception_type=exception_type,
195
- exception=exception,
196
- exception_with_traceback=exception_with_traceback,
197
- )
198
-
199
-
200
- @attr.s(slots=True) # pragma: no mutate
201
- class Finished(ExecutionEvent):
202
- """The final event of the run.
203
-
204
- No more events after this point.
205
- """
206
-
207
- is_terminal = True
208
-
209
- passed_count: int = attr.ib() # pragma: no mutate
210
- failed_count: int = attr.ib() # pragma: no mutate
211
- errored_count: int = attr.ib() # pragma: no mutate
212
-
213
- has_failures: bool = attr.ib() # pragma: no mutate
214
- has_errors: bool = attr.ib() # pragma: no mutate
215
- has_logs: bool = attr.ib() # pragma: no mutate
216
- is_empty: bool = attr.ib() # pragma: no mutate
217
- generic_errors: List[SerializedError] = attr.ib() # pragma: no mutate
218
-
219
- total: Dict[str, Dict[Union[str, Status], int]] = attr.ib() # pragma: no mutate
220
-
221
- # Total test run execution time
222
- running_time: float = attr.ib() # pragma: no mutate
223
- thread_id: int = attr.ib(factory=threading.get_ident) # pragma: no mutate
224
-
225
- @classmethod
226
- def from_results(cls, results: TestResultSet, running_time: float) -> "Finished":
227
- return cls(
228
- passed_count=results.passed_count,
229
- failed_count=results.failed_count,
230
- errored_count=results.errored_count,
231
- has_failures=results.has_failures,
232
- has_errors=results.has_errors,
233
- has_logs=results.has_logs,
234
- is_empty=results.is_empty,
235
- total=results.total,
236
- generic_errors=[
237
- SerializedError.from_error(error, None, None, error.full_path) for error in results.generic_errors
238
- ],
239
- running_time=running_time,
240
- )
@@ -1,3 +0,0 @@
1
- from .core import BaseRunner
2
- from .solo import SingleThreadASGIRunner, SingleThreadRunner, SingleThreadWSGIRunner
3
- from .threadpool import ThreadPoolASGIRunner, ThreadPoolRunner, ThreadPoolWSGIRunner