arpakitlib 1.6.91__py3-none-any.whl → 1.6.93__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.
@@ -326,19 +326,20 @@ class BaseTransmittedTgBotData(BaseModel):
326
326
  model_config = ConfigDict(extra="ignore", arbitrary_types_allowed=True, from_attributes=True)
327
327
 
328
328
 
329
- def create_aiogram_tg_bot(*, tg_bot_token: str, tg_bot_proxy_url: str | None = None) -> Bot:
330
- session: AiohttpSession | None = None
329
+ def create_aiogram_tg_bot(*, tg_bot_token: str, tg_bot_proxy_url: str | None = None, **kwargs) -> Bot:
330
+ kwargs["token"] = tg_bot_token
331
+
331
332
  if tg_bot_proxy_url:
332
- session = AiohttpSession(proxy=tg_bot_proxy_url)
333
- tg_bot = Bot(
334
- token=tg_bot_token,
335
- default=DefaultBotProperties(
333
+ kwargs["session"] = AiohttpSession(proxy=tg_bot_proxy_url)
334
+
335
+ if kwargs.get("default") is None:
336
+ kwargs["default"] = DefaultBotProperties(
336
337
  parse_mode=ParseMode.HTML,
337
338
  disable_notification=False,
338
339
  link_preview_is_disabled=True
339
- ),
340
- session=session
341
- )
340
+ )
341
+
342
+ tg_bot = Bot(**kwargs)
342
343
 
343
344
  return tg_bot
344
345
 
@@ -2,16 +2,14 @@
2
2
 
3
3
  import asyncio
4
4
  import logging
5
- from datetime import timedelta
5
+ from typing import Any
6
6
  from urllib.parse import urljoin
7
7
 
8
- import aiohttp
9
- from aiohttp import ClientResponseError, ClientResponse, ClientTimeout
8
+ from aiohttp import ClientResponse
10
9
  from pydantic import ConfigDict, BaseModel
11
10
 
12
11
  from arpakitlib.ar_base64_util import convert_base64_string_to_bytes
13
- from arpakitlib.ar_json_util import safely_transfer_to_json_str
14
- from arpakitlib.ar_sleep_util import async_safe_sleep
12
+ from arpakitlib.ar_http_request_util import async_make_http_request
15
13
 
16
14
  _ARPAKIT_LIB_MODULE_VERSION = "3.0"
17
15
 
@@ -19,9 +17,6 @@ _ARPAKIT_LIB_MODULE_VERSION = "3.0"
19
17
  class BaseAPIModel(BaseModel):
20
18
  model_config = ConfigDict(extra="forbid", arbitrary_types_allowed=True, from_attributes=True)
21
19
 
22
- def simple_json(self) -> str:
23
- return safely_transfer_to_json_str(self.model_dump(mode="json"))
24
-
25
20
 
26
21
  class GenerateImageFromNumberResApiModel(BaseAPIModel):
27
22
  image_filename: str
@@ -39,7 +34,7 @@ class DreamAIAPIClient:
39
34
  self,
40
35
  *,
41
36
  base_url: str = "https://api.dream_ai.arpakit.com/api/v1",
42
- api_key: str | None = None
37
+ api_key: str | None = "1"
43
38
  ):
44
39
  self._logger = logging.getLogger(__name__)
45
40
  self.api_key = api_key
@@ -51,60 +46,39 @@ class DreamAIAPIClient:
51
46
  if api_key is not None:
52
47
  self.headers.update({"apikey": api_key})
53
48
 
