arpakitlib 1.7.43__py3-none-any.whl → 1.7.44__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.
@@ -0,0 +1,9 @@
1
+ from arpakitlib.ar_fastapi_util import BaseAPIErrorCodes
2
+
3
+
4
+ class APIErrorCodes(BaseAPIErrorCodes):
5
+ pass
6
+
7
+
8
+ if __name__ == '__main__':
9
+ print(APIErrorCodes.str_for_print())
@@ -4,7 +4,7 @@ from arpakitlib.ar_base_worker_util import BaseWorker
4
4
  from arpakitlib.ar_fastapi_util import create_fastapi_app, InitSqlalchemyDBStartupAPIEvent, InitFileStoragesInDir, \
5
5
  create_handle_exception, create_story_log_before_response_in_handle_exception, _DEFAULT_CONTACT, \
6
6
  SafeRunWorkerStartupAPIEvent
7
- from arpakitlib.ar_operation_execution_util import ExecuteOperationWorker, CreateScheduledOperationWorker
7
+ from arpakitlib.ar_operation_execution_util import OperationExecutorWorker, ScheduledOperationCreatorWorker
8
8
  from arpakitlib.ar_sqlalchemy_util import SQLAlchemyDB
9
9
  from arpakitlib.ar_type_util import raise_for_type
10
10
  from src.api.event import StartupAPIEvent, ShutdownAPIEvent
