arpakitlib 1.7.256__py3-none-any.whl → 1.8.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (281) hide show
  1. arpakitlib/{_arpakit_project_template → _arpakit_project_template_v1}/README.md +1 -1
  2. arpakitlib/{_arpakit_project_template/src → _arpakit_project_template_v1}/admin1/add_admin_in_app.py +6 -12
  3. arpakitlib/{_arpakit_project_template/src → _arpakit_project_template_v1}/admin1/admin_auth.py +2 -6
  4. arpakitlib/_arpakit_project_template_v1/admin1/model_view.py +95 -0
  5. arpakitlib/{_arpakit_project_template → _arpakit_project_template_v1}/alembic/env.py +3 -3
  6. arpakitlib/_arpakit_project_template_v1/api/asgi.py +3 -0
  7. arpakitlib/_arpakit_project_template_v1/api/auth.py +244 -0
  8. arpakitlib/_arpakit_project_template_v1/api/const.py +18 -0
  9. arpakitlib/_arpakit_project_template_v1/api/create_api_app.py +72 -0
  10. arpakitlib/_arpakit_project_template_v1/api/event.py +69 -0
  11. arpakitlib/_arpakit_project_template_v1/api/exception.py +39 -0
  12. arpakitlib/_arpakit_project_template_v1/api/exception_handler.py +297 -0
  13. arpakitlib/_arpakit_project_template_v1/api/openapi_ui.py +28 -0
  14. arpakitlib/_arpakit_project_template_v1/api/response.py +27 -0
  15. arpakitlib/{_arpakit_project_template/src → _arpakit_project_template_v1}/api/router/main_router.py +3 -2
  16. arpakitlib/_arpakit_project_template_v1/api/router/v1/arpakitlib_.py +27 -0
  17. arpakitlib/_arpakit_project_template_v1/api/router/v1/check_auth.py +30 -0
  18. arpakitlib/_arpakit_project_template_v1/api/router/v1/get_errors_info.py +24 -0
  19. arpakitlib/_arpakit_project_template_v1/api/router/v1/healthcheck.py +21 -0
  20. arpakitlib/_arpakit_project_template_v1/api/router/v1/main_router.py +54 -0
  21. arpakitlib/_arpakit_project_template_v1/api/router/v1/now_utc_datetime.py +21 -0
  22. arpakitlib/_arpakit_project_template_v1/api/router/v1/raise_fake_error.py +21 -0
  23. arpakitlib/_arpakit_project_template_v1/api/schema/base_schema.py +26 -0
  24. arpakitlib/_arpakit_project_template_v1/api/schema/common/in_.py +5 -0
  25. arpakitlib/_arpakit_project_template_v1/api/schema/common/out.py +60 -0
  26. arpakitlib/_arpakit_project_template_v1/api/schema/v1/in_.py +5 -0
  27. arpakitlib/_arpakit_project_template_v1/api/schema/v1/out.py +53 -0
  28. arpakitlib/_arpakit_project_template_v1/api/transmitted_api_data.py +66 -0
  29. arpakitlib/_arpakit_project_template_v1/arpakitlib_project_template.json +3 -0
  30. arpakitlib/{_arpakit_project_template/src → _arpakit_project_template_v1}/business_service/hello_world.py +1 -1
  31. arpakitlib/_arpakit_project_template_v1/business_service/remove_operations.py +51 -0
  32. arpakitlib/_arpakit_project_template_v1/command/alembic_history.sh +2 -0
  33. arpakitlib/_arpakit_project_template_v1/command/alembic_revision_autogenerate.sh +2 -0
  34. arpakitlib/{_arpakit_project_template/manage/json_beautify.py → _arpakit_project_template_v1/command/beautify_json.py} +2 -2
  35. arpakitlib/{_arpakit_project_template/src/core/_check_logging.py → _arpakit_project_template_v1/command/check_logging.py} +3 -3
  36. arpakitlib/_arpakit_project_template_v1/command/check_sqlalchemy_db.py +11 -0
  37. arpakitlib/_arpakit_project_template_v1/command/drop_json_db.py +13 -0
  38. arpakitlib/_arpakit_project_template_v1/command/drop_sqlalchemy_db.py +14 -0
  39. arpakitlib/{_arpakit_project_template/src/core/_generate_settings_env_example.py → _arpakit_project_template_v1/command/generate_settings_env_example.py} +4 -4
  40. arpakitlib/{_arpakit_project_template/manage → _arpakit_project_template_v1/command}/hello_world.py +2 -2
  41. arpakitlib/_arpakit_project_template_v1/command/init_json_db.py +11 -0
  42. arpakitlib/_arpakit_project_template_v1/command/init_sqlalchemy_db.py +11 -0
  43. arpakitlib/_arpakit_project_template_v1/command/reinit_json_db.py +13 -0
  44. arpakitlib/_arpakit_project_template_v1/command/reinit_sqlalchemy_db.py +13 -0
  45. arpakitlib/_arpakit_project_template_v1/command/remove_operations.py +13 -0
  46. arpakitlib/_arpakit_project_template_v1/command/remove_story_logs.py +16 -0
  47. arpakitlib/_arpakit_project_template_v1/command/rm_all_records_in_json_db.py +13 -0
  48. arpakitlib/{_arpakit_project_template/src/core/_show_settings.py → _arpakit_project_template_v1/command/show_settings.py} +3 -3
  49. arpakitlib/{_arpakit_project_template/src/api/_start_api_with_reload.py → _arpakit_project_template_v1/command/start_api_with_reload.py} +5 -5
  50. arpakitlib/{_arpakit_project_template/src/api/_start_api_without_reload.py → _arpakit_project_template_v1/command/start_api_without_reload.py} +5 -5
  51. arpakitlib/_arpakit_project_template_v1/command/start_async_operation_executor_worker.py +14 -0
  52. arpakitlib/_arpakit_project_template_v1/command/start_async_scheduled_operation_creator_worker.py +14 -0
  53. arpakitlib/_arpakit_project_template_v1/command/start_sync_operation_executor_worker.py +15 -0
  54. arpakitlib/_arpakit_project_template_v1/command/start_sync_operation_executor_workers.py +22 -0
  55. arpakitlib/_arpakit_project_template_v1/command/start_sync_scheduled_operation_creator_worker.py +12 -0
  56. arpakitlib/_arpakit_project_template_v1/core/cache_file_storage_in_dir.py +21 -0
  57. arpakitlib/{_arpakit_project_template/src → _arpakit_project_template_v1}/core/const.py +2 -9
  58. arpakitlib/_arpakit_project_template_v1/core/dump_file_storage_in_dir.py +21 -0
  59. arpakitlib/_arpakit_project_template_v1/core/media_file_storage_in_dir.py +21 -0
  60. arpakitlib/_arpakit_project_template_v1/core/settings.py +193 -0
  61. arpakitlib/_arpakit_project_template_v1/core/util.py +29 -0
  62. arpakitlib/{_arpakit_project_template → _arpakit_project_template_v1}/example.env +10 -5
  63. arpakitlib/{_arpakit_project_template/src → _arpakit_project_template_v1}/json_db/util.py +2 -2
  64. arpakitlib/_arpakit_project_template_v1/operation_execution/operation_executor_worker.py +256 -0
  65. arpakitlib/_arpakit_project_template_v1/operation_execution/scheduled_operation_creator_worker.py +106 -0
  66. arpakitlib/_arpakit_project_template_v1/operation_execution/scheduled_operations.py +49 -0
  67. arpakitlib/_arpakit_project_template_v1/operation_execution/util.py +29 -0
  68. arpakitlib/_arpakit_project_template_v1/resource/static/openapi-favicon.png +0 -0
  69. arpakitlib/_arpakit_project_template_v1/resource/static/swagger-ui/index.html +19 -0
  70. arpakitlib/_arpakit_project_template_v1/resource/static/swagger-ui/swagger-ui-bundle.js +2 -0
  71. arpakitlib/{ar_fastapi_static → _arpakit_project_template_v1/resource/static}/swagger-ui/swagger-ui-es-bundle-core.js +1 -1
  72. arpakitlib/_arpakit_project_template_v1/resource/static/swagger-ui/swagger-ui-es-bundle-core.js.map +1 -0
  73. arpakitlib/_arpakit_project_template_v1/resource/static/swagger-ui/swagger-ui-es-bundle.js +2 -0
  74. arpakitlib/_arpakit_project_template_v1/resource/static/swagger-ui/swagger-ui-standalone-preset.js +2 -0
  75. arpakitlib/{ar_fastapi_static → _arpakit_project_template_v1/resource/static}/swagger-ui/swagger-ui.js +1 -1
  76. arpakitlib/_arpakit_project_template_v1/resource/static/swagger-ui/swagger-ui.js.map +1 -0
  77. arpakitlib/_arpakit_project_template_v1/sandbox/sandbox_1.py +14 -0
  78. arpakitlib/_arpakit_project_template_v1/sandbox/sandbox_2.py +14 -0
  79. arpakitlib/_arpakit_project_template_v1/sandbox/sandbox_3.py +14 -0
  80. arpakitlib/_arpakit_project_template_v1/sandbox/sandbox_4.py +14 -0
  81. arpakitlib/_arpakit_project_template_v1/sandbox/sandbox_5.py +14 -0
  82. arpakitlib/_arpakit_project_template_v1/sandbox/sandbox_6.py +14 -0
  83. arpakitlib/_arpakit_project_template_v1/sandbox/sandbox_7.py +14 -0
  84. arpakitlib/{_arpakit_project_template/src/sqlalchemy_db/util.py → _arpakit_project_template_v1/sqlalchemy_db/sqlalchemy_db.py} +3 -11
  85. arpakitlib/_arpakit_project_template_v1/sqlalchemy_db/sqlalchemy_model.py +129 -0
  86. arpakitlib/_arpakit_project_template_v1/sqlalchemy_db/util.py +28 -0
  87. arpakitlib/{_arpakit_project_template/src/sandbox/sandbox_3.py → _arpakit_project_template_v1/test_data/make_test_data_1.py} +8 -3
  88. arpakitlib/{_arpakit_project_template/src/sandbox/sandbox_4.py → _arpakit_project_template_v1/test_data/make_test_data_2.py} +8 -3
  89. arpakitlib/{_arpakit_project_template/src/sandbox/sandbox_1.py → _arpakit_project_template_v1/test_data/make_test_data_3.py} +8 -3
  90. arpakitlib/{_arpakit_project_template/src/sandbox/sandbox_2.py → _arpakit_project_template_v1/test_data/make_test_data_4.py} +8 -3
  91. arpakitlib/_arpakit_project_template_v1/test_data/make_test_data_5.py +22 -0
  92. arpakitlib/_arpakit_project_template_v1/tg_bot/blank/blank.py +5 -0
  93. arpakitlib/{_arpakit_project_template/src → _arpakit_project_template_v1}/tg_bot/blank/util.py +1 -1
  94. arpakitlib/{_arpakit_project_template/src → _arpakit_project_template_v1}/tg_bot/const.py +6 -3
  95. arpakitlib/_arpakit_project_template_v1/tg_bot/event.py +51 -0
  96. arpakitlib/{_arpakit_project_template/src → _arpakit_project_template_v1}/tg_bot/filter/not_prod_mode.py +1 -1
  97. arpakitlib/{_arpakit_project_template/src → _arpakit_project_template_v1}/tg_bot/filter/prod_mode.py +1 -1
  98. arpakitlib/_arpakit_project_template_v1/tg_bot/middleware/init_user.py +24 -0
  99. arpakitlib/_arpakit_project_template_v1/tg_bot/middleware/middleware.py +12 -0
  100. arpakitlib/_arpakit_project_template_v1/tg_bot/router/arpakitlib_.py +10 -0
  101. arpakitlib/_arpakit_project_template_v1/tg_bot/router/error.py +15 -0
  102. arpakitlib/_arpakit_project_template_v1/tg_bot/router/healthcheck.py +10 -0
  103. arpakitlib/_arpakit_project_template_v1/tg_bot/router/main_router.py +14 -0
  104. arpakitlib/_arpakit_project_template_v1/tg_bot/start_tg_bot.py +34 -0
  105. arpakitlib/_arpakit_project_template_v1/tg_bot/tg_bot.py +24 -0
  106. arpakitlib/_arpakit_project_template_v1/tg_bot/tg_bot_dispatcher.py +19 -0
  107. arpakitlib/_arpakit_project_template_v1/tg_bot/transmitted_tg_data.py +58 -0
  108. arpakitlib/_arpakit_project_template_v1/util/read_arpakitlib_project_template_file.py +17 -0
  109. arpakitlib/ar_aiogram_util.py +41 -52
  110. arpakitlib/ar_arpakit_project_template_util.py +8 -11
  111. arpakitlib/ar_arpakitlib_cli_util.py +14 -5
  112. arpakitlib/ar_base_worker_util.py +35 -17
  113. arpakitlib/ar_class_util.py +11 -0
  114. arpakitlib/ar_func_util.py +19 -29
  115. arpakitlib/ar_http_request_util.py +10 -2
  116. arpakitlib/ar_need_type_util.py +3 -0
  117. arpakitlib/ar_rat_func_util.py +1 -1
  118. arpakitlib/ar_retry_func_util.py +4 -4
  119. arpakitlib/ar_schedule_uust_api_client_util.py +1 -1
  120. arpakitlib/ar_settings_util.py +3 -204
  121. arpakitlib/ar_sqladmin_util.py +7 -102
  122. arpakitlib/ar_sqlalchemy_util.py +65 -13
  123. arpakitlib/ar_type_util.py +0 -2
  124. {arpakitlib-1.7.256.dist-info → arpakitlib-1.8.0.dist-info}/METADATA +7 -6
  125. arpakitlib-1.8.0.dist-info/RECORD +251 -0
  126. {arpakitlib-1.7.256.dist-info → arpakitlib-1.8.0.dist-info}/WHEEL +1 -1
  127. arpakitlib/_arpakit_project_template/ARPAKITLIB +0 -1
  128. arpakitlib/_arpakit_project_template/manage/docker_ps.sh +0 -2
  129. arpakitlib/_arpakit_project_template/manage/git_branch.sh +0 -2
  130. arpakitlib/_arpakit_project_template/manage/poetry_add_plugin_export.sh +0 -2
  131. arpakitlib/_arpakit_project_template/manage/poetry_config_virtualenvs_in_project_true.sh +0 -2
  132. arpakitlib/_arpakit_project_template/manage/poetry_self_add_plugin_export.sh +0 -2
  133. arpakitlib/_arpakit_project_template/src/admin1/model_view.py +0 -1
  134. arpakitlib/_arpakit_project_template/src/api/asgi.py +0 -3
  135. arpakitlib/_arpakit_project_template/src/api/auth.py +0 -53
  136. arpakitlib/_arpakit_project_template/src/api/const.py +0 -13
  137. arpakitlib/_arpakit_project_template/src/api/create_api_app.py +0 -43
  138. arpakitlib/_arpakit_project_template/src/api/create_handle_exception_.py +0 -59
  139. arpakitlib/_arpakit_project_template/src/api/event.py +0 -83
  140. arpakitlib/_arpakit_project_template/src/api/router/v1/get_api_error_info.py +0 -27
  141. arpakitlib/_arpakit_project_template/src/api/router/v1/main_router.py +0 -15
  142. arpakitlib/_arpakit_project_template/src/api/schema/v1/in_.py +0 -1
  143. arpakitlib/_arpakit_project_template/src/api/schema/v1/out.py +0 -1
  144. arpakitlib/_arpakit_project_template/src/api/transmitted_api_data.py +0 -7
  145. arpakitlib/_arpakit_project_template/src/api/util.py +0 -44
  146. arpakitlib/_arpakit_project_template/src/core/settings.py +0 -21
  147. arpakitlib/_arpakit_project_template/src/core/util.py +0 -61
  148. arpakitlib/_arpakit_project_template/src/json_db/_drop_json_db.py +0 -13
  149. arpakitlib/_arpakit_project_template/src/json_db/_init_json_db.py +0 -11
  150. arpakitlib/_arpakit_project_template/src/json_db/_reinit_json_db.py +0 -13
  151. arpakitlib/_arpakit_project_template/src/json_db/_rm_all_records_in_json_db.py +0 -13
  152. arpakitlib/_arpakit_project_template/src/just_script/example.py +0 -16
  153. arpakitlib/_arpakit_project_template/src/operation_execution/_start_operation_executor_worker.py +0 -17
  154. arpakitlib/_arpakit_project_template/src/operation_execution/_start_scheduled_operation_creator_worker.py +0 -17
  155. arpakitlib/_arpakit_project_template/src/operation_execution/const.py +0 -9
  156. arpakitlib/_arpakit_project_template/src/operation_execution/operation_executor.py +0 -16
  157. arpakitlib/_arpakit_project_template/src/operation_execution/scheduled_operations.py +0 -29
  158. arpakitlib/_arpakit_project_template/src/operation_execution/util.py +0 -1
  159. arpakitlib/_arpakit_project_template/src/sandbox/sandbox_5.py +0 -17
  160. arpakitlib/_arpakit_project_template/src/sandbox/sandbox_6.py +0 -17
  161. arpakitlib/_arpakit_project_template/src/sandbox/sandbox_7.py +0 -17
  162. arpakitlib/_arpakit_project_template/src/sqlalchemy_db/_check_conn_sqlalchemy_db.py +0 -11
  163. arpakitlib/_arpakit_project_template/src/sqlalchemy_db/_drop_sqlalchemy_db.py +0 -13
  164. arpakitlib/_arpakit_project_template/src/sqlalchemy_db/_init_sqlalchemy_db.py +0 -11
  165. arpakitlib/_arpakit_project_template/src/sqlalchemy_db/_reinit_sqlalchemy_db.py +0 -13
  166. arpakitlib/_arpakit_project_template/src/sqlalchemy_db/_remove_operations.py +0 -15
  167. arpakitlib/_arpakit_project_template/src/sqlalchemy_db/_remove_story_logs.py +0 -16
  168. arpakitlib/_arpakit_project_template/src/sqlalchemy_db/sqlalchemy_model.py +0 -13
  169. arpakitlib/_arpakit_project_template/src/test_data/make_test_data_1.py +0 -8
  170. arpakitlib/_arpakit_project_template/src/test_data/make_test_data_2.py +0 -8
  171. arpakitlib/_arpakit_project_template/src/test_data/make_test_data_3.py +0 -8
  172. arpakitlib/_arpakit_project_template/src/test_data/make_test_data_4.py +0 -8
  173. arpakitlib/_arpakit_project_template/src/test_data/make_test_data_5.py +0 -8
  174. arpakitlib/_arpakit_project_template/src/tg_bot/blank/blank.py +0 -10
  175. arpakitlib/_arpakit_project_template/src/tg_bot/event.py +0 -39
  176. arpakitlib/_arpakit_project_template/src/tg_bot/handler/cmd_healthcheck.py +0 -0
  177. arpakitlib/_arpakit_project_template/src/tg_bot/router/error.py +0 -3
  178. arpakitlib/_arpakit_project_template/src/tg_bot/router/router.py +0 -7
  179. arpakitlib/_arpakit_project_template/src/tg_bot/start_tg_bot.py +0 -11
  180. arpakitlib/_arpakit_project_template/src/tg_bot/transmitted_tg_data.py +0 -6
  181. arpakitlib/_arpakit_project_template/src/tg_bot/util.py +0 -44
  182. arpakitlib/ar_api_key_util.py +0 -21
  183. arpakitlib/ar_fastapi_static/healthcheck +0 -1
  184. arpakitlib/ar_fastapi_static/swagger-ui/index.html +0 -19
  185. arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-bundle.js +0 -2
  186. arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle-core.js.map +0 -1
  187. arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle.js +0 -2
  188. arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-standalone-preset.js +0 -2
  189. arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js.map +0 -1
  190. arpakitlib/ar_fastapi_util.py +0 -862
  191. arpakitlib/ar_operation_execution_util.py +0 -504
  192. arpakitlib/ar_sqlalchemy_model_util.py +0 -183
  193. arpakitlib-1.7.256.dist-info/RECORD +0 -236
  194. /arpakitlib/{_arpakit_project_template → _arpakit_project_template_v1}/.gitignore +0 -0
  195. /arpakitlib/{_arpakit_project_template → _arpakit_project_template_v1}/.python-version +0 -0
  196. /arpakitlib/{_arpakit_project_template → _arpakit_project_template_v1}/LICENSE +0 -0
  197. /arpakitlib/{_arpakit_project_template/manage → _arpakit_project_template_v1/additional_model}/__init__.py +0 -0
  198. /arpakitlib/{_arpakit_project_template/src → _arpakit_project_template_v1}/additional_model/additional_model.py +0 -0
  199. /arpakitlib/{_arpakit_project_template/manage/note → _arpakit_project_template_v1/admin1}/__init__.py +0 -0
  200. /arpakitlib/{_arpakit_project_template → _arpakit_project_template_v1}/alembic/README +0 -0
  201. /arpakitlib/{_arpakit_project_template → _arpakit_project_template_v1}/alembic/script.py.mako +0 -0
  202. /arpakitlib/{_arpakit_project_template → _arpakit_project_template_v1}/alembic.ini +0 -0
  203. /arpakitlib/{_arpakit_project_template/resource → _arpakit_project_template_v1/api}/__init__.py +0 -0
  204. /arpakitlib/{_arpakit_project_template/resource/static → _arpakit_project_template_v1/api/router}/__init__.py +0 -0
  205. /arpakitlib/{_arpakit_project_template/src → _arpakit_project_template_v1/api/router/v1}/__init__.py +0 -0
  206. /arpakitlib/{_arpakit_project_template/src/additional_model → _arpakit_project_template_v1/api/schema}/__init__.py +0 -0
  207. /arpakitlib/{_arpakit_project_template/src/admin1 → _arpakit_project_template_v1/api/schema/common}/__init__.py +0 -0
  208. /arpakitlib/{_arpakit_project_template/src/api → _arpakit_project_template_v1/api/schema/v1}/__init__.py +0 -0
  209. /arpakitlib/{_arpakit_project_template/manage/note/note_1.txt → _arpakit_project_template_v1/api/util.py} +0 -0
  210. /arpakitlib/{_arpakit_project_template/src/api/router → _arpakit_project_template_v1/business_service}/__init__.py +0 -0
  211. /arpakitlib/{_arpakit_project_template/src/api/router/v1 → _arpakit_project_template_v1/command}/__init__.py +0 -0
  212. /arpakitlib/{_arpakit_project_template/manage → _arpakit_project_template_v1/command}/alembic_upgrade_head .sh +0 -0
  213. /arpakitlib/{_arpakit_project_template/manage → _arpakit_project_template_v1/command}/docker_ps_a.sh +0 -0
  214. /arpakitlib/{_arpakit_project_template/manage → _arpakit_project_template_v1/command}/docker_rm_postgres.sh +0 -0
  215. /arpakitlib/{_arpakit_project_template/manage → _arpakit_project_template_v1/command}/docker_run_postgres.sh +0 -0
  216. /arpakitlib/{_arpakit_project_template/manage → _arpakit_project_template_v1/command}/docker_start_postgres.sh +0 -0
  217. /arpakitlib/{_arpakit_project_template/manage → _arpakit_project_template_v1/command}/docker_stop_postgres.sh +0 -0
  218. /arpakitlib/{_arpakit_project_template/manage → _arpakit_project_template_v1/command}/git_commit.sh +0 -0
  219. /arpakitlib/{_arpakit_project_template/manage → _arpakit_project_template_v1/command}/git_push_arpakit_company_github_1.sh +0 -0
  220. /arpakitlib/{_arpakit_project_template/manage → _arpakit_project_template_v1/command}/git_push_arpakit_company_gitlab_1.sh +0 -0
  221. /arpakitlib/{_arpakit_project_template/manage → _arpakit_project_template_v1/command}/git_push_arpakit_github_1.sh +0 -0
  222. /arpakitlib/{_arpakit_project_template/manage → _arpakit_project_template_v1/command}/git_push_arpakit_gitlab_1.sh +0 -0
  223. /arpakitlib/{_arpakit_project_template/manage/git_remote_v.sh → _arpakit_project_template_v1/command/git_remote.sh} +0 -0
  224. /arpakitlib/{_arpakit_project_template/manage → _arpakit_project_template_v1/command}/git_set_arpakit_company_origin.sh +0 -0
  225. /arpakitlib/{_arpakit_project_template/manage → _arpakit_project_template_v1/command}/git_set_arpakit_origin.sh +0 -0
  226. /arpakitlib/{_arpakit_project_template/manage → _arpakit_project_template_v1/command}/git_status.sh +0 -0
  227. /arpakitlib/{_arpakit_project_template/manage → _arpakit_project_template_v1/command}/poetry_check.sh +0 -0
  228. /arpakitlib/{_arpakit_project_template/manage → _arpakit_project_template_v1/command}/poetry_clear_cache.sh +0 -0
  229. /arpakitlib/{_arpakit_project_template/manage → _arpakit_project_template_v1/command}/poetry_config.sh +0 -0
  230. /arpakitlib/{_arpakit_project_template/manage → _arpakit_project_template_v1/command}/poetry_install.sh +0 -0
  231. /arpakitlib/{_arpakit_project_template/manage → _arpakit_project_template_v1/command}/poetry_lock.sh +0 -0
  232. /arpakitlib/{_arpakit_project_template/manage → _arpakit_project_template_v1/command}/poetry_remove_and_add_arpakitlib.sh +0 -0
  233. /arpakitlib/{_arpakit_project_template/manage → _arpakit_project_template_v1/command}/poetry_show.sh +0 -0
  234. /arpakitlib/{_arpakit_project_template/manage → _arpakit_project_template_v1/command}/poetry_show_arpakitlib.sh +0 -0
  235. /arpakitlib/{_arpakit_project_template/manage → _arpakit_project_template_v1/command}/poetry_update.sh +0 -0
  236. /arpakitlib/{_arpakit_project_template/manage → _arpakit_project_template_v1/command}/poetry_update_arpakitlib.sh +0 -0
  237. /arpakitlib/{_arpakit_project_template/src/api/schema → _arpakit_project_template_v1/core}/__init__.py +0 -0
  238. /arpakitlib/{_arpakit_project_template/src/api/schema/v1 → _arpakit_project_template_v1/json_db}/__init__.py +0 -0
  239. /arpakitlib/{_arpakit_project_template/src → _arpakit_project_template_v1}/json_db/json_db.py +0 -0
  240. /arpakitlib/{_arpakit_project_template/src/business_service → _arpakit_project_template_v1/note}/__init__.py +0 -0
  241. /arpakitlib/{_arpakit_project_template/manage/note/note_2.txt → _arpakit_project_template_v1/note/note_1.txt} +0 -0
  242. /arpakitlib/{_arpakit_project_template/manage/note/note_3.txt → _arpakit_project_template_v1/note/note_2.txt} +0 -0
  243. /arpakitlib/{_arpakit_project_template/manage/note/note_4.txt → _arpakit_project_template_v1/note/note_3.txt} +0 -0
  244. /arpakitlib/{_arpakit_project_template/manage/note/note_5.txt → _arpakit_project_template_v1/note/note_4.txt} +0 -0
  245. /arpakitlib/{_arpakit_project_template/src/core/__init__.py → _arpakit_project_template_v1/note/note_5.txt} +0 -0
  246. /arpakitlib/{_arpakit_project_template/src/json_db → _arpakit_project_template_v1/operation_execution}/__init__.py +0 -0
  247. /arpakitlib/{_arpakit_project_template/src/just_script/__init__.py → _arpakit_project_template_v1/operation_execution/const.py} +0 -0
  248. /arpakitlib/{_arpakit_project_template/src/operation_execution → _arpakit_project_template_v1/resource}/__init__.py +0 -0
  249. /arpakitlib/{_arpakit_project_template/src/sandbox → _arpakit_project_template_v1/resource/static}/__init__.py +0 -0
  250. /arpakitlib/{_arpakit_project_template → _arpakit_project_template_v1}/resource/static/healthcheck +0 -0
  251. /arpakitlib/{_arpakit_project_template → _arpakit_project_template_v1}/resource/static/helloworld +0 -0
  252. /arpakitlib/{ar_fastapi_static → _arpakit_project_template_v1/resource/static}/redoc/redoc.standalone.js +0 -0
  253. /arpakitlib/{ar_fastapi_static → _arpakit_project_template_v1/resource/static}/swagger-ui/favicon-16x16.png +0 -0
  254. /arpakitlib/{ar_fastapi_static → _arpakit_project_template_v1/resource/static}/swagger-ui/favicon-32x32.png +0 -0
  255. /arpakitlib/{ar_fastapi_static → _arpakit_project_template_v1/resource/static}/swagger-ui/index.css +0 -0
  256. /arpakitlib/{ar_fastapi_static → _arpakit_project_template_v1/resource/static}/swagger-ui/oauth2-redirect.html +0 -0
  257. /arpakitlib/{ar_fastapi_static → _arpakit_project_template_v1/resource/static}/swagger-ui/swagger-initializer.js +0 -0
  258. /arpakitlib/{ar_fastapi_static → _arpakit_project_template_v1/resource/static}/swagger-ui/swagger-ui-bundle.js.map +0 -0
  259. /arpakitlib/{ar_fastapi_static → _arpakit_project_template_v1/resource/static}/swagger-ui/swagger-ui-es-bundle.js.map +0 -0
  260. /arpakitlib/{ar_fastapi_static → _arpakit_project_template_v1/resource/static}/swagger-ui/swagger-ui-standalone-preset.js.map +0 -0
  261. /arpakitlib/{ar_fastapi_static → _arpakit_project_template_v1/resource/static}/swagger-ui/swagger-ui.css +0 -0
  262. /arpakitlib/{ar_fastapi_static → _arpakit_project_template_v1/resource/static}/swagger-ui/swagger-ui.css.map +0 -0
  263. /arpakitlib/{_arpakit_project_template/src/sqlalchemy_db → _arpakit_project_template_v1/sandbox}/__init__.py +0 -0
  264. /arpakitlib/{_arpakit_project_template/src/test_data → _arpakit_project_template_v1/sqlalchemy_db}/__init__.py +0 -0
  265. /arpakitlib/{_arpakit_project_template/src → _arpakit_project_template_v1}/sqlalchemy_db/const.py +0 -0
  266. /arpakitlib/{_arpakit_project_template/src/tg_bot → _arpakit_project_template_v1/test_data}/__init__.py +0 -0
  267. /arpakitlib/{_arpakit_project_template/src/tg_bot/blank → _arpakit_project_template_v1/tg_bot}/__init__.py +0 -0
  268. /arpakitlib/{_arpakit_project_template/src/tg_bot/filter → _arpakit_project_template_v1/tg_bot/blank}/__init__.py +0 -0
  269. /arpakitlib/{_arpakit_project_template/src/tg_bot/handler → _arpakit_project_template_v1/tg_bot/filter}/__init__.py +0 -0
  270. /arpakitlib/{_arpakit_project_template/src → _arpakit_project_template_v1}/tg_bot/kb/__init__.py +0 -0
  271. /arpakitlib/{_arpakit_project_template/src → _arpakit_project_template_v1}/tg_bot/kb/inline_/__init__.py +0 -0
  272. /arpakitlib/{_arpakit_project_template/src → _arpakit_project_template_v1}/tg_bot/kb/inline_/callback.py +0 -0
  273. /arpakitlib/{_arpakit_project_template/src → _arpakit_project_template_v1}/tg_bot/kb/inline_/common.py +0 -0
  274. /arpakitlib/{_arpakit_project_template/src → _arpakit_project_template_v1}/tg_bot/kb/static_/__init__.py +0 -0
  275. /arpakitlib/{_arpakit_project_template/src → _arpakit_project_template_v1}/tg_bot/kb/static_/common.py +0 -0
  276. /arpakitlib/{_arpakit_project_template/src → _arpakit_project_template_v1}/tg_bot/middleware/__init__.py +0 -0
  277. /arpakitlib/{_arpakit_project_template/src → _arpakit_project_template_v1}/tg_bot/router/__init__.py +0 -0
  278. /arpakitlib/{_arpakit_project_template/src/tg_bot/handler/cmd_arpakitlib.py → _arpakit_project_template_v1/tg_bot/util.py} +0 -0
  279. /arpakitlib/{_arpakit_project_template/src → _arpakit_project_template_v1}/util/__init__.py +0 -0
  280. {arpakitlib-1.7.256.dist-info → arpakitlib-1.8.0.dist-info}/LICENSE +0 -0
  281. {arpakitlib-1.7.256.dist-info → arpakitlib-1.8.0.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,14 @@
1
+ import asyncio
2
+
3
+
4
+ def __sandbox():
5
+ pass
6
+
7
+
8
+ async def __async_sandbox():
9
+ pass
10
+
11
+
12
+ if __name__ == '__main__':
13
+ __sandbox()
14
+ asyncio.run(__async_sandbox())
@@ -0,0 +1,14 @@
1
+ import asyncio
2
+
3
+
4
+ def __sandbox():
5
+ pass
6
+
7
+
8
+ async def __async_sandbox():
9
+ pass
10
+
11
+
12
+ if __name__ == '__main__':
13
+ __sandbox()
14
+ asyncio.run(__async_sandbox())
@@ -0,0 +1,14 @@
1
+ import asyncio
2
+
3
+
4
+ def __sandbox():
5
+ pass
6
+
7
+
8
+ async def __async_sandbox():
9
+ pass
10
+
11
+
12
+ if __name__ == '__main__':
13
+ __sandbox()
14
+ asyncio.run(__async_sandbox())
@@ -0,0 +1,14 @@
1
+ import asyncio
2
+
3
+
4
+ def __sandbox():
5
+ pass
6
+
7
+
8
+ async def __async_sandbox():
9
+ pass
10
+
11
+
12
+ if __name__ == '__main__':
13
+ __sandbox()
14
+ asyncio.run(__async_sandbox())
@@ -0,0 +1,14 @@
1
+ import asyncio
2
+
3
+
4
+ def __sandbox():
5
+ pass
6
+
7
+
8
+ async def __async_sandbox():
9
+ pass
10
+
11
+
12
+ if __name__ == '__main__':
13
+ __sandbox()
14
+ asyncio.run(__async_sandbox())
@@ -0,0 +1,14 @@
1
+ import asyncio
2
+
3
+
4
+ def __sandbox():
5
+ pass
6
+
7
+
8
+ async def __async_sandbox():
9
+ pass
10
+
11
+
12
+ if __name__ == '__main__':
13
+ __sandbox()
14
+ asyncio.run(__async_sandbox())
@@ -0,0 +1,14 @@
1
+ import asyncio
2
+
3
+
4
+ def __sandbox():
5
+ pass
6
+
7
+
8
+ async def __async_sandbox():
9
+ pass
10
+
11
+
12
+ if __name__ == '__main__':
13
+ __sandbox()
14
+ asyncio.run(__async_sandbox())
@@ -1,16 +1,8 @@
1
1
  from functools import lru_cache
2
2
 
3
- from arpakitlib.ar_sqlalchemy_model_util import BaseDBM
4
3
  from arpakitlib.ar_sqlalchemy_util import SQLAlchemyDb
5
- from src.core.settings import get_cached_settings
6
-
7
-
8
- def get_base_dbm() -> type[BaseDBM]:
9
- from arpakitlib.ar_sqlalchemy_model_util import import_ar_sqlalchemy_models
10
- import_ar_sqlalchemy_models()
11
- from src.sqlalchemy_db.sqlalchemy_model import import_project_sqlalchemy_models
12
- import_project_sqlalchemy_models()
13
- return BaseDBM
4
+ from core.settings import get_cached_settings
5
+ from sqlalchemy_db.sqlalchemy_model import get_simple_dbm
14
6
 
15
7
 
16
8
  def create_sqlalchemy_db() -> SQLAlchemyDb:
@@ -18,7 +10,7 @@ def create_sqlalchemy_db() -> SQLAlchemyDb:
18
10
  sync_db_url=get_cached_settings().sqlalchemy_sync_db_url,
19
11
  async_db_url=get_cached_settings().sqlalchemy_async_db_url,
20
12
  db_echo=get_cached_settings().sqlalchemy_db_echo,
21
- base_dbm=get_base_dbm()
13
+ base_dbm=get_simple_dbm()
22
14
  )
