dycw-utilities 0.166.29__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dycw-utilities
3
- Version: 0.166.29
3
+ Version: 0.166.30
4
4
  Author-email: Derek Wan <d.wan@icloud.com>
5
5
  License-File: LICENSE
6
6
  Requires-Python: >=3.12
@@ -1,4 +1,4 @@
1
- utilities/__init__.py,sha256=ykhEqK5jGq8CZixk5jWUzsXv0OSPtB7rnq3h3-_XblA,61
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=wulDgPzABPJq6ArOiE96oWRf18cSCMj7arRtXJ8LbgU,9649
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.29.dist-info/METADATA,sha256=WjWEiFbbj5kEsjpaNFZrF-_GwYdhVIoUQqO5-ddjM3g,1700
95
- dycw_utilities-0.166.29.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
96
- dycw_utilities-0.166.29.dist-info/entry_points.txt,sha256=BOD_SoDxwsfJYOLxhrSXhHP_T7iw-HXI9f2WVkzYxvQ,135
97
- dycw_utilities-0.166.29.dist-info/licenses/LICENSE,sha256=gppZp16M6nSVpBbUBrNL6JuYfvKwZiKgV7XoKKsHzqo,1066
98
- dycw_utilities-0.166.29.dist-info/RECORD,,
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
@@ -1,3 +1,3 @@
1
1
  from __future__ import annotations
2
2
 
3
- __version__ = "0.166.29"
3
+ __version__ = "0.166.30"
utilities/pytest.py CHANGED
@@ -29,7 +29,8 @@ from utilities.platform import (
29
29
  IS_WINDOWS,
30
30
  )
31
31
  from utilities.random import bernoulli
32
- from utilities.types import MaybeCoro, Seed
32
+ from utilities.text import to_bool
33
+ from utilities.types import MaybeCallableBoolLike, MaybeCoro, Seed
33
34
  from utilities.whenever import SECOND, get_now_local
34
35
 
35
36
  if TYPE_CHECKING:
@@ -168,21 +169,31 @@ class _NodeIdToPathNotGetTailError(NodeIdToPathError):
168
169
 
169
170
 
170
171
  def run_frac[F: Callable[..., MaybeCoro[None]]](
171
- *, frac: float = 0.5, seed: Seed | None = None
172
+ *,
173
+ predicate: MaybeCallableBoolLike | None = None,
174
+ frac: float = 0.5,
175
+ seed: Seed | None = None,
172
176
  ) -> Callable[[F], F]:
173
177
  """Run a test only a fraction of the time.."""
174
- return cast("Any", partial(_run_frac_inner, frac=frac, seed=seed))
178
+ return cast(
179
+ "Any", partial(_run_frac_inner, predicate=predicate, frac=frac, seed=seed)
180
+ )
175
181
 
176
182
 
177
183
  def _run_frac_inner[F: Callable[..., MaybeCoro[None]]](
178
- func: F, /, *, frac: float = 0.5, seed: Seed | None = None
184
+ func: F,
185
+ /,
186
+ *,
187
+ predicate: MaybeCallableBoolLike | None = None,
188
+ frac: float = 0.5,
189
+ seed: Seed | None = None,
179
190
  ) -> F:
180
191
  match bool(iscoroutinefunction(func)):
181
192
  case False:
182
193
 
183
194
  @wraps(func)
184
195
  def run_frac_sync(*args: Any, **kwargs: Any) -> None:
185
- _skipif_frac(frac=frac, seed=seed)
196
+ _skipif_frac(predicate=predicate, frac=frac, seed=seed)
186
197
  cast("Callable[..., None]", func)(*args, **kwargs)
187
198
 
188
199
  return cast("Any", run_frac_sync)
@@ -191,7 +202,7 @@ def _run_frac_inner[F: Callable[..., MaybeCoro[None]]](
191
202
 
192
203
  @wraps(func)
193
204
  async def run_frac_async(*args: Any, **kwargs: Any) -> None:
194
- _skipif_frac(frac=frac, seed=seed)
205
+ _skipif_frac(predicate=predicate, frac=frac, seed=seed)
195
206
  await cast("Callable[..., Coro[None]]", func)(*args, **kwargs)
196
207
 
197
208
  return cast("Any", run_frac_async)
@@ -200,8 +211,17 @@ def _run_frac_inner[F: Callable[..., MaybeCoro[None]]](
200
211
  assert_never(never)
201
212
 
202
213
 
203
- def _skipif_frac(*, frac: float = 0.5, seed: Seed | None = None) -> None:
204
- if (skip is not None) and bernoulli(true=1 - frac, seed=seed):
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
+ ):
205
225
  _ = skip(reason=f"{_get_name()} skipped (run {frac:.0%})")
206
226
 
207
227