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.
Files changed (135) hide show
  1. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/PKG-INFO +1 -1
  2. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_aiogram_util.py +10 -9
  3. arpakitlib-1.6.92/arpakitlib/ar_dream_ai_api_client_util.py +92 -0
  4. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_fastapi_util.py +5 -1
  5. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_schedule_uust_api_client_util.py +2 -2
  6. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/pyproject.toml +1 -1
  7. arpakitlib-1.6.91/arpakitlib/ar_dream_ai_api_client_util.py +0 -122
  8. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/LICENSE +0 -0
  9. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/NOTICE +0 -0
  10. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/README.md +0 -0
  11. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/__init__.py +0 -0
  12. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/.env_example +0 -0
  13. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/.gitignore +0 -0
  14. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/.python-version +0 -0
  15. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/AUTHOR.md +0 -0
  16. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/LICENSE +0 -0
  17. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/NOTICE +0 -0
  18. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/README.md +0 -0
  19. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/__init__.py +0 -0
  20. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/beutify_json.py +0 -0
  21. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/check_logging.py +0 -0
  22. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/check_settings.py +0 -0
  23. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/docker_ps.sh +0 -0
  24. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/generate_env_example.py +0 -0
  25. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/git_commit.sh +0 -0
  26. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/git_push_arpakit_company_github_1.sh +0 -0
  27. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/git_push_arpakit_company_gitlab_1.sh +0 -0
  28. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/git_remote_v.sh +0 -0
  29. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/git_set_arpakit_company_origin.sh +0 -0
  30. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/git_status.sh +0 -0
  31. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/hello_world.py +0 -0
  32. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/note/__init__.py +0 -0
  33. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/note/note_1.txt +0 -0
  34. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/note/note_2.txt +0 -0
  35. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/note/note_3.txt +0 -0
  36. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/note/note_4.txt +0 -0
  37. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/note/note_5.txt +0 -0
  38. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/poetry_add_plugin_export.sh +0 -0
  39. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/poetry_check.sh +0 -0
  40. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/poetry_clear_cache.sh +0 -0
  41. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/poetry_config_virtualenvs_in_project_true.sh +0 -0
  42. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/poetry_generate_requirements.txt.sh +0 -0
  43. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/poetry_install.sh +0 -0
  44. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/poetry_lock.sh +0 -0
  45. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/poetry_remove_and_add_arpakitlib.sh +0 -0
  46. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/poetry_show.sh +0 -0
  47. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/poetry_update.sh +0 -0
  48. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/poetry_update_arpakitlib.sh +0 -0
  49. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/sandbox/__init__.py +0 -0
  50. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_1.py +0 -0
  51. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_2.py +0 -0
  52. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_3.py +0 -0
  53. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_4.py +0 -0
  54. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_5.py +0 -0
  55. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_6.py +0 -0
  56. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_7.py +0 -0
  57. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_8.sh +0 -0
  58. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_9.sh +0 -0
  59. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/pyproject.toml.example +0 -0
  60. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/resource/__init__.py +0 -0
  61. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/resource/static/__init__.py +0 -0
  62. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/src/__init__.py +0 -0
  63. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/src/additional_model/__init__.py +0 -0
  64. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/src/additional_model/additional_model.py +0 -0
  65. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/src/business_service/__init__.py +0 -0
  66. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/src/core/__init__.py +0 -0
  67. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/src/core/const.py +0 -0
  68. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/src/core/settings.py +0 -0
  69. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/src/core/util.py +0 -0
  70. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/src/test_data/__init__.py +0 -0
  71. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_1.py +0 -0
  72. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_2.py +0 -0
  73. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_3.py +0 -0
  74. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_4.py +0 -0
  75. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_5.py +0 -0
  76. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/_arpakit_project_template/src/util/__init__.py +0 -0
  77. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_additional_model_util.py +0 -0
  78. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_arpakit_lib_module_util.py +0 -0
  79. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_arpakit_schedule_uust_api_client_util.py +0 -0
  80. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_arpakitlib_cli.py +0 -0
  81. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_base64_util.py +0 -0
  82. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_base_worker_util.py +0 -0
  83. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_cache_file_util.py +0 -0
  84. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_datetime_util.py +0 -0
  85. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_dict_util.py +0 -0
  86. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_encrypt_decrypt_util.py +0 -0
  87. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_enumeration_util.py +0 -0
  88. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_fastapi_static/redoc/redoc.standalone.js +0 -0
  89. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_fastapi_static/swagger-ui/favicon-16x16.png +0 -0
  90. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_fastapi_static/swagger-ui/favicon-32x32.png +0 -0
  91. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_fastapi_static/swagger-ui/index.css +0 -0
  92. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_fastapi_static/swagger-ui/index.html +0 -0
  93. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_fastapi_static/swagger-ui/oauth2-redirect.html +0 -0
  94. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-initializer.js +0 -0
  95. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-bundle.js +0 -0
  96. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-bundle.js.map +0 -0
  97. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle-core.js +0 -0
  98. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle-core.js.map +0 -0
  99. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle.js +0 -0
  100. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle.js.map +0 -0
  101. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-standalone-preset.js +0 -0
  102. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-standalone-preset.js.map +0 -0
  103. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css +0 -0
  104. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css.map +0 -0
  105. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js +0 -0
  106. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js.map +0 -0
  107. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_file_storage_in_dir_util.py +0 -0
  108. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_file_util.py +0 -0
  109. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_hash_util.py +0 -0
  110. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_hello_world.py +0 -0
  111. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_http_request_util.py +0 -0
  112. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_ip_util.py +0 -0
  113. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_json_db_util.py +0 -0
  114. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_json_util.py +0 -0
  115. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_jwt_util.py +0 -0
  116. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_list_of_dicts_to_xlsx.py +0 -0
  117. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_list_util.py +0 -0
  118. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_logging_util.py +0 -0
  119. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_mongodb_util.py +0 -0
  120. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_need_type_util.py +0 -0
  121. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_openai_util.py +0 -0
  122. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_operation_execution_util.py +0 -0
  123. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_parse_command.py +0 -0
  124. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_postgresql_util.py +0 -0
  125. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_project_template_util.py +0 -0
  126. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_run_cmd_util.py +0 -0
  127. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_settings_util.py +0 -0
  128. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_sleep_util.py +0 -0
  129. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_sqlalchemy_model_util.py +0 -0
  130. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_sqlalchemy_util.py +0 -0
  131. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_ssh_util.py +0 -0
  132. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_str_util.py +0 -0
  133. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_type_util.py +0 -0
  134. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_yookassa_api_client_util.py +0 -0
  135. {arpakitlib-1.6.91 → arpakitlib-1.6.92}/arpakitlib/ar_zabbix_util.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: arpakitlib
3
- Version: 1.6.91
3
+ Version: 1.6.92
4
4
  Summary: arpakitlib
5
5
  Home-page: https://github.com/ARPAKIT-Company/arpakitlib
6
6
  License: Apache-2.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
- 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
 
@@ -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,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "arpakitlib"
3
- version = "1.6.91"
3
+ version = "1.6.92"
4
4
  description = "arpakitlib"
5
5
  authors = ["arpakit <arpakit@gmail.com>", "arpakit_support <support@arpakit.com>"]
6
6
  license = "Apache License 2.0"
@@ -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