23
15
 
24
16
 
@@ -0,0 +1,129 @@
1
+ from datetime import datetime, timedelta
2
+ from typing import Any
3
+
4
+ import sqlalchemy
5
+ from sqlalchemy import func
6
+ from sqlalchemy.dialects import postgresql
7
+ from sqlalchemy.orm import mapped_column, Mapped
8
+
9
+ from arpakitlib.ar_datetime_util import now_utc_dt
10
+ from arpakitlib.ar_enumeration_util import Enumeration
11
+ from arpakitlib.ar_sqlalchemy_util import get_string_info_from_declarative_base, BaseDBM
12
+ from sqlalchemy_db.util import generate_default_long_id
13
+
14
+
15
+ class SimpleDBM(BaseDBM):
16
+ __abstract__ = True
17
+
18
+ id: Mapped[int] = mapped_column(
19
+ sqlalchemy.INTEGER, primary_key=True, autoincrement=True, sort_order=-3, nullable=False
20
+ )
21
+ long_id: Mapped[str] = mapped_column(
22
+ sqlalchemy.TEXT, insert_default=generate_default_long_id, server_default=func.gen_random_uuid(),
23
+ unique=True, sort_order=-2, nullable=False
24
+ )
25
+ creation_dt: Mapped[datetime] = mapped_column(
26
+ sqlalchemy.TIMESTAMP(timezone=True), insert_default=now_utc_dt, server_default=func.now(),
27
+ index=True, sort_order=-1, nullable=False
28
+ )
29
+
30
+ def __repr__(self):
31
+ return f"{self.__class__.__name__.removesuffix('DBM')} (id={self.id})"
32
+
33
+
34
+ class StoryLogDBM(SimpleDBM):
35
+ __tablename__ = "story_log"
36
+
37
+ class Levels(Enumeration):
38
+ info = "info"
39
+ warning = "warning"
40
+ error = "error"
41
+
42
+ class Types(Enumeration):
43
+ error_in_execute_operation = "error_in_execute_operation"
44
+ error_in_api_route = "error_in_api_route"
45
+
46
+ level: Mapped[str] = mapped_column(
47
+ sqlalchemy.TEXT, insert_default=Levels.info, server_default=Levels.info, index=True, nullable=False
48
+ )
49
+ type: Mapped[str | None] = mapped_column(sqlalchemy.TEXT, index=True, default=None, nullable=True)
50
+ title: Mapped[str | None] = mapped_column(sqlalchemy.TEXT, index=True, default=None, nullable=True)
51
+ data: Mapped[dict[str, Any]] = mapped_column(
52
+ postgresql.JSON, insert_default={}, server_default="{}", nullable=False
53
+ )
54
+
55
+
56
+ class OperationDBM(SimpleDBM):
57
+ __tablename__ = "operation"
58
+
59
+ class Statuses(Enumeration):
60
+ waiting_for_execution = "waiting_for_execution"
61
+ executing = "executing"
62
+ executed_without_error = "executed_without_error"
63
+ executed_with_error = "executed_with_error"
64
+
65
+ class Types(Enumeration):
66
+ healthcheck_ = "healthcheck"
67
+ raise_fake_error_ = "raise_fake_error_"
68
+
69
+ status: Mapped[str] = mapped_column(
70
+ sqlalchemy.TEXT, index=True, insert_default=Statuses.waiting_for_execution,
71
+ server_default=Statuses.waiting_for_execution, nullable=False
72
+ )
73
+ type: Mapped[str] = mapped_column(
74
+ sqlalchemy.TEXT, index=True, insert_default=Types.healthcheck_, nullable=False
75
+ )
76
+ execution_start_dt: Mapped[datetime | None] = mapped_column(sqlalchemy.TIMESTAMP(timezone=True), nullable=True)
77
+ execution_finish_dt: Mapped[datetime | None] = mapped_column(sqlalchemy.TIMESTAMP(timezone=True), nullable=True)
78
+ input_data: Mapped[dict[str, Any]] = mapped_column(
79
+ postgresql.JSON,
80
+ insert_default={},
81
+ server_default="{}",
82
+ nullable=False
83
+ )
84
+ output_data: Mapped[dict[str, Any]] = mapped_column(
85
+ postgresql.JSON, insert_default={}, server_default="{}", nullable=False
86
+ )
87
+ error_data: Mapped[dict[str, Any]] = mapped_column(
88
+ postgresql.JSON, insert_default={}, server_default="{}", nullable=False
89
+ )
90
+
91
+ def raise_if_executed_with_error(self):
92
+ if self.status == self.Statuses.executed_with_error:
93
+ raise Exception(
94
+ f"Operation (id={self.id}, type={self.type}) executed with error, error_data={self.error_data}"
95
+ )
96
+
97
+ def raise_if_error_data(self):
98
+ if self.error_data:
99
+ raise Exception(
100
+ f"Operation (id={self.id}, type={self.type}) has error_data, error_data={self.error_data}"
101
+ )
102
+
103
+ @property
104
+ def duration(self) -> timedelta | None:
105
+ if self.execution_start_dt is None or self.execution_finish_dt is None:
106
+ return None
107
+ return self.execution_finish_dt - self.execution_start_dt
108
+
109
+ @property
110
+ def duration_total_seconds(self) -> float | None:
111
+ if self.duration is None:
112
+ return None
113
+ return self.duration.total_seconds()
114
+
115
+ @property
116
+ def sdp_duration_total_seconds(self) -> float | None:
117
+ return self.duration_total_seconds
118
+
119
+
120
+ def get_simple_dbm() -> type[SimpleDBM]:
121
+ return SimpleDBM
122
+
123
+
124
+ def import_sqlalchemy_models():
125
+ pass
126
+
127
+
128
+ if __name__ == '__main__':
129
+ print(get_string_info_from_declarative_base(SimpleDBM))
@@ -0,0 +1,28 @@
1
+ from uuid import uuid4
2
+
3
+ from arpakitlib.ar_datetime_util import now_utc_dt
4
+
5
+
6
+ def generate_api_key() -> str:
7
+ return (
8
+ f"apikey"
9
+ f"{str(uuid4()).replace('-', '')}"
10
+ f"{str(now_utc_dt().timestamp()).replace('.', '')}"
11
+ )
12
+
13
+
14
+ def generate_default_long_id():
15
+ return (
16
+ f"longid"
17
+ f"{str(uuid4()).replace('-', '')}"
18
+ f"{str(now_utc_dt().timestamp()).replace('.', '')}"
19
+ )
20
+
21
+
22
+ def __example():
23
+ print(generate_api_key())
24
+ print(generate_default_long_id())
25
+
26
+
27
+ if __name__ == '__main__':
28
+ __example()
@@ -1,15 +1,20 @@
1
1
  import asyncio