54
- async def _async_make_request(self, *, method: str = "GET", url: str, **kwargs) -> ClientResponse:
55
- max_tries = 7
56
- tries = 0
57
-
58
- kwargs["url"] = url
59
- kwargs["method"] = method
60
- kwargs["timeout"] = ClientTimeout(total=timedelta(seconds=15).total_seconds())
61
- kwargs["headers"] = self.headers
62
-
63
- while True:
64
- tries += 1
65
- self._logger.info(f"{method} {url}")
66
- try:
67
- async with aiohttp.ClientSession() as session:
68
- async with session.request(**kwargs) as response:
69
- await response.read()
70
- return response
71
- except Exception as err:
72
- self._logger.warning(f"{tries}/{max_tries} {err} {method} {url}")
73
- if tries >= max_tries:
74
- raise err
75
- await async_safe_sleep(timedelta(seconds=0.1).total_seconds())
76
- continue
49
+ async def _async_make_http_request(
50
+ self,
51
+ *,
52
+ method: str = "GET",
53
+ url: str,
54
+ params: dict[str, Any] | None = None
55
+ ) -> ClientResponse:
56
+ response = await async_make_http_request(
57
+ method=method,
58
+ url=url,
59
+ params=params,
60
+ headers=self.headers,
61
+ )
62
+ response.raise_for_status()
63
+ return response
77
64
 
78
65
  async def healthcheck(self) -> bool:
79
- response = await self._async_make_request(method="GET", url=urljoin(self.base_url, "healthcheck"))
80
- response.raise_for_status()
66
+ response = await self._async_make_http_request(method="GET", url=urljoin(self.base_url, "healthcheck"))
81
67
  json_data = await response.json()
82
- return json_data["data"]["healthcheck"]
68
+ return json_data["data"]["healthcheck"] == "healthcheck"
83
69
 
84
70
  async def is_healthcheck_good(self) -> bool:
85
71
  try:
86
72
  return await self.healthcheck()
87
- except ClientResponseError:
88
- return False
89
-
90
- async def auth_healthcheck(self) -> bool:
91
- response = await self._async_make_request(method="GET", url=urljoin(self.base_url, "auth_healthcheck"))
92
- response.raise_for_status()
93
- json_data = await response.json()
94
- return json_data["data"]["auth_healthcheck"]
95
-
96
- async def is_auth_healthcheck_good(self) -> bool:
97
- try:
98
- return await self.auth_healthcheck()
99
- except ClientResponseError:
73
+ except Exception as exception:
74
+ self._logger.error(exception)
100
75
  return False
101
76
 
102
77
  async def generate_image_from_number(self, *, number: int) -> GenerateImageFromNumberResApiModel:
