dycw-utilities 0.153.11__py3-none-any.whl → 0.153.14__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.153.11
3
+ Version: 0.153.14
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=baiWzrUCQuqlu9VLIW7YjMo7NGhrT0s3Aw0h0sq7eqk,61
1
+ utilities/__init__.py,sha256=MYECZv1L2rJqbmPy0SVYYlk_XxG4DUd-x0oU565JHOg,61
2
2
  utilities/altair.py,sha256=92E2lCdyHY4Zb-vCw6rEJIsWdKipuu-Tu2ab1ufUfAk,9079
3
3
  utilities/asyncio.py,sha256=QXkTtugXkqtYt7Do23zgYErqzdp6jwzPpV_SP9fJ1gI,16780
4
4
  utilities/atomicwrites.py,sha256=tPo6r-Rypd9u99u66B9z86YBPpnLrlHtwox_8Z7T34Y,5790
@@ -55,7 +55,7 @@ utilities/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
55
  utilities/pyinstrument.py,sha256=crJeEGOLxVt-tBGETb4E9v33kpaWmKrgXqL4PlFGRtk,850
56
56
  utilities/pytest.py,sha256=2HHfAWkzZeK2OAzL2F49EDKooMkfDoGqg8Ev4cHC_N8,7869
57
57
  utilities/pytest_regressions.py,sha256=ocjHTtfOeiGfQAKIei8pKNd61sxN9dawrJJ9gPt2wzA,4097
58
- utilities/random.py,sha256=sXYpWjiSTXdn0RYyBGmydpI1PldwNTG3ocZESBC5o4E,4119
58
+ utilities/random.py,sha256=hZlH4gnAtoaofWswuJYjcygejrY8db4CzP-z_adO2Mo,4165
59
59
  utilities/re.py,sha256=S4h-DLL6ScMPqjboZ_uQ1BVTJajrqV06r_81D--_HCE,4573
60
60
  utilities/redis.py,sha256=2fdveFbqL2pEAeyiVuN_Je8nSM_IZHeahPduMHhFRzY,28381
61
61
  utilities/reprlib.py,sha256=ssYTcBW-TeRh3fhCJv57sopTZHF5FrPyyUg9yp5XBlo,3953
@@ -64,7 +64,7 @@ utilities/sentinel.py,sha256=3jIwgpMekWgDAxPDA_hXMP2St43cPhciKN3LWiZ7kv0,1248
64
64
  utilities/shelve.py,sha256=4OzjQI6kGuUbJciqf535rwnao-_IBv66gsT6tRGiUt0,759
65
65
  utilities/slack_sdk.py,sha256=ppFBvKgfg5IRWiIoKPtpTyzBtBF4XmwEvU3I5wLJikM,2140
66
66
  utilities/socket.py,sha256=K77vfREvzoVTrpYKo6MZakol0EYu2q1sWJnnZqL0So0,118
67
- utilities/sqlalchemy.py,sha256=bSwgIOd09Pmd7D39Rv2gl6t9qHz1iYQIrPnyDUWz7pc,40411
67
+ utilities/sqlalchemy.py,sha256=IJKzrKUd_eBOkyK6CucDlxtHwo2vYH3t-rV2_5rAxq8,40554
68
68
  utilities/sqlalchemy_polars.py,sha256=Mm-sShZfqqgnzTrupMQdCfSM2akrybXHXAErTs-ofM8,14244
69
69
  utilities/statsmodels.py,sha256=koyiBHvpMcSiBfh99wFUfSggLNx7cuAw3rwyfAhoKpQ,3410
70
70
  utilities/string.py,sha256=shmBK87zZwzGyixuNuXCiUbqzfeZ9xlrFwz6JTaRvDk,582
@@ -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.153.11.dist-info/METADATA,sha256=x-k8LzJW8mj7s4N679Z6aDgU0xA8hkd31UDz_iREWQs,1697
91
- dycw_utilities-0.153.11.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
92
- dycw_utilities-0.153.11.dist-info/entry_points.txt,sha256=BOD_SoDxwsfJYOLxhrSXhHP_T7iw-HXI9f2WVkzYxvQ,135
93
- dycw_utilities-0.153.11.dist-info/licenses/LICENSE,sha256=gppZp16M6nSVpBbUBrNL6JuYfvKwZiKgV7XoKKsHzqo,1066
94
- dycw_utilities-0.153.11.dist-info/RECORD,,
90
+ dycw_utilities-0.153.14.dist-info/METADATA,sha256=TETCneLEnNiEag5V6PMzXec3R0PGt_ipnZJm3dzqUIM,1697
91
+ dycw_utilities-0.153.14.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
92
+ dycw_utilities-0.153.14.dist-info/entry_points.txt,sha256=BOD_SoDxwsfJYOLxhrSXhHP_T7iw-HXI9f2WVkzYxvQ,135
93
+ dycw_utilities-0.153.14.dist-info/licenses/LICENSE,sha256=gppZp16M6nSVpBbUBrNL6JuYfvKwZiKgV7XoKKsHzqo,1066
94
+ dycw_utilities-0.153.14.dist-info/RECORD,,
utilities/__init__.py CHANGED
@@ -1,3 +1,3 @@
1
1
  from __future__ import annotations
2
2
 
3
- __version__ = "0.153.11"
3
+ __version__ = "0.153.14"
utilities/random.py CHANGED
@@ -3,6 +3,8 @@ from __future__ import annotations
3
3
  from random import Random, SystemRandom
4
4
  from typing import TYPE_CHECKING
5
5
 
6
+ from utilities.functools import cache
7
+
6
8
  if TYPE_CHECKING:
7
9
  from collections.abc import Iterable
8
10
 
@@ -47,6 +49,7 @@ _DOCKER_SUFFIXES = [
47
49
  ##
48
50
 
49
51
 
52
+ @cache
50
53
  def get_state(seed: Seed | None = None, /) -> Random:
51
54
  """Get a random state."""
52
55
  return seed if isinstance(seed, Random) else Random(x=seed)
utilities/sqlalchemy.py CHANGED
@@ -18,6 +18,7 @@ from itertools import chain
18
18
  from math import floor
19
19
  from operator import ge, le
20
20
  from re import search
21
+ from socket import gaierror
21
22
  from typing import (
22
23
  TYPE_CHECKING,
23
24
  Any,
@@ -127,7 +128,7 @@ def check_connect(engine: Engine, /) -> bool:
127
128
  try:
128
129
  with engine.connect() as conn:
129
130
  return bool(conn.execute(_SELECT).scalar_one())
130
- except (OperationalError, ProgrammingError):
131
+ except (gaierror, ConnectionRefusedError, OperationalError, ProgrammingError):
131
132
  return False
132
133
 
133
134
 
@@ -138,7 +139,13 @@ async def check_connect_async(
138
139
  try:
139
140
  async with timeout_td(timeout), engine.connect() as conn:
140
141
  return bool((await conn.execute(_SELECT)).scalar_one())
141
- except (OperationalError, ProgrammingError, TimeoutError):
142
+ except (
143
+ gaierror,
144
+ ConnectionRefusedError,
145
+ OperationalError,
146
+ ProgrammingError,
147
+ TimeoutError,
148
+ ):
142
149
  return False
143
150
 
144
151