arpakitlib 1.5.39__py3-none-any.whl → 1.5.41__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.
arpakitlib/AUTHOR.md CHANGED
@@ -3,4 +3,5 @@
3
3
  ### Contacts
4
4
 
5
5
  - https://t.me/arpakit
6
- - arpakit@gmail.com
6
+ - arpakit@gmail.com
7
+ - support@arpakit.com
arpakitlib/README.md CHANGED
@@ -1,6 +1,7 @@
1
- # ARPAKITLIB
1
+ # arpakitlib
2
2
 
3
3
  ### Contacts
4
4
 
5
5
  - https://t.me/arpakit
6
- - arpakit@gmail.com
6
+ - arpakit@gmail.com
7
+ - support@arpakit.com
@@ -1,5 +1,4 @@
1
1
  # arpakit
2
-
3
2
  from typing import Any
4
3
 
5
4
  from pydantic import BaseModel, ConfigDict
@@ -8,3 +7,11 @@ from pydantic import BaseModel, ConfigDict
8
7
  class BaseAM(BaseModel):
9
8
  model_config = ConfigDict(extra="forbid", arbitrary_types_allowed=True, from_attributes=True)
10
9
  bus_data: dict[str, Any] = {}
10
+
11
+
12
+ def __example():
13
+ pass
14
+
15
+
16
+ if __name__ == '__main__':
17
+ __example()
@@ -23,9 +23,6 @@ _ARPAKIT_LIB_MODULE_VERSION = "3.0"
23
23
  _logger = logging.getLogger(__name__)
24
24
 
25
25
 
26
- # ---
27
-
28
-
29
26
  class TextFilter(Filter):
30
27
 