2
2
 
3
3
 
4
- # ...
4
+ def make_test_data_1():
5
+ pass
5
6
 
6
7
 
7
- def __example():
8
+ async def async_make_test_data_1():
8
9
  pass
9
10
 
10
11
 
12
+ def __example():
13
+ make_test_data_1()
14
+
15
+
11
16
  async def __async_example():
12
- pass
17
+ await async_make_test_data_1()
13
18
 
14
19
 
15
20
  if __name__ == '__main__':
@@ -1,15 +1,20 @@
1
1
  import asyncio
2
2
 
3
3
 
4
- # ...
4
+ def make_test_data_2():
5
+ pass
5
6
 
6
7
 
7
- def __example():
8
+ async def async_make_test_data_2():
8
9
  pass
9
10
 
10
11
 
12
+ def __example():
13
+ make_test_data_2()
14
+
15
+
11
16
  async def __async_example():
12
- pass
17
+ await async_make_test_data_2()
13
18
 
14
19
 
15
20
  if __name__ == '__main__':
@@ -1,15 +1,20 @@
1
1
  import asyncio
2
2
 
3
3
 
4
- # ...
4
+ def make_test_data_3():
5
+ pass
5
6
 
6
7
 
7
- def __example():
8
+ async def async_make_test_data_3():
8
9
  pass
