encommon 0.22.5__py3-none-any.whl → 0.22.7__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/color.py CHANGED
@@ -7,6 +7,7 @@ is permitted, for more information consult the project license file.
7
7
 
8
8
 
9
9
 
10
+ from colorsys import hls_to_rgb
10
11
  from contextlib import suppress
11
12
  from typing import Union
12
13
 
@@ -61,6 +62,51 @@ class Color:
61
62
  self.__source = source
62
63
 
63
64
 
65
+ @classmethod
66
+ def from_hsl(
67
+ cls,
68
+ hue: int,
69
+ sat: int,
70
+ lev: int,
71
+ ) -> 'Color':
72
+ """
73
+ Initialize instance for class using provided parameters.
74
+ """
75
+
76
+ h, s, l = ( # noqa: E741
77
+ hue / 360,
78
+ sat / 100,
79
+ lev / 100)
80
+
81
+ r, g, b = hls_to_rgb(h, l, s)
82
+
83
+ color = (
84
+ f'{round(r * 255):02X}'
85
+ f'{round(g * 255):02X}'
86
+ f'{round(b * 255):02X}')
87
+
88
+ return cls(color)
89
+
90
+
91
+ @classmethod
92
+ def from_rgb(
93
+ cls,
94
+ red: int,
95
+ green: int,
96
+ blue: int,
97
+ ) -> 'Color':
98
+ """
99
+ Initialize instance for class using provided parameters.
100
+ """
101
+
102
+ value = (
103
+ f'{red:02X}'
104
+ f'{green:02X}'
105
+ f'{blue:02X}')
106
+
107
+ return cls(value)
108
+
109
+
64
110
  def __repr__(
65
111
  self,
66
112
  ) -> str:
@@ -84,6 +84,7 @@ def test_Color_rgb(
84
84
  """
85
85
 
86
86
  assert Color(source).rgb == expect
87
+ assert Color.from_rgb(*expect) == source
87
88
 
88
89
 
89
90
 
@@ -155,7 +156,7 @@ def test_Color_xy(
155
156
  ('ffff00', (60, 100, 50)),
156
157
  ('00ffff', (180, 100, 50)),
157
158
  ('ff00ff', (300, 100, 50)),
158
- ('800080', (300, 100, 25))])
159
+ ('80007F', (300, 100, 25))])
159
160
  def test_Color_hsl(
160
161
  source: str,
161
162
  expect: tuple[int, ...],
@@ -168,6 +169,7 @@ def test_Color_hsl(
168
169
  """
169
170
 
170
171
  assert Color(source).hsl == expect
172
+ assert Color.from_hsl(*expect) == source
171
173
 
172
174
 
173
175
 
encommon/config/config.py CHANGED
@@ -18,6 +18,7 @@ from .params import Params
18
18
  from .paths import ConfigPaths
19
19
  from .utils import config_paths
20
20
  from ..crypts import Crypts
21
+ from ..parse import Jinja2
21
22
  from ..types import DictStrAny
22
23
  from ..types import merge_dicts
23
24
  from ..types import setate
@@ -64,6 +65,7 @@ class Config:
64
65
  __params: Optional[Params]
65
66
  __logger: Optional[Logger]
66
67
  __crypts: Optional[Crypts]
68
+ __jinja2: Jinja2
67
69
 
68
70
 
69
71
  def __init__(
@@ -104,6 +106,11 @@ class Config:
104
106
  self.__logger = None
105
107
  self.__crypts = None
106
108
 
109
+ jinja2 = Jinja2({
110
+ 'config': self})
111
+
112
+ self.__jinja2 = jinja2
113
+
107
114
 
108
115
  @property
109
116
  def files(
@@ -325,3 +332,16 @@ class Config:
325
332
  self.__crypts = crypts
326
333
 
327
334
  return self.__crypts
335
+
336
+
337
+ @property
338
+ def jinja2(
339
+ self,
340
+ ) -> Jinja2:
341
+ """
342
+ Return the value for the attribute from class instance.
343
+
344
+ :returns: Value for the attribute from class instance.
345
+ """
346
+
347
+ return self.__jinja2
@@ -24,7 +24,7 @@ if TYPE_CHECKING:
24
24
 
25
25
 
26
26
 
27
- def test_Config(
27
+ def test_Config( # noqa: CFQ001
28
28
  tmp_path: Path,
29
29
  config: 'Config',
30
30
  ) -> None:
@@ -46,7 +46,8 @@ def test_Config(
46
46
  '_Config__params',
47
47
  '_Config__paths',
48
48
  '_Config__logger',
49
- '_Config__crypts']
49
+ '_Config__crypts',
50
+ '_Config__jinja2']
50
51
 
51
52
 
52
53
  assert inrepr(
@@ -83,6 +84,8 @@ def test_Config(
83
84
 
84
85
  assert config.crypts
85
86
 
87
+ assert config.jinja2
88
+
86
89
 
87
90
  replaces = {
88
91
  'pytemp': tmp_path,
@@ -138,6 +141,26 @@ def test_Config(
138
141
 
139
142
 
140
143
 
144
+ def test_Config_jinja2(
145
+ config: 'Config',
146
+ ) -> None:
147
+ """
148
+ Perform various tests associated with relevant routines.
149
+
150
+ :param config: Primary class instance for configuration.
151
+ """
152
+
153
+ jinja2 = config.jinja2
154
+ j2parse = jinja2.parse
155
+
156
+ parsed = j2parse(
157
+ '{{ foo }}',
158
+ {'foo': 'bar'})
159
+
160
+ assert parsed == 'bar'
161
+
162
+
163
+
141
164
  def test_Config_cover(
142
165
  config: 'Config',
143
166
  ) -> None:
encommon/parse/jinja2.py CHANGED
@@ -331,3 +331,53 @@ class Jinja2:
331
331
 
332
332
 
333
333
  return value
334
+
335
+
336
+ def set_static(
337
+ self,
338
+ key: str,
339
+ value: Optional[Any] = None,
340
+ ) -> None:
341
+ """
342
+ Simply add the provided static into internal reference.
343
+
344
+ :param key: Where item will be inserted into reference.
345
+ :param value: Item that will be inserted into internal.
346
+ """
347
+
348
+ statics = self.__statics
349
+
350
+ if value is None:
351
+
352
+ if key in statics:
353
+ del statics[key]
354
+
355
+ return None
356
+
357
+ statics[key] = value
358
+
359
+
360
+ def set_filter(
361
+ self,
362
+ key: str,
363
+ value: Optional[FILTER] = None,
364
+ ) -> None:
365
+ """
366
+ Simply add the provided filter into internal reference.
367
+
368
+ :param key: Where item will be inserted into reference.
369
+ :param value: Item that will be inserted into internal.
370
+ """
371
+
372
+ jinjenv = self.__jinjenv
373
+
374
+ filters = jinjenv.filters
375
+
376
+ if value is None:
377
+
378
+ if key in filters:
379
+ del filters[key]
380
+
381
+ return None
382
+
383
+ filters[key] = value
@@ -11,6 +11,7 @@ from typing import Any
11
11
 
12
12
  from pytest import fixture
13
13
  from pytest import mark
14
+ from pytest import raises
14
15
 
15
16
  from ..jinja2 import Jinja2
16
17
  from ... import PROJECT
@@ -171,7 +172,7 @@ def test_Jinja2_literal(
171
172
  ('{{ "01" }}', '01'),
172
173
  ('-01', '-01'),
173
174
  ('{{ "-01" }}', '-01')])
174
- def test_Jinja2_cover(
175
+ def test_Jinja2_parse(
175
176
  jinja2: Jinja2,
176
177
  value: Any, # noqa: ANN401
177
178
  expect: Any, # noqa: ANN401
@@ -189,3 +190,43 @@ def test_Jinja2_cover(
189
190
  parsed = parse(value)
190
191
 
191
192
  assert parsed == expect
193
+
194
+
195
+
196
+ def test_Jinja2_cover(
197
+ jinja2: Jinja2,
198
+ ) -> None:
199
+ """
200
+ Perform various tests associated with relevant routines.
201
+
202
+ :param jinja2: Parsing class for the Jinja2 templating.
203
+ """
204
+
205
+ parse = jinja2.parse
206
+
207
+
208
+ jinja2.set_static(
209
+ 'key', 'value')
210
+
211
+ parsed = parse('{{ key }}')
212
+
213
+ assert parsed == 'value'
214
+
215
+ jinja2.set_static('key')
216
+
217
+ with raises(Exception):
218
+ parse('{{ key }}')
219
+
220
+
221
+ jinja2.set_filter(
222
+ 'float', float)
223
+
224
+ parsed = parse(
225
+ '{{ 1 | float }}')
226
+
227
+ assert parsed == 1.0
228
+
229
+ jinja2.set_filter('float')
230
+
231
+ with raises(Exception):
232
+ parse('{{ 1 | float }}')
@@ -100,8 +100,8 @@ def test_Timers(
100
100
  '_Timers__params',
101
101
  '_Timers__store',
102
102
  '_Timers__group',
103
- '_Timers__store_engine',
104
- '_Timers__store_session',
103
+ '_Timers__sengine',
104
+ '_Timers__session',
105
105
  '_Timers__timers']
106
106
 
107
107
 
@@ -111,8 +111,8 @@ def test_Windows(
111
111
  '_Windows__params',
112
112
  '_Windows__store',
113
113
  '_Windows__group',
114
- '_Windows__store_engine',
115
- '_Windows__store_session',
114
+ '_Windows__sengine',
115
+ '_Windows__session',
116
116
  '_Windows__start',
117
117
  '_Windows__stop',
118
118
  '_Windows__windows']
encommon/times/timers.py CHANGED
@@ -107,8 +107,8 @@ class Timers:
107
107
  __store: str
108
108
  __group: str
109
109
 
110
- __store_engine: Engine
111
- __store_session: (
110
+ __sengine: Engine
111
+ __session: (
112
112
  # pylint: disable=unsubscriptable-object
113
113
  sessionmaker[Session])
114
114
 
@@ -152,17 +152,18 @@ class Timers:
152
152
  Construct instances using the configuration parameters.
153
153
  """
154
154
 
155
- store = self.__store
156
-
157
- engine = create_engine(store)
155
+ sengine = create_engine(
156
+ self.__store,
157
+ pool_pre_ping=True)
158
158
 
159
159
  (SQLBase.metadata
160
- .create_all(engine))
160
+ .create_all(sengine))
161
161
 
162
- session = sessionmaker(engine)
162
+ session = (
163
+ sessionmaker(sengine))
163
164
 
164
- self.__store_engine = engine
165
- self.__store_session = session
165
+ self.__sengine = sengine
166
+ self.__session = session
166
167
 
167
168
 
168
169
  @property
@@ -214,7 +215,7 @@ class Timers:
214
215
  :returns: Value for the attribute from class instance.
215
216
  """
216
217
 
217
- return self.__store_engine
218
+ return self.__sengine
218
219
 
219
220
 
220
221
  @property
@@ -227,7 +228,7 @@ class Timers:
227
228
  :returns: Value for the attribute from class instance.
228
229
  """
229
230
 
230
- return self.__store_session()
231
+ return self.__session()
231
232
 
232
233
 
233
234
  @property
encommon/times/window.py CHANGED
@@ -331,22 +331,22 @@ def window_croniter( # noqa: CFQ004
331
331
  source: datetime,
332
332
  ) -> datetime:
333
333
 
334
- source = (
334
+ parse = (
335
335
  _operator(source)
336
336
  .get_next())
337
337
 
338
- return parse_time(source)
338
+ return parse_time(parse)
339
339
 
340
340
 
341
341
  def _wlast(
342
342
  source: datetime,
343
343
  ) -> datetime:
344
344
 
345
- source = (
345
+ parse = (
346
346
  _operator(source)
347
347
  .get_prev())
348
348
 
349
- return parse_time(source)
349
+ return parse_time(parse)
350
350
 
351
351
 
352
352
  def _operator(
encommon/times/windows.py CHANGED
@@ -109,8 +109,8 @@ class Windows:
109
109
  __store: str
110
110
  __group: str
111
111
 
112
- __store_engine: Engine
113
- __store_session: (
112
+ __sengine: Engine
113
+ __session: (
114
114
  # pylint: disable=unsubscriptable-object
115
115
  sessionmaker[Session])
116
116
 
@@ -168,17 +168,18 @@ class Windows:
168
168
  Construct instances using the configuration parameters.
169
169
  """
170
170
 
171
- store = self.__store
172
-
173
- engine = create_engine(store)
171
+ sengine = create_engine(
172
+ self.__store,
173
+ pool_pre_ping=True)
174
174
 
175
175
  (SQLBase.metadata
176
- .create_all(engine))
176
+ .create_all(sengine))
177
177
 
178
- session = sessionmaker(engine)
178
+ session = (
179
+ sessionmaker(sengine))
179
180
 
180
- self.__store_engine = engine
181
- self.__store_session = session
181
+ self.__sengine = sengine
182
+ self.__session = session
182
183
 
183
184
 
184
185
  @property
@@ -230,7 +231,7 @@ class Windows:
230
231
  :returns: Value for the attribute from class instance.
231
232
  """
232
233
 
233
- return self.__store_engine
234
+ return self.__sengine
234
235
 
235
236
 
236
237
  @property
@@ -243,7 +244,7 @@ class Windows:
243
244
  :returns: Value for the attribute from class instance.
244
245
  """
245
246
 
246
- return self.__store_session()
247
+ return self.__session()
247
248
 
248
249
 
249
250
  @property
@@ -71,4 +71,5 @@ def test_lattrs(
71
71
  '_Config__params',
72
72
  '_Config__paths',
73
73
  '_Config__logger',
74
- '_Config__crypts']
74
+ '_Config__crypts',
75
+ '_Config__jinja2']
encommon/version.txt CHANGED
@@ -1 +1 @@
1
- 0.22.5
1
+ 0.22.7
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: encommon
3
- Version: 0.22.5
3
+ Version: 0.22.7
4
4
  Summary: Enasis Network Common Library
5
5
  License: MIT
6
6
  Project-URL: Source, https://github.com/enasisnetwork/encommon
@@ -20,6 +20,7 @@ Requires-Dist: python-dateutil
20
20
  Requires-Dist: pyyaml
21
21
  Requires-Dist: snaptime
22
22
  Requires-Dist: sqlalchemy
23
+ Dynamic: license-file
23
24
 
24
25
  # Enasis Network Common Library
25
26
 
@@ -1,20 +1,20 @@
1
1
  encommon/__init__.py,sha256=YDGzuhpk5Gd1hq54LI0hw1NrrDvrJDrvH20TEy_0l5E,443
2
2
  encommon/conftest.py,sha256=I7Zl2cMytnA-mwSPh0rRjsU0YSlES94jQq6mocRhVUE,1884
3
3
  encommon/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
- encommon/version.txt,sha256=1_2Pa7I6bnAVrcxjripp4FkoMeyHLQldx8uC7l2MixQ,7
4
+ encommon/version.txt,sha256=WfY7ad4emHi9Ou3y-XdY4BTCFRki2-EsE_Srnd4VNPw,7
5
5
  encommon/colors/__init__.py,sha256=XRiGimMj8oo040NO5a5ZsbsIUxaGVW4tf4xWTPWgnZY,269
6
- encommon/colors/color.py,sha256=YmmJzwTGdTafe_cWENvvoyW4YCyeycVIqCDJYLr4k-w,10918
6
+ encommon/colors/color.py,sha256=vdOqOsJYJcrGq0b4udegrn4E8gcuVGx6iTRg3_s8Z-Q,11798
7
7
  encommon/colors/test/__init__.py,sha256=PjrnBYT0efyvbaGeNx94dm3tP3EVHUHSVs-VGeLEv5g,218
8
- encommon/colors/test/test_color.py,sha256=ljAcVJ_DMeDcL_8cG05-uvxu_jErylUf3RDaswpn9-g,4596
8
+ encommon/colors/test/test_color.py,sha256=o0CRVdKhfya304IWrk0Vr1ZsmPqUyD7WxqHzG-E3KHM,4686
9
9
  encommon/config/__init__.py,sha256=iZdbW7A4m7iN4xt5cEeQqo0Klqs-CaPLdD5ocLmUYi8,856
10
- encommon/config/config.py,sha256=dgJD9Ftj7i309ZBecbILcNGW2WALKdIjDnwa9WoggyM,7000
10
+ encommon/config/config.py,sha256=eljTIYsJRYyH69HnGJF7O_LMU_ty6X8YzICRxTDylKQ,7381
11
11
  encommon/config/files.py,sha256=dSuShvIbQXFiNmpkwNVHCKDI-phBWC03OJVUfKJnfX0,2433
12
12
  encommon/config/logger.py,sha256=MsGng6k1m4r5DnFkX8PhO33nj26AyiRYrKtFkjhAuNo,14556
13
13
  encommon/config/params.py,sha256=FtcWi3-CY6OHLN7o3S-iBktpS1yGt5wLVD0546XEKRY,2223
14
14
  encommon/config/paths.py,sha256=6eLhqEXDyNQpwdL6QWNPf060uayuUzXyM6A3ikNC24Q,2585
15
15
  encommon/config/utils.py,sha256=jZ9x6Nd7H4XZMSyAFr7mydgIu8P7xBzjHqKzMpmduw0,2127
16
16
  encommon/config/test/__init__.py,sha256=Vs5Pca7QBgoyoSjk6DSpO0YFcqkUhap5-VLbaCn8MjA,304
17
- encommon/config/test/test_config.py,sha256=yS7RvFsXxhwj1cUU61srqHunLk51O5PERTP4TYqV8OM,2987
17
+ encommon/config/test/test_config.py,sha256=-P9Exy0WTZSvsF30kAFux1z9zuJhdDF3mCwQ5irNx2A,3406
18
18
  encommon/config/test/test_files.py,sha256=xhR6-FUqTDaMcK7cUMWuyL9x2rSu6dmJUy_J6r1cHBM,2345
19
19
  encommon/config/test/test_logger.py,sha256=hCFedEwbZinlYZ2qzUkiH6mhqFdAv3NYJy6-OX091kU,5626
20
20
  encommon/config/test/test_paths.py,sha256=emkDpz7W2TMdH3-wEy4ZYcrufiwRVKT6w_U5rEVp06o,2693
@@ -27,10 +27,10 @@ encommon/crypts/test/__init__.py,sha256=PjrnBYT0efyvbaGeNx94dm3tP3EVHUHSVs-VGeLE
27
27
  encommon/crypts/test/test_crypts.py,sha256=YKB4Kra-5CRQ8gsLLCYj2s4mjlPuibszUWClPDvMYk0,3504
28
28
  encommon/crypts/test/test_hashes.py,sha256=HEvKHTkWy6Xehh5fRHmntovGbkjWEgMsrVQCmMCBLtA,1223
29
29
  encommon/parse/__init__.py,sha256=6uV4GCm_nOYC77x2jQvTDsa0F6vBGRbCgju_HCc96zM,422
30
- encommon/parse/jinja2.py,sha256=ZfQN79xLwdPevozRD2aF1OpWDf0_lIWfl2o-4QBW8gY,7055
30
+ encommon/parse/jinja2.py,sha256=x7h9hwnlgY9pbyaP5Yu2NM9dKg0Um8RPPGArjkwumeQ,8101
31
31
  encommon/parse/network.py,sha256=V2JvQ4XHUeo4wxNycXroBHDz8gLgo6BI9wJkr0f4qjc,8770
32
32
  encommon/parse/test/__init__.py,sha256=PjrnBYT0efyvbaGeNx94dm3tP3EVHUHSVs-VGeLEv5g,218
33
- encommon/parse/test/test_jinja2.py,sha256=vFi8mzWPDJvFO00aMYSbjLVxctdsSvv_L19r1dVxNr8,3782
33
+ encommon/parse/test/test_jinja2.py,sha256=8H4ZErFgBCxEsgMQdp0GpVhgn6SnseVpfE0cDCAjCOc,4444
34
34
  encommon/parse/test/test_network.py,sha256=-6FmgMzpDAZ4SI6Ccq4jUm9RYtanV24W9aTJyK6Y0W4,4170
35
35
  encommon/times/__init__.py,sha256=QX4iuZ59UlsMbEWbubnVJXJtrOubNxAAAv510urcLUA,972
36
36
  encommon/times/common.py,sha256=tLlQUKU-KMrf1Dy_9qgg2J-8ytVpyqPs5ZXV9_TlvVk,1036
@@ -39,22 +39,22 @@ encommon/times/params.py,sha256=qg0mLkXVsl54m72kd9uXRvmYKqUR_Ag5PBfnTsrwQhE,4360
39
39
  encommon/times/parse.py,sha256=_PF12z-UOa75SyeUpBXVn7Jjt-c-Pfnzt6pAs_PjXmQ,6496
40
40
  encommon/times/time.py,sha256=Px_9Ifae7GKSY557FAbG1g9cwy3a6VZL09puAbinztQ,11745
41
41
  encommon/times/timer.py,sha256=xxS6KVXFuRLq-RkXWMR7MMX5x0HGrEhLlOhRCecuCZY,3225
42
- encommon/times/timers.py,sha256=JwvBIfWbXjwoIDQ08k2MAOoMif0Q1jsIJjmFWMxSRGA,9807
42
+ encommon/times/timers.py,sha256=4kRUd_posGCLSi6hW8aBDypNgnUjnfkbuKpAr4mjOLg,9815
43
43
  encommon/times/unitime.py,sha256=MwYUJBdX_Rj7pW8QoMtZMUyHa4lsdZKryTdBCpVjnpY,1316
44
44
  encommon/times/utils.py,sha256=PJ5QsKb3_pYEnD3Sz81d8QDhYQtTIj4HJfMoC9gNwmo,3100
45
- encommon/times/window.py,sha256=tnOPz57cwIXVnOEGh7WPvBPhdjenvw1bYxV4mz721n0,8490
46
- encommon/times/windows.py,sha256=oxEsCsM8qPQ5AbB8IRK_ONEWzLgXPpft8yR6xUKrb_4,10853
45
+ encommon/times/window.py,sha256=4Y2z2htrp7-ls32GncVSKmvYUmeETtloEUus9j4RULs,8486
46
+ encommon/times/windows.py,sha256=DaouFEVwiBz5JfOHqJX5b13dsCF4RU5FO1bd3E23HIU,10861
47
47
  encommon/times/test/__init__.py,sha256=PjrnBYT0efyvbaGeNx94dm3tP3EVHUHSVs-VGeLEv5g,218
48
48
  encommon/times/test/test_duration.py,sha256=3Tw6Y_ah36GCJl4vZ76z4Jt7rIxcm9P18-A69qsbLjI,4224
49
49
  encommon/times/test/test_params.py,sha256=kHvs-WvKfPQCdCDnPU9tAyMVXmzH3eUjwQN-QdWBeh4,1407
50
50
  encommon/times/test/test_parse.py,sha256=3Dihhu8xKmgbcq_dqKcO-itAeGtqAJxjGFQ6dPsJ4XM,4210
51
51
  encommon/times/test/test_time.py,sha256=XTgtsil2dgkeBUlJyORsNKUapcZWDFvOU-JwtypA6zw,2257
52
52
  encommon/times/test/test_timer.py,sha256=cBZvO-k-FG7k4LICLLGVFxNBJuTjH4-eL4FNaa14uyY,1563
53
- encommon/times/test/test_timers.py,sha256=zW6czbR5Ujz2cM4K935HCpO6Rx9EHxCgpFqktGYw8Xs,3892
53
+ encommon/times/test/test_timers.py,sha256=HePWaNNH4MTDZoa2H-S_XkmN32lZLXW3g5xv-zTCyl0,3881
54
54
  encommon/times/test/test_unitime.py,sha256=5i4UjBCw8R9h-Lw963GfB_dHBMEQhjvv1k-t27Wyyls,510
55
55
  encommon/times/test/test_utils.py,sha256=WkzHJY6zOt02Ujg5FItOo1nPtktz5ss8ODmG1tRQaaw,2056
56
56
  encommon/times/test/test_window.py,sha256=6ySO5DaYzg1bsVNCqB6u71rKWc0vpolxQ09ruoswN2c,6138
57
- encommon/times/test/test_windows.py,sha256=Sq31BCvJtEN9OGGYXFKiagVZP0kc1n6HuaEBNwbkuks,4496
57
+ encommon/times/test/test_windows.py,sha256=drcPbtGxr7Y8hKiU7XM3rkHYG5tkrq6oG-KRwj6Er2c,4485
58
58
  encommon/types/__init__.py,sha256=rly7loMD1R7YU83u90KqPYiifjZAX_UAXpVGcB_Xerk,1269
59
59
  encommon/types/classes.py,sha256=FYFTu8Uj-74JWudHOlhaOrsXXPxitorBfM9_QM3EGSU,1689
60
60
  encommon/types/dicts.py,sha256=IuLoVdtilhM83ujT74mcz0Zi1HI87P4k7wjnnyMxPag,2821
@@ -65,7 +65,7 @@ encommon/types/notate.py,sha256=xcvifAe5tXVK0NoxE5P-OEbJXp4UYa5RGsXU-A1TKA4,1069
65
65
  encommon/types/strings.py,sha256=LW2WZND64cKE1LhNip3vqsoP3elLsUP6cpS0dYnUKGE,2800
66
66
  encommon/types/types.py,sha256=DbzdDLLclD1Gk8bmyhDUUWVDnJ5LdaolLV3JYKHFVgA,322
67
67
  encommon/types/test/__init__.py,sha256=WZm1yZbFd2VQg-E1b6a02E6V2QXmIWiW5TIiKFFPV-s,910
68
- encommon/types/test/test_classes.py,sha256=CjthMInwz5WB7aTc7-GpzgcYAvkF9dRmC6nXJVoE91k,1475
68
+ encommon/types/test/test_classes.py,sha256=PopL2yuB9-JaEor6fUJkK9TZ9-SRfYWAIH8ZZd-mGbI,1502
69
69
  encommon/types/test/test_dicts.py,sha256=W--IcPwvdKaFGs_00tvWBGziFSA0wtDQMuPk4rl0gKU,3651
70
70
  encommon/types/test/test_empty.py,sha256=eLsHuqq2YNABFkMLPbGbJMXeW2nyGNIxzUZv7YhPT5U,1017
71
71
  encommon/types/test/test_funcs.py,sha256=dYVJgihEj1j3F-OxH0mYSIMoDwZbjvgMnvJKea8MZJc,664
@@ -131,8 +131,8 @@ encommon/webkit/test/test_moderate.py,sha256=KitKGBtwHOQm0pXXZA5nl9MwAi2pbHOsKhM
131
131
  encommon/webkit/test/test_numeric.py,sha256=9Jqiyo-Bh572QJSyd3gqRwYTifnqqzE7_cNCmLn0CG0,3531
132
132
  encommon/webkit/test/test_statate.py,sha256=4VvmyJhsK3TSK-hq3TzkzwPkXY-GPTU_7uJf-zG_y_s,1760
133
133
  encommon/webkit/test/test_tagues.py,sha256=LQWk6rSBoBxAu-YmUOU8uWNki5RBzk5lp0dbFpySg68,1431
134
- encommon-0.22.5.dist-info/LICENSE,sha256=otnXKCtMjPlbHs0wgZ_BWULrp3g_2dWQJ6icRk9nkgg,1071
135
- encommon-0.22.5.dist-info/METADATA,sha256=oq1HOf6hcMsIW3pXqcJUVApAN43UpT6Bh-1NKf-LpNY,4282
136
- encommon-0.22.5.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
137
- encommon-0.22.5.dist-info/top_level.txt,sha256=bP8q7-5tLDNm-3XPlqn_bDENfYNug5801H_xfz3BEAM,9
138
- encommon-0.22.5.dist-info/RECORD,,
134
+ encommon-0.22.7.dist-info/licenses/LICENSE,sha256=otnXKCtMjPlbHs0wgZ_BWULrp3g_2dWQJ6icRk9nkgg,1071
135
+ encommon-0.22.7.dist-info/METADATA,sha256=tsx2UbYukbVqslP-SG3czDY8fr0aFPF9-AvQ1NTbuB0,4304
136
+ encommon-0.22.7.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
137
+ encommon-0.22.7.dist-info/top_level.txt,sha256=bP8q7-5tLDNm-3XPlqn_bDENfYNug5801H_xfz3BEAM,9
138
+ encommon-0.22.7.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.8.2)
2
+ Generator: setuptools (78.1.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5