encommon 0.14.0__py3-none-any.whl → 0.16.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.
- encommon/colors/__init__.py +2 -2
- encommon/colors/{colors.py → color.py} +24 -24
- encommon/colors/test/{test_colors.py → test_color.py} +16 -16
- encommon/config/config.py +27 -27
- encommon/config/files.py +14 -14
- encommon/config/logger.py +7 -7
- encommon/config/params.py +47 -30
- encommon/config/paths.py +13 -13
- encommon/config/test/__init__.py +1 -1
- encommon/config/test/test_config.py +45 -18
- encommon/config/test/test_files.py +8 -7
- encommon/config/test/test_logger.py +11 -10
- encommon/config/test/test_paths.py +11 -10
- encommon/config/utils.py +2 -2
- encommon/crypts/crypts.py +2 -2
- encommon/crypts/params.py +28 -12
- encommon/crypts/test/test_crypts.py +5 -5
- encommon/crypts/test/test_hashes.py +2 -1
- encommon/times/__init__.py +2 -2
- encommon/times/common.py +2 -2
- encommon/times/params.py +76 -48
- encommon/times/parse.py +3 -3
- encommon/times/test/test_duration.py +3 -2
- encommon/times/test/test_time.py +123 -0
- encommon/times/test/test_timer.py +5 -4
- encommon/times/test/test_timers.py +10 -9
- encommon/times/test/test_window.py +4 -3
- encommon/times/test/test_windows.py +7 -6
- encommon/times/{times.py → time.py} +62 -15
- encommon/times/timer.py +10 -10
- encommon/times/timers.py +5 -5
- encommon/times/unitime.py +9 -0
- encommon/times/window.py +31 -31
- encommon/times/windows.py +12 -12
- encommon/types/classes.py +2 -15
- encommon/types/lists.py +6 -0
- encommon/types/notate.py +2 -1
- encommon/types/strings.py +5 -0
- encommon/types/test/test_classes.py +2 -2
- encommon/types/test/test_empty.py +2 -1
- encommon/utils/sample.py +8 -7
- encommon/utils/stdout.py +4 -5
- encommon/utils/test/test_paths.py +3 -3
- encommon/utils/test/test_sample.py +2 -2
- encommon/utils/test/test_stdout.py +3 -3
- encommon/version.txt +1 -1
- {encommon-0.14.0.dist-info → encommon-0.16.0.dist-info}/METADATA +1 -1
- encommon-0.16.0.dist-info/RECORD +84 -0
- {encommon-0.14.0.dist-info → encommon-0.16.0.dist-info}/WHEEL +1 -1
- encommon/times/test/test_times.py +0 -122
- encommon-0.14.0.dist-info/RECORD +0 -84
- {encommon-0.14.0.dist-info → encommon-0.16.0.dist-info}/LICENSE +0 -0
- {encommon-0.14.0.dist-info → encommon-0.16.0.dist-info}/top_level.txt +0 -0
@@ -24,14 +24,63 @@ from .utils import strftime
|
|
24
24
|
|
25
25
|
|
26
26
|
|
27
|
-
class
|
27
|
+
class Time:
|
28
28
|
"""
|
29
29
|
Interact with various time functions through one wrapper.
|
30
30
|
|
31
|
+
.. testsetup::
|
32
|
+
>>> time = Time('1/1/2000 12:00am')
|
33
|
+
|
34
|
+
Example
|
35
|
+
-------
|
36
|
+
>>> time = Time('1/1/2000 12:00am')
|
37
|
+
>>> time.stamp()
|
38
|
+
'2000-01-01T00:00:00.000000+0000'
|
39
|
+
>>> time.stamp('%m/%d/%Y')
|
40
|
+
'01/01/2000'
|
41
|
+
|
42
|
+
Example
|
43
|
+
-------
|
44
|
+
>>> time.epoch
|
45
|
+
946684800.0
|
46
|
+
>>> time.time
|
47
|
+
datetime.time(0, 0)
|
48
|
+
>>> time.simple
|
49
|
+
'2000-01-01T00:00:00+0000'
|
50
|
+
>>> time.human
|
51
|
+
'01/01/2000 12:00AM UTC'
|
52
|
+
|
53
|
+
Example
|
54
|
+
-------
|
55
|
+
>>> time.before
|
56
|
+
Time('1999-12-31T23:59:59.999999+0000')
|
57
|
+
>>> time.after
|
58
|
+
Time('2000-01-01T00:00:00.000001+0000')
|
59
|
+
|
31
60
|
Example
|
32
61
|
-------
|
33
|
-
>>>
|
34
|
-
|
62
|
+
>>> time.shift('-1d')
|
63
|
+
Time('1999-12-31T00:00:00.000000+0000')
|
64
|
+
|
65
|
+
Example
|
66
|
+
-------
|
67
|
+
>>> time.shifz('US/Central')
|
68
|
+
Time('1999-12-31T18:00:00.000000-0600')
|
69
|
+
|
70
|
+
Example
|
71
|
+
-------
|
72
|
+
>>> time = Time('-1s')
|
73
|
+
>>> int(time.since)
|
74
|
+
1
|
75
|
+
|
76
|
+
Example
|
77
|
+
-------
|
78
|
+
>>> time1 = Time('1/1/2000 12:00am')
|
79
|
+
>>> time2 = Time('1/1/2000 12:00am')
|
80
|
+
>>> time1 - time2
|
81
|
+
0.0
|
82
|
+
>>> time1 + time2
|
83
|
+
1893369600.0
|
35
84
|
|
36
85
|
:param source: Time in various forms that will be parsed.
|
37
86
|
:param anchor: Optional relative time; for snap notation.
|
@@ -73,7 +122,7 @@ class Times:
|
|
73
122
|
:returns: String representation for values from instance.
|
74
123
|
"""
|
75
124
|
|
76
|
-
return f"
|
125
|
+
return f"Time('{self.subsec}')"
|
77
126
|
|
78
127
|
|
79
128
|
def __hash__(
|
@@ -85,9 +134,7 @@ class Times:
|
|
85
134
|
:returns: Boolean indicating outcome from the operation.
|
86
135
|
"""
|
87
136
|
|
88
|
-
|
89
|
-
|
90
|
-
return int(1e9 + hashed)
|
137
|
+
return hash(self.__source)
|
91
138
|
|
92
139
|
|
93
140
|
def __str__(
|
@@ -398,7 +445,7 @@ class Times:
|
|
398
445
|
@property
|
399
446
|
def before(
|
400
447
|
self,
|
401
|
-
) -> '
|
448
|
+
) -> 'Time':
|
402
449
|
"""
|
403
450
|
Return new object containing time just before the time.
|
404
451
|
|
@@ -410,13 +457,13 @@ class Times:
|
|
410
457
|
source -= timedelta(
|
411
458
|
microseconds=1)
|
412
459
|
|
413
|
-
return
|
460
|
+
return Time(source)
|
414
461
|
|
415
462
|
|
416
463
|
@property
|
417
464
|
def after(
|
418
465
|
self,
|
419
|
-
) -> '
|
466
|
+
) -> 'Time':
|
420
467
|
"""
|
421
468
|
Return new object containing time just after the time.
|
422
469
|
|
@@ -428,7 +475,7 @@ class Times:
|
|
428
475
|
source += timedelta(
|
429
476
|
microseconds=1)
|
430
477
|
|
431
|
-
return
|
478
|
+
return Time(source)
|
432
479
|
|
433
480
|
|
434
481
|
def stamp(
|
@@ -462,7 +509,7 @@ class Times:
|
|
462
509
|
def shift(
|
463
510
|
self,
|
464
511
|
notate: str,
|
465
|
-
) -> '
|
512
|
+
) -> 'Time':
|
466
513
|
"""
|
467
514
|
Return the new instance of object shifted using snaptime.
|
468
515
|
|
@@ -472,14 +519,14 @@ class Times:
|
|
472
519
|
|
473
520
|
source = self.__source
|
474
521
|
|
475
|
-
return
|
522
|
+
return Time(
|
476
523
|
notate, anchor=source)
|
477
524
|
|
478
525
|
|
479
526
|
def shifz(
|
480
527
|
self,
|
481
528
|
tzname: str,
|
482
|
-
) -> '
|
529
|
+
) -> 'Time':
|
483
530
|
"""
|
484
531
|
Return the new instance of object shifted using datetime.
|
485
532
|
|
@@ -498,5 +545,5 @@ class Times:
|
|
498
545
|
source
|
499
546
|
.astimezone(tzinfo))
|
500
547
|
|
501
|
-
return
|
548
|
+
return Time(
|
502
549
|
source, tzname=tzname)
|
encommon/times/timer.py
CHANGED
@@ -11,7 +11,7 @@ from typing import Optional
|
|
11
11
|
|
12
12
|
from .common import NUMERIC
|
13
13
|
from .common import PARSABLE
|
14
|
-
from .
|
14
|
+
from .time import Time
|
15
15
|
|
16
16
|
|
17
17
|
|
@@ -36,7 +36,7 @@ class Timer:
|
|
36
36
|
"""
|
37
37
|
|
38
38
|
__timer: float
|
39
|
-
|
39
|
+
__time: Time
|
40
40
|
|
41
41
|
|
42
42
|
def __init__(
|
@@ -50,10 +50,10 @@ class Timer:
|
|
50
50
|
"""
|
51
51
|
|
52
52
|
timer = float(timer)
|
53
|
-
start =
|
53
|
+
start = Time(start)
|
54
54
|
|
55
55
|
self.__timer = timer
|
56
|
-
self.
|
56
|
+
self.__time = start
|
57
57
|
|
58
58
|
|
59
59
|
@property
|
@@ -70,16 +70,16 @@ class Timer:
|
|
70
70
|
|
71
71
|
|
72
72
|
@property
|
73
|
-
def
|
73
|
+
def time(
|
74
74
|
self,
|
75
|
-
) ->
|
75
|
+
) -> Time:
|
76
76
|
"""
|
77
77
|
Return the value for the attribute from class instance.
|
78
78
|
|
79
79
|
:returns: Value for the attribute from class instance.
|
80
80
|
"""
|
81
81
|
|
82
|
-
return self.
|
82
|
+
return self.__time
|
83
83
|
|
84
84
|
|
85
85
|
@property
|
@@ -92,7 +92,7 @@ class Timer:
|
|
92
92
|
:returns: Seconds that have elapsed since the interval.
|
93
93
|
"""
|
94
94
|
|
95
|
-
return self.
|
95
|
+
return self.time.since
|
96
96
|
|
97
97
|
|
98
98
|
@property
|
@@ -141,7 +141,7 @@ class Timer:
|
|
141
141
|
:param value: Override the time updated for timer value.
|
142
142
|
"""
|
143
143
|
|
144
|
-
value =
|
144
|
+
value = Time(
|
145
145
|
value or 'now')
|
146
146
|
|
147
|
-
self.
|
147
|
+
self.__time = value
|
encommon/times/timers.py
CHANGED
@@ -21,8 +21,8 @@ from sqlalchemy.orm import sessionmaker
|
|
21
21
|
|
22
22
|
from .common import PARSABLE
|
23
23
|
from .params import TimersParams
|
24
|
+
from .time import Time
|
24
25
|
from .timer import Timer
|
25
|
-
from .times import Times
|
26
26
|
|
27
27
|
if TYPE_CHECKING:
|
28
28
|
from .params import TimerParams
|
@@ -97,7 +97,7 @@ class Timers:
|
|
97
97
|
>>> timers.ready('one')
|
98
98
|
True
|
99
99
|
|
100
|
-
:param params: Parameters
|
100
|
+
:param params: Parameters used to instantiate the class.
|
101
101
|
:param store: Optional database path for keeping state.
|
102
102
|
:param group: Optional override for default group name.
|
103
103
|
"""
|
@@ -322,12 +322,12 @@ class Timers:
|
|
322
322
|
|
323
323
|
for unique, timer in items:
|
324
324
|
|
325
|
-
update =
|
325
|
+
update = Time('now')
|
326
326
|
|
327
327
|
append = TimersTable(
|
328
328
|
group=group,
|
329
329
|
unique=unique,
|
330
|
-
last=timer.
|
330
|
+
last=timer.time.subsec,
|
331
331
|
update=update.subsec)
|
332
332
|
|
333
333
|
session.merge(append)
|
@@ -374,7 +374,7 @@ class Timers:
|
|
374
374
|
Create a new timer using the provided input parameters.
|
375
375
|
|
376
376
|
:param unique: Unique identifier for the related child.
|
377
|
-
:param params: Parameters
|
377
|
+
:param params: Parameters used to instantiate the class.
|
378
378
|
:returns: Newly constructed instance of related class.
|
379
379
|
"""
|
380
380
|
|
encommon/times/unitime.py
CHANGED
@@ -19,6 +19,15 @@ def unitime(
|
|
19
19
|
"""
|
20
20
|
Return the seconds in integer format for provided input.
|
21
21
|
|
22
|
+
Example
|
23
|
+
-------
|
24
|
+
>>> unitime('1d')
|
25
|
+
86400
|
26
|
+
>>> unitime('1y')
|
27
|
+
31536000
|
28
|
+
>>> unitime('1w3d4h')
|
29
|
+
878400
|
30
|
+
|
22
31
|
:param input: Input that will be converted into seconds.
|
23
32
|
:returns: Seconds in integer format for provided input.
|
24
33
|
"""
|
encommon/times/window.py
CHANGED
@@ -17,7 +17,7 @@ from croniter import croniter
|
|
17
17
|
from .common import PARSABLE
|
18
18
|
from .common import SCHEDULE
|
19
19
|
from .parse import parse_time
|
20
|
-
from .
|
20
|
+
from .time import Time
|
21
21
|
|
22
22
|
|
23
23
|
|
@@ -42,13 +42,13 @@ class Window:
|
|
42
42
|
"""
|
43
43
|
|
44
44
|
__window: SCHEDULE
|
45
|
-
__start:
|
46
|
-
__stop:
|
47
|
-
__anchor:
|
45
|
+
__start: Time
|
46
|
+
__stop: Time
|
47
|
+
__anchor: Time
|
48
48
|
__delay: float
|
49
49
|
|
50
|
-
__wlast:
|
51
|
-
__wnext:
|
50
|
+
__wlast: Time
|
51
|
+
__wnext: Time
|
52
52
|
|
53
53
|
|
54
54
|
def __init__(
|
@@ -67,9 +67,9 @@ class Window:
|
|
67
67
|
anchor = anchor or start
|
68
68
|
|
69
69
|
window = copy(window)
|
70
|
-
start =
|
71
|
-
stop =
|
72
|
-
anchor =
|
70
|
+
start = Time(start)
|
71
|
+
stop = Time(stop)
|
72
|
+
anchor = Time(anchor)
|
73
73
|
delay = float(delay)
|
74
74
|
|
75
75
|
assert stop > start
|
@@ -114,40 +114,40 @@ class Window:
|
|
114
114
|
@property
|
115
115
|
def start(
|
116
116
|
self,
|
117
|
-
) ->
|
117
|
+
) -> Time:
|
118
118
|
"""
|
119
119
|
Return the value for the attribute from class instance.
|
120
120
|
|
121
121
|
:returns: Value for the attribute from class instance.
|
122
122
|
"""
|
123
123
|
|
124
|
-
return
|
124
|
+
return Time(self.__start)
|
125
125
|
|
126
126
|
|
127
127
|
@property
|
128
128
|
def stop(
|
129
129
|
self,
|
130
|
-
) ->
|
130
|
+
) -> Time:
|
131
131
|
"""
|
132
132
|
Return the value for the attribute from class instance.
|
133
133
|
|
134
134
|
:returns: Value for the attribute from class instance.
|
135
135
|
"""
|
136
136
|
|
137
|
-
return
|
137
|
+
return Time(self.__stop)
|
138
138
|
|
139
139
|
|
140
140
|
@property
|
141
141
|
def anchor(
|
142
142
|
self,
|
143
|
-
) ->
|
143
|
+
) -> Time:
|
144
144
|
"""
|
145
145
|
Return the value for the attribute from class instance.
|
146
146
|
|
147
147
|
:returns: Value for the attribute from class instance.
|
148
148
|
"""
|
149
149
|
|
150
|
-
return
|
150
|
+
return Time(self.__anchor)
|
151
151
|
|
152
152
|
|
153
153
|
@property
|
@@ -166,51 +166,51 @@ class Window:
|
|
166
166
|
@property
|
167
167
|
def last(
|
168
168
|
self,
|
169
|
-
) ->
|
169
|
+
) -> Time:
|
170
170
|
"""
|
171
171
|
Return the value for the attribute from class instance.
|
172
172
|
|
173
173
|
:returns: Value for the attribute from class instance.
|
174
174
|
"""
|
175
175
|
|
176
|
-
return
|
176
|
+
return Time(self.__wlast)
|
177
177
|
|
178
178
|
|
179
179
|
@property
|
180
180
|
def next(
|
181
181
|
self,
|
182
|
-
) ->
|
182
|
+
) -> Time:
|
183
183
|
"""
|
184
184
|
Return the value for the attribute from class instance.
|
185
185
|
|
186
186
|
:returns: Value for the attribute from class instance.
|
187
187
|
"""
|
188
188
|
|
189
|
-
return
|
189
|
+
return Time(self.__wnext)
|
190
190
|
|
191
191
|
|
192
192
|
@property
|
193
193
|
def soonest(
|
194
194
|
self,
|
195
|
-
) ->
|
195
|
+
) -> Time:
|
196
196
|
"""
|
197
197
|
Return the value for the attribute from class instance.
|
198
198
|
|
199
199
|
:returns: Value for the attribute from class instance.
|
200
200
|
"""
|
201
|
-
return
|
201
|
+
return Time(Time() - self.delay)
|
202
202
|
|
203
203
|
|
204
204
|
@property
|
205
205
|
def latest(
|
206
206
|
self,
|
207
|
-
) ->
|
207
|
+
) -> Time:
|
208
208
|
"""
|
209
209
|
Return the value for the attribute from class instance.
|
210
210
|
|
211
211
|
:returns: Value for the attribute from class instance.
|
212
212
|
"""
|
213
|
-
return
|
213
|
+
return Time(self.stop - self.delay)
|
214
214
|
|
215
215
|
|
216
216
|
@property
|
@@ -230,7 +230,7 @@ class Window:
|
|
230
230
|
self,
|
231
231
|
anchor: PARSABLE,
|
232
232
|
backward: bool = False,
|
233
|
-
) -> tuple[
|
233
|
+
) -> tuple[Time, Time]:
|
234
234
|
"""
|
235
235
|
Determine next and last windows for window using anchor.
|
236
236
|
|
@@ -299,7 +299,7 @@ class Window:
|
|
299
299
|
:param value: Override the time updated for window value.
|
300
300
|
"""
|
301
301
|
|
302
|
-
value =
|
302
|
+
value = Time(
|
303
303
|
value or 'now')
|
304
304
|
|
305
305
|
wlast, wnext = (
|
@@ -314,7 +314,7 @@ def window_croniter( # noqa: CFQ004
|
|
314
314
|
schedule: str,
|
315
315
|
anchor: PARSABLE,
|
316
316
|
backward: bool = False,
|
317
|
-
) -> tuple[
|
317
|
+
) -> tuple[Time, Time]:
|
318
318
|
"""
|
319
319
|
Determine next and previous times for cronjob schedule.
|
320
320
|
|
@@ -365,8 +365,8 @@ def window_croniter( # noqa: CFQ004
|
|
365
365
|
|
366
366
|
|
367
367
|
return (
|
368
|
-
|
369
|
-
|
368
|
+
Time(wlast),
|
369
|
+
Time(wnext))
|
370
370
|
|
371
371
|
|
372
372
|
|
@@ -374,7 +374,7 @@ def window_interval(
|
|
374
374
|
schedule: dict[str, int],
|
375
375
|
anchor: PARSABLE,
|
376
376
|
backward: bool = False,
|
377
|
-
) -> tuple[
|
377
|
+
) -> tuple[Time, Time]:
|
378
378
|
"""
|
379
379
|
Determine next and previous times for interval schedule.
|
380
380
|
|
@@ -403,5 +403,5 @@ def window_interval(
|
|
403
403
|
|
404
404
|
|
405
405
|
return (
|
406
|
-
|
407
|
-
|
406
|
+
Time(wlast),
|
407
|
+
Time(wnext))
|
encommon/times/windows.py
CHANGED
@@ -21,7 +21,7 @@ from sqlalchemy.orm import sessionmaker
|
|
21
21
|
|
22
22
|
from .common import PARSABLE
|
23
23
|
from .params import WindowsParams
|
24
|
-
from .
|
24
|
+
from .time import Time
|
25
25
|
from .window import Window
|
26
26
|
|
27
27
|
if TYPE_CHECKING:
|
@@ -97,7 +97,7 @@ class Windows:
|
|
97
97
|
>>> [windows.ready('one') for x in range(3)]
|
98
98
|
[True, True, False]
|
99
99
|
|
100
|
-
:param params: Parameters
|
100
|
+
:param params: Parameters used to instantiate the class.
|
101
101
|
:param start: Determine the start for scheduling window.
|
102
102
|
:param stop: Determine the ending for scheduling window.
|
103
103
|
:param store: Optional database path for keeping state.
|
@@ -114,8 +114,8 @@ class Windows:
|
|
114
114
|
# pylint: disable=unsubscriptable-object
|
115
115
|
sessionmaker[Session])
|
116
116
|
|
117
|
-
__start:
|
118
|
-
__stop:
|
117
|
+
__start: Time
|
118
|
+
__stop: Time
|
119
119
|
|
120
120
|
__windows: WINDOWS
|
121
121
|
|
@@ -147,8 +147,8 @@ class Windows:
|
|
147
147
|
self.__make_engine()
|
148
148
|
|
149
149
|
|
150
|
-
start =
|
151
|
-
stop =
|
150
|
+
start = Time(start)
|
151
|
+
stop = Time(stop)
|
152
152
|
|
153
153
|
assert stop > start
|
154
154
|
|
@@ -249,27 +249,27 @@ class Windows:
|
|
249
249
|
@property
|
250
250
|
def start(
|
251
251
|
self,
|
252
|
-
) ->
|
252
|
+
) -> Time:
|
253
253
|
"""
|
254
254
|
Return the value for the attribute from class instance.
|
255
255
|
|
256
256
|
:returns: Value for the attribute from class instance.
|
257
257
|
"""
|
258
258
|
|
259
|
-
return
|
259
|
+
return Time(self.__start)
|
260
260
|
|
261
261
|
|
262
262
|
@property
|
263
263
|
def stop(
|
264
264
|
self,
|
265
|
-
) ->
|
265
|
+
) -> Time:
|
266
266
|
"""
|
267
267
|
Return the value for the attribute from class instance.
|
268
268
|
|
269
269
|
:returns: Value for the attribute from class instance.
|
270
270
|
"""
|
271
271
|
|
272
|
-
return
|
272
|
+
return Time(self.__stop)
|
273
273
|
|
274
274
|
|
275
275
|
@property
|
@@ -386,7 +386,7 @@ class Windows:
|
|
386
386
|
|
387
387
|
for unique, window in items:
|
388
388
|
|
389
|
-
update =
|
389
|
+
update = Time('now')
|
390
390
|
|
391
391
|
append = WindowsTable(
|
392
392
|
group=group,
|
@@ -439,7 +439,7 @@ class Windows:
|
|
439
439
|
Create a new window using the provided input parameters.
|
440
440
|
|
441
441
|
:param unique: Unique identifier for the related child.
|
442
|
-
:param params: Parameters
|
442
|
+
:param params: Parameters used to instantiate the class.
|
443
443
|
:returns: Newly constructed instance of related class.
|
444
444
|
"""
|
445
445
|
|
encommon/types/classes.py
CHANGED
@@ -7,8 +7,6 @@ is permitted, for more information consult the project license file.
|
|
7
7
|
|
8
8
|
|
9
9
|
|
10
|
-
from typing import Any
|
11
|
-
|
12
10
|
from pydantic import BaseModel as Pydantic
|
13
11
|
|
14
12
|
from .types import DictStrAny
|
@@ -23,19 +21,8 @@ class BaseModel(Pydantic, extra='forbid'):
|
|
23
21
|
"""
|
24
22
|
|
25
23
|
|
26
|
-
def __init__(
|
27
|
-
self,
|
28
|
-
**data: Any,
|
29
|
-
) -> None:
|
30
|
-
"""
|
31
|
-
Initialize instance for class using provided parameters.
|
32
|
-
"""
|
33
|
-
|
34
|
-
super().__init__(**data)
|
35
|
-
|
36
|
-
|
37
24
|
@property
|
38
|
-
def
|
25
|
+
def endumped(
|
39
26
|
self,
|
40
27
|
) -> DictStrAny:
|
41
28
|
"""
|
@@ -48,7 +35,7 @@ class BaseModel(Pydantic, extra='forbid'):
|
|
48
35
|
|
49
36
|
|
50
37
|
@property
|
51
|
-
def
|
38
|
+
def enpruned(
|
52
39
|
self,
|
53
40
|
) -> DictStrAny:
|
54
41
|
"""
|
encommon/types/lists.py
CHANGED
@@ -19,6 +19,12 @@ def inlist(
|
|
19
19
|
"""
|
20
20
|
Return the boolean indicating whether needle in haystack.
|
21
21
|
|
22
|
+
Example
|
23
|
+
-------
|
24
|
+
>>> haystack = [1, 2, 3]
|
25
|
+
>>> inlist(2, haystack)
|
26
|
+
True
|
27
|
+
|
22
28
|
:param needle: Provided item that may be within haystack.
|
23
29
|
:param haystack: List of items which may contain needle.
|
24
30
|
:returns: Boolean indicating whether needle in haystack.
|
encommon/types/notate.py
CHANGED
@@ -15,6 +15,7 @@ from typing import Optional
|
|
15
15
|
from typing import Union
|
16
16
|
|
17
17
|
from .empty import Empty
|
18
|
+
from .types import DictStrAny
|
18
19
|
|
19
20
|
|
20
21
|
|
@@ -25,7 +26,7 @@ _RECURSE = dict
|
|
25
26
|
|
26
27
|
|
27
28
|
_SETABLE = Union[
|
28
|
-
|
29
|
+
DictStrAny,
|
29
30
|
list[Any]]
|
30
31
|
|
31
32
|
_GETABLE = Union[
|
encommon/types/strings.py
CHANGED
@@ -121,6 +121,11 @@ def rplstr(
|
|
121
121
|
"""
|
122
122
|
Return the source string with the match value replaced.
|
123
123
|
|
124
|
+
Example
|
125
|
+
-------
|
126
|
+
>>> rplstr('foo', 'foo', 'bar')
|
127
|
+
'bar'
|
128
|
+
|
124
129
|
:param source: String that to be processed and returned.
|
125
130
|
:param match: What will be replaced within the string.
|
126
131
|
:param value: Replace value for the string is matched.
|
@@ -10,6 +10,7 @@ is permitted, for more information consult the project license file.
|
|
10
10
|
from copy import copy
|
11
11
|
from copy import deepcopy
|
12
12
|
|
13
|
+
from ..classes import lattrs
|
13
14
|
from ..empty import Empty
|
14
15
|
from ..empty import EmptyType
|
15
16
|
|
@@ -23,7 +24,7 @@ def test_EmptyType() -> None:
|
|
23
24
|
empty = EmptyType()
|
24
25
|
|
25
26
|
|
26
|
-
attrs =
|
27
|
+
attrs = lattrs(empty)
|
27
28
|
|
28
29
|
assert attrs == [
|
29
30
|
'_EmptyType__empty']
|