9
10
 
10
11
 
12
+ def __example():
13
+ make_test_data_3()
14
+
15
+
11
16
  async def __async_example():
12
- pass
17
+ await async_make_test_data_3()
13
18
 
14
19
 
15
20
  if __name__ == '__main__':
@@ -1,15 +1,20 @@
1
1
  import asyncio
2
2
 
3
3
 
4
- # ...
4
+ def make_test_data_4():
5
+ pass
5
6
 
6
7
 
7
- def __example():
8
+ async def async_make_test_data_4():
8
9
  pass
9
10
 
10
11
 
12
+ def __example():
13
+ make_test_data_4()
14
+
15
+
11
16
  async def __async_example():
12
- pass
17
+ await async_make_test_data_4()
13
18
 
14
19
 
15
20
  if __name__ == '__main__':
@@ -0,0 +1,22 @@
1
+ import asyncio
2
+
3
+
4
+ def make_test_data_5():
5
+ pass
6
+
7
+
8
+ async def async_make_test_data_5():
9
+ pass
10
+
11
+
12
+ def __example():
13
+ make_test_data_5()
14
+
15
+
16
+ async def __async_example():
17
+ await async_make_test_data_5()
18
+
19
+
20
+ if __name__ == '__main__':
21
+ __example()
22
+ asyncio.run(__async_example())
@@ -0,0 +1,5 @@
1
+ from arpakitlib.ar_blank_util import BaseBlank
2
+
3
+
4
+ class TgBotBlank(BaseBlank):
5
+ pass
@@ -1,6 +1,6 @@
1
1
  from functools import lru_cache
