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.
- arpakitlib/ar_aiogram_util.py +10 -9
- arpakitlib/ar_dream_ai_api_client_util.py +24 -50
- arpakitlib/ar_fastapi_util.py +5 -1
- arpakitlib/ar_http_request_util.py +15 -2
- arpakitlib/ar_schedule_uust_api_client_util.py +20 -17
- arpakitlib/ar_yookassa_api_client_util.py +14 -8
- {arpakitlib-1.6.91.dist-info → arpakitlib-1.6.93.dist-info}/METADATA +1 -1
- {arpakitlib-1.6.91.dist-info → arpakitlib-1.6.93.dist-info}/RECORD +12 -12
- {arpakitlib-1.6.91.dist-info → arpakitlib-1.6.93.dist-info}/LICENSE +0 -0
- {arpakitlib-1.6.91.dist-info → arpakitlib-1.6.93.dist-info}/NOTICE +0 -0
- {arpakitlib-1.6.91.dist-info → arpakitlib-1.6.93.dist-info}/WHEEL +0 -0
- {arpakitlib-1.6.91.dist-info → arpakitlib-1.6.93.dist-info}/entry_points.txt +0 -0
arpakitlib/ar_aiogram_util.py
CHANGED
@@ -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
|
-
|
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
|
-
|
334
|
-
|
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
|
-
|
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
|
5
|
+
from typing import Any
|
6
6
|
from urllib.parse import urljoin
|
7
7
|
|
8
|
-
import
|
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.
|
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 =
|
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
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
self.
|
66
|
-
|
67
|
-
|
68
|
-
|
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.
|
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
|
88
|
-
|
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.
|
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
|
|
arpakitlib/ar_fastapi_util.py
CHANGED
@@ -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
|
38
|
-
kwargs["
|
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
|
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
|
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
|
-
) ->
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
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.
|
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.
|
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
|
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.
|
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.
|
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
|
)
|
@@ -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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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.
|
131
|
-
arpakitlib-1.6.
|
132
|
-
arpakitlib-1.6.
|
133
|
-
arpakitlib-1.6.
|
134
|
-
arpakitlib-1.6.
|
135
|
-
arpakitlib-1.6.
|
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,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|