dycw-utilities 0.131.3__py3-none-any.whl → 0.131.5__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.131.5.dist-info/METADATA +39 -0
- {dycw_utilities-0.131.3.dist-info → dycw_utilities-0.131.5.dist-info}/RECORD +7 -7
- utilities/__init__.py +1 -1
- utilities/hypothesis.py +24 -3
- utilities/whenever2.py +29 -2
- dycw_utilities-0.131.3.dist-info/METADATA +0 -205
- {dycw_utilities-0.131.3.dist-info → dycw_utilities-0.131.5.dist-info}/WHEEL +0 -0
- {dycw_utilities-0.131.3.dist-info → dycw_utilities-0.131.5.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,39 @@
|
|
1
|
+
Metadata-Version: 2.4
|
2
|
+
Name: dycw-utilities
|
3
|
+
Version: 0.131.5
|
4
|
+
Author-email: Derek Wan <d.wan@icloud.com>
|
5
|
+
License-File: LICENSE
|
6
|
+
Requires-Python: >=3.12
|
7
|
+
Requires-Dist: atomicwrites<1.5,>=1.4.1
|
8
|
+
Requires-Dist: typing-extensions<4.15,>=4.14.0
|
9
|
+
Requires-Dist: tzlocal<5.4,>=5.3.1
|
10
|
+
Requires-Dist: whenever<0.9,>=0.8.5
|
11
|
+
Provides-Extra: logging
|
12
|
+
Requires-Dist: coloredlogs<15.1,>=15.0.1; extra == 'logging'
|
13
|
+
Provides-Extra: test
|
14
|
+
Requires-Dist: dycw-pytest-only<2.2,>=2.1.1; extra == 'test'
|
15
|
+
Requires-Dist: hypothesis<6.136,>=6.135.2; extra == 'test'
|
16
|
+
Requires-Dist: pytest-asyncio<1.1,>=1.0.0; extra == 'test'
|
17
|
+
Requires-Dist: pytest-cov<6.2,>=6.1.1; extra == 'test'
|
18
|
+
Requires-Dist: pytest-instafail<0.6,>=0.5.0; extra == 'test'
|
19
|
+
Requires-Dist: pytest-lazy-fixtures<1.2,>=1.1.4; extra == 'test'
|
20
|
+
Requires-Dist: pytest-randomly<3.17,>=3.16.0; extra == 'test'
|
21
|
+
Requires-Dist: pytest-regressions<2.9,>=2.8.0; extra == 'test'
|
22
|
+
Requires-Dist: pytest-rerunfailures<16,>=15.1; extra == 'test'
|
23
|
+
Requires-Dist: pytest-rng<1.1,>=1.0.0; extra == 'test'
|
24
|
+
Requires-Dist: pytest-timeout<2.5,>=2.4.0; extra == 'test'
|
25
|
+
Requires-Dist: pytest-xdist<3.8,>=3.7.0; extra == 'test'
|
26
|
+
Requires-Dist: pytest<8.4,>=8.3.5; extra == 'test'
|
27
|
+
Description-Content-Type: text/markdown
|
28
|
+
|
29
|
+
[](https://badge.fury.io/py/dycw-utilities)
|
30
|
+
|
31
|
+
# `dycw-utilities`
|
32
|
+
|
33
|
+
[All the Python functions I don't want to write twice.](https://github.com/nvim-lua/plenary.nvim)
|
34
|
+
|
35
|
+
## Installation
|
36
|
+
|
37
|
+
- `pip install dycw-utilities`
|
38
|
+
|
39
|
+
or with [extras](https://github.com/dycw/python-utilities/blob/master/pyproject.toml).
|
@@ -1,4 +1,4 @@
|
|
1
|
-
utilities/__init__.py,sha256=
|
1
|
+
utilities/__init__.py,sha256=MtzNC7sc7Go6N1zP7sgvZHDH3FNWCXCzEukoDNvyfZk,60
|
2
2
|
utilities/aiolimiter.py,sha256=mD0wEiqMgwpty4XTbawFpnkkmJS6R4JRsVXFUaoitSU,628
|
3
3
|
utilities/altair.py,sha256=HeZBVUocjkrTNwwKrClppsIqgNFF-ykv05HfZSoHYno,9104
|
4
4
|
utilities/asyncio.py,sha256=lvdgBhuMtxq0dpiwF9g2WMMrit3kqXibN1V5NZ4xdbo,38046
|
@@ -24,7 +24,7 @@ utilities/getpass.py,sha256=DfN5UgMAtFCqS3dSfFHUfqIMZX2shXvwphOz_6J6f6A,103
|
|
24
24
|
utilities/git.py,sha256=oi7-_l5e9haSANSCvQw25ufYGoNahuUPHAZ6114s3JQ,1191
|
25
25
|
utilities/hashlib.py,sha256=SVTgtguur0P4elppvzOBbLEjVM3Pea0eWB61yg2ilxo,309
|
26
26
|
utilities/http.py,sha256=WcahTcKYRtZ04WXQoWt5EGCgFPcyHD3EJdlMfxvDt-0,946
|
27
|
-
utilities/hypothesis.py,sha256=
|
27
|
+
utilities/hypothesis.py,sha256=kTxXlZJyBauO3jurT7nIFWXhhmlamUvsNf65OQFEpEc,48084
|
28
28
|
utilities/importlib.py,sha256=mV1xT_O_zt_GnZZ36tl3xOmMaN_3jErDWY54fX39F6Y,429
|
29
29
|
utilities/inflect.py,sha256=DbqB5Q9FbRGJ1NbvEiZBirRMxCxgrz91zy5jCO9ZIs0,347
|
30
30
|
utilities/ipython.py,sha256=V2oMYHvEKvlNBzxDXdLvKi48oUq2SclRg5xasjaXStw,763
|
@@ -88,10 +88,10 @@ utilities/uuid.py,sha256=jJTFxz-CWgltqNuzmythB7iEQ-Q1mCwPevUfKthZT3c,611
|
|
88
88
|
utilities/version.py,sha256=ufhJMmI6KPs1-3wBI71aj5wCukd3sP_m11usLe88DNA,5117
|
89
89
|
utilities/warnings.py,sha256=un1LvHv70PU-LLv8RxPVmugTzDJkkGXRMZTE2-fTQHw,1771
|
90
90
|
utilities/whenever.py,sha256=jS31ZAY5OMxFxLja_Yo5Fidi87Pd-GoVZ7Vi_teqVDA,16743
|
91
|
-
utilities/whenever2.py,sha256=
|
91
|
+
utilities/whenever2.py,sha256=GgfMrRbjGVjQNtuYuGNnPqeGl-DF6EHIFDa2A41k5aQ,4380
|
92
92
|
utilities/zipfile.py,sha256=24lQc9ATcJxHXBPc_tBDiJk48pWyRrlxO2fIsFxU0A8,699
|
93
93
|
utilities/zoneinfo.py,sha256=tvcgu3QzDxe2suTexi2QzRGpin7VK1TjHa0JYYxT69I,1862
|
94
|
-
dycw_utilities-0.131.
|
95
|
-
dycw_utilities-0.131.
|
96
|
-
dycw_utilities-0.131.
|
97
|
-
dycw_utilities-0.131.
|
94
|
+
dycw_utilities-0.131.5.dist-info/METADATA,sha256=eVaJ0DASMuOtpOWJ1UFB5YlCame2VQKXPir1EZs9Ebw,1584
|
95
|
+
dycw_utilities-0.131.5.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
96
|
+
dycw_utilities-0.131.5.dist-info/licenses/LICENSE,sha256=gppZp16M6nSVpBbUBrNL6JuYfvKwZiKgV7XoKKsHzqo,1066
|
97
|
+
dycw_utilities-0.131.5.dist-info/RECORD,,
|
utilities/__init__.py
CHANGED
utilities/hypothesis.py
CHANGED
@@ -47,7 +47,7 @@ from hypothesis.strategies import (
|
|
47
47
|
uuids,
|
48
48
|
)
|
49
49
|
from hypothesis.utils.conventions import not_set
|
50
|
-
from whenever import Date, DateDelta
|
50
|
+
from whenever import Date, DateDelta
|
51
51
|
|
52
52
|
from utilities.datetime import (
|
53
53
|
DATETIME_MAX_NAIVE,
|
@@ -97,7 +97,7 @@ if TYPE_CHECKING:
|
|
97
97
|
|
98
98
|
from hypothesis.database import ExampleDatabase
|
99
99
|
from numpy.random import RandomState
|
100
|
-
from whenever import ZonedDateTime
|
100
|
+
from whenever import PlainDateTime, ZonedDateTime
|
101
101
|
|
102
102
|
from utilities.numpy import NDArrayB, NDArrayF, NDArrayI, NDArrayO
|
103
103
|
from utilities.types import Duration, Number, RoundMode, TimeZoneLike
|
@@ -167,9 +167,15 @@ def date_deltas_whenever(
|
|
167
167
|
*,
|
168
168
|
min_value: MaybeSearchStrategy[DateDelta | None] = None,
|
169
169
|
max_value: MaybeSearchStrategy[DateDelta | None] = None,
|
170
|
+
parsable: MaybeSearchStrategy[bool] = False,
|
170
171
|
) -> DateDelta:
|
171
172
|
"""Strategy for generating date deltas."""
|
172
|
-
from utilities.whenever2 import
|
173
|
+
from utilities.whenever2 import (
|
174
|
+
DATE_DELTA_MAX,
|
175
|
+
DATE_DELTA_MIN,
|
176
|
+
DATE_DELTA_PARSABLE_MAX,
|
177
|
+
DATE_DELTA_PARSABLE_MIN,
|
178
|
+
)
|
173
179
|
|
174
180
|
min_value_, max_value_ = [draw2(draw, v) for v in [min_value, max_value]]
|
175
181
|
match min_value_:
|
@@ -192,6 +198,19 @@ def date_deltas_whenever(
|
|
192
198
|
max_years, max_months, max_days = max_value_.in_years_months_days()
|
193
199
|
assert max_years == 0
|
194
200
|
assert max_months == 0
|
201
|
+
if draw2(draw, parsable):
|
202
|
+
parsable_min_years, parsable_min_months, parsable_min_days = (
|
203
|
+
DATE_DELTA_PARSABLE_MIN.in_years_months_days()
|
204
|
+
)
|
205
|
+
assert parsable_min_years == 0
|
206
|
+
assert parsable_min_months == 0
|
207
|
+
min_days = max(min_days, parsable_min_days)
|
208
|
+
parsable_max_years, parsable_max_months, parsable_max_days = (
|
209
|
+
DATE_DELTA_PARSABLE_MAX.in_years_months_days()
|
210
|
+
)
|
211
|
+
assert parsable_max_years == 0
|
212
|
+
assert parsable_max_months == 0
|
213
|
+
max_days = min(max_days, parsable_max_days)
|
195
214
|
days = draw(integers(min_value=min_days, max_value=max_days))
|
196
215
|
return DateDelta(days=days)
|
197
216
|
|
@@ -1050,6 +1069,8 @@ def plain_datetimes_whenever(
|
|
1050
1069
|
max_value: MaybeSearchStrategy[PlainDateTime | None] = None,
|
1051
1070
|
) -> PlainDateTime:
|
1052
1071
|
"""Strategy for generating plain datetimes."""
|
1072
|
+
from whenever import PlainDateTime
|
1073
|
+
|
1053
1074
|
from utilities.whenever2 import PLAIN_DATE_TIME_MAX, PLAIN_DATE_TIME_MIN
|
1054
1075
|
|
1055
1076
|
min_value_, max_value_ = [draw2(draw, v) for v in [min_value, max_value]]
|
utilities/whenever2.py
CHANGED
@@ -7,10 +7,11 @@ from typing import TYPE_CHECKING, Any, override
|
|
7
7
|
|
8
8
|
from whenever import Date, DateTimeDelta, PlainDateTime, ZonedDateTime
|
9
9
|
|
10
|
-
from utilities.tzlocal import LOCAL_TIME_ZONE
|
11
10
|
from utilities.zoneinfo import UTC, get_time_zone_name
|
12
11
|
|
13
12
|
if TYPE_CHECKING:
|
13
|
+
from zoneinfo import ZoneInfo
|
14
|
+
|
14
15
|
from utilities.types import TimeZoneLike
|
15
16
|
|
16
17
|
|
@@ -27,6 +28,11 @@ DATE_DELTA_MAX = DATE_TIME_DELTA_MAX.date_part()
|
|
27
28
|
TIME_DELTA_MIN = DATE_TIME_DELTA_MIN.time_part()
|
28
29
|
TIME_DELTA_MAX = DATE_TIME_DELTA_MAX.time_part()
|
29
30
|
|
31
|
+
DATE_TIME_DELTA_PARSABLE_MIN = DateTimeDelta(days=-999999)
|
32
|
+
DATE_TIME_DELTA_PARSABLE_MAX = DateTimeDelta(days=999999)
|
33
|
+
DATE_DELTA_PARSABLE_MIN = DATE_TIME_DELTA_PARSABLE_MIN.date_part()
|
34
|
+
DATE_DELTA_PARSABLE_MAX = DATE_TIME_DELTA_PARSABLE_MAX.date_part()
|
35
|
+
|
30
36
|
|
31
37
|
##
|
32
38
|
|
@@ -88,7 +94,24 @@ class WheneverLogRecord(LogRecord):
|
|
88
94
|
)
|
89
95
|
length = self._get_length()
|
90
96
|
plain = format(get_now_local().to_plain().format_common_iso(), f"{length}s")
|
91
|
-
|
97
|
+
time_zone = self._get_time_zone_key()
|
98
|
+
self.zoned_datetime = f"{plain}[{time_zone}]"
|
99
|
+
|
100
|
+
@classmethod
|
101
|
+
@cache
|
102
|
+
def _get_time_zone(cls) -> ZoneInfo:
|
103
|
+
"""Get the local timezone."""
|
104
|
+
try:
|
105
|
+
from utilities.tzlocal import get_local_time_zone
|
106
|
+
except ModuleNotFoundError: # pragma: no cover
|
107
|
+
return UTC
|
108
|
+
return get_local_time_zone()
|
109
|
+
|
110
|
+
@classmethod
|
111
|
+
@cache
|
112
|
+
def _get_time_zone_key(cls) -> str:
|
113
|
+
"""Get the local timezone as a string."""
|
114
|
+
return cls._get_time_zone().key
|
92
115
|
|
93
116
|
@classmethod
|
94
117
|
@cache
|
@@ -101,10 +124,14 @@ class WheneverLogRecord(LogRecord):
|
|
101
124
|
__all__ = [
|
102
125
|
"DATE_DELTA_MAX",
|
103
126
|
"DATE_DELTA_MIN",
|
127
|
+
"DATE_DELTA_PARSABLE_MAX",
|
128
|
+
"DATE_DELTA_PARSABLE_MIN",
|
104
129
|
"DATE_MAX",
|
105
130
|
"DATE_MIN",
|
106
131
|
"DATE_TIME_DELTA_MAX",
|
107
132
|
"DATE_TIME_DELTA_MIN",
|
133
|
+
"DATE_TIME_DELTA_PARSABLE_MAX",
|
134
|
+
"DATE_TIME_DELTA_PARSABLE_MIN",
|
108
135
|
"PLAIN_DATE_TIME_MAX",
|
109
136
|
"PLAIN_DATE_TIME_MIN",
|
110
137
|
"TIME_DELTA_MAX",
|
@@ -1,205 +0,0 @@
|
|
1
|
-
Metadata-Version: 2.4
|
2
|
-
Name: dycw-utilities
|
3
|
-
Version: 0.131.3
|
4
|
-
Author-email: Derek Wan <d.wan@icloud.com>
|
5
|
-
License-File: LICENSE
|
6
|
-
Requires-Python: >=3.12
|
7
|
-
Requires-Dist: atomicwrites<1.5,>=1.4.1
|
8
|
-
Requires-Dist: typing-extensions<4.15,>=4.14.0
|
9
|
-
Requires-Dist: tzlocal<5.4,>=5.3.1
|
10
|
-
Requires-Dist: whenever<0.9,>=0.8.5
|
11
|
-
Provides-Extra: logging
|
12
|
-
Requires-Dist: coloredlogs<15.1,>=15.0.1; extra == 'logging'
|
13
|
-
Provides-Extra: test
|
14
|
-
Requires-Dist: dycw-pytest-only<2.2,>=2.1.1; extra == 'test'
|
15
|
-
Requires-Dist: hypothesis<6.136,>=6.135.2; extra == 'test'
|
16
|
-
Requires-Dist: pytest-asyncio<1.1,>=1.0.0; extra == 'test'
|
17
|
-
Requires-Dist: pytest-cov<6.2,>=6.1.1; extra == 'test'
|
18
|
-
Requires-Dist: pytest-instafail<0.6,>=0.5.0; extra == 'test'
|
19
|
-
Requires-Dist: pytest-lazy-fixtures<1.2,>=1.1.4; extra == 'test'
|
20
|
-
Requires-Dist: pytest-randomly<3.17,>=3.16.0; extra == 'test'
|
21
|
-
Requires-Dist: pytest-regressions<2.9,>=2.8.0; extra == 'test'
|
22
|
-
Requires-Dist: pytest-rerunfailures<16,>=15.1; extra == 'test'
|
23
|
-
Requires-Dist: pytest-rng<1.1,>=1.0.0; extra == 'test'
|
24
|
-
Requires-Dist: pytest-timeout<2.5,>=2.4.0; extra == 'test'
|
25
|
-
Requires-Dist: pytest-xdist<3.8,>=3.7.0; extra == 'test'
|
26
|
-
Requires-Dist: pytest<8.4,>=8.3.5; extra == 'test'
|
27
|
-
Provides-Extra: zzz-test-aiolimiter
|
28
|
-
Requires-Dist: aiolimiter<1.3,>=1.2.1; extra == 'zzz-test-aiolimiter'
|
29
|
-
Provides-Extra: zzz-test-altair
|
30
|
-
Requires-Dist: altair<5.6,>=5.5.0; extra == 'zzz-test-altair'
|
31
|
-
Requires-Dist: img2pdf<0.7,>=0.6.0; extra == 'zzz-test-altair'
|
32
|
-
Requires-Dist: polars-lts-cpu<1.31,>=1.30.0; extra == 'zzz-test-altair'
|
33
|
-
Requires-Dist: vl-convert-python<1.9,>=1.8.0; extra == 'zzz-test-altair'
|
34
|
-
Provides-Extra: zzz-test-asyncio
|
35
|
-
Provides-Extra: zzz-test-atomicwrites
|
36
|
-
Provides-Extra: zzz-test-atools
|
37
|
-
Requires-Dist: atools<0.15,>=0.14.2; extra == 'zzz-test-atools'
|
38
|
-
Provides-Extra: zzz-test-cachetools
|
39
|
-
Requires-Dist: cachetools<5.6,>=5.5.2; extra == 'zzz-test-cachetools'
|
40
|
-
Provides-Extra: zzz-test-click
|
41
|
-
Requires-Dist: click<8.3,>=8.2.1; extra == 'zzz-test-click'
|
42
|
-
Requires-Dist: sqlalchemy<2.1,>=2.0.41; extra == 'zzz-test-click'
|
43
|
-
Provides-Extra: zzz-test-contextlib
|
44
|
-
Provides-Extra: zzz-test-contextvars
|
45
|
-
Provides-Extra: zzz-test-cryptography
|
46
|
-
Requires-Dist: cryptography<45.1,>=45.0.4; extra == 'zzz-test-cryptography'
|
47
|
-
Provides-Extra: zzz-test-cvxpy
|
48
|
-
Requires-Dist: cvxpy<1.7,>=1.6.5; extra == 'zzz-test-cvxpy'
|
49
|
-
Provides-Extra: zzz-test-dataclasses
|
50
|
-
Requires-Dist: orjson<3.11,>=3.10.15; extra == 'zzz-test-dataclasses'
|
51
|
-
Requires-Dist: polars-lts-cpu<1.31,>=1.30.0; extra == 'zzz-test-dataclasses'
|
52
|
-
Provides-Extra: zzz-test-datetime
|
53
|
-
Provides-Extra: zzz-test-enum
|
54
|
-
Provides-Extra: zzz-test-errors
|
55
|
-
Provides-Extra: zzz-test-eventkit
|
56
|
-
Requires-Dist: eventkit<1.1,>=1.0.3; extra == 'zzz-test-eventkit'
|
57
|
-
Provides-Extra: zzz-test-fastapi
|
58
|
-
Requires-Dist: fastapi<0.116,>=0.115.11; extra == 'zzz-test-fastapi'
|
59
|
-
Requires-Dist: httpx<0.29,>=0.28.1; extra == 'zzz-test-fastapi'
|
60
|
-
Requires-Dist: uvicorn<0.35,>=0.34.1; extra == 'zzz-test-fastapi'
|
61
|
-
Provides-Extra: zzz-test-fpdf2
|
62
|
-
Requires-Dist: fpdf2<2.9,>=2.8.3; extra == 'zzz-test-fpdf2'
|
63
|
-
Provides-Extra: zzz-test-functions
|
64
|
-
Provides-Extra: zzz-test-functools
|
65
|
-
Provides-Extra: zzz-test-getpass
|
66
|
-
Provides-Extra: zzz-test-git
|
67
|
-
Provides-Extra: zzz-test-hashlib
|
68
|
-
Requires-Dist: orjson<3.11,>=3.10.15; extra == 'zzz-test-hashlib'
|
69
|
-
Requires-Dist: polars-lts-cpu<1.31,>=1.30.0; extra == 'zzz-test-hashlib'
|
70
|
-
Provides-Extra: zzz-test-http
|
71
|
-
Requires-Dist: orjson<3.11,>=3.10.18; extra == 'zzz-test-http'
|
72
|
-
Provides-Extra: zzz-test-hypothesis
|
73
|
-
Requires-Dist: aiosqlite<0.22,>=0.21.0; extra == 'zzz-test-hypothesis'
|
74
|
-
Requires-Dist: asyncpg<0.31,>=0.30.0; extra == 'zzz-test-hypothesis'
|
75
|
-
Requires-Dist: greenlet<3.3,>=3.2.0; extra == 'zzz-test-hypothesis'
|
76
|
-
Requires-Dist: hypothesis<6.136,>=6.135.2; extra == 'zzz-test-hypothesis'
|
77
|
-
Requires-Dist: luigi<3.7,>=3.6.0; extra == 'zzz-test-hypothesis'
|
78
|
-
Requires-Dist: numpy<2.4,>=2.3.0; extra == 'zzz-test-hypothesis'
|
79
|
-
Requires-Dist: pathvalidate<3.3,>=3.2.3; extra == 'zzz-test-hypothesis'
|
80
|
-
Requires-Dist: redis<6.3,>=6.2.0; extra == 'zzz-test-hypothesis'
|
81
|
-
Requires-Dist: sqlalchemy<2.1,>=2.0.41; extra == 'zzz-test-hypothesis'
|
82
|
-
Requires-Dist: tenacity<9.0,>=8.5.0; extra == 'zzz-test-hypothesis'
|
83
|
-
Provides-Extra: zzz-test-ipython
|
84
|
-
Requires-Dist: ipython<9.1,>=9.0.1; extra == 'zzz-test-ipython'
|
85
|
-
Provides-Extra: zzz-test-iterables
|
86
|
-
Requires-Dist: polars-lts-cpu<1.31,>=1.30.0; extra == 'zzz-test-iterables'
|
87
|
-
Provides-Extra: zzz-test-jupyter
|
88
|
-
Requires-Dist: jupyterlab<4.3,>=4.2.0; extra == 'zzz-test-jupyter'
|
89
|
-
Requires-Dist: pandas<2.4,>=2.3.0; extra == 'zzz-test-jupyter'
|
90
|
-
Requires-Dist: polars-lts-cpu<1.31,>=1.30.0; extra == 'zzz-test-jupyter'
|
91
|
-
Provides-Extra: zzz-test-logging
|
92
|
-
Requires-Dist: coloredlogs<15.1,>=15.0.1; extra == 'zzz-test-logging'
|
93
|
-
Requires-Dist: rich<14.1,>=14.0.0; extra == 'zzz-test-logging'
|
94
|
-
Requires-Dist: tomlkit<0.14,>=0.13.2; extra == 'zzz-test-logging'
|
95
|
-
Provides-Extra: zzz-test-luigi
|
96
|
-
Requires-Dist: luigi<3.7,>=3.6.0; extra == 'zzz-test-luigi'
|
97
|
-
Provides-Extra: zzz-test-math
|
98
|
-
Requires-Dist: numpy<2.4,>=2.3.0; extra == 'zzz-test-math'
|
99
|
-
Provides-Extra: zzz-test-memory-profiler
|
100
|
-
Requires-Dist: memory-profiler<0.62,>=0.61.0; extra == 'zzz-test-memory-profiler'
|
101
|
-
Provides-Extra: zzz-test-modules
|
102
|
-
Provides-Extra: zzz-test-more-itertools
|
103
|
-
Requires-Dist: more-itertools<10.8,>=10.7.0; extra == 'zzz-test-more-itertools'
|
104
|
-
Provides-Extra: zzz-test-numpy
|
105
|
-
Requires-Dist: numpy<2.4,>=2.3.0; extra == 'zzz-test-numpy'
|
106
|
-
Provides-Extra: zzz-test-operator
|
107
|
-
Requires-Dist: polars-lts-cpu<1.31,>=1.30.0; extra == 'zzz-test-operator'
|
108
|
-
Provides-Extra: zzz-test-optuna
|
109
|
-
Requires-Dist: optuna<4.4,>=4.3.0; extra == 'zzz-test-optuna'
|
110
|
-
Provides-Extra: zzz-test-orjson
|
111
|
-
Requires-Dist: orjson<3.11,>=3.10.15; extra == 'zzz-test-orjson'
|
112
|
-
Requires-Dist: polars-lts-cpu<1.31,>=1.30.0; extra == 'zzz-test-orjson'
|
113
|
-
Requires-Dist: rich<14.1,>=14.0.0; extra == 'zzz-test-orjson'
|
114
|
-
Provides-Extra: zzz-test-os
|
115
|
-
Provides-Extra: zzz-test-pathlib
|
116
|
-
Provides-Extra: zzz-test-pickle
|
117
|
-
Provides-Extra: zzz-test-platform
|
118
|
-
Provides-Extra: zzz-test-polars
|
119
|
-
Requires-Dist: polars-lts-cpu<1.31,>=1.30.0; extra == 'zzz-test-polars'
|
120
|
-
Provides-Extra: zzz-test-pqdm
|
121
|
-
Requires-Dist: pqdm<0.3,>=0.2.0; extra == 'zzz-test-pqdm'
|
122
|
-
Provides-Extra: zzz-test-pydantic
|
123
|
-
Requires-Dist: pydantic<2.12,>=2.11.4; extra == 'zzz-test-pydantic'
|
124
|
-
Provides-Extra: zzz-test-pyinstrument
|
125
|
-
Requires-Dist: pyinstrument<5.1,>=5.0.2; extra == 'zzz-test-pyinstrument'
|
126
|
-
Provides-Extra: zzz-test-pyrsistent
|
127
|
-
Requires-Dist: pyrsistent<0.21,>=0.20.0; extra == 'zzz-test-pyrsistent'
|
128
|
-
Provides-Extra: zzz-test-pytest
|
129
|
-
Requires-Dist: orjson<3.11,>=3.10.18; extra == 'zzz-test-pytest'
|
130
|
-
Provides-Extra: zzz-test-pytest-regressions
|
131
|
-
Requires-Dist: pytest-regressions<2.9,>=2.8.0; extra == 'zzz-test-pytest-regressions'
|
132
|
-
Provides-Extra: zzz-test-python-dotenv
|
133
|
-
Requires-Dist: python-dotenv<1.2,>=1.1.0; extra == 'zzz-test-python-dotenv'
|
134
|
-
Provides-Extra: zzz-test-random
|
135
|
-
Provides-Extra: zzz-test-re
|
136
|
-
Provides-Extra: zzz-test-redis
|
137
|
-
Requires-Dist: orjson<3.11,>=3.10.15; extra == 'zzz-test-redis'
|
138
|
-
Requires-Dist: polars-lts-cpu<1.31,>=1.30.0; extra == 'zzz-test-redis'
|
139
|
-
Requires-Dist: redis<6.3,>=6.2.0; extra == 'zzz-test-redis'
|
140
|
-
Requires-Dist: rich<14.1,>=14.0.0; extra == 'zzz-test-redis'
|
141
|
-
Requires-Dist: tenacity<9.0,>=8.5.0; extra == 'zzz-test-redis'
|
142
|
-
Provides-Extra: zzz-test-rich
|
143
|
-
Requires-Dist: rich<14.1,>=14.0.0; extra == 'zzz-test-rich'
|
144
|
-
Provides-Extra: zzz-test-scipy
|
145
|
-
Requires-Dist: scipy<1.16,>=1.15.3; extra == 'zzz-test-scipy'
|
146
|
-
Provides-Extra: zzz-test-sentinel
|
147
|
-
Provides-Extra: zzz-test-shelve
|
148
|
-
Provides-Extra: zzz-test-slack-sdk
|
149
|
-
Requires-Dist: aiohttp<3.13,>=3.12.12; extra == 'zzz-test-slack-sdk'
|
150
|
-
Requires-Dist: slack-sdk<3.36,>=3.35.0; extra == 'zzz-test-slack-sdk'
|
151
|
-
Provides-Extra: zzz-test-socket
|
152
|
-
Provides-Extra: zzz-test-sqlalchemy
|
153
|
-
Requires-Dist: aiosqlite<0.22,>=0.21.0; extra == 'zzz-test-sqlalchemy'
|
154
|
-
Requires-Dist: asyncpg<0.31,>=0.30.0; extra == 'zzz-test-sqlalchemy'
|
155
|
-
Requires-Dist: greenlet<3.3,>=3.2.0; extra == 'zzz-test-sqlalchemy'
|
156
|
-
Requires-Dist: nest-asyncio<1.7,>=1.6.0; extra == 'zzz-test-sqlalchemy'
|
157
|
-
Requires-Dist: sqlalchemy<2.1,>=2.0.41; extra == 'zzz-test-sqlalchemy'
|
158
|
-
Requires-Dist: tenacity<9.0,>=8.5.0; extra == 'zzz-test-sqlalchemy'
|
159
|
-
Provides-Extra: zzz-test-sqlalchemy-polars
|
160
|
-
Requires-Dist: aiosqlite<0.22,>=0.21.0; extra == 'zzz-test-sqlalchemy-polars'
|
161
|
-
Requires-Dist: asyncpg<0.31,>=0.30.0; extra == 'zzz-test-sqlalchemy-polars'
|
162
|
-
Requires-Dist: greenlet<3.3,>=3.2.0; extra == 'zzz-test-sqlalchemy-polars'
|
163
|
-
Requires-Dist: nest-asyncio<1.7,>=1.6.0; extra == 'zzz-test-sqlalchemy-polars'
|
164
|
-
Requires-Dist: polars-lts-cpu<1.31,>=1.30.0; extra == 'zzz-test-sqlalchemy-polars'
|
165
|
-
Requires-Dist: sqlalchemy<2.1,>=2.0.41; extra == 'zzz-test-sqlalchemy-polars'
|
166
|
-
Requires-Dist: tenacity<9.0,>=8.5.0; extra == 'zzz-test-sqlalchemy-polars'
|
167
|
-
Provides-Extra: zzz-test-streamlit
|
168
|
-
Requires-Dist: streamlit<1.46,>=1.45.0; extra == 'zzz-test-streamlit'
|
169
|
-
Provides-Extra: zzz-test-sys
|
170
|
-
Requires-Dist: rich<14.1,>=14.0.0; extra == 'zzz-test-sys'
|
171
|
-
Requires-Dist: tomlkit<0.14,>=0.13.2; extra == 'zzz-test-sys'
|
172
|
-
Provides-Extra: zzz-test-tempfile
|
173
|
-
Provides-Extra: zzz-test-tenacity
|
174
|
-
Requires-Dist: tenacity<9.0,>=8.5.0; extra == 'zzz-test-tenacity'
|
175
|
-
Provides-Extra: zzz-test-text
|
176
|
-
Provides-Extra: zzz-test-threading
|
177
|
-
Provides-Extra: zzz-test-timer
|
178
|
-
Provides-Extra: zzz-test-traceback
|
179
|
-
Requires-Dist: rich<14.1,>=14.0.0; extra == 'zzz-test-traceback'
|
180
|
-
Requires-Dist: tomlkit<0.14,>=0.13.2; extra == 'zzz-test-traceback'
|
181
|
-
Provides-Extra: zzz-test-types
|
182
|
-
Provides-Extra: zzz-test-typing
|
183
|
-
Requires-Dist: polars-lts-cpu<1.31,>=1.30.0; extra == 'zzz-test-typing'
|
184
|
-
Provides-Extra: zzz-test-tzlocal
|
185
|
-
Provides-Extra: zzz-test-uuid
|
186
|
-
Provides-Extra: zzz-test-version
|
187
|
-
Requires-Dist: tomlkit<0.14,>=0.13.2; extra == 'zzz-test-version'
|
188
|
-
Provides-Extra: zzz-test-warnings
|
189
|
-
Provides-Extra: zzz-test-whenever
|
190
|
-
Provides-Extra: zzz-test-zipfile
|
191
|
-
Provides-Extra: zzz-test-zoneinfo
|
192
|
-
Requires-Dist: tzdata<2025.3,>=2025.2; extra == 'zzz-test-zoneinfo'
|
193
|
-
Description-Content-Type: text/markdown
|
194
|
-
|
195
|
-
[](https://badge.fury.io/py/dycw-utilities)
|
196
|
-
|
197
|
-
# `dycw-utilities`
|
198
|
-
|
199
|
-
[All the Python functions I don't want to write twice.](https://github.com/nvim-lua/plenary.nvim)
|
200
|
-
|
201
|
-
## Installation
|
202
|
-
|
203
|
-
- `pip install dycw-utilities`
|
204
|
-
|
205
|
-
or with [extras](https://github.com/dycw/python-utilities/blob/master/pyproject.toml).
|
File without changes
|
File without changes
|