2
2
 
3
- from src.tg_bot.blank.blank import TgBotBlank
3
+ from tg_bot.blank.blank import TgBotBlank
4
4
 
5
5
 
6
6
  def get_create_tg_bot_blank() -> TgBotBlank:
@@ -1,11 +1,14 @@
1
1
  from arpakitlib.ar_enumeration_util import Enumeration
2
2
 
3
3
 
4
- class TgBotPublicCommands(Enumeration):
4
+ class TgBotCommands(Enumeration):
5
+ # public
6
+ healthcheck = "healthcheck"
7
+ arpakitlib = "arpakitlib"
5
8
  start = "start"
9
+ about = "about"
6
10
 
7
-
8
- class TgBotPrivateCommands(Enumeration):
11
+ # private
9
12
  init_db = "init_db"
10
13
  reinit_db = "reinit_db"
11
14
  drop_db = "drop_db"
@@ -0,0 +1,51 @@
1
+ import logging
2
+ from typing import Callable
3
+
4
+ from aiogram import Dispatcher
5
+
6
+ from tg_bot.transmitted_tg_data import get_cached_transmitted_tg_bot_data
7
+
8
+ _logger = logging.getLogger(__name__)
9
+
10
+
11
+ async def on_startup():
12
+ _logger.info("start")
13
+
14
+ if get_cached_transmitted_tg_bot_data().media_file_storage_in_dir is not None:
15
+ get_cached_transmitted_tg_bot_data().media_file_storage_in_dir.init()
16
+
17
+ if get_cached_transmitted_tg_bot_data().cache_file_storage_in_dir is not None:
18
+ get_cached_transmitted_tg_bot_data().cache_file_storage_in_dir.init()
19
+
20
+ if get_cached_transmitted_tg_bot_data().dump_file_storage_in_dir is not None:
21
+ get_cached_transmitted_tg_bot_data().dump_file_storage_in_dir.init()
22
+
23
+ if get_cached_transmitted_tg_bot_data().settings.api_init_sqlalchemy_db:
24
+ get_cached_transmitted_tg_bot_data().sqlalchemy_db.init()
25
+
26
+ if get_cached_transmitted_tg_bot_data().settings.api_init_json_db:
27
+ get_cached_transmitted_tg_bot_data().json_db.init()
28
+
29
+ _logger.info("finish")
30
+
31
+
32
+ async def on_shutdown(*args, **kwargs):
33
+ _logger.info("start")
34
+ _logger.info("finish")
35
+
36
+
37
+ def get_tg_bot_startup_events() -> list[Callable]:
38
+ res = [on_startup]
39
+ return res
40
+
41
+
42
+ def get_tg_bot_shutdown_events() -> list[Callable]:
43
+ res = [on_shutdown]
44
+ return res
45
+
46
+
47
+ def add_events_to_tg_bot_dispatcher(*, tg_bot_dispatcher: Dispatcher):
48
+ for tg_bot_event in get_tg_bot_startup_events():
49
+ tg_bot_dispatcher.startup.register(tg_bot_event)
50
+ for tg_bot_event in get_tg_bot_shutdown_events():
51
+ tg_bot_dispatcher.shutdown.register(tg_bot_event)
@@ -1,6 +1,6 @@
1
1
  from aiogram.filters import Filter