31
28
  def __init__(
@@ -78,9 +75,6 @@ class IsPrivateChat(Filter):
78
75
  return False
79
76
 
80
77
 
81
- # ---
82
-
83
-
84
78
  _used_cd_prefixes = set()
85
79
 
86
80
 
@@ -118,9 +112,6 @@ class WithFromCD(BaseCD, prefix="WithFromCD"):
118
112
  from_: Optional[str] = None
119
113
 
120
114
 
121
- # ---
122
-
123
-
124
115
  class BadTgCommandFormat(BadCommandFormat):
125
116
  pass
126
117
 
@@ -321,18 +312,12 @@ def as_tg_command(
321
312
  return decorator
322
313
 
323
314
 
324
- # ---
325
-
326
-
327
315
  class SimpleMiddleware(BaseMiddleware, ABC):
328
316
  def __init__(self):
329
317
  self.middleware_name = self.__class__.__name__
330
318
  self._logger = logging.getLogger(self.__class__.__name__)
331
319
 
332
320
 
333
- # ---
334
-
335
-
336
321
  def create_tg_bot(*, tg_bot_token: str, tg_bot_proxy_url: str | None = None) -> Bot:
337
322
  session: AiohttpSession | None = None
338
323
  if tg_bot_proxy_url:
@@ -349,9 +334,6 @@ def create_tg_bot(*, tg_bot_token: str, tg_bot_proxy_url: str | None = None) ->
349
334
  return tg_bot
350
335
 
351
336
 
352
- # ---
353
-
354
-
355
337
  def __example():
356
338
  pass
357
339
 
@@ -1,5 +1,4 @@
1
1
  # arpakit
2
-
3
2
  import hashlib
4
3
  import json
5
4
  import os
@@ -4,7 +4,6 @@ import asyncio
4
4
  import logging
5
5
  from abc import ABC
6
6
  from datetime import timedelta
7
- from typing import Any
8
7
 
9
8
  from arpakitlib.ar_sleep_util import sync_safe_sleep, async_safe_sleep
10
9
 
@@ -16,8 +15,8 @@ class BaseWorker(ABC):
16
15
  def __init__(self):
17
16
  self.worker_name = self.__class__.__name__
18
17
  self._logger = logging.getLogger(self.worker_name)
19
- self.timeout_after_run: float | None = timedelta(seconds=15).total_seconds()
20
- self.timeout_after_err_in_run: float | None = timedelta(seconds=15).total_seconds()
18
+ self.timeout_after_run = timedelta(seconds=0.1).total_seconds()
19
+ self.timeout_after_err_in_run = timedelta(seconds=1).total_seconds()
21
20
 
22
21
  def sync_on_startup(self):
23
22
  pass
@@ -25,7 +24,7 @@ class BaseWorker(ABC):
25
24
  def sync_run(self):
26
25
  raise NotImplementedError()
27
26
 
28
- def sync_run_on_error(self, exception: BaseException, kwargs: dict[str, Any]):
27
+ def sync_run_on_error(self, exception: BaseException, **kwargs):
29
28
  self._logger.exception(exception)
30
29
 
31
30
  def sync_safe_run(self):
@@ -49,7 +48,7 @@ class BaseWorker(ABC):
49
48
  except BaseException as exception:
50
49
 
51
50
  self._logger.info("start sync_run_on_error")
52
- self.sync_run_on_error(exception=exception, kwargs={})
51
+ self.sync_run_on_error(exception=exception)
53
52
  self._logger.info("start sync_run_on_error")
54
53
 
55
54
  if self.timeout_after_err_in_run is not None:
@@ -61,7 +60,7 @@ class BaseWorker(ABC):
61
60
  async def async_run(self):
62
61
  raise NotImplementedError()
63
62
 
64
- async def async_run_on_error(self, exception: BaseException, kwargs: dict[str, Any]):
63
+ async def async_run_on_error(self, exception: BaseException, **kwargs):
65
64
  self._logger.exception(exception)
66
65
 
67
66
  async def async_safe_run(self):
@@ -83,7 +82,7 @@ class BaseWorker(ABC):
83
82
  except BaseException as exception:
84
83
 
85
84
  self._logger.info("start async_run_on_error")
86
- await self.async_run_on_error(exception=exception, kwargs={})
85
+ await self.async_run_on_error(exception=exception)
87
86
  self._logger.info("finish async_run_on_error")
88
87
 
89
88
  if self.timeout_after_err_in_run is not None:
@@ -23,6 +23,7 @@ from pydantic import BaseModel, ConfigDict
23
23
  from starlette.middleware.cors import CORSMiddleware
24
24
  from starlette.staticfiles import StaticFiles
25
25
 
26
+ from arpakitlib.ar_base_worker_util import BaseWorker
26
27
  from arpakitlib.ar_dict_util import combine_dicts
27
28
  from arpakitlib.ar_enumeration_util import Enumeration
28
29
  from arpakitlib.ar_json_util import safely_transfer_to_json_str_to_json_obj
@@ -381,6 +382,15 @@ class BaseStartupAPIEvent:
381
382
  self._logger.info("on_startup ends")
382
383
 
383
384
 
385
+ class BaseShutdownAPIEvent:
386
+ def __init__(self, *args, **kwargs):
387
+ self._logger = logging.getLogger(self.__class__.__name__)
388
+
389
+ async def async_on_shutdown(self, *args, **kwargs):
390
+ self._logger.info("on_shutdown starts")
391
+ self._logger.info("on_shutdown ends")
392
+
393
+
384
394
  class InitSqlalchemyDBStartupAPIEvent(BaseStartupAPIEvent):
385
395
  def __init__(self, sqlalchemy_db: SQLAlchemyDB):
386
396
  super().__init__()
@@ -390,35 +400,26 @@ class InitSqlalchemyDBStartupAPIEvent(BaseStartupAPIEvent):
390
400
  self.sqlalchemy_db.init()
391
401
 
392
402
 
393
- class SyncSafeRunExecuteOperationWorkerStartupAPIEvent(BaseStartupAPIEvent):
394
- def __init__(self, execute_operation_worker: ExecuteOperationWorker):
403
+ class SyncSafeRunWorkerStartupAPIEvent(BaseStartupAPIEvent):
404
+ def __init__(self, worker: BaseWorker):
395
405
  super().__init__()
396
- self.execute_operation_worker = execute_operation_worker
406
+ self.worker = worker
397
407
 
398
408
  def async_on_startup(self, *args, **kwargs):
399
409
  thread = threading.Thread(
400
- target=self.execute_operation_worker.sync_safe_run,
410
+ target=self.worker.sync_safe_run,
401
411
  daemon=True
402
412
  )
403
413
  thread.start()
404
414
 
405
415
 
406
- class AsyncSafeRunExecuteOperationWorkerStartupAPIEvent(BaseStartupAPIEvent):
407
- def __init__(self, execute_operation_worker: ExecuteOperationWorker):
416
+ class AsyncSafeRunWorkerStartupAPIEvent(BaseStartupAPIEvent):
417
+ def __init__(self, worker: ExecuteOperationWorker):
408
418
  super().__init__()
409
- self.execute_operation_worker = execute_operation_worker
419
+ self.worker = worker
410
420
 
411
421
  def async_on_startup(self, *args, **kwargs):
412
- _ = asyncio.create_task(self.execute_operation_worker.async_safe_run())
413
-
414
-
415
- class BaseShutdownAPIEvent:
416
- def __init__(self, *args, **kwargs):
417
- self._logger = logging.getLogger(self.__class__.__name__)
418
-
419
- async def async_on_shutdown(self, *args, **kwargs):
420
- self._logger.info("on_shutdown starts")
421
- self._logger.info("on_shutdown ends")
422
+ _ = asyncio.create_task(self.worker.async_safe_run())
422
423
 
423
424
 
424
425
  class BaseTransmittedAPIData(BaseModel):
@@ -469,8 +470,8 @@ def simple_api_router_for_testing():
469
470
 
470
471
  def create_fastapi_app(
471
472
  *,
472
- title: str = "ARPAKITLIB FastAPI",
473
- description: str | None = "ARPAKITLIB FastAPI",
473
+ title: str = "arpakitlib FastAPI",
474
+ description: str | None = "arpakitlib FastAPI",
474
475
  log_filepath: str | None = "./story.log",
475
476
  handle_exception_: Callable | None = create_handle_exception(),
476
477
  startup_api_events: list[BaseStartupAPIEvent] | None = None,
@@ -16,3 +16,7 @@ def generate_env_example(settings_class: Union[BaseSettings, type[BaseSettings]]
16
16
 
17
17
  def __example():
18
18
  pass
19
+
20
+
21
+ if __name__ == '__main__':
22
+ __example()
@@ -2,11 +2,14 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ import asyncio
5
6
  import logging
6
7
  import traceback
7
8
  from datetime import timedelta
8
- from typing import Any
9
+ from typing import Any, Callable
9
10
 
11
+ from pydantic import ConfigDict
12
+ from pydantic.v1 import BaseModel
10
13
  from sqlalchemy import asc
11
14
  from sqlalchemy.orm import Session
12
15
 
@@ -216,12 +219,14 @@ class ExecuteOperationWorker(BaseWorker):
216
219
  *,
217
220
  sqlalchemy_db: SQLAlchemyDB,
218
221
  operation_executor: BaseOperationExecutor | None = None,
219
- filter_operation_type: str | None = None
222
+ filter_operation_type: str | None = None,
223
+ timeout_after_run=timedelta(seconds=0.1).total_seconds(),
224
+ timeout_after_err_in_run=timedelta(seconds=1).total_seconds()
220
225
  ):
221
226
  super().__init__()
222
227
  self.sqlalchemy_db = sqlalchemy_db
223
- self.timeout_after_run = timedelta(seconds=0.1).total_seconds()
224
- self.timeout_after_err_in_run = timedelta(seconds=1).total_seconds()
228
+ self.timeout_after_run = timeout_after_run
229
+ self.timeout_after_err_in_run = timeout_after_err_in_run
225
230
  if operation_executor is None:
226
231
  operation_executor = BaseOperationExecutor(sqlalchemy_db=sqlalchemy_db)
227
232
  self.operation_executor = operation_executor
@@ -244,7 +249,7 @@ class ExecuteOperationWorker(BaseWorker):
244
249
 
245
250
  await self.async_execute_operation(operation_dbm=operation_dbm)
246
251
 
247
- async def async_run_on_error(self, exception: BaseException, kwargs: dict[str, Any]):
252
+ async def async_run_on_error(self, exception: BaseException, **kwargs):
248
253
  self._logger.exception(exception)
249
254
 
250
255
  def sync_on_startup(self):
@@ -264,5 +269,76 @@ class ExecuteOperationWorker(BaseWorker):
264
269
 
265
270
  self.sync_execute_operation(operation_dbm=operation_dbm)
266
271
 
267
- def sync_run_on_error(self, exception: BaseException, kwargs: dict[str, Any]):
272
+ def sync_run_on_error(self, exception: BaseException, **kwargs):
268
273
  self._logger.exception(exception)
274
+
275
+
276
+ class ScheduledOperation(BaseModel):
277
+ model_config = ConfigDict(extra="forbid", arbitrary_types_allowed=True, from_attributes=True)
278
+
279
+ type: str
280
+ input_data: dict[str, Any] | None = None
281
+ is_time_func: Callable[[], bool]
282
+
283
+
284
+ class CreateScheduledOperationWorker(BaseWorker):
285
+ def __init__(
286
+ self,
287
+ *,
288
+ sqlalchemy_db: SQLAlchemyDB,
289
+ scheduled_operations: list[ScheduledOperation] | None = None,
290
+ timeout_after_run=timedelta(seconds=0.1).total_seconds(),
291
+ timeout_after_err_in_run=timedelta(seconds=1).total_seconds()
292
+ ):
293
+ super().__init__()
294
+ self.sqlalchemy_db = sqlalchemy_db
295
+ self.timeout_after_run = timeout_after_run
296
+ self.timeout_after_err_in_run = timeout_after_err_in_run
297
+ if scheduled_operations is None:
298
+ scheduled_operations = []
299
+ self.scheduled_operations = scheduled_operations
300
+
301
+ def sync_on_startup(self):
302
+ self.sqlalchemy_db.init()
303
+
304
+ def sync_run(self):
305
+ for scheduled_operation in self.scheduled_operations:
306
+ if not scheduled_operation.is_time_func():
307
+ continue
308
+ with self.sqlalchemy_db.new_session() as session:
309
+ operation_dbm = OperationDBM(
310
+ type=scheduled_operation.type,
311
+ input_data=scheduled_operation.input_data
312
+ )
313
+ session.add(operation_dbm)
314
+ session.commit()
315
+ session.refresh(operation_dbm)
316
+
317
+ def async_on_startup(self):
318
+ self.sqlalchemy_db.init()
319
+
320
+ def async_run(self):
321
+ for scheduled_operation in self.scheduled_operations:
322
+ if not scheduled_operation.is_time_func():
323
+ continue
324
+ with self.sqlalchemy_db.new_session() as session:
325
+ operation_dbm = OperationDBM(
326
+ type=scheduled_operation.type,
327
+ input_data=scheduled_operation.input_data
328
+ )
329
+ session.add(operation_dbm)
330
+ session.commit()
331
+ session.refresh(operation_dbm)
332
+
333
+
334
+ def __example():
335
+ pass
336
+
337
+
338
+ async def __async_example():
339
+ pass
340
+
341
+
342
+ if __name__ == '__main__':
343
+ __example()
344
+ asyncio.run(__async_example())
@@ -1,6 +1,5 @@
1
1
  # arpakit
2
2
 
3
- from arpakitlib.ar_logging_util import setup_normal_logging
4
3
  from arpakitlib.ar_run_cmd_util import run_cmd
5
4
  from arpakitlib.ar_type_util import raise_for_type
6
5
 
@@ -34,13 +33,7 @@ def make_postgresql_db_dump(
34
33
 
35
34
 
36
35
  def __example():
37
- setup_normal_logging()
38
- make_postgresql_db_dump(
39
- user="arpakitlib",
40
- db_name="arpakitlib",
41
- port=50629,
42
- password="arpakitlib"
43
- )
36
+ pass
44
37
 
45
38
 
46
39
  if __name__ == '__main__':
@@ -120,3 +120,11 @@ class OperationDBM(SimpleDBM):
120
120
  if self.duration is None:
121
121
  return None
122
122
  return self.duration.total_seconds()
123
+
124
+
125
+ def __example():
126
+ pass
127
+
128
+
129
+ if __name__ == '__main__':
130
+ __example()
@@ -1,5 +1,5 @@
1
1
  # arpakit
2
-
2
+ import asyncio
3
3
  import logging
4
4
  from datetime import timedelta
5
5
  from typing import Any
@@ -102,5 +102,10 @@ def __example():
102
102
  pass
103
103
 
104
104
 
105
+ async def __async_example():
106
+ pass
107
+
108
+
105
109
  if __name__ == '__main__':
106
110
  __example()
111
+ asyncio.run(__async_example())
@@ -1,5 +1,5 @@
1
1
  # arpakit
2
-
2
+ import asyncio
3
3
  import logging
4
4
  import time
5
5
  from datetime import timedelta, datetime
@@ -188,5 +188,10 @@ def __example():
188
188
  pass
189
189
 
190
190
 
191
+ async def __async_example():
192
+ pass
193
+
194
+
191
195
  if __name__ == '__main__':
192
196
  __example()
197
+ asyncio.run(__async_example())
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: arpakitlib
3
- Version: 1.5.39
3
+ Version: 1.5.41
4
4
  Summary: arpakitlib
5
5
  Home-page: https://github.com/ARPAKIT-Company/arpakitlib
6
6
  License: Apache-2.0
@@ -51,6 +51,7 @@ workflow
51
51
  ---
52
52
 
53
53
  ### Supported python version
54
+
54
55
  - Python ^3.12
55
56
 
56
57
  ---
@@ -74,8 +75,9 @@ pip install arpakitlib
74
75
  - https://pypi.org/project/arpakitlib/
75
76
  - https://test.pypi.org/project/arpakitlib/
76
77
  - https://github.com/ARPAKIT-Company/arpakitlib
77
- - https://t.me/arpakit (author telegram)
78
- - arpakit@gmail.com (author email)
78
+ - https://t.me/arpakit
79
+ - arpakit@gmail.com
80
+ - support@arpakit.com
79
81
 
80
82
  ---
81
83
 
@@ -1,15 +1,15 @@
1
- arpakitlib/AUTHOR.md,sha256=q__f4pJ8ZVvZAgtdOx_lFRY3yCHJfutv3shmO3xpDxQ,70
1
+ arpakitlib/AUTHOR.md,sha256=mBdzFR-3Dw6ADRTIbfOz2ZHvZt5589zBjhBkpEcakSY,92
2
2
  arpakitlib/LICENSE,sha256=1jqWIkbnMxDfs_i0SXP5qbV6PHjBr1g8506oW7uPjfg,11347
3
3
  arpakitlib/NOTICE,sha256=wHwmiq3wExfFfgMsE5U5TOBP9_l72ocIG82KurEels0,43
4
- arpakitlib/README.md,sha256=CEisVO71kG0wa6cRGWsNhQl9MOvIO7uG8GeYzUBT1bA,70
4
+ arpakitlib/README.md,sha256=mBdzFR-3Dw6ADRTIbfOz2ZHvZt5589zBjhBkpEcakSY,92
5
5
  arpakitlib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
- arpakitlib/ar_additional_model_util.py,sha256=Eq7pvVUgO2L3gYBocm-pP9TrztTb8VNCp7LdRMml-F8,237
7
- arpakitlib/ar_aiogram_util.py,sha256=IA48PRMIJrPLMhFA0Eb2vQpLcqm98o9tKfC3pDy8qsI,12022
8
- arpakitlib/ar_arpakit_lib_module_util.py,sha256=YzobxRG8-QJ1L5r_8wBdL668CwXoQRIM1Cpec1o2WBc,5447
6
+ arpakitlib/ar_additional_model_util.py,sha256=t95M4Ggl7EBRj7qOJHmuo5p2YmE7LlJdEAMNzse3vhE,309
7
+ arpakitlib/ar_aiogram_util.py,sha256=zQ5txWe359U8LCSD-jvSz1Ol8N40bEg3DdTRbdRD8fU,11974
8
+ arpakitlib/ar_arpakit_lib_module_util.py,sha256=V_mc3Ml73Tzz3arxmwEfIxruKMyrwbe8XZ9FfVDtUXY,5446
9
9
  arpakitlib/ar_arpakit_schedule_uust_api_client.py,sha256=SYWWQDohPnw0qpBIu2hEvGZRVdaI4NUUQdEjnMnseo4,18237
10
10
  arpakitlib/ar_arpakitlib_info.py,sha256=cvgrLnEznmYkCAg1adbY46ATjD6GJd-Yk8PTgOPjpKM,248
11
11
  arpakitlib/ar_base64_util.py,sha256=aZkg2cZTuAaP2IWeG_LXJ6RO7qhyskVwec-Lks0iM-k,676
12
- arpakitlib/ar_base_worker_util.py,sha256=Y6yRFp1nhhTyv-TeGDao-3q4ICVVJ2zVsKdIlHdiGSI,2897
12
+ arpakitlib/ar_base_worker_util.py,sha256=8ruBoF9pARf3yc5duAajUOBi7Cce5KFAkp66lShRf7U,2796
13
13
  arpakitlib/ar_cache_file_util.py,sha256=Fo2pH-Zqm966KWFBHG_pbiySGZvhIFCYqy7k1weRfJ0,3476
14
14
  arpakitlib/ar_datetime_util.py,sha256=Xe1NiT9oPQzNSG7RVRkhukhbg4i-hhS5ImmV7sPUc8o,971
15
15
  arpakitlib/ar_dict_util.py,sha256=cF5LQJ6tLqyGoEXfDljMDZrikeZoWPw7CgINHIFGvXM,419
@@ -35,9 +35,9 @@ arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css,sha256=jzPZlgJTFwSdSphk9C
35
35
  arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css.map,sha256=5wq8eXMLU6Zxb45orZPL1zAsBFJReFw6GjYqGpUX3hg,262650
36
36
  arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js,sha256=ffrLZHHEQ_g84A-ul3yWa10Kk09waOAxHcQXPuZuavg,339292
37
37
  arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js.map,sha256=9UhIW7MqCOZPAz1Sl1IKfZUuhWU0p-LJqrnjjJD9Xhc,1159454
38
- arpakitlib/ar_fastapi_util.py,sha256=7YUx9WL4hc_TAiNjFDqxdcpAutvv0UtI5IEICbBZdVQ,16847
38
+ arpakitlib/ar_fastapi_util.py,sha256=05Bg7PB7LyCdn2I4ptxOJKzMbB3lS1RbBBMc8sE6HWY,16713
39
39
  arpakitlib/ar_file_storage_in_dir_util.py,sha256=D3e3rGuHoI6xqAA5mVvEpVVpOWY1jyjNsjj2UhyHRbE,3674
40
- arpakitlib/ar_generate_env_example.py,sha256=WseNlk_So6mTVQ2amMuigWYV4ZVmd940POvXtodoYj0,325
40
+ arpakitlib/ar_generate_env_example.py,sha256=R_pdbFZe-mIZxEps2dm-K9m8rAg1pAaMzFOBPTGe4s4,370
41
41
  arpakitlib/ar_hash_util.py,sha256=Iqy6KBAOLBQMFLWv676boI5sV7atT2B-fb7aCdHOmIQ,340
42
42
  arpakitlib/ar_http_request_util.py,sha256=hMzu2yedUvwIg6gafSakDjXUEC7WH5iplDGiRW9fgPw,3322
43
43
  arpakitlib/ar_ip_util.py,sha256=aEAa1Hvobh9DWX7cmBAPLqnXSTiKe2hRk-WJaiKMaI8,1009
@@ -50,21 +50,21 @@ arpakitlib/ar_logging_util.py,sha256=c5wX2FLqCzb4aLckLVhIJ7go52rJQ4GN9dIkJ6KMc3o
50
50
  arpakitlib/ar_mongodb_util.py,sha256=2ECkTnGAZ92qxioL-fmN6R4yZOSr3bXdXLWTzT1C3vk,4038
51
51
  arpakitlib/ar_need_type_util.py,sha256=n2kBETxzOSVhSVoy7qUtHtuQzgrrxzgi1_iVQimPb9o,1615
52
52
  arpakitlib/ar_openai_util.py,sha256=dHUbfg1sVVCjsNl_fra3iCMEz1bR-Hk9fE-DdYbu7Wc,1215
53
- arpakitlib/ar_operation_execution_util.py,sha256=FaMFTIzETdTmGAUHaWaiKSQAleYtjVqFbHq04Gt8htA,9933
53
+ arpakitlib/ar_operation_execution_util.py,sha256=w_dz4XYEM4WbTxpBoYVkknG3U3_391cJmitgljJJTO0,12373
54
54
  arpakitlib/ar_parse_command.py,sha256=qpr2OwG3Bf7DFiL9S3iWgtbvtE80RSC35E5zFJvjG1I,2714
55
- arpakitlib/ar_postgresql_util.py,sha256=_2MKkkH0ZSEr6sk6hJw6ml8rlPZIv7b7N_L4tbRg60g,1165
55
+ arpakitlib/ar_postgresql_util.py,sha256=1AuLjEaa1Lg4pzn-ukCVnDi35Eg1k91APRTqZhIJAdo,945
56
56
  arpakitlib/ar_run_cmd_util.py,sha256=D_rPavKMmWkQtwvZFz-Io5Ak8eSODHkcFeLPzNVC68g,1072
57
57
  arpakitlib/ar_schedule_uust_api_client_util.py,sha256=NpCN8GT96aPvE3Lc-IRn653abjI95CmOqNc4pbHIWxo,5780
58
58
  arpakitlib/ar_sleep_util.py,sha256=9ZN4Qo4eZ_q3hjM7vNBQjFRcH-9-sqv3QLSjnxVJE90,1405
59
- arpakitlib/ar_sqlalchemy_model_util.py,sha256=tKz6n9zuebo2J9yTr6IQUHoXZ9KF340MAo4UiDXaX_4,4251
60
- arpakitlib/ar_sqlalchemy_util.py,sha256=VH23Xld3k5wITkwR0JcaBkO77gmxWn9jlK4eyxKuz_0,3665
59
+ arpakitlib/ar_sqlalchemy_model_util.py,sha256=hcXn-t20_ioOg89g6Pzg3VJQd4-a6Lbofvzfg14R_z8,4324
60
+ arpakitlib/ar_sqlalchemy_util.py,sha256=HgWp7zUGZNNFc4zuAjHeji6MEPFAbNnwpWqsuFRztjs,3754
61
61
  arpakitlib/ar_ssh_util.py,sha256=jlnss4V4pziBN1rBzoK_lDiWm6nMOqGXfa6NFJSKH-Y,6796
62
62
  arpakitlib/ar_str_util.py,sha256=xSEzmsDvRiZVaxyqFFjcgzpphktCbXg2FHcvsd1DYpA,1885
63
63
  arpakitlib/ar_type_util.py,sha256=I6jbTz7_dxR1lkhz1JfUb5ZyLLdXVhG_-hzjdgT6N6s,1932
64
64
  arpakitlib/ar_yookassa_api_client_util.py,sha256=5GMvu8paByni8buhc1vpHB7n6oXe0gPfj1LSvnyZCrQ,5307
65
- arpakitlib/ar_zabbix_util.py,sha256=MTQbmS0QpNCKNOGONNQHf6j7KTZsKGlIbd5rCH0R0WI,6313
66
- arpakitlib-1.5.39.dist-info/LICENSE,sha256=1jqWIkbnMxDfs_i0SXP5qbV6PHjBr1g8506oW7uPjfg,11347
67
- arpakitlib-1.5.39.dist-info/METADATA,sha256=KS0Ppj3Fkn82og5Kf-974S95JebalflOpolXpUx6g4M,2330
68
- arpakitlib-1.5.39.dist-info/NOTICE,sha256=wHwmiq3wExfFfgMsE5U5TOBP9_l72ocIG82KurEels0,43
69
- arpakitlib-1.5.39.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
70
- arpakitlib-1.5.39.dist-info/RECORD,,
65
+ arpakitlib/ar_zabbix_util.py,sha256=Q-VR4MvoZ9aHwZeYZr9G3LwN-ANx1T5KFmF6pvPM-9M,6402
66
+ arpakitlib-1.5.41.dist-info/LICENSE,sha256=1jqWIkbnMxDfs_i0SXP5qbV6PHjBr1g8506oW7uPjfg,11347
67
+ arpakitlib-1.5.41.dist-info/METADATA,sha256=Nwu_7yMoKHFq6U0O_sALKqGC71Zc-M7OQLD3rZ0NlqI,2320
68
+ arpakitlib-1.5.41.dist-info/NOTICE,sha256=wHwmiq3wExfFfgMsE5U5TOBP9_l72ocIG82KurEels0,43
69
+ arpakitlib-1.5.41.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
70
+ arpakitlib-1.5.41.dist-info/RECORD,,