@@ -60,7 +60,7 @@ def create_api_app() -> FastAPI:
60
60
  startup_api_events.append(
61
61
  SafeRunWorkerStartupAPIEvent(
62
62
  workers=[
63
- ExecuteOperationWorker(
63
+ OperationExecutorWorker(
64
64
  sqlalchemy_db=sqlalchemy_db,
65
65
  operation_executor=OperationExecutor(sqlalchemy_db=sqlalchemy_db),
66
66
  filter_operation_types=None
@@ -75,7 +75,7 @@ def create_api_app() -> FastAPI:
75
75
  startup_api_events.append(
76
76
  SafeRunWorkerStartupAPIEvent(
77
77
  workers=[
78
- CreateScheduledOperationWorker(
78
+ ScheduledOperationCreatorWorker(
79
79
  sqlalchemy_db=sqlalchemy_db,
80
80
  scheduled_operations=ALL_SCHEDULED_OPERATIONS
81
81
  )
@@ -0,0 +1,11 @@
1
+ from arpakitlib.ar_sqlalchemy_model_util import BaseOperationTypes
2
+
3
+
4
+ class OperationTypes(BaseOperationTypes):
5
+ pass
6
+
7
+
8
+ if __name__ == '__main__':
9
+ print(f"OperationTypes (len={len(OperationTypes.values_list())})")
10
+ for v in OperationTypes.values_list():
11
+ print(f"- {v}")
@@ -4,11 +4,11 @@ from arpakitlib.ar_sqlalchemy_model_util import OperationDBM
4
4
 
5
5
  class OperationExecutor(BaseOperationExecutor):
6
6
  def sync_execute_operation(self, operation_dbm: OperationDBM) -> OperationDBM:
7
- operation_dbm = super().sync_execute_operation(operation_dbm=operation_dbm)
8
7
  # ...
8
+ operation_dbm = super().sync_execute_operation(operation_dbm=operation_dbm)
9
9
  return operation_dbm
10
10
 
11
11
  async def async_execute_operation(self, operation_dbm: OperationDBM) -> OperationDBM:
12
- operation_dbm = await super().async_execute_operation(operation_dbm=operation_dbm)
13
12
  # ...
13
+ operation_dbm = await super().async_execute_operation(operation_dbm=operation_dbm)
14
14
  return operation_dbm
@@ -1,13 +1,13 @@
1
1
  from datetime import timedelta
2
2
 
3
- from arpakitlib.ar_operation_execution_util import ScheduledOperation, is_time_func_every_timedelta
3
+ from arpakitlib.ar_operation_execution_util import ScheduledOperation, every_timedelta_is_time_func
4
4
  from arpakitlib.ar_sqlalchemy_model_util import BaseOperationTypes
5
5
 
6
6
  ALL_SCHEDULED_OPERATIONS = []
7
7
 
8
- healthcheck_operation = ScheduledOperation(
8
+ healthcheck_scheduled_operation = ScheduledOperation(
9
9
  type=BaseOperationTypes.healthcheck_,
10
10
  input_data={},
11
- is_time_func=is_time_func_every_timedelta(td=timedelta(seconds=5))
11
+ is_time_func=every_timedelta_is_time_func(td=timedelta(seconds=5))
12
12
  )
13
- ALL_SCHEDULED_OPERATIONS.append(healthcheck_operation)
13
+ ALL_SCHEDULED_OPERATIONS.append(healthcheck_scheduled_operation)
@@ -1,11 +1,11 @@
1
- from arpakitlib.ar_operation_execution_util import ExecuteOperationWorker
1
+ from arpakitlib.ar_operation_execution_util import OperationExecutorWorker
2
2
  from src.core.util import get_cached_sqlalchemy_db, setup_logging
3
3
  from src.operation_execution.operation_executor import OperationExecutor
4
4
 
5
5
 
6
6
  def start_operation_executor_for_dev():
7
7
  setup_logging()
8
- worker = ExecuteOperationWorker(
8
+ worker = OperationExecutorWorker(
9
9
  sqlalchemy_db=get_cached_sqlalchemy_db(),
10
10
  operation_executor=OperationExecutor(sqlalchemy_db=get_cached_sqlalchemy_db()),
11
11
  filter_operation_types=None
@@ -1,11 +1,11 @@
1
- from arpakitlib.ar_operation_execution_util import CreateScheduledOperationWorker
1
+ from arpakitlib.ar_operation_execution_util import ScheduledOperationCreatorWorker
2
2
  from src.core.util import get_cached_sqlalchemy_db, setup_logging
3
3
  from src.operation_execution.scheduled_operations import ALL_SCHEDULED_OPERATIONS
4
4
 
5
5
 
6
6
  def start_create_scheduled_operation_worker_for_dev():
7
7
  setup_logging()
8
- worker = CreateScheduledOperationWorker(
8
+ worker = ScheduledOperationCreatorWorker(
9
9
  sqlalchemy_db=get_cached_sqlalchemy_db(),
10
10
  scheduled_operations=ALL_SCHEDULED_OPERATIONS
11
11
  )
@@ -69,6 +69,17 @@ class Enumeration:
69
69
  def parse_and_validate_values(cls, *values: ValuesForParseType) -> list[ValueType]:
70
70
  return cls.parse_values(*values, validate=True)
71
71
 
72
+ @classmethod
73
+ def str_for_print(cls) -> str:
74
+ res = f"{cls.__name__} (len={len(cls.values_list())})"
75
+ for v in cls.values_list():
76
+ res += f"\n- {v}"
77
+ return res.strip()
78
+
79
+ @classmethod
80
+ def print(cls):
81
+ print(cls.str_for_print())
82
+
72
83
 
73
84
  def __example():
74
85
  pass
@@ -68,13 +68,14 @@ class SimpleSO(BaseSO):
68
68
  creation_dt: datetime
69
69
 
70
70
 
71
- class ErrorSO(BaseSO):
72
- class APIErrorCodes(Enumeration):
73
- cannot_authorize = "CANNOT_AUTHORIZE"
74
- unknown_error = "UNKNOWN_ERROR"
75
- error_in_request = "ERROR_IN_REQUEST"
76
- not_found = "NOT_FOUND"
71
+ class BaseAPIErrorCodes(Enumeration):
72
+ cannot_authorize = "CANNOT_AUTHORIZE"
73
+ unknown_error = "UNKNOWN_ERROR"
74
+ error_in_request = "ERROR_IN_REQUEST"
75
+ not_found = "NOT_FOUND"
76
+
77
77
 
78
+ class ErrorSO(BaseSO):
78
79
  has_error: bool = True
79
80
  error_code: str | None = None
80
81
  error_code_specification: str | None = None
@@ -118,7 +119,7 @@ class APIException(fastapi.exceptions.HTTPException):
118
119
  self,
119
120
  *,
120
121
  status_code: int = starlette.status.HTTP_400_BAD_REQUEST,
121
- error_code: str | None = ErrorSO.APIErrorCodes.unknown_error,
122
+ error_code: str | None = BaseAPIErrorCodes.unknown_error,
122
123
  error_code_specification: str | None = None,
123
124
  error_description: str | None = None,
124
125
  error_data: dict[str, Any] | None = None
@@ -165,7 +166,7 @@ def create_handle_exception(
165
166
 
166
167
  error_so = ErrorSO(
167
168
  has_error=True,
168
- error_code=ErrorSO.APIErrorCodes.unknown_error,
169
+ error_code=BaseAPIErrorCodes.unknown_error,
169
170
  error_data={
170
171
  "exception_type": str(type(exception)),
171
172
  "exception_str": str(exception),
@@ -183,10 +184,10 @@ def create_handle_exception(
183
184
  elif isinstance(exception, starlette.exceptions.HTTPException):
184
185
  status_code = exception.status_code
185
186
  if status_code in (starlette.status.HTTP_403_FORBIDDEN, starlette.status.HTTP_401_UNAUTHORIZED):
186
- error_so.error_code = ErrorSO.APIErrorCodes.cannot_authorize
187
+ error_so.error_code = BaseAPIErrorCodes.cannot_authorize
187
188
  _need_exc_info = False
188
189
  elif status_code == starlette.status.HTTP_404_NOT_FOUND:
189
- error_so.error_code = ErrorSO.APIErrorCodes.not_found
190
+ error_so.error_code = BaseAPIErrorCodes.not_found
190
191
  _need_exc_info = False
191
192
  else:
192
193
  status_code = starlette.status.HTTP_500_INTERNAL_SERVER_ERROR
@@ -196,14 +197,14 @@ def create_handle_exception(
196
197
 
197
198
  elif isinstance(exception, fastapi.exceptions.RequestValidationError):
198
199
  status_code = starlette.status.HTTP_422_UNPROCESSABLE_ENTITY
199
- error_so.error_code = ErrorSO.APIErrorCodes.error_in_request
200
+ error_so.error_code = BaseAPIErrorCodes.error_in_request
200
201
  with suppress(Exception):
201
202
  error_so.error_data["exception.errors"] = str(exception.errors()) if exception.errors() else {}
202
203
  _need_exc_info = False
203
204
 
204
205
  else:
205
206
  status_code = starlette.status.HTTP_500_INTERNAL_SERVER_ERROR
206
- error_so.error_code = ErrorSO.APIErrorCodes.unknown_error
207
+ error_so.error_code = BaseAPIErrorCodes.unknown_error
207
208
  _logger.exception(exception)
208
209
  _need_exc_info = True
209
210
 
@@ -512,14 +513,14 @@ def base_api_auth(
512
513
  if require_api_key_string and not api_auth_data.api_key_string:
513
514
  raise APIException(
514
515
  status_code=starlette.status.HTTP_401_UNAUTHORIZED,
515
- error_code=ErrorSO.APIErrorCodes.cannot_authorize,
516
+ error_code=BaseAPIErrorCodes.cannot_authorize,
516
517
  error_data=safely_transfer_to_json_str_to_json_obj(api_auth_data.model_dump())
517
518
  )
518
519
 
519
520
  if require_token_string and not api_auth_data.token_string:
520
521
  raise APIException(
521
522
  status_code=starlette.status.HTTP_401_UNAUTHORIZED,
522
- error_code=ErrorSO.APIErrorCodes.cannot_authorize,
523
+ error_code=BaseAPIErrorCodes.cannot_authorize,
523
524
  error_data=safely_transfer_to_json_str_to_json_obj(api_auth_data.model_dump())
524
525
  )
525
526
 
@@ -537,37 +538,31 @@ def is_api_key_correct_api_auth(
537
538
  validate_api_key_func: Callable | None = None,
538
539
  correct_api_key: str | None = None
539
540
  ):
540
- require_api_key_string = True
541
-
542
541
  if correct_api_key is not None:
543
- validate_api_key_func = lambda **kwargs: kwargs["api_key_string"] == correct_api_key
544
-
542
+ validate_api_key_func = lambda *args, **kwargs: kwargs["api_key_string"] == correct_api_key
545
543
  raise_if_none(validate_api_key_func)
546
544
 
547
545
  async def func(
548
546
  *,
549
547
  base_api_auth_data: BaseAPIAuthData = Depends(base_api_auth(
550
- require_api_key_string=require_api_key_string,
548
+ require_api_key_string=True,
551
549
  require_token_string=False
552
550
  )),
553
551
  transmitted_api_data: BaseTransmittedAPIData = Depends(get_transmitted_api_data),
554
552
  request: starlette.requests.Request
555
553
  ) -> CheckAPIKeyAPIAuthData:
556
554
  check_api_key_api_auth_data = CheckAPIKeyAPIAuthData.model_validate(base_api_auth_data)
557
- check_api_key_api_auth_data.is_api_key_correct = (
558
- validate_api_key_func(
559
- api_key_string=base_api_auth_data.api_key_string,
560
- base_api_auth_data=base_api_auth_data,
561
- transmitted_api_data=transmitted_api_data,
562
- request=request
563
- )
564
- if validate_api_key_func is not None else None
555
+ check_api_key_api_auth_data.is_api_key_correct = validate_api_key_func(
556
+ api_key_string=base_api_auth_data.api_key_string,
557
+ base_api_auth_data=base_api_auth_data,
558
+ transmitted_api_data=transmitted_api_data,
559
+ request=request
565
560
  )
566
561
 
567
562
  if not check_api_key_api_auth_data.is_api_key_correct:
568
563
  raise APIException(
569
564
  status_code=starlette.status.HTTP_401_UNAUTHORIZED,
570
- error_code=ErrorSO.APIErrorCodes.cannot_authorize,
565
+ error_code=BaseAPIErrorCodes.cannot_authorize,
571
566
  error_data=safely_transfer_to_json_str_to_json_obj(check_api_key_api_auth_data.model_dump())
572
567
  )
573
568
 
@@ -5,7 +5,7 @@ from __future__ import annotations
5
5
  import asyncio
6
6
  import logging
7
7
  import traceback
8
- from datetime import timedelta
8
+ from datetime import timedelta, time
9
9
  from typing import Any, Callable
10
10
 
11
11
  from pydantic import ConfigDict
@@ -109,7 +109,10 @@ class BaseOperationExecutor:
109
109
  if exception:
110
110
  operation_dbm.status = OperationDBM.Statuses.executed_with_error
111
111
  operation_dbm.error_data = combine_dicts(
112
- {"exception": str(exception), "traceback_str": traceback_str},
112
+ {
113
+ "exception_str": str(exception),
114
+ "traceback_str": traceback_str
115
+ },
113
116
  operation_dbm.error_data
114
117
  )
115
118
  else:
@@ -185,7 +188,10 @@ class BaseOperationExecutor:
185
188
  if exception:
186
189
  operation_dbm.status = OperationDBM.Statuses.executed_with_error
187
190
  operation_dbm.error_data = combine_dicts(
188
- {"exception": str(exception), "traceback_str": traceback_str},
191
+ {
192
+ "exception_str": str(exception),
193
+ "traceback_str": traceback_str
194
+ },
189
195
  operation_dbm.error_data
190
196
  )
191
197
  else:
@@ -219,7 +225,7 @@ class BaseOperationExecutor:
219
225
  return operation_dbm
220
226
 
221
227
 
222
- class ExecuteOperationWorker(BaseWorker):
228
+ class OperationExecutorWorker(BaseWorker):
223
229
 
224
230
  def __init__(
225
231
  self,
@@ -288,7 +294,7 @@ class ScheduledOperation(BaseModel):
288
294
  is_time_func: Callable[[], bool]
289
295
 
290
296
 
291
- class CreateScheduledOperationWorker(BaseWorker):
297
+ class ScheduledOperationCreatorWorker(BaseWorker):
292
298
  def __init__(
293
299
  self,
294
300
  *,
@@ -338,7 +344,7 @@ class CreateScheduledOperationWorker(BaseWorker):
338
344
  session.refresh(operation_dbm)
339
345
 
340
346
 
341
- def is_time_func_every_timedelta(*, td: timedelta) -> Callable:
347
+ def every_timedelta_is_time_func(*, td: timedelta) -> Callable:
342
348
  last_now_utc_dt = now_utc_dt()
343
349
 
344
350
  def func() -> bool:
@@ -352,6 +358,16 @@ def is_time_func_every_timedelta(*, td: timedelta) -> Callable:
352
358
  return func
353
359
 
354
360
 
361
+ def between_different_times_is_time_func(*, from_time: time, to_time: time) -> Callable:
362
+ def func() -> bool:
363
+ now_utc_dt_ = now_utc_dt()
364
+ if from_time <= now_utc_dt_.time() <= to_time:
365
+ return True
366
+ return False
367
+
368
+ return func
369
+
370
+
355
371
  def __example():
356
372
  pass
357
373
 
@@ -84,6 +84,12 @@ def raise_if_none(v: Any) -> Any:
84
84
  return v
85
85
 
86
86
 
87
+ def raise_if_not_none(v: Any) -> Any:
88
+ if v is not None:
89
+ raise ValueError(f"v is not None, v={v}, type(v)={type(v)}")
90
+ return v
91
+
92
+
87
93
  def __example():
88
94
  pass
89
95
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: arpakitlib
3
- Version: 1.7.43
3
+ Version: 1.7.44
4
4
  Summary: arpakitlib
5
5
  Home-page: https://github.com/ARPAKIT-Company/arpakitlib
6
6
  License: Apache-2.0
@@ -72,7 +72,8 @@ arpakitlib/_arpakit_project_template/src/additional_model/additional_model.py,sh
72
72
  arpakitlib/_arpakit_project_template/src/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
73
73
  arpakitlib/_arpakit_project_template/src/api/asgi.py,sha256=a5UBxOyNC8NG3E0ayhiDo3t5tPoB3WtOf2gbZJFWBAA,74
74
74
  arpakitlib/_arpakit_project_template/src/api/auth.py,sha256=Ljq_VjjiAaW3HEzq60nkSI-HkHfuv6j5-8Q6Qs8V9bU,261
75
- arpakitlib/_arpakit_project_template/src/api/create_api_app.py,sha256=uDEnLAPugb3rXuuJDMkfs8i6aIGYo0-_JP-PG6Spdr4,4496
75
+ arpakitlib/_arpakit_project_template/src/api/const.py,sha256=ttbzJdOUZoAngR5naFubXjaI3ED06051HGpXZFpDPV0,178
76
+ arpakitlib/_arpakit_project_template/src/api/create_api_app.py,sha256=mqEg3MV_EQQI2RhtpRu0ElWZ1vo_F7iRYqAvk88qSJo,4500
76
77
  arpakitlib/_arpakit_project_template/src/api/event.py,sha256=58wCVyVSIe_kydWi44M0Wvp7bTnV8xvO30gMXzjbFYc,750
77
78
  arpakitlib/_arpakit_project_template/src/api/router/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
78
79
  arpakitlib/_arpakit_project_template/src/api/router/v1/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -93,10 +94,11 @@ arpakitlib/_arpakit_project_template/src/db/__init__.py,sha256=47DEQpj8HBSa-_TIm
93
94
  arpakitlib/_arpakit_project_template/src/db/sqlalchemy_model.py,sha256=nXtayUkBaVb6tWx5qJgXZLbLOTVAjnSLpSDxBm7yZLc,234
94
95
  arpakitlib/_arpakit_project_template/src/db/util.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
95
96
  arpakitlib/_arpakit_project_template/src/operation_execution/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
96
- arpakitlib/_arpakit_project_template/src/operation_execution/operation_executor.py,sha256=jAcBicGYq78p4LZe4G3tU1hRxIsODBRoHerhExZab4k,619
97
- arpakitlib/_arpakit_project_template/src/operation_execution/scheduled_operations.py,sha256=xJDPt_3Jo5huOerqY5TUi5DB2W9eI8WcPvSbEPFbImc,464
98
- arpakitlib/_arpakit_project_template/src/operation_execution/start_create_scheduled_operation_worker.py,sha256=L1TMmGOTPAyTQNxgTMKCJZAQgqxv8bwNipbrrNURw2U,572
99
- arpakitlib/_arpakit_project_template/src/operation_execution/start_operation_executor_for_dev.py,sha256=UHGVZi5-jO0J8FDpRkYJS046oRmwtbt3mrJ9vtYT6WE,587
97
+ arpakitlib/_arpakit_project_template/src/operation_execution/const.py,sha256=4wOXu1042rDeNMe0KhMEhRVtJajQfoYMeqqaQ_UICkk,287
98
+ arpakitlib/_arpakit_project_template/src/operation_execution/operation_executor.py,sha256=5sZpn3tVxnmcuIVRD5sbBhiMY5SAqPCc4tHzoNzDe4c,619
99
+ arpakitlib/_arpakit_project_template/src/operation_execution/scheduled_operations.py,sha256=slgfIZikNcTPchjb8hxpf1aGCqlN0Q4VO-LxbptNOCA,484
100
+ arpakitlib/_arpakit_project_template/src/operation_execution/start_operation_executor_for_dev_.py,sha256=N-X3kvjQZeEDxp2Z7DDrr4hR-wR9LmFMLPAA8tzo87A,589
101
+ arpakitlib/_arpakit_project_template/src/operation_execution/start_scheduled_operation_creator_for_dev.py,sha256=RyHCafGTJaY-o3mgt7MReqgJ2txoBDhhsFzrjRiZWe4,574
100
102
  arpakitlib/_arpakit_project_template/src/test_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
101
103
  arpakitlib/_arpakit_project_template/src/test_data/make_test_data_1.py,sha256=3WVPgRsNCIxWpA-6t_Phe-nFULdHPhS1S_DO11XRmqk,80
102
104
  arpakitlib/_arpakit_project_template/src/test_data/make_test_data_2.py,sha256=MVDc71sj5I1muWin50GwrSxMwYtOOSDOtRmeFErHcXs,80
@@ -118,7 +120,7 @@ arpakitlib/ar_datetime_util.py,sha256=Xe1NiT9oPQzNSG7RVRkhukhbg4i-hhS5ImmV7sPUc8
118
120
  arpakitlib/ar_dict_util.py,sha256=cF5LQJ6tLqyGoEXfDljMDZrikeZoWPw7CgINHIFGvXM,419
119
121
  arpakitlib/ar_dream_ai_api_client_util.py,sha256=QF9XK7xK5ny1fvkcG4e0pfCySNNFRNPy0x0cmxfsAak,2818
120
122
  arpakitlib/ar_encrypt_decrypt_util.py,sha256=GhWnp7HHkbhwFVVCzO1H07m-5gryr4yjWsXjOaNQm1Y,520
121
- arpakitlib/ar_enumeration_util.py,sha256=0DN46uyI0Gu9JPDgso3XPbnre7hZZefYTZwmmE1iYH4,2250
123
+ arpakitlib/ar_enumeration_util.py,sha256=1dQUEVgJRp0nCO-IrCKv5GTK0QkSzM44M1lOWkmPk3w,2532
122
124
  arpakitlib/ar_fastapi_static/healthcheck,sha256=IIO7Wvjwlr2-LPSQ7Y8O35hcI6t0_s8zqITDxkYCO8I,11
123
125
  arpakitlib/ar_fastapi_static/redoc/redoc.standalone.js,sha256=WCuodUNv1qVh0oW5fjnJDwb5AwOue73jKHdI9z8iGKU,909365
124
126
  arpakitlib/ar_fastapi_static/swagger-ui/favicon-16x16.png,sha256=ryStYE3Xs7zaj5dauXMHX0ovcKQIeUShL474tjo-B8I,665
@@ -139,7 +141,7 @@ arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css,sha256=jzPZlgJTFwSdSphk9C
139
141
  arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css.map,sha256=5wq8eXMLU6Zxb45orZPL1zAsBFJReFw6GjYqGpUX3hg,262650
140
142
  arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js,sha256=ffrLZHHEQ_g84A-ul3yWa10Kk09waOAxHcQXPuZuavg,339292
141
143
  arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js.map,sha256=9UhIW7MqCOZPAz1Sl1IKfZUuhWU0p-LJqrnjjJD9Xhc,1159454
142
- arpakitlib/ar_fastapi_util.py,sha256=EL4tO7jQKArbvVvNOXaDx-pJDB1cOedWm1YiXBTzsG8,24320
144
+ arpakitlib/ar_fastapi_util.py,sha256=HOn_jpi4ruH11m8XGiFpyvUZmAED7z31-CdL-wXvjK8,24119
143
145
  arpakitlib/ar_file_storage_in_dir_util.py,sha256=D3e3rGuHoI6xqAA5mVvEpVVpOWY1jyjNsjj2UhyHRbE,3674
144
146
  arpakitlib/ar_file_util.py,sha256=07xCF7paAUP2JUyfpeX0l3N1oCSma7qAcBmrCIZVi3g,452
145
147
  arpakitlib/ar_hash_util.py,sha256=Iqy6KBAOLBQMFLWv676boI5sV7atT2B-fb7aCdHOmIQ,340
@@ -154,7 +156,7 @@ arpakitlib/ar_logging_util.py,sha256=Gyd7B9k0glIXPm6dASiigWLq9LC9lw6vhXTCeWpY5PY
154
156
  arpakitlib/ar_mongodb_util.py,sha256=2ECkTnGAZ92qxioL-fmN6R4yZOSr3bXdXLWTzT1C3vk,4038
155
157
  arpakitlib/ar_need_type_util.py,sha256=xq5bbAXJG-93CRVZUcLW0ZdM22rj-ZUW17C5hX_5grg,1699
156
158
  arpakitlib/ar_openai_api_client_util.py,sha256=dHUbfg1sVVCjsNl_fra3iCMEz1bR-Hk9fE-DdYbu7Wc,1215
157
- arpakitlib/ar_operation_execution_util.py,sha256=Zny68a2O6ZxMMW9gOfH5WaNoHFgJtWe0Q62_J16YNd4,13451
159
+ arpakitlib/ar_operation_execution_util.py,sha256=EZMQbjvp3EDFEfUYAdRV7_qtdqIW-qJrmVWpv5plxas,13874
158
160
  arpakitlib/ar_parse_command.py,sha256=-s61xcATIsfw1eV_iD3xi-grsitbGzSDoAFc5V0OFy4,3447
159
161
  arpakitlib/ar_postgresql_util.py,sha256=1AuLjEaa1Lg4pzn-ukCVnDi35Eg1k91APRTqZhIJAdo,945
160
162
  arpakitlib/ar_run_cmd_util.py,sha256=D_rPavKMmWkQtwvZFz-Io5Ak8eSODHkcFeLPzNVC68g,1072
@@ -165,12 +167,12 @@ arpakitlib/ar_sqlalchemy_model_util.py,sha256=TFGOAgpxcnBV_u7yZrLCkf1ldlB4Of8vIR
165
167
  arpakitlib/ar_sqlalchemy_util.py,sha256=Hcg1THrDsSR_-8dsY1CG3NWPEv0FqCbkPXFXLtjlSJ0,4207
166
168
  arpakitlib/ar_ssh_runner_util.py,sha256=jlnss4V4pziBN1rBzoK_lDiWm6nMOqGXfa6NFJSKH-Y,6796
167
169
  arpakitlib/ar_str_util.py,sha256=oCEtQ_TTn35OEz9jCNLjbhopq76JmaifD_iYR-nEJJ4,2142
168
- arpakitlib/ar_type_util.py,sha256=99tp2xEQaAxy1D2AdpJMVIqJa7ycj72o6D8gCoJiVcY,2157
170
+ arpakitlib/ar_type_util.py,sha256=e6Ch8I_B3FMJMj-fiZvTwtGde4hxSa48fGt5g8RlV6I,2301
169
171
  arpakitlib/ar_yookassa_api_client_util.py,sha256=sh4fcUkAkdOetFn9JYoTvjcSXP-M1wU04KEY-ECLfLg,5137
170
172
  arpakitlib/ar_zabbix_api_client_util.py,sha256=Q-VR4MvoZ9aHwZeYZr9G3LwN-ANx1T5KFmF6pvPM-9M,6402
171
- arpakitlib-1.7.43.dist-info/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
172
- arpakitlib-1.7.43.dist-info/METADATA,sha256=VN-d0OUcmbY1Pern6idUVOOZWJiELSNgr-XQ_aHLkk8,2824
173
- arpakitlib-1.7.43.dist-info/NOTICE,sha256=95aUzaPJjVpDsGAsNzVnq7tHTxAl0s5UFznCTkVCau4,763
174
- arpakitlib-1.7.43.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
175
- arpakitlib-1.7.43.dist-info/entry_points.txt,sha256=36xqR3PJFT2kuwjkM_EqoIy0qFUDPKSm_mJaI7emewE,87
176
- arpakitlib-1.7.43.dist-info/RECORD,,
173
+ arpakitlib-1.7.44.dist-info/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
174
+ arpakitlib-1.7.44.dist-info/METADATA,sha256=9Rsxl80OE2FYpC5fZKMwsvGOHbxY3o0t7djohbxNnzs,2824
175
+ arpakitlib-1.7.44.dist-info/NOTICE,sha256=95aUzaPJjVpDsGAsNzVnq7tHTxAl0s5UFznCTkVCau4,763
176
+ arpakitlib-1.7.44.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
177
+ arpakitlib-1.7.44.dist-info/entry_points.txt,sha256=36xqR3PJFT2kuwjkM_EqoIy0qFUDPKSm_mJaI7emewE,87
178
+ arpakitlib-1.7.44.dist-info/RECORD,,