dycw-utilities 0.149.10__py3-none-any.whl → 0.149.11__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.149.10
3
+ Version: 0.149.11
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=loKT95lEsEfTUcmwQY8dkR_TL2ce2JNBkEhRMbcj5Ag,61
1
+ utilities/__init__.py,sha256=ODa44fHOmk12CX4kZdMwXIvOfgua6psr4jhzHKVTZf0,61
2
2
  utilities/altair.py,sha256=92E2lCdyHY4Zb-vCw6rEJIsWdKipuu-Tu2ab1ufUfAk,9079
3
3
  utilities/asyncio.py,sha256=2m2a2C-Qgc6OHTTHL332-t66A7xDITt_SORT7a1DJWo,16792
4
4
  utilities/atomicwrites.py,sha256=xcOWenTBRS0oat3kg7Sqe51AohNThMQ2ixPL7QCG8hw,5795
@@ -50,7 +50,7 @@ utilities/platform.py,sha256=Ue9LSxYvg9yUXGKuz5aZoy_qkUEXde-v6B09exgSctU,2813
50
50
  utilities/polars.py,sha256=BgiDryAVOapi41ddfJqN0wYh_sDj8BNEYtPB36LaHdo,71824
51
51
  utilities/polars_ols.py,sha256=Uc9V5kvlWZ5cU93lKZ-cfAKdVFFw81tqwLW9PxtUvMs,5618
52
52
  utilities/postgres.py,sha256=C3TxpQymM7S5ZivxIN_AFTM5g5TtENptzx8-XYf7pow,12182
53
- utilities/pottery.py,sha256=cdFBjU3Zn-nhlhk4p8IC-ybwFTzk0F2TE1xBV7z8V3c,6296
53
+ utilities/pottery.py,sha256=u0uvyGgYyujxftEMlsv6ppYTKQoVVjHt5jnVxxYz9s4,6596
54
54
  utilities/pqdm.py,sha256=BTsYPtbKQWwX-iXF4qCkfPG7DPxIB54J989n83bXrIo,3092
55
55
  utilities/psutil.py,sha256=KUlu4lrUw9Zg1V7ZGetpWpGb9DB8l_SSDWGbANFNCPU,2104
56
56
  utilities/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -89,8 +89,8 @@ utilities/zoneinfo.py,sha256=oEH-nL3t4h9uawyZqWDtNtDAl6M-CLpLYGI_nI6DulM,1971
89
89
  utilities/pytest_plugins/__init__.py,sha256=U4S_2y3zgLZVfMenHRaJFBW8yqh2mUBuI291LGQVOJ8,35
90
90
  utilities/pytest_plugins/pytest_randomly.py,sha256=NXzCcGKbpgYouz5yehKb4jmxmi2SexKKpgF4M65bi10,414
91
91
  utilities/pytest_plugins/pytest_regressions.py,sha256=Iwhfv_OJH7UCPZCfoh7ugZ2Xjqjil-BBBsOb8sDwiGI,1471
92
- dycw_utilities-0.149.10.dist-info/METADATA,sha256=EbgjAbqUqMjs6OSUe3OOxvI9tsyWzQTysNvXw84cbYQ,1698
93
- dycw_utilities-0.149.10.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
94
- dycw_utilities-0.149.10.dist-info/entry_points.txt,sha256=BOD_SoDxwsfJYOLxhrSXhHP_T7iw-HXI9f2WVkzYxvQ,135
95
- dycw_utilities-0.149.10.dist-info/licenses/LICENSE,sha256=gppZp16M6nSVpBbUBrNL6JuYfvKwZiKgV7XoKKsHzqo,1066
96
- dycw_utilities-0.149.10.dist-info/RECORD,,
92
+ dycw_utilities-0.149.11.dist-info/METADATA,sha256=wXNAZioNfRMvkYH6pANvwG5RbGy1D-9z7hSwmANMABA,1698
93
+ dycw_utilities-0.149.11.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
94
+ dycw_utilities-0.149.11.dist-info/entry_points.txt,sha256=BOD_SoDxwsfJYOLxhrSXhHP_T7iw-HXI9f2WVkzYxvQ,135
95
+ dycw_utilities-0.149.11.dist-info/licenses/LICENSE,sha256=gppZp16M6nSVpBbUBrNL6JuYfvKwZiKgV7XoKKsHzqo,1066
96
+ dycw_utilities-0.149.11.dist-info/RECORD,,
utilities/__init__.py CHANGED
@@ -1,3 +1,3 @@
1
1
  from __future__ import annotations
2
2
 
3
- __version__ = "0.149.10"
3
+ __version__ = "0.149.11"
utilities/pottery.py CHANGED
@@ -12,12 +12,14 @@ from redis.asyncio import Redis
12
12
 
13
13
  from utilities.asyncio import loop_until_succeed, sleep_td, timeout_td
14
14
  from utilities.contextlib import enhanced_async_context_manager
15
+ from utilities.contextvars import yield_set_context
15
16
  from utilities.iterables import always_iterable
16
17
  from utilities.logging import get_logger
17
18
  from utilities.whenever import MILLISECOND, SECOND, to_seconds
18
19
 
19
20
  if TYPE_CHECKING:
20
21
  from collections.abc import AsyncIterator, Callable, Iterable
22
+ from contextvars import ContextVar
21
23
 
22
24
  from whenever import Delta
23
25
 
@@ -57,6 +59,7 @@ async def try_yield_coroutine_looper(
57
59
  throttle: Delta | None = None,
58
60
  logger: LoggerOrName | None = None,
59
61
  sleep_error: Delta | None = None,
62
+ context: ContextVar[bool] | None = None,
60
63
  ) -> AsyncIterator[CoroutineLooper | None]:
61
64
  """Try acquire access to a coroutine looper."""
62
65
  try: # skipif-ci-and-not-linux
@@ -70,7 +73,12 @@ async def try_yield_coroutine_looper(
70
73
  sleep=sleep_acquire,
71
74
  throttle=throttle,
72
75
  ) as lock:
73
- yield CoroutineLooper(lock=lock, logger=logger, sleep=sleep_error)
76
+ looper = CoroutineLooper(lock=lock, logger=logger, sleep=sleep_error)
77
+ if context is None:
78
+ yield looper
79
+ else:
80
+ with yield_set_context(context):
81
+ yield looper
74
82
  except _YieldAccessUnableToAcquireLockError as error: # skipif-ci-and-not-linux
75
83
  if logger is not None:
76
84
  get_logger(logger=logger).info("%s", error)