dycw-utilities 0.119.0__py3-none-any.whl → 0.120.0__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.119.0.dist-info → dycw_utilities-0.120.0.dist-info}/METADATA +3 -3
- {dycw_utilities-0.119.0.dist-info → dycw_utilities-0.120.0.dist-info}/RECORD +8 -8
- utilities/__init__.py +1 -1
- utilities/redis.py +6 -6
- utilities/slack_sdk.py +2 -2
- utilities/sqlalchemy.py +6 -6
- {dycw_utilities-0.119.0.dist-info → dycw_utilities-0.120.0.dist-info}/WHEEL +0 -0
- {dycw_utilities-0.119.0.dist-info → dycw_utilities-0.120.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,12 +1,12 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: dycw-utilities
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.120.0
|
4
4
|
Author-email: Derek Wan <d.wan@icloud.com>
|
5
5
|
License-File: LICENSE
|
6
6
|
Requires-Python: >=3.12
|
7
7
|
Requires-Dist: typing-extensions<4.14,>=4.13.1
|
8
8
|
Provides-Extra: test
|
9
|
-
Requires-Dist: hypothesis<6.132,>=6.131.
|
9
|
+
Requires-Dist: hypothesis<6.132,>=6.131.20; extra == 'test'
|
10
10
|
Requires-Dist: pytest-asyncio<0.27,>=0.26.0; extra == 'test'
|
11
11
|
Requires-Dist: pytest-cov<6.2,>=6.1.1; extra == 'test'
|
12
12
|
Requires-Dist: pytest-instafail<0.6,>=0.5.0; extra == 'test'
|
@@ -80,7 +80,7 @@ Provides-Extra: zzz-test-hypothesis
|
|
80
80
|
Requires-Dist: aiosqlite<0.22,>=0.21.0; extra == 'zzz-test-hypothesis'
|
81
81
|
Requires-Dist: asyncpg<0.31,>=0.30.0; extra == 'zzz-test-hypothesis'
|
82
82
|
Requires-Dist: greenlet<3.3,>=3.2.0; extra == 'zzz-test-hypothesis'
|
83
|
-
Requires-Dist: hypothesis<6.132,>=6.131.
|
83
|
+
Requires-Dist: hypothesis<6.132,>=6.131.20; extra == 'zzz-test-hypothesis'
|
84
84
|
Requires-Dist: luigi<3.7,>=3.6.0; extra == 'zzz-test-hypothesis'
|
85
85
|
Requires-Dist: numpy<2.3,>=2.2.6; extra == 'zzz-test-hypothesis'
|
86
86
|
Requires-Dist: pathvalidate<3.3,>=3.2.3; extra == 'zzz-test-hypothesis'
|
@@ -1,4 +1,4 @@
|
|
1
|
-
utilities/__init__.py,sha256=
|
1
|
+
utilities/__init__.py,sha256=qu0sFF38hiJxswkVJFqt5qvZSFGwg6qGaYUT7GjrTDU,60
|
2
2
|
utilities/altair.py,sha256=Gpja-flOo-Db0PIPJLJsgzAlXWoKUjPU1qY-DQ829ek,9156
|
3
3
|
utilities/astor.py,sha256=xuDUkjq0-b6fhtwjhbnebzbqQZAjMSHR1IIS5uOodVg,777
|
4
4
|
utilities/asyncio.py,sha256=HGX79AKzpQbbDBW3paxAXrhWYeudcJjiO1ETU40d_-8,18463
|
@@ -59,15 +59,15 @@ utilities/pytest_regressions.py,sha256=-SVT9647Dg6-JcdsiaDKXe3NdOmmrvGevLKWwGjxq
|
|
59
59
|
utilities/python_dotenv.py,sha256=iWcnpXbH7S6RoXHiLlGgyuH6udCupAcPd_gQ0eAenQ0,3190
|
60
60
|
utilities/random.py,sha256=lYdjgxB7GCfU_fwFVl5U-BIM_HV3q6_urL9byjrwDM8,4157
|
61
61
|
utilities/re.py,sha256=5J4d8VwIPFVrX2Eb8zfoxImDv7IwiN_U7mJ07wR2Wvs,3958
|
62
|
-
utilities/redis.py,sha256=
|
62
|
+
utilities/redis.py,sha256=i5G3k-EIi2JSf9arLIu0YW6viGsiYtxAoynbb4KvJek,26628
|
63
63
|
utilities/reprlib.py,sha256=Re9bk3n-kC__9DxQmRlevqFA86pE6TtVfWjUgpbVOv0,1849
|
64
64
|
utilities/rich.py,sha256=t50MwwVBsoOLxzmeVFSVpjno4OW6Ufum32skXbV8-Bs,1911
|
65
65
|
utilities/scipy.py,sha256=X6ROnHwiUhAmPhM0jkfEh0-Fd9iRvwiqtCQMOLmOQF8,945
|
66
66
|
utilities/sentinel.py,sha256=3jIwgpMekWgDAxPDA_hXMP2St43cPhciKN3LWiZ7kv0,1248
|
67
67
|
utilities/shelve.py,sha256=HZsMwK4tcIfg3sh0gApx4-yjQnrY4o3V3ZRimvRhoW0,738
|
68
|
-
utilities/slack_sdk.py,sha256=
|
68
|
+
utilities/slack_sdk.py,sha256=A2f7-DYOngRoUP6ZdLIaUQ6Lfzgru5Xp3U3k5JfEkQE,3301
|
69
69
|
utilities/socket.py,sha256=K77vfREvzoVTrpYKo6MZakol0EYu2q1sWJnnZqL0So0,118
|
70
|
-
utilities/sqlalchemy.py,sha256=
|
70
|
+
utilities/sqlalchemy.py,sha256=iwNJyR0Dx47l81aHEq5P6eMzgduVxxGH531OVUp2k_A,35451
|
71
71
|
utilities/sqlalchemy_polars.py,sha256=wjJpoUo-yO9E2ujpG_06vV5r2OdvBiQ4yvV6wKCa2Tk,15605
|
72
72
|
utilities/statsmodels.py,sha256=koyiBHvpMcSiBfh99wFUfSggLNx7cuAw3rwyfAhoKpQ,3410
|
73
73
|
utilities/streamlit.py,sha256=U9PJBaKP1IdSykKhPZhIzSPTZsmLsnwbEPZWzNhJPKk,2955
|
@@ -88,7 +88,7 @@ utilities/warnings.py,sha256=un1LvHv70PU-LLv8RxPVmugTzDJkkGXRMZTE2-fTQHw,1771
|
|
88
88
|
utilities/whenever.py,sha256=jS31ZAY5OMxFxLja_Yo5Fidi87Pd-GoVZ7Vi_teqVDA,16743
|
89
89
|
utilities/zipfile.py,sha256=24lQc9ATcJxHXBPc_tBDiJk48pWyRrlxO2fIsFxU0A8,699
|
90
90
|
utilities/zoneinfo.py,sha256=-5j7IQ9nb7gR43rdgA7ms05im-XuqhAk9EJnQBXxCoQ,1874
|
91
|
-
dycw_utilities-0.
|
92
|
-
dycw_utilities-0.
|
93
|
-
dycw_utilities-0.
|
94
|
-
dycw_utilities-0.
|
91
|
+
dycw_utilities-0.120.0.dist-info/METADATA,sha256=bIooVFCDiMDpiwDmNO0Wl8o2uhmwE1bRJQSPnkSRDUw,12943
|
92
|
+
dycw_utilities-0.120.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
93
|
+
dycw_utilities-0.120.0.dist-info/licenses/LICENSE,sha256=gppZp16M6nSVpBbUBrNL6JuYfvKwZiKgV7XoKKsHzqo,1066
|
94
|
+
dycw_utilities-0.120.0.dist-info/RECORD,,
|
utilities/__init__.py
CHANGED
utilities/redis.py
CHANGED
@@ -589,7 +589,7 @@ async def publish(
|
|
589
589
|
|
590
590
|
|
591
591
|
@dataclass(kw_only=True)
|
592
|
-
class
|
592
|
+
class Publisher(InfiniteQueueLooper[None, tuple[str, EncodableT]]):
|
593
593
|
"""Publish a set of messages to Redis."""
|
594
594
|
|
595
595
|
redis: Redis
|
@@ -612,12 +612,12 @@ class PublisherIQL(InfiniteQueueLooper[None, tuple[str, EncodableT]]):
|
|
612
612
|
def _yield_events_and_exceptions(
|
613
613
|
self,
|
614
614
|
) -> Iterator[tuple[None, MaybeType[BaseException]]]:
|
615
|
-
yield (None,
|
615
|
+
yield (None, PublisherError) # skipif-ci-and-not-linux
|
616
616
|
|
617
617
|
|
618
618
|
@dataclass(kw_only=True)
|
619
|
-
class
|
620
|
-
publisher:
|
619
|
+
class PublisherError(Exception):
|
620
|
+
publisher: Publisher
|
621
621
|
|
622
622
|
@override
|
623
623
|
def __str__(self) -> str:
|
@@ -812,8 +812,8 @@ _ = _TestRedis
|
|
812
812
|
|
813
813
|
|
814
814
|
__all__ = [
|
815
|
-
"
|
816
|
-
"
|
815
|
+
"Publisher",
|
816
|
+
"PublisherError",
|
817
817
|
"RedisHashMapKey",
|
818
818
|
"RedisKey",
|
819
819
|
"publish",
|
utilities/slack_sdk.py
CHANGED
@@ -35,7 +35,7 @@ async def _send_adapter(url: str, text: str, /) -> None:
|
|
35
35
|
|
36
36
|
|
37
37
|
@dataclass(init=False, unsafe_hash=True)
|
38
|
-
class
|
38
|
+
class SlackHandler(Handler, InfiniteQueueLooper[None, str]):
|
39
39
|
"""Handler for sending messages to Slack."""
|
40
40
|
|
41
41
|
@override
|
@@ -110,4 +110,4 @@ def _get_client(url: str, /, *, timeout: Duration = _TIMEOUT) -> AsyncWebhookCli
|
|
110
110
|
return AsyncWebhookClient(url, timeout=timeout_use)
|
111
111
|
|
112
112
|
|
113
|
-
__all__ = ["SendToSlackError", "
|
113
|
+
__all__ = ["SendToSlackError", "SlackHandler", "send_to_slack"]
|
utilities/sqlalchemy.py
CHANGED
@@ -609,7 +609,7 @@ class TablenameMixin:
|
|
609
609
|
|
610
610
|
|
611
611
|
@dataclass(kw_only=True)
|
612
|
-
class
|
612
|
+
class Upserter(InfiniteQueueLooper[None, _InsertItem]):
|
613
613
|
"""Upsert a set of items to a database."""
|
614
614
|
|
615
615
|
engine: AsyncEngine
|
@@ -641,12 +641,12 @@ class UpserterIQL(InfiniteQueueLooper[None, _InsertItem]):
|
|
641
641
|
def _yield_events_and_exceptions(
|
642
642
|
self,
|
643
643
|
) -> Iterator[tuple[None, MaybeType[BaseException]]]:
|
644
|
-
yield (None,
|
644
|
+
yield (None, UpserterError)
|
645
645
|
|
646
646
|
|
647
647
|
@dataclass(kw_only=True)
|
648
|
-
class
|
649
|
-
upserter:
|
648
|
+
class UpserterError(Exception):
|
649
|
+
upserter: Upserter
|
650
650
|
|
651
651
|
@override
|
652
652
|
def __str__(self) -> str:
|
@@ -1108,8 +1108,8 @@ __all__ = [
|
|
1108
1108
|
"InsertItemsError",
|
1109
1109
|
"TablenameMixin",
|
1110
1110
|
"UpsertItemsError",
|
1111
|
-
"
|
1112
|
-
"
|
1111
|
+
"Upserter",
|
1112
|
+
"UpserterError",
|
1113
1113
|
"check_engine",
|
1114
1114
|
"columnwise_max",
|
1115
1115
|
"columnwise_min",
|
File without changes
|
File without changes
|