dycw-utilities 0.166.28__py3-none-any.whl → 0.166.30__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.
- {dycw_utilities-0.166.28.dist-info → dycw_utilities-0.166.30.dist-info}/METADATA +1 -1
- {dycw_utilities-0.166.28.dist-info → dycw_utilities-0.166.30.dist-info}/RECORD +7 -7
- utilities/__init__.py +1 -1
- utilities/pytest.py +64 -2
- {dycw_utilities-0.166.28.dist-info → dycw_utilities-0.166.30.dist-info}/WHEEL +0 -0
- {dycw_utilities-0.166.28.dist-info → dycw_utilities-0.166.30.dist-info}/entry_points.txt +0 -0
- {dycw_utilities-0.166.28.dist-info → dycw_utilities-0.166.30.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
utilities/__init__.py,sha256=
|
|
1
|
+
utilities/__init__.py,sha256=1ZO_cavh1o4bHb63EXlMpG07TU7njs0GEuTie2-NSEo,61
|
|
2
2
|
utilities/aeventkit.py,sha256=ddoleSwW9zdc2tjX5Ge0pMKtYwV_JMxhHYOxnWX2AGM,12609
|
|
3
3
|
utilities/altair.py,sha256=nHdpWt8ZwdUwRQN970MvHd5bRWokNqzHcZQEdSHKRuE,9033
|
|
4
4
|
utilities/asyncio.py,sha256=60l1IwjnRGeaVphAFiwDIHyfKoZYKY-XGpptUxGiU-M,17034
|
|
@@ -56,7 +56,7 @@ utilities/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
|
56
56
|
utilities/pydantic_settings.py,sha256=bFr9UDrVhdqTl7O_TPutCLdsQ5rUp--nO76-_F8z0bs,5102
|
|
57
57
|
utilities/pydantic_settings_sops.py,sha256=m2uB9wDw1PU2CiSL7KwxulDXT0STjOZTu3Ctc2q7jc0,1943
|
|
58
58
|
utilities/pyinstrument.py,sha256=hnXaL-4HE7wWBI5JKaPfYTpsrXe68YiuZKahHV0VJn8,841
|
|
59
|
-
utilities/pytest.py,sha256=
|
|
59
|
+
utilities/pytest.py,sha256=4KzMZYg5Zzfyjxrw8VlnZNYCD2S0Uee1JIFMIPyIkO8,10076
|
|
60
60
|
utilities/pytest_regressions.py,sha256=ocjHTtfOeiGfQAKIei8pKNd61sxN9dawrJJ9gPt2wzA,4097
|
|
61
61
|
utilities/random.py,sha256=hZlH4gnAtoaofWswuJYjcygejrY8db4CzP-z_adO2Mo,4165
|
|
62
62
|
utilities/re.py,sha256=S4h-DLL6ScMPqjboZ_uQ1BVTJajrqV06r_81D--_HCE,4573
|
|
@@ -91,8 +91,8 @@ utilities/zoneinfo.py,sha256=tdIScrTB2-B-LH0ukb1HUXKooLknOfJNwHk10MuMYvA,3619
|
|
|
91
91
|
utilities/pytest_plugins/__init__.py,sha256=U4S_2y3zgLZVfMenHRaJFBW8yqh2mUBuI291LGQVOJ8,35
|
|
92
92
|
utilities/pytest_plugins/pytest_randomly.py,sha256=B1qYVlExGOxTywq2r1SMi5o7btHLk2PNdY_b1p98dkE,409
|
|
93
93
|
utilities/pytest_plugins/pytest_regressions.py,sha256=mnHYBfdprz50UGVkVzV1bZERZN5CFfoF8YbokGxdFwU,1639
|
|
94
|
-
dycw_utilities-0.166.
|
|
95
|
-
dycw_utilities-0.166.
|
|
96
|
-
dycw_utilities-0.166.
|
|
97
|
-
dycw_utilities-0.166.
|
|
98
|
-
dycw_utilities-0.166.
|
|
94
|
+
dycw_utilities-0.166.30.dist-info/METADATA,sha256=lYac7uqJTy4ACG9-MmZeajuG8tiZBsBMh5kU0irWduQ,1700
|
|
95
|
+
dycw_utilities-0.166.30.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
96
|
+
dycw_utilities-0.166.30.dist-info/entry_points.txt,sha256=BOD_SoDxwsfJYOLxhrSXhHP_T7iw-HXI9f2WVkzYxvQ,135
|
|
97
|
+
dycw_utilities-0.166.30.dist-info/licenses/LICENSE,sha256=gppZp16M6nSVpBbUBrNL6JuYfvKwZiKgV7XoKKsHzqo,1066
|
|
98
|
+
dycw_utilities-0.166.30.dist-info/RECORD,,
|
utilities/__init__.py
CHANGED
utilities/pytest.py
CHANGED
|
@@ -28,7 +28,9 @@ from utilities.platform import (
|
|
|
28
28
|
IS_NOT_WINDOWS,
|
|
29
29
|
IS_WINDOWS,
|
|
30
30
|
)
|
|
31
|
-
from utilities.
|
|
31
|
+
from utilities.random import bernoulli
|
|
32
|
+
from utilities.text import to_bool
|
|
33
|
+
from utilities.types import MaybeCallableBoolLike, MaybeCoro, Seed
|
|
32
34
|
from utilities.whenever import SECOND, get_now_local
|
|
33
35
|
|
|
34
36
|
if TYPE_CHECKING:
|
|
@@ -166,6 +168,66 @@ class _NodeIdToPathNotGetTailError(NodeIdToPathError):
|
|
|
166
168
|
##
|
|
167
169
|
|
|
168
170
|
|
|
171
|
+
def run_frac[F: Callable[..., MaybeCoro[None]]](
|
|
172
|
+
*,
|
|
173
|
+
predicate: MaybeCallableBoolLike | None = None,
|
|
174
|
+
frac: float = 0.5,
|
|
175
|
+
seed: Seed | None = None,
|
|
176
|
+
) -> Callable[[F], F]:
|
|
177
|
+
"""Run a test only a fraction of the time.."""
|
|
178
|
+
return cast(
|
|
179
|
+
"Any", partial(_run_frac_inner, predicate=predicate, frac=frac, seed=seed)
|
|
180
|
+
)
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
def _run_frac_inner[F: Callable[..., MaybeCoro[None]]](
|
|
184
|
+
func: F,
|
|
185
|
+
/,
|
|
186
|
+
*,
|
|
187
|
+
predicate: MaybeCallableBoolLike | None = None,
|
|
188
|
+
frac: float = 0.5,
|
|
189
|
+
seed: Seed | None = None,
|
|
190
|
+
) -> F:
|
|
191
|
+
match bool(iscoroutinefunction(func)):
|
|
192
|
+
case False:
|
|
193
|
+
|
|
194
|
+
@wraps(func)
|
|
195
|
+
def run_frac_sync(*args: Any, **kwargs: Any) -> None:
|
|
196
|
+
_skipif_frac(predicate=predicate, frac=frac, seed=seed)
|
|
197
|
+
cast("Callable[..., None]", func)(*args, **kwargs)
|
|
198
|
+
|
|
199
|
+
return cast("Any", run_frac_sync)
|
|
200
|
+
|
|
201
|
+
case True:
|
|
202
|
+
|
|
203
|
+
@wraps(func)
|
|
204
|
+
async def run_frac_async(*args: Any, **kwargs: Any) -> None:
|
|
205
|
+
_skipif_frac(predicate=predicate, frac=frac, seed=seed)
|
|
206
|
+
await cast("Callable[..., Coro[None]]", func)(*args, **kwargs)
|
|
207
|
+
|
|
208
|
+
return cast("Any", run_frac_async)
|
|
209
|
+
|
|
210
|
+
case never:
|
|
211
|
+
assert_never(never)
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
def _skipif_frac(
|
|
215
|
+
*,
|
|
216
|
+
predicate: MaybeCallableBoolLike | None = None,
|
|
217
|
+
frac: float = 0.5,
|
|
218
|
+
seed: Seed | None = None,
|
|
219
|
+
) -> None:
|
|
220
|
+
if skip is None:
|
|
221
|
+
return # pragma: no cover
|
|
222
|
+
if ((predicate is None) or to_bool(predicate)) and bernoulli(
|
|
223
|
+
true=1 - frac, seed=seed
|
|
224
|
+
):
|
|
225
|
+
_ = skip(reason=f"{_get_name()} skipped (run {frac:.0%})")
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
##
|
|
229
|
+
|
|
230
|
+
|
|
169
231
|
def throttle[F: Callable[..., MaybeCoro[None]]](
|
|
170
232
|
*, root: PathLike | None = None, delta: Delta = SECOND, on_try: bool = False
|
|
171
233
|
) -> Callable[[F], F]:
|
|
@@ -181,7 +243,6 @@ def _throttle_inner[F: Callable[..., MaybeCoro[None]]](
|
|
|
181
243
|
delta: Delta = SECOND,
|
|
182
244
|
on_try: bool = False,
|
|
183
245
|
) -> F:
|
|
184
|
-
"""Throttle a test function/method."""
|
|
185
246
|
if get_env_var("THROTTLE", nullable=True) is not None:
|
|
186
247
|
return func
|
|
187
248
|
match bool(iscoroutinefunction(func)), on_try:
|
|
@@ -276,6 +337,7 @@ __all__ = [
|
|
|
276
337
|
"add_pytest_collection_modifyitems",
|
|
277
338
|
"add_pytest_configure",
|
|
278
339
|
"node_id_path",
|
|
340
|
+
"run_frac",
|
|
279
341
|
"skipif_linux",
|
|
280
342
|
"skipif_mac",
|
|
281
343
|
"skipif_not_linux",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|