2
2
 
3
- from src.core.settings import get_cached_settings
3
+ from core.settings import get_cached_settings
4
4
 
5
5
 
6
6
  class NotProdModeFilter(Filter):
@@ -1,6 +1,6 @@
1
1
  from aiogram.filters import Filter
2
2
 
3
- from src.core.settings import get_cached_settings
3
+ from core.settings import get_cached_settings
4
4
 
5
5
 
6
6
  class ProdModeFilter(Filter):
@@ -0,0 +1,24 @@
1
+ import logging
2
+ from typing import Any, Awaitable, Callable, Dict
3
+
4
+ from aiogram import BaseMiddleware
5
+ from aiogram.types import TelegramObject
6
+
7
+ from tg_bot.transmitted_tg_data import TransmittedTgBotData
8
+
9
+ _logger = logging.getLogger(__name__)
10
+
11
+
12
+ class InitUserTgBotMiddleware(BaseMiddleware):
13
+
14
+ async def __call__(
15
+ self,
16
+ handler: Callable[[TelegramObject, Dict[str, Any]], Awaitable[Any]],
17
+ event: TelegramObject,
18
+ data: Dict[str, Any],
19
+ ) -> Any:
20
+ _logger.info("start")
21
+ transmitted_tg_bot_data: TransmittedTgBotData = data["transmitted_tg_bot_data"]
22
+ # ...
23
+ _logger.info("finish")
24
+ return await handler(event, data)
@@ -0,0 +1,12 @@
1
+ import aiogram
2
+
3
+ from tg_bot.middleware.init_user import InitUserTgBotMiddleware
4
+
5
+
6
+ def register_tg_bot_middleware(
7
+ *,
8
+ tg_bot_dp: aiogram.Dispatcher,
9
+ **kwargs
10
+ ) -> aiogram.Dispatcher:
11
+ tg_bot_dp.update.outer_middleware.register(InitUserTgBotMiddleware())
12
+ return tg_bot_dp
@@ -0,0 +1,10 @@
1
+ import aiogram.filters
2
+
3
+ from tg_bot.const import TgBotCommands
4
+
5
+ tg_bot_router = aiogram.Router()
6
+
7
+
8
+ @tg_bot_router.message(aiogram.filters.Command(TgBotCommands.arpakitlib))
9
+ async def _(m: aiogram.types.Message, **kwargs):
10
+ await m.answer(text="arpakitlib")
@@ -0,0 +1,15 @@
1
+ import aiogram
2
+ from aiogram import Router
3
+
4
+ from tg_bot.transmitted_tg_data import TransmittedTgBotData
5
+
6
+ tg_bot_router = Router()
7
+
8
+
9
+ @tg_bot_router.error()
10
+ async def _(
11
+ event: aiogram.types.ErrorEvent,
12
+ transmitted_tg_bot_data: TransmittedTgBotData,
13
+ **kwargs
14
+ ):
15
+ pass
@@ -0,0 +1,10 @@
1
+ import aiogram.filters
2
+
3
+ from tg_bot.const import TgBotCommands
4
+
5
+ tg_bot_router = aiogram.Router()
6
+
7
+
8
+ @tg_bot_router.message(aiogram.filters.Command(TgBotCommands.healthcheck))
9
+ async def _(m: aiogram.types.Message, **kwargs):
10
+ await m.answer(text="healthcheck")
@@ -0,0 +1,14 @@
1
+ from aiogram import Router
2
+
3
+ from tg_bot.router import error
4
+ from tg_bot.router import healthcheck
5
+
6
+ main_tg_bot_router = Router()
7
+
8
+ # Healthcheck
9
+
10
+ main_tg_bot_router.include_router(router=healthcheck.tg_bot_router)
11
+
12
+ # Error
13
+
14
+ main_tg_bot_router.include_router(router=error.tg_bot_router)
@@ -0,0 +1,34 @@
1
+ from arpakitlib.ar_aiogram_util import start_aiogram_tg_bot_with_webhook
2
+ from core.util import setup_logging
3
+ from tg_bot.event import add_events_to_tg_bot_dispatcher
4
+ from tg_bot.tg_bot import create_tg_bot
5
+ from tg_bot.tg_bot_dispatcher import create_tg_bot_dispatcher
6
+ from tg_bot.transmitted_tg_data import get_cached_transmitted_tg_bot_data
7
+
8
+
9
+ def start_tg_bot():
10
+ setup_logging()
11
+
12
+ transmitted_tg_bot_data = get_cached_transmitted_tg_bot_data()
13
+
14
+ tg_bot = create_tg_bot()
15
+
16
+ tg_bot_dispatcher = create_tg_bot_dispatcher()
17
+
18
+ add_events_to_tg_bot_dispatcher(tg_bot_dispatcher=tg_bot_dispatcher)
19
+
20
+ if transmitted_tg_bot_data.settings.tg_bot_webhook_enabled:
21
+ tg_bot_dispatcher.start_polling(tg_bot)
22
+ else:
23
+ start_aiogram_tg_bot_with_webhook(
24
+ dispatcher=tg_bot_dispatcher,
25
+ bot=tg_bot,
26
+ webhook_secret=transmitted_tg_bot_data.settings.tg_bot_webhook_secret,
27
+ webhook_path=transmitted_tg_bot_data.settings.tg_bot_webhook_path,
28
+ webhook_server_hostname=transmitted_tg_bot_data.settings.tg_bot_webhook_server_hostname,
29
+ webhook_server_port=transmitted_tg_bot_data.settings.tg_bot_webhook_server_port
30
+ )
31
+
32
+
33
+ if __name__ == '__main__':
34
+ start_tg_bot()
@@ -0,0 +1,24 @@
1
+ import aiogram
2
+ from aiogram.client.default import DefaultBotProperties
3
+ from aiogram.client.session.aiohttp import AiohttpSession
4
+ from aiogram.enums import ParseMode
5
+
6
+ from core.settings import get_cached_settings
7
+
8
+
9
+ def create_tg_bot() -> aiogram.Bot:
10
+ session: AiohttpSession | None = None
11
+ if get_cached_settings().tg_bot_proxy_url is not None:
12
+ session = AiohttpSession(proxy=get_cached_settings().tg_bot_proxy_url)
13
+
14
+ tg_bot = aiogram.Bot(
15
+ token=get_cached_settings().tg_bot_token,
16
+ session=session,
17
+ default=DefaultBotProperties(
18
+ parse_mode=ParseMode.HTML,
19
+ disable_notification=False,
20
+ link_preview_is_disabled=True
21
+ )
22
+ )
23
+
24
+ return tg_bot