arpakitlib 1.6.91__tar.gz → 1.6.92__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.92}/PKG-INFO +1 -1
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_aiogram_util.py +10 -9
- arpakitlib-1.6.92/arpakitlib/ar_dream_ai_api_client_util.py +92 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_fastapi_util.py +5 -1
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_schedule_uust_api_client_util.py +2 -2
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/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.92}/LICENSE +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/NOTICE +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/README.md +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/__init__.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/.env_example +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/.gitignore +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/.python-version +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/AUTHOR.md +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/LICENSE +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/NOTICE +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/README.md +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/__init__.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/beutify_json.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/check_logging.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/check_settings.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/docker_ps.sh +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/generate_env_example.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/git_commit.sh +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/git_push_arpakit_company_github_1.sh +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/git_push_arpakit_company_gitlab_1.sh +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/git_remote_v.sh +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/git_set_arpakit_company_origin.sh +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/git_status.sh +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/hello_world.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/note/__init__.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/note/note_1.txt +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/note/note_2.txt +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/note/note_3.txt +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/note/note_4.txt +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/note/note_5.txt +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/poetry_add_plugin_export.sh +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/poetry_check.sh +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/poetry_clear_cache.sh +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/poetry_config_virtualenvs_in_project_true.sh +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/poetry_generate_requirements.txt.sh +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/poetry_install.sh +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/poetry_lock.sh +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/poetry_remove_and_add_arpakitlib.sh +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/poetry_show.sh +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/poetry_update.sh +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/poetry_update_arpakitlib.sh +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/sandbox/__init__.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_1.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_2.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_3.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_4.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_5.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_6.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_7.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_8.sh +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_9.sh +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/pyproject.toml.example +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/resource/__init__.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/resource/static/__init__.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/src/__init__.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/src/additional_model/__init__.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/src/additional_model/additional_model.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/src/business_service/__init__.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/src/core/__init__.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/src/core/const.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/src/core/settings.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/src/core/util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/src/test_data/__init__.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_1.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_2.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_3.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_4.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_5.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/src/util/__init__.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_additional_model_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_arpakit_lib_module_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_arpakit_schedule_uust_api_client_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_arpakitlib_cli.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_base64_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_base_worker_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_cache_file_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_datetime_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_dict_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_encrypt_decrypt_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_enumeration_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_fastapi_static/redoc/redoc.standalone.js +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_fastapi_static/swagger-ui/favicon-16x16.png +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_fastapi_static/swagger-ui/favicon-32x32.png +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_fastapi_static/swagger-ui/index.css +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_fastapi_static/swagger-ui/index.html +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_fastapi_static/swagger-ui/oauth2-redirect.html +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-initializer.js +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-bundle.js +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-bundle.js.map +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle-core.js +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle-core.js.map +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle.js +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle.js.map +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-standalone-preset.js +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-standalone-preset.js.map +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css.map +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js.map +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_file_storage_in_dir_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_file_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_hash_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_hello_world.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_http_request_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_ip_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_json_db_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_json_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_jwt_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_list_of_dicts_to_xlsx.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_list_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_logging_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_mongodb_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_need_type_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_openai_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_operation_execution_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_parse_command.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_postgresql_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_project_template_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_run_cmd_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_settings_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_sleep_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_sqlalchemy_model_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_sqlalchemy_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_ssh_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_str_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_type_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_yookassa_api_client_util.py +0 -0
- {arpakitlib-1.6.91 → arpakitlib-1.6.92}/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,92 @@
|
|
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, *, method: str = "GET", url: str, params: dict[str, Any] | None = None
|
51
|
+
) -> ClientResponse:
|
52
|
+
response = await async_make_http_request(
|
53
|
+
method=method,
|
54
|
+
url=url,
|
55
|
+
headers=self.headers,
|
56
|
+
params=params
|
57
|
+
)
|
58
|
+
response.raise_for_status()
|
59
|
+
return response
|
60
|
+
|
61
|
+
async def healthcheck(self) -> bool:
|
62
|
+
response = await self._async_make_http_request(method="GET", url=urljoin(self.base_url, "healthcheck"))
|
63
|
+
json_data = await response.json()
|
64
|
+
return json_data["data"]["healthcheck"] == "healthcheck"
|
65
|
+
|
66
|
+
async def is_healthcheck_good(self) -> bool:
|
67
|
+
try:
|
68
|
+
return await self.healthcheck()
|
69
|
+
except Exception as exception:
|
70
|
+
self._logger.error(exception)
|
71
|
+
return False
|
72
|
+
|
73
|
+
async def generate_image_from_number(self, *, number: int) -> GenerateImageFromNumberResApiModel:
|
74
|
+
response = await self._async_make_http_request(
|
75
|
+
method="GET", url=urljoin(self.base_url, "generate_image_from_number"),
|
76
|
+
params={"number": number}
|
77
|
+
)
|
78
|
+
json_data = await response.json()
|
79
|
+
return GenerateImageFromNumberResApiModel.model_validate(json_data)
|
80
|
+
|
81
|
+
|
82
|
+
def __example():
|
83
|
+
pass
|
84
|
+
|
85
|
+
|
86
|
+
async def __async_example():
|
87
|
+
pass
|
88
|
+
|
89
|
+
|
90
|
+
if __name__ == '__main__':
|
91
|
+
__example()
|
92
|
+
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)
|
@@ -76,11 +76,11 @@ class ScheduleUUSTAPIClient:
|
|
76
76
|
self,
|
77
77
|
*,
|
78
78
|
url: str,
|
79
|
-
params: dict | None = None
|
79
|
+
params: dict[str, Any] | None = None
|
80
80
|
) -> dict[str, Any]:
|
81
81
|
response = await async_make_http_request(
|
82
|
-
url=url,
|
83
82
|
method="GET",
|
83
|
+
url=url,
|
84
84
|
params=combine_dicts(params, self.auth_params()),
|
85
85
|
proxy_url_=self.api_proxy_url,
|
86
86
|
max_tries_=9,
|
@@ -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.92}/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.92}/arpakitlib/_arpakit_project_template/manage/__init__.py
RENAMED
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/beutify_json.py
RENAMED
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/check_logging.py
RENAMED
File without changes
|
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/docker_ps.sh
RENAMED
File without changes
|
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.92}/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.92}/arpakitlib/_arpakit_project_template/manage/git_remote_v.sh
RENAMED
File without changes
|
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/git_status.sh
RENAMED
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/hello_world.py
RENAMED
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/note/__init__.py
RENAMED
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/note/note_1.txt
RENAMED
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/note/note_2.txt
RENAMED
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/note/note_3.txt
RENAMED
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/note/note_4.txt
RENAMED
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/note/note_5.txt
RENAMED
File without changes
|
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.92}/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.92}/arpakitlib/_arpakit_project_template/manage/poetry_lock.sh
RENAMED
File without changes
|
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/poetry_show.sh
RENAMED
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.92}/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.92}/arpakitlib/_arpakit_project_template/pyproject.toml.example
RENAMED
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/resource/__init__.py
RENAMED
File without changes
|
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.92}/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.92}/arpakitlib/_arpakit_project_template/src/core/__init__.py
RENAMED
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/src/core/const.py
RENAMED
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/src/core/settings.py
RENAMED
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.92}/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.92}/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.92}/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.92}/arpakitlib/ar_fastapi_static/redoc/redoc.standalone.js
RENAMED
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_fastapi_static/swagger-ui/favicon-16x16.png
RENAMED
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.92}/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.92}/arpakitlib/ar_fastapi_static/swagger-ui/oauth2-redirect.html
RENAMED
File without changes
|
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.92}/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.92}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css
RENAMED
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css.map
RENAMED
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js
RENAMED
File without changes
|
{arpakitlib-1.6.91 → arpakitlib-1.6.92}/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
|
File without changes
|
File without changes
|