103
- response = await self._async_make_request(
78
+ response = await self._async_make_http_request(
104
79
  method="GET", url=urljoin(self.base_url, "generate_image_from_number"),
105
80
  params={"number": number}
106
81
  )
107
- response.raise_for_status()
108
82
  json_data = await response.json()
109
83
  return GenerateImageFromNumberResApiModel.model_validate(json_data)
110
84
 
@@ -579,7 +579,8 @@ def create_fastapi_app(
579
579
  shutdown_api_events: list[BaseShutdownAPIEvent] | None = None,
580
580
  transmitted_api_data: BaseTransmittedAPIData = BaseTransmittedAPIData(),
581
581
  main_api_router: APIRouter = simple_api_router_for_testing(),
582
- contact: dict[str, Any] | None = None
582
+ contact: dict[str, Any] | None = None,
583
+ media_dirpath: str | None = None
583
584
  ):
584
585
  if contact is None:
585
586
  contact = _DEFAULT_CONTACT
@@ -603,6 +604,9 @@ def create_fastapi_app(
603
604
  contact=contact
604
605
  )
605
606
 
607
+ if media_dirpath is not None:
608
+ app.mount("/media", StaticFiles(directory=media_dirpath), name="media")
609
+
606
610
  app.state.transmitted_api_data = transmitted_api_data
607
611
 
608
612
  add_cors_to_app(app=app)
@@ -3,6 +3,7 @@
3
3
  import asyncio
4
4
  import logging
5
5
  from datetime import timedelta
6
+ from typing import Any
6
7
 
7
8
  import aiohttp
8
9
  import requests
@@ -20,6 +21,8 @@ def sync_make_http_request(
20
21
  *,
21
22
  method: str = "GET",
22
23
  url: str,
24
+ headers: dict[str, Any] | None = None,
25
+ params: dict[str, Any] | None = None,
23
26
  max_tries_: int = 9,
24
27
  proxy_url_: str | None = None,
25
28
  raise_for_status_: bool = False,
@@ -34,13 +37,17 @@ def sync_make_http_request(
34
37
 
35
38
  kwargs["method"] = method
36
39
  kwargs["url"] = url
37
- if timeout_ is not None:
38
- kwargs["timeout"] = timeout_.total_seconds()
40
+ if headers is not None:
41
+ kwargs["headers"] = headers
42
+ if params is not None:
43
+ kwargs["params"] = params
39
44
  if proxy_url_:
40
45
  kwargs["proxies"] = {
41
46
  "http": proxy_url_,
42
47
  "https": proxy_url_
43
48
  }
49
+ if timeout_ is not None:
50
+ kwargs["timeout"] = timeout_.total_seconds()
44
51
  if "allow_redirects" not in kwargs:
45
52
  kwargs["allow_redirects"] = True
46
53
 
@@ -64,6 +71,8 @@ async def async_make_http_request(
64
71
  *,
65
72
  method: str = "GET",
66
73
  url: str,
74
+ headers: dict[str, Any] | None = None,
75
+ params: dict[str, Any] | None = None,
67
76
  max_tries_: int = 9,
68
77
  proxy_url_: str | None = None,
69
78
  raise_for_status_: bool = False,
@@ -74,6 +83,10 @@ async def async_make_http_request(
74
83
 
75
84
  kwargs["method"] = method
76
85
  kwargs["url"] = url
86
+ if headers is not None:
87
+ kwargs["headers"] = headers
88
+ if params is not None:
89
+ kwargs["params"] = params
77
90
  if timeout_ is not None:
78
91
  kwargs["timeout"] = aiohttp.ClientTimeout(total=timeout_.total_seconds())
79
92
  if "allow_redirects" not in kwargs:
@@ -3,14 +3,14 @@
3
3
  import asyncio
4
4
  import hashlib
5
5
  import logging
6
- from datetime import datetime, timedelta
6
+ from datetime import datetime
7
7
  from typing import Any
8
8
 
9
9
  import pytz
10
+ from aiohttp import ClientResponse
10
11
 
11
12
  from arpakitlib.ar_dict_util import combine_dicts
12
13
  from arpakitlib.ar_http_request_util import async_make_http_request
13
- from arpakitlib.ar_type_util import raise_for_type
14
14
 
15
15
  _ARPAKIT_LIB_MODULE_VERSION = "3.0"
16
16
 
@@ -72,25 +72,22 @@ class ScheduleUUSTAPIClient:
72
72
  def generate_v2_token(self) -> str:
73
73
  return self.generate_new_v2_token(password_first_part=self.api_password_first_part)
74
74
 
75
- async def _async_make_http_get_request(
75
+ async def _async_make_http_request(
76
76
  self,
77
77
  *,
78
+ method: str = "GET",
78
79
  url: str,
79
- params: dict | None = None
80
- ) -> dict[str, Any]:
80
+ params: dict[str, Any] | None = None
81
+ ) -> ClientResponse:
81
82
  response = await async_make_http_request(
83
+ method=method,
82
84
  url=url,
83
- method="GET",
84
85
  params=combine_dicts(params, self.auth_params()),
85
86
  proxy_url_=self.api_proxy_url,
86
- max_tries_=9,
87
- timeout_=timedelta(seconds=15),
88
87
  raise_for_status_=True,
89
88
  headers=self.headers
90
89
  )
91
- json_data = await response.json()
92
- raise_for_type(json_data, dict)
93
- return json_data
90
+ return response
94
91
 
95
92
  async def get_current_week(self) -> int:
96
93
  """
@@ -100,10 +97,11 @@ class ScheduleUUSTAPIClient:
100
97
  }
101
98
  """
102
99
 
103
- json_data = await self._async_make_http_get_request(
100
+ response = await self._async_make_http_request(
104
101
  url=self.api_url,
105
102
  params={"ask": "get_current_week"}
106
103
  )
104
+ json_data = await response.json()
107
105
  return json_data["data"][0]
108
106
 
109
107
  async def get_current_semester(self) -> str:
@@ -114,10 +112,11 @@ class ScheduleUUSTAPIClient:
114
112
  }
115
113
  """
116
114
 
117
- json_data = await self._async_make_http_get_request(
115
+ response = await self._async_make_http_request(
118
116
  url=self.api_url,
119
117
  params={"ask": "get_current_semestr"}
120
118
  )
119
+ json_data = await response.json()
121
120
  return json_data["data"][0]
122
121
 
123
122
  async def get_groups(self) -> list[dict[str, Any]]:
@@ -135,10 +134,11 @@ class ScheduleUUSTAPIClient:
135
134
  }
136
135
  """
137
136
 
138
- json_data = await self._async_make_http_get_request(
137
+ response = await self._async_make_http_request(
139
138
  url=self.api_url,
140
139
  params={"ask": "get_group_list"}
141
140
  )
141
+ json_data = await response.json()
142
142
  return list(json_data["data"].values())
143
143
 
144
144
  async def get_group_lessons(self, group_id: int, semester: str | None = None) -> list[dict[str, Any]]:
@@ -148,27 +148,30 @@ class ScheduleUUSTAPIClient:
148
148
  }
149
149
  if semester is not None:
150
150
  params["semester"] = semester
151
- json_data = await self._async_make_http_get_request(
151
+ response = await self._async_make_http_request(
152
152
  url=self.api_url,
153
153
  params=params
154
154
  )
155
+ json_data = await response.json()
155
156
  return json_data["data"]
156
157
 
157
158
  async def get_teachers(self) -> list[dict[str, Any]]:
158
- json_data = await self._async_make_http_get_request(
159
+ response = await self._async_make_http_request(
159
160
  url=self.api_url,
160
161
  params={"ask": "get_teacher_list"}
161
162
  )
163
+ json_data = await response.json()
162
164
  return list(json_data["data"].values())
163
165
 
164
166
  async def get_teacher_lessons(self, teacher_id: int, semester: str | None = None) -> list[dict[str, Any]]:
165
167
  params = {"ask": "get_teacher_schedule", "id": teacher_id}
166
168
  if semester is not None:
167
169
  params["semester"] = semester
168
- json_data = await self._async_make_http_get_request(
170
+ response = await self._async_make_http_request(
169
171
  url=self.api_url,
170
172
  params=params
171
173
  )
174
+ json_data = await response.json()
172
175
  return json_data["data"]
173
176
 
174
177
  async def check_conn(self):
@@ -42,7 +42,7 @@ class YookassaAPIClient:
42
42
  self.headers = {"Content-Type": "application/json"}
43
43
  self._logger = logging.getLogger(self.__class__.__name__)
44
44
 
45
- def _sync_make_request(
45
+ def _sync_make_http_request(
46
46
  self,
47
47
  *,
48
48
  method: str,
@@ -53,10 +53,10 @@ class YookassaAPIClient:
53
53
  kwargs["headers"] = {}
54
54
  kwargs["headers"] = combine_dicts(self.headers, kwargs["headers"])
55
55
  kwargs["auth"] = (self.shop_id, self.secret_key)
56
- kwargs["timeout_"] = timedelta(seconds=3)
57
56
  return sync_make_http_request(
58
57
  method=method,
59
58
  url=url,
59
+ timeout_=timedelta(seconds=3),
60
60
  **kwargs
61
61
  )
62
62
 
@@ -88,7 +88,7 @@ class YookassaAPIClient:
88
88
  if idempotence_key is None:
89
89
  idempotence_key = str(uuid.uuid4())
90
90
 
91
- response = self._sync_make_request(
91
+ response = self._sync_make_http_request(
92
92
  method="POST",
93
93
  url="https://api.yookassa.ru/v3/payments",
94
94
  headers={"Idempotence-Key": idempotence_key},
@@ -104,7 +104,7 @@ class YookassaAPIClient:
104
104
  def sync_get_payment(self, payment_id: str) -> Optional[dict[str, Any]]:
105
105
  raise_for_type(payment_id, str)
106
106
 
107
- response = self._sync_make_request(
107
+ response = self._sync_make_http_request(
108
108
  method="GET",
109
109
  url=f"https://api.yookassa.ru/v3/payments/{payment_id}",
110
110
  headers=self.headers
@@ -119,15 +119,21 @@ class YookassaAPIClient:
119
119
 
120
120
  return json_data
121
121
 
122
- async def async_make_request(self, method: str, url: str, **kwargs) -> aiohttp.ClientResponse:
122
+ async def _async_make_http_request(
123
+ self,
124
+ *,
125
+ method: str = "GET",
126
+ url: str,
127
+ **kwargs
128
+ ) -> aiohttp.ClientResponse:
123
129
  if "headers" not in kwargs:
124
130
  kwargs["headers"] = {}
125
131
  kwargs["headers"] = combine_dicts(self.headers, kwargs["headers"])
126
132
  kwargs["auth"] = aiohttp.BasicAuth(login=str(self.shop_id), password=self.secret_key)
127
- kwargs["timeout_"] = timedelta(seconds=3)
128
133
  return await async_make_http_request(
129
134
  method=method,
130
135
  url=url,
136
+ timeout_=timedelta(seconds=3),
131
137
  **kwargs
132
138
  )
133
139
 
@@ -157,7 +163,7 @@ class YookassaAPIClient:
157
163
  if idempotence_key is None:
158
164
  idempotence_key = str(uuid.uuid4())
159
165
 
160
- response = await self.async_make_request(
166
+ response = await self._async_make_http_request(
161
167
  method="POST",
162
168
  url="https://api.yookassa.ru/v3/payments",
163
169
  headers={"Idempotence-Key": idempotence_key},
@@ -173,7 +179,7 @@ class YookassaAPIClient:
173
179
  async def async_get_payment(self, payment_id: str) -> Optional[dict[str, Any]]:
174
180
  raise_for_type(payment_id, str)
175
181
 
176
- response = await self.async_make_request(
182
+ response = await self._async_make_http_request(
177
183
  method="GET",
178
184
  url=f"https://api.yookassa.ru/v3/payments/{payment_id}",
179
185
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: arpakitlib
3
- Version: 1.6.91
3
+ Version: 1.6.93
4
4
  Summary: arpakitlib
5
5
  Home-page: https://github.com/ARPAKIT-Company/arpakitlib
6
6
  License: Apache-2.0
@@ -65,7 +65,7 @@ arpakitlib/_arpakit_project_template/src/test_data/make_test_data_4.py,sha256=Wq
65
65
  arpakitlib/_arpakit_project_template/src/test_data/make_test_data_5.py,sha256=ogTmetjQiRa57TKNfVH5A6GFTqBrU1Js0vTok6jlL_A,82
66
66
  arpakitlib/_arpakit_project_template/src/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
67
67
  arpakitlib/ar_additional_model_util.py,sha256=tNzZhZtvtJ1qC6Cn4UnyoEL58HudfpCdQy5ftkCqyik,473
68
- arpakitlib/ar_aiogram_util.py,sha256=AyYNyb_3r5O_ATUTGKbddJOuvgoVq_FFVuqBfQVP5eo,12248
68
+ arpakitlib/ar_aiogram_util.py,sha256=5JPCDZpdBGTE-EIWPRez9amCZAX7XemFIVu5YrQK7Pw,12264
69
69
  arpakitlib/ar_arpakit_lib_module_util.py,sha256=V_mc3Ml73Tzz3arxmwEfIxruKMyrwbe8XZ9FfVDtUXY,5446
70
70
  arpakitlib/ar_arpakit_schedule_uust_api_client_util.py,sha256=SYWWQDohPnw0qpBIu2hEvGZRVdaI4NUUQdEjnMnseo4,18237
71
71
  arpakitlib/ar_arpakitlib_cli.py,sha256=T-YGAL6hRdrT2x3ug33N3GrWLYKSjK25r9SlaiBT7-M,2366
@@ -74,7 +74,7 @@ arpakitlib/ar_base_worker_util.py,sha256=YGoSpkE52QGu_mQdrefThc-pCnhhLEhWchSM3HZ
74
74
  arpakitlib/ar_cache_file_util.py,sha256=Fo2pH-Zqm966KWFBHG_pbiySGZvhIFCYqy7k1weRfJ0,3476
75
75
  arpakitlib/ar_datetime_util.py,sha256=Xe1NiT9oPQzNSG7RVRkhukhbg4i-hhS5ImmV7sPUc8o,971
76
76
  arpakitlib/ar_dict_util.py,sha256=cF5LQJ6tLqyGoEXfDljMDZrikeZoWPw7CgINHIFGvXM,419
77
- arpakitlib/ar_dream_ai_api_client_util.py,sha256=hDPL9wbG4MjIuhn2ed6qepueogANIkt-NddhhiPUv0Y,4029
77
+ arpakitlib/ar_dream_ai_api_client_util.py,sha256=sn-eGYZ_3PRr3jrzpBs8xFB8DMEkq_0R2G0GYCp8Npc,2819
78
78
  arpakitlib/ar_encrypt_decrypt_util.py,sha256=GhWnp7HHkbhwFVVCzO1H07m-5gryr4yjWsXjOaNQm1Y,520
79
79
  arpakitlib/ar_enumeration_util.py,sha256=0DN46uyI0Gu9JPDgso3XPbnre7hZZefYTZwmmE1iYH4,2250
80
80
  arpakitlib/ar_fastapi_static/redoc/redoc.standalone.js,sha256=WCuodUNv1qVh0oW5fjnJDwb5AwOue73jKHdI9z8iGKU,909365
@@ -96,12 +96,12 @@ arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css,sha256=jzPZlgJTFwSdSphk9C
96
96
  arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css.map,sha256=5wq8eXMLU6Zxb45orZPL1zAsBFJReFw6GjYqGpUX3hg,262650
97
97
  arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js,sha256=ffrLZHHEQ_g84A-ul3yWa10Kk09waOAxHcQXPuZuavg,339292
98
98
  arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js.map,sha256=9UhIW7MqCOZPAz1Sl1IKfZUuhWU0p-LJqrnjjJD9Xhc,1159454
99
- arpakitlib/ar_fastapi_util.py,sha256=ArREVRVsfUVELk92NcNf2ZXrjajIQXOsEdHjs8NpKHI,21587
99
+ arpakitlib/ar_fastapi_util.py,sha256=X0kwP4b58gUhIkdXv8ougCGWbbIMB_6Qy-FMcd7mdk0,21744
100
100
  arpakitlib/ar_file_storage_in_dir_util.py,sha256=D3e3rGuHoI6xqAA5mVvEpVVpOWY1jyjNsjj2UhyHRbE,3674
101
101
  arpakitlib/ar_file_util.py,sha256=XiwmeycxoLqtYnGOu5q6IEaJJXilZvtLvsKDKtwqSLY,137
102
102
  arpakitlib/ar_hash_util.py,sha256=Iqy6KBAOLBQMFLWv676boI5sV7atT2B-fb7aCdHOmIQ,340
103
103
  arpakitlib/ar_hello_world.py,sha256=5B3GTgxGIFh_s6ttyB4UKn78ncyA_8blRnDT04l-ELg,158
104
- arpakitlib/ar_http_request_util.py,sha256=hMzu2yedUvwIg6gafSakDjXUEC7WH5iplDGiRW9fgPw,3322
104
+ arpakitlib/ar_http_request_util.py,sha256=aWUIfAvoRwf-2WCg6GoD7Bojj2By1j1unBGRBtShkKQ,3781
105
105
  arpakitlib/ar_ip_util.py,sha256=aEAa1Hvobh9DWX7cmBAPLqnXSTiKe2hRk-WJaiKMaI8,1009
106
106
  arpakitlib/ar_json_db_util.py,sha256=CEyhIU4WuNmX5mqwBVYxUKSdpFelXvWmf_tJ1fuxMSE,7187
107
107
  arpakitlib/ar_json_util.py,sha256=GwHDdrBWiJBHSc07Qe0aN1Gp_uM0pYpTwzU9JAgsKAo,972
@@ -117,7 +117,7 @@ arpakitlib/ar_parse_command.py,sha256=-s61xcATIsfw1eV_iD3xi-grsitbGzSDoAFc5V0OFy
117
117
  arpakitlib/ar_postgresql_util.py,sha256=1AuLjEaa1Lg4pzn-ukCVnDi35Eg1k91APRTqZhIJAdo,945
118
118
  arpakitlib/ar_project_template_util.py,sha256=Yh3tzNYq0rrKc1MY-qsW1Ljhi9ADz8nYXMiPDH-e6PQ,3097
119
119
  arpakitlib/ar_run_cmd_util.py,sha256=D_rPavKMmWkQtwvZFz-Io5Ak8eSODHkcFeLPzNVC68g,1072
120
- arpakitlib/ar_schedule_uust_api_client_util.py,sha256=0X4yACjt8cxMvuoZUq4S0HuVhVUQW5fGmiPcG7vwM8Y,6027
120
+ arpakitlib/ar_schedule_uust_api_client_util.py,sha256=IoJ5a5JhpS7kmh_xXbX5U82tUdpqfD_j5vWKXBEeBRU,6109
121
121
  arpakitlib/ar_settings_util.py,sha256=NvFzpIaQhlMp-BZwttUY_9gamMC5cpJk2Kp2B3BtMug,1296
122
122
  arpakitlib/ar_sleep_util.py,sha256=9ZN4Qo4eZ_q3hjM7vNBQjFRcH-9-sqv3QLSjnxVJE90,1405
123
123
  arpakitlib/ar_sqlalchemy_model_util.py,sha256=ttdgOwQfoHTKqgivBtXoSbJoBCASHDjLEFK5tJ9kNNE,4779
@@ -125,11 +125,11 @@ arpakitlib/ar_sqlalchemy_util.py,sha256=3wejwPbH5VsTZAWvJQ4qQ8tda-PWBmqVThwRyKny
125
125
  arpakitlib/ar_ssh_util.py,sha256=jlnss4V4pziBN1rBzoK_lDiWm6nMOqGXfa6NFJSKH-Y,6796
126
126
  arpakitlib/ar_str_util.py,sha256=AhcdrEm-pXRilCaDWCdTfVkQSy0SnbE52ur43Ltr6cI,2128
127
127
  arpakitlib/ar_type_util.py,sha256=5nDnXL5Oyozlg8XvxMrogsoYiG8_atItg46A0mtv-pk,2025
128
- arpakitlib/ar_yookassa_api_client_util.py,sha256=5GMvu8paByni8buhc1vpHB7n6oXe0gPfj1LSvnyZCrQ,5307
128
+ arpakitlib/ar_yookassa_api_client_util.py,sha256=E5fZjPSjkl1nJ556jHEftM76gRwnIwTQCBj76zDTnGw,5403
129
129
  arpakitlib/ar_zabbix_util.py,sha256=Q-VR4MvoZ9aHwZeYZr9G3LwN-ANx1T5KFmF6pvPM-9M,6402
130
- arpakitlib-1.6.91.dist-info/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
131
- arpakitlib-1.6.91.dist-info/METADATA,sha256=Z8GFQT2jI8crIJHoWwwS4ELu6vlK-Frcq_u1M7_0Vxo,2739
132
- arpakitlib-1.6.91.dist-info/NOTICE,sha256=95aUzaPJjVpDsGAsNzVnq7tHTxAl0s5UFznCTkVCau4,763
133
- arpakitlib-1.6.91.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
134
- arpakitlib-1.6.91.dist-info/entry_points.txt,sha256=VHkTDXDOMrgcNzGfKhEhoOIIz6T8Kkt46hy95Zc1iL0,74
135
- arpakitlib-1.6.91.dist-info/RECORD,,
130
+ arpakitlib-1.6.93.dist-info/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
131
+ arpakitlib-1.6.93.dist-info/METADATA,sha256=oFIYbgZ77_17xzXXGqle4Hr3F20Uhue-pQZfhfWOSiM,2739
132
+ arpakitlib-1.6.93.dist-info/NOTICE,sha256=95aUzaPJjVpDsGAsNzVnq7tHTxAl0s5UFznCTkVCau4,763
133
+ arpakitlib-1.6.93.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
134
+ arpakitlib-1.6.93.dist-info/entry_points.txt,sha256=VHkTDXDOMrgcNzGfKhEhoOIIz6T8Kkt46hy95Zc1iL0,74
135
+ arpakitlib-1.6.93.dist-info/RECORD,,