dycw-utilities 0.157.1__py3-none-any.whl → 0.157.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.
- {dycw_utilities-0.157.1.dist-info → dycw_utilities-0.157.2.dist-info}/METADATA +1 -1
- {dycw_utilities-0.157.1.dist-info → dycw_utilities-0.157.2.dist-info}/RECORD +10 -10
- utilities/__init__.py +1 -1
- utilities/fastapi.py +8 -3
- utilities/slack_sdk.py +8 -3
- utilities/sqlalchemy.py +6 -2
- utilities/sqlalchemy_polars.py +4 -0
- {dycw_utilities-0.157.1.dist-info → dycw_utilities-0.157.2.dist-info}/WHEEL +0 -0
- {dycw_utilities-0.157.1.dist-info → dycw_utilities-0.157.2.dist-info}/entry_points.txt +0 -0
- {dycw_utilities-0.157.1.dist-info → dycw_utilities-0.157.2.dist-info}/licenses/LICENSE +0 -0
@@ -1,4 +1,4 @@
|
|
1
|
-
utilities/__init__.py,sha256=
|
1
|
+
utilities/__init__.py,sha256=4r65bgykd0Tf_s-OhMo8cbKy-69wDBJKBbpSfBl7DX0,60
|
2
2
|
utilities/altair.py,sha256=92E2lCdyHY4Zb-vCw6rEJIsWdKipuu-Tu2ab1ufUfAk,9079
|
3
3
|
utilities/asyncio.py,sha256=PUedzQ5deqlSECQ33sam9cRzI9TnygHz3FdOqWJWPTM,15288
|
4
4
|
utilities/atomicwrites.py,sha256=tPo6r-Rypd9u99u66B9z86YBPpnLrlHtwox_8Z7T34Y,5790
|
@@ -14,7 +14,7 @@ utilities/dataclasses.py,sha256=MXrvIPSZHlpV4msRdVVDRZZo7MC3gX5C9jDUSoNOdpE,3247
|
|
14
14
|
utilities/enum.py,sha256=5l6pwZD1cjSlVW4ss-zBPspWvrbrYrdtJWcg6f5_J5w,5781
|
15
15
|
utilities/errors.py,sha256=mFlDGSM0LI1jZ1pbqwLAH3ttLZ2JVIxyZLojw8tGVZU,1479
|
16
16
|
utilities/eventkit.py,sha256=ddoleSwW9zdc2tjX5Ge0pMKtYwV_JMxhHYOxnWX2AGM,12609
|
17
|
-
utilities/fastapi.py,sha256=
|
17
|
+
utilities/fastapi.py,sha256=TqyKvBjiMS594sXPjrz-KRTLMb3l3D3rZ1zAYV7GfOk,1454
|
18
18
|
utilities/fpdf2.py,sha256=HgM8JSvoioDXrjC0UR3HVLjnMnnb_mML7nL2EmkTwGI,1854
|
19
19
|
utilities/functions.py,sha256=RNVAoLeT_sl-gXaBv2VI_U_EB-d-nSVosYR4gTeeojE,28261
|
20
20
|
utilities/functools.py,sha256=I00ru2gQPakZw2SHVeKIKXfTv741655s6HI0lUoE0D4,1552
|
@@ -62,10 +62,10 @@ utilities/reprlib.py,sha256=ssYTcBW-TeRh3fhCJv57sopTZHF5FrPyyUg9yp5XBlo,3953
|
|
62
62
|
utilities/scipy.py,sha256=wZJM7fEgBAkLSYYvSmsg5ac-QuwAI0BGqHVetw1_Hb0,947
|
63
63
|
utilities/sentinel.py,sha256=A_p5jX2K0Yc5XBfoYHyBLqHsEWzE1ByOdDuzzA2pZnE,1434
|
64
64
|
utilities/shelve.py,sha256=4OzjQI6kGuUbJciqf535rwnao-_IBv66gsT6tRGiUt0,759
|
65
|
-
utilities/slack_sdk.py,sha256=
|
65
|
+
utilities/slack_sdk.py,sha256=76-DYtcGiUhEvl-voMamc5OjfF7Y7nCq54Bys1arqzw,2233
|
66
66
|
utilities/socket.py,sha256=K77vfREvzoVTrpYKo6MZakol0EYu2q1sWJnnZqL0So0,118
|
67
|
-
utilities/sqlalchemy.py,sha256=
|
68
|
-
utilities/sqlalchemy_polars.py,sha256=
|
67
|
+
utilities/sqlalchemy.py,sha256=S3r_sc04wxpP9gCsSMsPZ8GlC_edATlwZd_WLa1Bl14,40619
|
68
|
+
utilities/sqlalchemy_polars.py,sha256=uaqUrFQQhHjhQWa1t03aNtvqeO8MsUZ9zchCQNF1Pq8,14454
|
69
69
|
utilities/statsmodels.py,sha256=koyiBHvpMcSiBfh99wFUfSggLNx7cuAw3rwyfAhoKpQ,3410
|
70
70
|
utilities/string.py,sha256=shmBK87zZwzGyixuNuXCiUbqzfeZ9xlrFwz6JTaRvDk,582
|
71
71
|
utilities/tempfile.py,sha256=HxB2BF28CcecDJLQ3Bx2Ej-Pb6RJc6W9ngSpB9CnP4k,2018
|
@@ -87,8 +87,8 @@ utilities/zoneinfo.py,sha256=FBMcUQ4662Aq8SsuCL1OAhDQiyANmVjtb-C30DRrWoE,1966
|
|
87
87
|
utilities/pytest_plugins/__init__.py,sha256=U4S_2y3zgLZVfMenHRaJFBW8yqh2mUBuI291LGQVOJ8,35
|
88
88
|
utilities/pytest_plugins/pytest_randomly.py,sha256=B1qYVlExGOxTywq2r1SMi5o7btHLk2PNdY_b1p98dkE,409
|
89
89
|
utilities/pytest_plugins/pytest_regressions.py,sha256=9v8kAXDM2ycIXJBimoiF4EgrwbUvxTycFWJiGR_GHhM,1466
|
90
|
-
dycw_utilities-0.157.
|
91
|
-
dycw_utilities-0.157.
|
92
|
-
dycw_utilities-0.157.
|
93
|
-
dycw_utilities-0.157.
|
94
|
-
dycw_utilities-0.157.
|
90
|
+
dycw_utilities-0.157.2.dist-info/METADATA,sha256=H3bdmvntWyzOrtEtLSw_OxEMIe1vcs21otdOrEst-tA,1643
|
91
|
+
dycw_utilities-0.157.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
92
|
+
dycw_utilities-0.157.2.dist-info/entry_points.txt,sha256=BOD_SoDxwsfJYOLxhrSXhHP_T7iw-HXI9f2WVkzYxvQ,135
|
93
|
+
dycw_utilities-0.157.2.dist-info/licenses/LICENSE,sha256=gppZp16M6nSVpBbUBrNL6JuYfvKwZiKgV7XoKKsHzqo,1066
|
94
|
+
dycw_utilities-0.157.2.dist-info/RECORD,,
|
utilities/__init__.py
CHANGED
utilities/fastapi.py
CHANGED
@@ -13,7 +13,7 @@ from utilities.whenever import get_now_local
|
|
13
13
|
if TYPE_CHECKING:
|
14
14
|
from collections.abc import AsyncIterator
|
15
15
|
|
16
|
-
from utilities.types import Delta
|
16
|
+
from utilities.types import Delta, MaybeType
|
17
17
|
|
18
18
|
|
19
19
|
_TASKS: list[Task[None]] = []
|
@@ -35,14 +35,19 @@ class _PingerReceiverApp(FastAPI):
|
|
35
35
|
|
36
36
|
@enhanced_async_context_manager
|
37
37
|
async def yield_ping_receiver(
|
38
|
-
port: int,
|
38
|
+
port: int,
|
39
|
+
/,
|
40
|
+
*,
|
41
|
+
host: str = "localhost",
|
42
|
+
timeout: Delta | None = None,
|
43
|
+
error: MaybeType[BaseException] = TimeoutError,
|
39
44
|
) -> AsyncIterator[None]:
|
40
45
|
"""Yield the ping receiver."""
|
41
46
|
app = _PingerReceiverApp() # skipif-ci
|
42
47
|
server = Server(Config(app, host=host, port=port)) # skipif-ci
|
43
48
|
_TASKS.append(create_task(server.serve())) # skipif-ci
|
44
49
|
try: # skipif-ci
|
45
|
-
async with timeout_td(timeout):
|
50
|
+
async with timeout_td(timeout, error=error):
|
46
51
|
yield
|
47
52
|
finally: # skipif-ci
|
48
53
|
await server.shutdown()
|
utilities/slack_sdk.py
CHANGED
@@ -15,7 +15,7 @@ if TYPE_CHECKING:
|
|
15
15
|
from slack_sdk.webhook import WebhookResponse
|
16
16
|
from whenever import TimeDelta
|
17
17
|
|
18
|
-
from utilities.types import Delta
|
18
|
+
from utilities.types import Delta, MaybeType
|
19
19
|
|
20
20
|
|
21
21
|
_TIMEOUT: Delta = MINUTE
|
@@ -39,11 +39,16 @@ def _get_client(url: str, /, *, timeout: Delta = _TIMEOUT) -> WebhookClient:
|
|
39
39
|
|
40
40
|
|
41
41
|
async def send_to_slack_async(
|
42
|
-
url: str,
|
42
|
+
url: str,
|
43
|
+
text: str,
|
44
|
+
/,
|
45
|
+
*,
|
46
|
+
timeout: TimeDelta = _TIMEOUT,
|
47
|
+
error: MaybeType[BaseException] = TimeoutError,
|
43
48
|
) -> None:
|
44
49
|
"""Send a message via Slack."""
|
45
50
|
client = _get_async_client(url, timeout=timeout)
|
46
|
-
async with timeout_td(timeout):
|
51
|
+
async with timeout_td(timeout, error=error):
|
47
52
|
response = await client.send(text=text)
|
48
53
|
if response.status_code != HTTPStatus.OK: # pragma: no cover
|
49
54
|
raise SendToSlackError(text=text, response=response)
|
utilities/sqlalchemy.py
CHANGED
@@ -134,11 +134,15 @@ def check_connect(engine: Engine, /) -> bool:
|
|
134
134
|
|
135
135
|
|
136
136
|
async def check_connect_async(
|
137
|
-
engine: AsyncEngine,
|
137
|
+
engine: AsyncEngine,
|
138
|
+
/,
|
139
|
+
*,
|
140
|
+
timeout: Delta | None = None,
|
141
|
+
error: MaybeType[BaseException] = TimeoutError,
|
138
142
|
) -> bool:
|
139
143
|
"""Check if an engine can connect."""
|
140
144
|
try:
|
141
|
-
async with timeout_td(timeout), engine.connect() as conn:
|
145
|
+
async with timeout_td(timeout, error=error), engine.connect() as conn:
|
142
146
|
return bool((await conn.execute(_SELECT)).scalar_one())
|
143
147
|
except (
|
144
148
|
gaierror,
|
utilities/sqlalchemy_polars.py
CHANGED
@@ -229,6 +229,7 @@ async def select_to_dataframe(
|
|
229
229
|
in_clauses_chunk_size: int | None = None,
|
230
230
|
chunk_size_frac: float = CHUNK_SIZE_FRAC,
|
231
231
|
timeout: Delta | None = None,
|
232
|
+
error: MaybeType[BaseException] = TimeoutError,
|
232
233
|
**kwargs: Any,
|
233
234
|
) -> DataFrame: ...
|
234
235
|
@overload
|
@@ -244,6 +245,7 @@ async def select_to_dataframe(
|
|
244
245
|
in_clauses_chunk_size: int | None = None,
|
245
246
|
chunk_size_frac: float = CHUNK_SIZE_FRAC,
|
246
247
|
timeout: Delta | None = None,
|
248
|
+
error: MaybeType[BaseException] = TimeoutError,
|
247
249
|
**kwargs: Any,
|
248
250
|
) -> Iterable[DataFrame]: ...
|
249
251
|
@overload
|
@@ -259,6 +261,7 @@ async def select_to_dataframe(
|
|
259
261
|
in_clauses_chunk_size: int | None = None,
|
260
262
|
chunk_size_frac: float = CHUNK_SIZE_FRAC,
|
261
263
|
timeout: Delta | None = None,
|
264
|
+
error: MaybeType[BaseException] = TimeoutError,
|
262
265
|
**kwargs: Any,
|
263
266
|
) -> AsyncIterable[DataFrame]: ...
|
264
267
|
@overload
|
@@ -274,6 +277,7 @@ async def select_to_dataframe(
|
|
274
277
|
in_clauses_chunk_size: int | None = None,
|
275
278
|
chunk_size_frac: float = CHUNK_SIZE_FRAC,
|
276
279
|
timeout: Delta | None = None,
|
280
|
+
error: MaybeType[BaseException] = TimeoutError,
|
277
281
|
**kwargs: Any,
|
278
282
|
) -> DataFrame | Iterable[DataFrame] | AsyncIterable[DataFrame]: ...
|
279
283
|
async def select_to_dataframe(
|
File without changes
|
File without changes
|
File without changes
|