arpakitlib 1.6.91__tar.gz → 1.6.93__tar.gz
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-1.6.91 → arpakitlib-1.6.93}/PKG-INFO +1 -1
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_aiogram_util.py +10 -9
- arpakitlib-1.6.93/arpakitlib/ar_dream_ai_api_client_util.py +96 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_fastapi_util.py +5 -1
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_http_request_util.py +15 -2
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_schedule_uust_api_client_util.py +20 -17
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_yookassa_api_client_util.py +14 -8
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/pyproject.toml +1 -1
- arpakitlib-1.6.91/arpakitlib/ar_dream_ai_api_client_util.py +0 -122
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/LICENSE +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/NOTICE +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/README.md +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/__init__.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/.env_example +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/.gitignore +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/.python-version +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/AUTHOR.md +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/LICENSE +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/NOTICE +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/README.md +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/__init__.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/beutify_json.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/check_logging.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/check_settings.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/docker_ps.sh +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/generate_env_example.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/git_commit.sh +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/git_push_arpakit_company_github_1.sh +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/git_push_arpakit_company_gitlab_1.sh +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/git_remote_v.sh +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/git_set_arpakit_company_origin.sh +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/git_status.sh +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/hello_world.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/note/__init__.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/note/note_1.txt +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/note/note_2.txt +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/note/note_3.txt +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/note/note_4.txt +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/note/note_5.txt +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/poetry_add_plugin_export.sh +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/poetry_check.sh +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/poetry_clear_cache.sh +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/poetry_config_virtualenvs_in_project_true.sh +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/poetry_generate_requirements.txt.sh +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/poetry_install.sh +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/poetry_lock.sh +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/poetry_remove_and_add_arpakitlib.sh +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/poetry_show.sh +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/poetry_update.sh +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/poetry_update_arpakitlib.sh +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/sandbox/__init__.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_1.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_2.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_3.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_4.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_5.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_6.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_7.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_8.sh +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_9.sh +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/pyproject.toml.example +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/resource/__init__.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/resource/static/__init__.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/src/__init__.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/src/additional_model/__init__.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/src/additional_model/additional_model.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/src/business_service/__init__.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/src/core/__init__.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/src/core/const.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/src/core/settings.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/src/core/util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/src/test_data/__init__.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_1.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_2.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_3.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_4.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_5.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/src/util/__init__.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_additional_model_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_arpakit_lib_module_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_arpakit_schedule_uust_api_client_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_arpakitlib_cli.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_base64_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_base_worker_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_cache_file_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_datetime_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_dict_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_encrypt_decrypt_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_enumeration_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_fastapi_static/redoc/redoc.standalone.js +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_fastapi_static/swagger-ui/favicon-16x16.png +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_fastapi_static/swagger-ui/favicon-32x32.png +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_fastapi_static/swagger-ui/index.css +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_fastapi_static/swagger-ui/index.html +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_fastapi_static/swagger-ui/oauth2-redirect.html +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-initializer.js +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-bundle.js +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-bundle.js.map +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle-core.js +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle-core.js.map +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle.js +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle.js.map +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-standalone-preset.js +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-standalone-preset.js.map +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css.map +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js.map +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_file_storage_in_dir_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_file_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_hash_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_hello_world.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_ip_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_json_db_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_json_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_jwt_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_list_of_dicts_to_xlsx.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_list_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_logging_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_mongodb_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_need_type_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_openai_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_operation_execution_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_parse_command.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_postgresql_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_project_template_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_run_cmd_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_settings_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_sleep_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_sqlalchemy_model_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_sqlalchemy_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_ssh_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_str_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_type_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_zabbix_util.py +0 -0
@@ -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
|
|
@@ -0,0 +1,96 @@
|
|
1
|
+
# arpakit
|
2
|
+
|
3
|
+
import asyncio
|
4
|
+
import logging
|
5
|
+
from typing import Any
|
6
|
+
from urllib.parse import urljoin
|
7
|
+
|
8
|
+
from aiohttp import ClientResponse
|
9
|
+
from pydantic import ConfigDict, BaseModel
|
10
|
+
|
11
|
+
from arpakitlib.ar_base64_util import convert_base64_string_to_bytes
|
12
|
+
from arpakitlib.ar_http_request_util import async_make_http_request
|
13
|
+
|
14
|
+
_ARPAKIT_LIB_MODULE_VERSION = "3.0"
|
15
|
+
|
16
|
+
|
17
|
+
class BaseAPIModel(BaseModel):
|
18
|
+
model_config = ConfigDict(extra="forbid", arbitrary_types_allowed=True, from_attributes=True)
|
19
|
+
|
20
|
+
|
21
|
+
class GenerateImageFromNumberResApiModel(BaseAPIModel):
|
22
|
+
image_filename: str
|
23
|
+
image_url: str
|
24
|
+
image_base64: str
|
25
|
+
|
26
|
+
def save_file(self, filepath: str):
|
27
|
+
with open(filepath, mode="wb") as f:
|
28
|
+
f.write(convert_base64_string_to_bytes(base64_string=self.image_base64))
|
29
|
+
return filepath
|
30
|
+
|
31
|
+
|
32
|
+
class DreamAIAPIClient:
|
33
|
+
def __init__(
|
34
|
+
self,
|
35
|
+
*,
|
36
|
+
base_url: str = "https://api.dream_ai.arpakit.com/api/v1",
|
37
|
+
api_key: str | None = "1"
|
38
|
+
):
|
39
|
+
self._logger = logging.getLogger(__name__)
|
40
|
+
self.api_key = api_key
|
41
|
+
base_url = base_url.strip()
|
42
|
+
if not base_url.endswith("/"):
|
43
|
+
base_url += "/"
|
44
|
+
self.base_url = base_url
|
45
|
+
self.headers = {"Content-Type": "application/json"}
|
46
|
+
if api_key is not None:
|
47
|
+
self.headers.update({"apikey": api_key})
|
48
|
+
|
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
|
64
|
+
|
65
|
+
async def healthcheck(self) -> bool:
|
66
|
+
response = await self._async_make_http_request(method="GET", url=urljoin(self.base_url, "healthcheck"))
|
67
|
+
json_data = await response.json()
|
68
|
+
return json_data["data"]["healthcheck"] == "healthcheck"
|
69
|
+
|
70
|
+
async def is_healthcheck_good(self) -> bool:
|
71
|
+
try:
|
72
|
+
return await self.healthcheck()
|
73
|
+
except Exception as exception:
|
74
|
+
self._logger.error(exception)
|
75
|
+
return False
|
76
|
+
|
77
|
+
async def generate_image_from_number(self, *, number: int) -> GenerateImageFromNumberResApiModel:
|
78
|
+
response = await self._async_make_http_request(
|
79
|
+
method="GET", url=urljoin(self.base_url, "generate_image_from_number"),
|
80
|
+
params={"number": number}
|
81
|
+
)
|
82
|
+
json_data = await response.json()
|
83
|
+
return GenerateImageFromNumberResApiModel.model_validate(json_data)
|
84
|
+
|
85
|
+
|
86
|
+
def __example():
|
87
|
+
pass
|
88
|
+
|
89
|
+
|
90
|
+
async def __async_example():
|
91
|
+
pass
|
92
|
+
|
93
|
+
|
94
|
+
if __name__ == '__main__':
|
95
|
+
__example()
|
96
|
+
asyncio.run(__async_example())
|
@@ -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
|
)
|
@@ -1,122 +0,0 @@
|
|
1
|
-
# arpakit
|
2
|
-
|
3
|
-
import asyncio
|
4
|
-
import logging
|
5
|
-
from datetime import timedelta
|
6
|
-
from urllib.parse import urljoin
|
7
|
-
|
8
|
-
import aiohttp
|
9
|
-
from aiohttp import ClientResponseError, ClientResponse, ClientTimeout
|
10
|
-
from pydantic import ConfigDict, BaseModel
|
11
|
-
|
12
|
-
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
|
15
|
-
|
16
|
-
_ARPAKIT_LIB_MODULE_VERSION = "3.0"
|
17
|
-
|
18
|
-
|
19
|
-
class BaseAPIModel(BaseModel):
|
20
|
-
model_config = ConfigDict(extra="forbid", arbitrary_types_allowed=True, from_attributes=True)
|
21
|
-
|
22
|
-
def simple_json(self) -> str:
|
23
|
-
return safely_transfer_to_json_str(self.model_dump(mode="json"))
|
24
|
-
|
25
|
-
|
26
|
-
class GenerateImageFromNumberResApiModel(BaseAPIModel):
|
27
|
-
image_filename: str
|
28
|
-
image_url: str
|
29
|
-
image_base64: str
|
30
|
-
|
31
|
-
def save_file(self, filepath: str):
|
32
|
-
with open(filepath, mode="wb") as f:
|
33
|
-
f.write(convert_base64_string_to_bytes(base64_string=self.image_base64))
|
34
|
-
return filepath
|
35
|
-
|
36
|
-
|
37
|
-
class DreamAIAPIClient:
|
38
|
-
def __init__(
|
39
|
-
self,
|
40
|
-
*,
|
41
|
-
base_url: str = "https://api.dream_ai.arpakit.com/api/v1",
|
42
|
-
api_key: str | None = None
|
43
|
-
):
|
44
|
-
self._logger = logging.getLogger(__name__)
|
45
|
-
self.api_key = api_key
|
46
|
-
base_url = base_url.strip()
|
47
|
-
if not base_url.endswith("/"):
|
48
|
-
base_url += "/"
|
49
|
-
self.base_url = base_url
|
50
|
-
self.headers = {"Content-Type": "application/json"}
|
51
|
-
if api_key is not None:
|
52
|
-
self.headers.update({"apikey": api_key})
|
53
|
-
|
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
|
77
|
-
|
78
|
-
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()
|
81
|
-
json_data = await response.json()
|
82
|
-
return json_data["data"]["healthcheck"]
|
83
|
-
|
84
|
-
async def is_healthcheck_good(self) -> bool:
|
85
|
-
try:
|
86
|
-
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:
|
100
|
-
return False
|
101
|
-
|
102
|
-
async def generate_image_from_number(self, *, number: int) -> GenerateImageFromNumberResApiModel:
|
103
|
-
response = await self._async_make_request(
|
104
|
-
method="GET", url=urljoin(self.base_url, "generate_image_from_number"),
|
105
|
-
params={"number": number}
|
106
|
-
)
|
107
|
-
response.raise_for_status()
|
108
|
-
json_data = await response.json()
|
109
|
-
return GenerateImageFromNumberResApiModel.model_validate(json_data)
|
110
|
-
|
111
|
-
|
112
|
-
def __example():
|
113
|
-
pass
|
114
|
-
|
115
|
-
|
116
|
-
async def __async_example():
|
117
|
-
pass
|
118
|
-
|
119
|
-
|
120
|
-
if __name__ == '__main__':
|
121
|
-
__example()
|
122
|
-
asyncio.run(__async_example())
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/.python-version
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/__init__.py
RENAMED
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/beutify_json.py
RENAMED
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/check_logging.py
RENAMED
File without changes
|
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/docker_ps.sh
RENAMED
File without changes
|
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/git_commit.sh
RENAMED
File without changes
|
File without changes
|
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/git_remote_v.sh
RENAMED
File without changes
|
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/git_status.sh
RENAMED
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/hello_world.py
RENAMED
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/note/__init__.py
RENAMED
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/note/note_1.txt
RENAMED
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/note/note_2.txt
RENAMED
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/note/note_3.txt
RENAMED
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/note/note_4.txt
RENAMED
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/note/note_5.txt
RENAMED
File without changes
|
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/poetry_check.sh
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/poetry_lock.sh
RENAMED
File without changes
|
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/poetry_show.sh
RENAMED
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/manage/poetry_update.sh
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/pyproject.toml.example
RENAMED
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/resource/__init__.py
RENAMED
File without changes
|
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/src/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/src/core/__init__.py
RENAMED
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/src/core/const.py
RENAMED
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/src/core/settings.py
RENAMED
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/src/core/util.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/_arpakit_project_template/src/util/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_arpakit_schedule_uust_api_client_util.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_fastapi_static/redoc/redoc.standalone.js
RENAMED
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_fastapi_static/swagger-ui/favicon-16x16.png
RENAMED
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_fastapi_static/swagger-ui/favicon-32x32.png
RENAMED
File without changes
|
File without changes
|
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_fastapi_static/swagger-ui/oauth2-redirect.html
RENAMED
File without changes
|
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-bundle.js
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css
RENAMED
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css.map
RENAMED
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js
RENAMED
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.93}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js.map
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|