arpakitlib 1.8.336__tar.gz → 1.9.6__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 (443) hide show
  1. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/LICENSE +1 -1
  2. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/PKG-INFO +7 -25
  3. arpakitlib-1.9.6/README.md +31 -0
  4. arpakitlib-1.9.6/arpakitlib/ar_aiogram_as_tg_command_2_util.py +192 -0
  5. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_aiogram_as_tg_command_util.py +4 -0
  6. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_arpakit_lib_module_util.py +1 -7
  7. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_base64_util.py +1 -3
  8. arpakitlib-1.9.6/arpakitlib/ar_base_http_api_client_util.py +47 -0
  9. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_base_worker_util.py +1 -1
  10. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_clone_pydantic_model_fields_util.py +4 -4
  11. arpakitlib-1.9.6/arpakitlib/ar_dict_util.py +59 -0
  12. arpakitlib-1.9.6/arpakitlib/ar_exception_util.py +18 -0
  13. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_generate_connection_url_util.py +1 -15
  14. arpakitlib-1.9.6/arpakitlib/ar_generate_difficult_password_util.py +41 -0
  15. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_generate_simple_code_util.py +1 -1
  16. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_list_util.py +23 -5
  17. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_need_type_util.py +1 -11
  18. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_pydantic_schema_from_sqlalchemy_model_util.py +9 -4
  19. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_rat_func_util.py +1 -8
  20. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_really_validate_email_util.py +1 -1
  21. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_retry_func_util.py +1 -10
  22. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_safe_func_util.py +2 -10
  23. arpakitlib-1.8.336/arpakitlib/ar_sqlalchemy_util.py → arpakitlib-1.9.6/arpakitlib/ar_sqlalchemy_base_dbm_util.py +71 -25
  24. arpakitlib-1.9.6/arpakitlib/ar_ssh_keys_util.py +45 -0
  25. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_ssh_runner_util.py +98 -27
  26. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_type_util.py +1 -52
  27. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_yookassa_api_client_util.py +11 -4
  28. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/pyproject.toml +5 -5
  29. arpakitlib-1.8.336/README.md +0 -49
  30. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/.gitignore +0 -81
  31. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/.python-version +0 -1
  32. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/LICENSE +0 -201
  33. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/README.md +0 -5
  34. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/alembic/README +0 -1
  35. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/alembic/env.py +0 -85
  36. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/alembic/script.py.mako +0 -26
  37. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/alembic/versions/__init__.py +0 -0
  38. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/alembic.ini +0 -119
  39. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/arpakitlib_project_template_info.json +0 -4
  40. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/__init__.py +0 -0
  41. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/alembic_heads.sh +0 -2
  42. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/alembic_history.sh +0 -2
  43. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/alembic_history_verbose.sh +0 -2
  44. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/alembic_revision_autogenerate.sh +0 -2
  45. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/alembic_upgrade_head.sh +0 -2
  46. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/beautify_json.py +0 -10
  47. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/check_logging.py +0 -14
  48. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/check_sqlalchemy_db.py +0 -11
  49. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/demojize.py +0 -9
  50. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/docker_ps_a.sh +0 -2
  51. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/docker_rm_postgres.sh +0 -3
  52. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/docker_run_postgres.sh +0 -5
  53. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/docker_start_postgres.sh +0 -3
  54. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/docker_stop_postgres.sh +0 -3
  55. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/drop_json_db.py +0 -13
  56. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/drop_sqlalchemy_db.py +0 -15
  57. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/emojize.py +0 -9
  58. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/ensure_sqlalchemy_check_constraints.py +0 -11
  59. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/generate_settings_env_example.py +0 -14
  60. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/git_commit.sh +0 -3
  61. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/git_push_arpakit_company_github_1.sh +0 -4
  62. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/git_push_arpakit_company_gitlab_1.sh +0 -4
  63. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/git_push_arpakit_github_1.sh +0 -4
  64. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/git_push_arpakit_gitlab_1.sh +0 -4
  65. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/git_remote_v.sh +0 -2
  66. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/git_set_arpakit_company_origin.sh +0 -11
  67. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/git_set_arpakit_origin.sh +0 -11
  68. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/git_set_divarteam_origin.sh +0 -8
  69. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/git_status.sh +0 -2
  70. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/hello_world.py +0 -6
  71. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/init_json_db.py +0 -11
  72. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/init_sqlalchemy_db.py +0 -11
  73. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/poetry_check.sh +0 -2
  74. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/poetry_clear_cache.sh +0 -4
  75. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/poetry_config.sh +0 -2
  76. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/poetry_install.sh +0 -5
  77. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/poetry_lock.sh +0 -2
  78. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/poetry_remove_and_add_arpakitlib.sh +0 -7
  79. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/poetry_show.sh +0 -2
  80. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/poetry_show_arpakitlib.sh +0 -2
  81. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/poetry_update.sh +0 -6
  82. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/poetry_update_arpakitlib.sh +0 -5
  83. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/reinit_all_sqlalchemy_db.py +0 -13
  84. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/reinit_json_db.py +0 -13
  85. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/reinit_sqlalchemy_db.py +0 -13
  86. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/remove_operations.py +0 -13
  87. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/remove_rows_from_tables_sqlalchemy_db.py +0 -11
  88. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/remove_story_logs.py +0 -16
  89. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/rm_all_records_in_json_db.py +0 -13
  90. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/set_tg_bot_commands.py +0 -16
  91. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/show_arpakitlib_project_template_info.py +0 -9
  92. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/show_settings.py +0 -10
  93. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/show_sqlalchemy_db_table_name_to_amount.py +0 -16
  94. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/start_api.py +0 -9
  95. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/start_api_for_prod.py +0 -9
  96. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/start_operation_executor_worker.py +0 -15
  97. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/start_operation_executor_workers_mode_async_task.py +0 -24
  98. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/start_operation_executor_workers_mode_thread.py +0 -23
  99. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/start_scheduled_operation_creator_worker.py +0 -12
  100. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/start_sqladmin.py +0 -19
  101. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/start_sqladmin_for_prod.py +0 -19
  102. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/start_sqladmin_with_reload.py +0 -19
  103. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/start_tg_bot.py +0 -11
  104. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/command/start_tg_bot_for_prod.py +0 -11
  105. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/example.env +0 -59
  106. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/note/note_1.txt +0 -0
  107. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/note/note_2.txt +0 -0
  108. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/note/note_3.txt +0 -0
  109. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/note/note_4.txt +0 -0
  110. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/note/note_5.txt +0 -0
  111. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/__init__.py +0 -0
  112. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/additional_model/__init__.py +0 -0
  113. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/additional_model/common.py +0 -5
  114. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/__init__.py +0 -0
  115. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/api_error_codes.py +0 -36
  116. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/api_exception.py +0 -75
  117. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/asgi.py +0 -3
  118. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/authorize.py +0 -347
  119. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/before_start_api.py +0 -49
  120. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/blank/__init__.py +0 -0
  121. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/blank/admin.py +0 -5
  122. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/blank/client.py +0 -5
  123. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/blank/common.py +0 -5
  124. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/create_api_app.py +0 -83
  125. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/create_first_data.py +0 -64
  126. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/event.py +0 -41
  127. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/exception_handler.py +0 -322
  128. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/middleware/__init__.py +0 -0
  129. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/middleware/add_api_middlewares.py +0 -15
  130. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/middleware/limit_content_length.py +0 -52
  131. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/openapi_ui.py +0 -30
  132. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/raise_own_exception_if_exception_in_api_router.py +0 -35
  133. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/response.py +0 -31
  134. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/router/__init__.py +0 -0
  135. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/__init__.py +0 -0
  136. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/check_sqlalchemy_db.py +0 -35
  137. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/clear_log_file.py +0 -38
  138. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/create_operation.py +0 -67
  139. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/get_arpakitlib_project_template_info.py +0 -35
  140. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/get_auth_data.py +0 -35
  141. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/get_log_file.py +0 -41
  142. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/get_operation.py +0 -53
  143. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/get_operation_allowed_statuses.py +0 -32
  144. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/get_operation_allowed_types.py +0 -32
  145. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/get_settings.py +0 -35
  146. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/get_sqlalchemy_db_table_name_to_amount.py +0 -34
  147. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/get_story_log.py +0 -53
  148. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/get_user.py +0 -70
  149. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/init_sqlalchemy_db.py +0 -36
  150. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/main_router.py +0 -129
  151. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/make_test_data_1.py +0 -35
  152. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/make_test_data_2.py +0 -35
  153. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/make_test_data_3.py +0 -35
  154. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/make_test_data_4.py +0 -35
  155. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/make_test_data_5.py +0 -35
  156. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/raise_api_exception_1.py +0 -40
  157. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/raise_api_exception_2.py +0 -40
  158. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/raise_api_exception_3.py +0 -40
  159. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/raise_fake_error.py +0 -32
  160. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/reinit_sqlalchemy_db.py +0 -37
  161. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/router/client/__init__.py +0 -0
  162. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/router/client/get_current_user.py +0 -45
  163. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/router/client/get_current_user_token.py +0 -37
  164. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/router/client/main_router.py +0 -15
  165. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/router/general/__init__.py +0 -0
  166. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/router/general/check_authorization.py +0 -47
  167. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/router/general/get_current_api_key.py +0 -35
  168. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/router/general/get_errors_info.py +0 -37
  169. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/router/general/healthcheck.py +0 -30
  170. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/router/general/main_router.py +0 -31
  171. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/router/general/now_utc_datetime.py +0 -28
  172. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/router/main_router.py +0 -23
  173. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/schema/__init__.py +0 -0
  174. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/schema/common.py +0 -26
  175. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/schema/in_/__init__.py +0 -0
  176. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/schema/in_/admin/__init__.py +0 -0
  177. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/schema/in_/admin/common.py +0 -0
  178. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/schema/in_/client/__init__.py +0 -0
  179. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/schema/in_/client/common.py +0 -0
  180. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/schema/in_/common/__init__.py +0 -0
  181. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/schema/in_/general/__init__.py +0 -0
  182. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/schema/in_/general/common.py +0 -0
  183. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/__init__.py +0 -0
  184. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/admin/__init__.py +0 -0
  185. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/admin/common.py +0 -23
  186. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/admin/operation.py +0 -28
  187. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/admin/story_log.py +0 -19
  188. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/admin/user.py +0 -38
  189. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/client/__init__.py +0 -0
  190. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/client/common.py +0 -21
  191. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/client/complicated_user_1.py +0 -21
  192. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/client/complicated_user_token_1.py +0 -19
  193. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/client/user.py +0 -37
  194. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/client/user_token.py +0 -16
  195. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/common/__init__.py +0 -0
  196. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/common/datetime_.py +0 -38
  197. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/common/error.py +0 -14
  198. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/common/ok.py +0 -5
  199. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/common/raw_data.py +0 -7
  200. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/general/__init__.py +0 -0
  201. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/general/api_key.py +0 -16
  202. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/general/common.py +0 -21
  203. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/general/user.py +0 -37
  204. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/general/user_token.py +0 -16
  205. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/schema/util/__init__.py +0 -0
  206. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/schema/util/create_obj_schema_from_dbm.py +0 -10
  207. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/start_api.py +0 -24
  208. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/api/util.py +0 -0
  209. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/business_service/__init__.py +0 -0
  210. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/business_service/exception.py +0 -45
  211. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/business_service/hello_world.py +0 -15
  212. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/business_service/remove_operations.py +0 -51
  213. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/celery_/__init__.py +0 -0
  214. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/core/__init__.py +0 -0
  215. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/core/cache_file_storage_in_dir.py +0 -23
  216. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/core/const.py +0 -37
  217. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/core/dump_file_storage_in_dir.py +0 -23
  218. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/core/jinja2_templates.py +0 -14
  219. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/core/media_file_storage_in_dir.py +0 -23
  220. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/core/settings.py +0 -238
  221. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/core/setup_logging.py +0 -55
  222. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/core/util.py +0 -10
  223. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/emailer/__init__.py +0 -0
  224. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/emailer/send_email.py +0 -81
  225. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/emailer/send_simple_email.py +0 -41
  226. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/json_db/__init__.py +0 -0
  227. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/json_db/json_db.py +0 -28
  228. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/more/__init__.py +0 -0
  229. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/more/api.nginx +0 -43
  230. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/more/helloworld +0 -1
  231. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/operation_execution/__init__.py +0 -0
  232. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/operation_execution/const.py +0 -1
  233. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/operation_execution/operation_executor_worker.py +0 -294
  234. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/operation_execution/scheduled_operation_creator_worker.py +0 -114
  235. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/operation_execution/scheduled_operations.py +0 -49
  236. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/operation_execution/util.py +0 -34
  237. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/resource/__init__.py +0 -0
  238. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/resource/static/1 +0 -1
  239. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/resource/static/healthcheck +0 -1
  240. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/resource/static/helloworld +0 -1
  241. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/resource/static/openapi-favicon.png +0 -0
  242. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/resource/static/redoc/redoc.standalone.js +0 -1826
  243. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/resource/static/sqladmin-favicon.png +0 -0
  244. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/resource/static/swagger-ui/favicon-16x16.png +0 -0
  245. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/resource/static/swagger-ui/favicon-32x32.png +0 -0
  246. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/resource/static/swagger-ui/index.css +0 -16
  247. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/resource/static/swagger-ui/index.html +0 -19
  248. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/resource/static/swagger-ui/oauth2-redirect.html +0 -79
  249. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/resource/static/swagger-ui/swagger-initializer.js +0 -20
  250. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/resource/static/swagger-ui/swagger-ui-bundle.js +0 -2
  251. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/resource/static/swagger-ui/swagger-ui-bundle.js.map +0 -1
  252. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/resource/static/swagger-ui/swagger-ui-es-bundle-core.js +0 -3
  253. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/resource/static/swagger-ui/swagger-ui-es-bundle-core.js.map +0 -1
  254. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/resource/static/swagger-ui/swagger-ui-es-bundle.js +0 -2
  255. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/resource/static/swagger-ui/swagger-ui-es-bundle.js.map +0 -1
  256. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/resource/static/swagger-ui/swagger-ui-standalone-preset.js +0 -2
  257. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/resource/static/swagger-ui/swagger-ui-standalone-preset.js.map +0 -1
  258. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/resource/static/swagger-ui/swagger-ui.css +0 -3
  259. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/resource/static/swagger-ui/swagger-ui.css.map +0 -1
  260. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/resource/static/swagger-ui/swagger-ui.js +0 -2
  261. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/resource/static/swagger-ui/swagger-ui.js.map +0 -1
  262. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/resource/templates/healthcheck.txt +0 -1
  263. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/resource/templates/simple_email.html +0 -47
  264. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/sandbox/__init__.py +0 -0
  265. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/sandbox/sandbox_1.py +0 -14
  266. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/sandbox/sandbox_2.py +0 -16
  267. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/sandbox/sandbox_3.py +0 -18
  268. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/sandbox/sandbox_4.py +0 -21
  269. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/sandbox/sandbox_5.py +0 -14
  270. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/sandbox/sandbox_6.py +0 -14
  271. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/sandbox/sandbox_7.py +0 -14
  272. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/site/__init__.py +0 -0
  273. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/site/asgi.py +0 -3
  274. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/site/consts.py +0 -0
  275. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/site/create_site_app.py +0 -5
  276. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/site/event.py +0 -19
  277. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/site/exception_handler.py +0 -0
  278. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/site/router/__init__.py +0 -0
  279. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/site/router/main_router.py +0 -3
  280. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/__init__.py +0 -0
  281. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/add_admin_in_app.py +0 -30
  282. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/admin_authorize.py +0 -120
  283. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/asgi.py +0 -4
  284. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/create_sqladmin_app.py +0 -49
  285. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/event.py +0 -40
  286. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/__init__.py +0 -11
  287. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/api_key.py +0 -17
  288. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/common.py +0 -127
  289. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/operation.py +0 -46
  290. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/story_log.py +0 -29
  291. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/user.py +0 -91
  292. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/user_token.py +0 -24
  293. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/verification_code.py +0 -36
  294. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/start_sqladmin.py +0 -19
  295. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/util/__init__.py +0 -0
  296. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/util/etc.py +0 -40
  297. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/__init__.py +0 -0
  298. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/const.py +0 -1
  299. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_db.py +0 -22
  300. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/__init__.py +0 -12
  301. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/api_key.py +0 -69
  302. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/common.py +0 -210
  303. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/operation.py +0 -235
  304. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/story_log.py +0 -88
  305. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/user.py +0 -266
  306. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/user_token.py +0 -76
  307. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/verification_code.py +0 -106
  308. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/util/__init__.py +0 -0
  309. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/util/execute_func_with_story_log.py +0 -167
  310. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/test_data/__init__.py +0 -0
  311. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/test_data/make_test_api_keys.py +0 -37
  312. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/test_data/make_test_data_1.py +0 -78
  313. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/test_data/make_test_data_2.py +0 -24
  314. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/test_data/make_test_data_3.py +0 -24
  315. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/test_data/make_test_data_4.py +0 -24
  316. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/test_data/make_test_data_5.py +0 -24
  317. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/__init__.py +0 -0
  318. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/blank/__init__.py +0 -0
  319. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/blank/admin.py +0 -35
  320. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/blank/client.py +0 -76
  321. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/blank/common.py +0 -5
  322. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/callback_data_/__init__.py +0 -0
  323. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/callback_data_/admin.py +0 -5
  324. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/callback_data_/client.py +0 -5
  325. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/callback_data_/common.py +0 -37
  326. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/const.py +0 -42
  327. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/event.py +0 -118
  328. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/filter_/__init__.py +0 -0
  329. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/filter_/is_private_chat.py +0 -12
  330. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/filter_/message_text.py +0 -48
  331. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/filter_/not_prod_mode_filter.py +0 -8
  332. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/filter_/prod_mode_filter.py +0 -8
  333. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/filter_/user_roles_has_admin.py +0 -18
  334. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/filter_/user_roles_has_client.py +0 -18
  335. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/kb/__init__.py +0 -0
  336. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/kb/inline_/__init__.py +0 -0
  337. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/kb/inline_/admin/__init__.py +0 -0
  338. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/kb/inline_/admin/common.py +0 -0
  339. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/kb/inline_/admin/hello_world.py +0 -16
  340. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/kb/inline_/client/__init__.py +0 -0
  341. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/kb/inline_/client/common.py +0 -0
  342. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/kb/inline_/client/support.py +0 -15
  343. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/kb/inline_/common.py +0 -0
  344. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/kb/static_/__init__.py +0 -0
  345. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/kb/static_/admin/__init__.py +0 -0
  346. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/kb/static_/admin/common.py +0 -0
  347. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/kb/static_/admin/hello_world.py +0 -14
  348. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/kb/static_/client/__init__.py +0 -0
  349. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/kb/static_/client/common.py +0 -0
  350. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/kb/static_/common.py +0 -0
  351. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/middleware/__init__.py +0 -0
  352. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/middleware/common.py +0 -13
  353. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/middleware/init_user.py +0 -87
  354. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/middleware/uil.py +0 -11
  355. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/__init__.py +0 -0
  356. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/__init__.py +0 -0
  357. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/arpakitlib_project_template_info.py +0 -30
  358. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/clear_log_file.py +0 -39
  359. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/current_state.py +0 -31
  360. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/drop_sqlalchemy_db.py +0 -34
  361. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/hello_world.py +0 -73
  362. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/init_sqlalchemy_db.py +0 -31
  363. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/kb_with_not_modified.py +0 -66
  364. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/kb_with_old_cd.py +0 -41
  365. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/kb_with_raise_error.py +0 -52
  366. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/kb_with_remove_message.py +0 -38
  367. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/log_file.py +0 -42
  368. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/me.py +0 -29
  369. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/raise_fake_error.py +0 -26
  370. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/reinit_sqlalchemy_db.py +0 -34
  371. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/set_tg_bot_commands.py +0 -31
  372. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/client/__init__.py +0 -0
  373. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/client/about.py +0 -33
  374. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/client/author.py +0 -34
  375. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/client/cancel.py +0 -33
  376. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/client/error_handler.py +0 -95
  377. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/client/healthcheck.py +0 -21
  378. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/client/raw_callback_query.py +0 -32
  379. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/client/raw_inline_query.py +0 -16
  380. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/client/raw_message.py +0 -18
  381. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/client/remove_message.py +0 -30
  382. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/client/start.py +0 -37
  383. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/client/support.py +0 -37
  384. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/client/voice_.py +0 -22
  385. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/main_router.py +0 -41
  386. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/start_tg_bot.py +0 -39
  387. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/state/__init__.py +0 -0
  388. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/state/admin.py +0 -0
  389. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/state/client.py +0 -5
  390. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/state/common.py +0 -0
  391. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/state/util.py +0 -0
  392. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/tg_bot.py +0 -31
  393. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/tg_bot_dispatcher.py +0 -20
  394. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/util/__init__.py +0 -0
  395. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/util/etc.py +0 -0
  396. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/util/notify_admins.py +0 -65
  397. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/util/set_tg_bot_commands.py +0 -105
  398. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot_notifier/__init__.py +0 -0
  399. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot_notifier/blank.py +0 -20
  400. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/tg_bot_notifier/tg_bot_notifier.py +0 -48
  401. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/util/__init__.py +0 -0
  402. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/util/arpakitlib_project_template_util.py +0 -17
  403. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/util/etc.py +0 -0
  404. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/project/util/send_email_.py +0 -150
  405. arpakitlib-1.8.336/arpakitlib/_arpakit_project_template_v_5/todo.txt +0 -1
  406. arpakitlib-1.8.336/arpakitlib/ar_arpakitlib_cli_util.py +0 -74
  407. arpakitlib-1.8.336/arpakitlib/ar_dict_util.py +0 -26
  408. arpakitlib-1.8.336/arpakitlib/ar_exception_util.py +0 -18
  409. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/__init__.py +0 -0
  410. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_arpakit_project_template_util.py +0 -0
  411. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_blank_util.py +0 -0
  412. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_cache_file_util.py +0 -0
  413. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_class_util.py +0 -0
  414. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_datetime_util.py +0 -0
  415. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_encrypt_decrypt_util.py +0 -0
  416. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_enumeration_util.py +0 -0
  417. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_file_storage_in_dir_util.py +0 -0
  418. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_file_util.py +0 -0
  419. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_func_util.py +0 -0
  420. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_hash_util.py +0 -0
  421. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_http_request_util.py +0 -0
  422. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_include_fastapi_routers_from_dir_util.py +0 -0
  423. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_ip_util.py +0 -0
  424. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_json_db_util.py +0 -0
  425. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_json_util.py +0 -0
  426. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_jwt_util.py +0 -0
  427. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_list_of_dicts_to_xlsx_util.py +0 -0
  428. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_log_async_func_if_error_util.py +0 -0
  429. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_logging_util.py +0 -0
  430. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_mongodb_util.py +0 -0
  431. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_openai_api_client_util.py +0 -0
  432. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_parse_command_util.py +0 -0
  433. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_postgresql_util.py +0 -0
  434. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_raise_own_exception_if_exception_util.py +0 -0
  435. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_really_validate_url_util.py +0 -0
  436. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_run_cmd_util.py +0 -0
  437. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_settings_util.py +0 -0
  438. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_sleep_util.py +0 -0
  439. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_sqladmin_util.py +0 -0
  440. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_sqlalchemy_drop_check_constraints_util.py +0 -0
  441. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_sqlalchemy_ensure_check_constraints_util.py +0 -0
  442. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_str_util.py +0 -0
  443. {arpakitlib-1.8.336 → arpakitlib-1.9.6}/arpakitlib/ar_uppercase_env_keys_util.py +0 -0
@@ -186,7 +186,7 @@
186
186
  same "printed page" as the copyright notice for easier
187
187
  identification within third-party archives.
188
188
 
189
- Copyright 2024-present Arsen Sabirzyanov
189
+ Copyright 2024-present ARPAKIT-Company
190
190
 
191
191
  Licensed under the Apache License, Version 2.0 (the "License");
192
192
  you may not use this file except in compliance with the License.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: arpakitlib
3
- Version: 1.8.336
3
+ Version: 1.9.6
4
4
  Summary: arpakitlib
5
5
  License-Expression: Apache-2.0
6
6
  License-File: LICENSE
@@ -72,13 +72,15 @@ Description-Content-Type: text/markdown
72
72
 
73
73
  # arpakitlib
74
74
 
75
- ## Текущая версия шаблона arpakit_project_template_v_5 находится в разработке, она неверная. В скором времени будет stable version.
76
-
77
75
  ## 🚀 Simplify Your Development Workflow
78
76
 
79
- A collection of lightweight and convenient development tools by Arpakit, designed to simplify and accelerate your
77
+ A collection of lightweight and convenient development tools by arpakit, designed to simplify and accelerate your
80
78
  workflow
81
79
 
80
+ ## Important
81
+
82
+ The most up-to-date version is on GitHub or GitLab.
83
+
82
84
  ---
83
85
 
84
86
  ### Supported Python version
@@ -90,31 +92,11 @@ workflow
90
92
  ### Installation with Poetry
91
93
 
92
94
  ```
93
- poetry add arpakitlib
94
- ```
95
-
96
- ### Installation with pip
97
-
98
- ```
99
- pip install arpakitlib
100
- ```
101
-
102
- ### arpakitlib command
103
-
104
- ```
105
- poetry run arpakitlib -c help
106
- poetry run arpakitlib -c init_arpakit_project_template -version 5 -project_dirpath ./ -overwrite_if_exists true
95
+ poetry add git+https://github.com/ARPAKIT-Company/arpakitlib.git@master
107
96
  ```
108
97
 
109
98
  ---
110
99
 
111
- ### Links
112
-
113
- - https://pypi.org/project/arpakitlib/
114
- - https://test.pypi.org/project/arpakitlib/
115
- - https://github.com/ARPAKIT-Company/arpakitlib
116
-
117
- ---
118
100
 
119
101
  ## ❤️ Made by ARPAKIT Company ❤️
120
102
 
@@ -0,0 +1,31 @@
1
+ # arpakitlib
2
+
3
+ ## 🚀 Simplify Your Development Workflow
4
+
5
+ A collection of lightweight and convenient development tools by arpakit, designed to simplify and accelerate your
6
+ workflow
7
+
8
+ ## Important
9
+
10
+ The most up-to-date version is on GitHub or GitLab.
11
+
12
+ ---
13
+
14
+ ### Supported Python version
15
+
16
+ - Python 3.12.4
17
+
18
+ ---
19
+
20
+ ### Installation with Poetry
21
+
22
+ ```
23
+ poetry add git+https://github.com/ARPAKIT-Company/arpakitlib.git@master
24
+ ```
25
+
26
+ ---
27
+
28
+
29
+ ## ❤️ Made by ARPAKIT Company ❤️
30
+
31
+
@@ -0,0 +1,192 @@
1
+ # arpakit
2
+ import ast
3
+ import asyncio
4
+ import json
5
+ import logging
6
+ from typing import Any, get_origin, get_args, Awaitable, Callable
7
+
8
+ from aiogram import types
9
+ from aiogram.enums import ParseMode
10
+ from aiogram.filters import CommandObject
11
+ from pydantic import BaseModel, Field, ConfigDict
12
+ from pydantic_core import PydanticUndefined
13
+
14
+ from arpakitlib.ar_parse_command_util import parse_command
15
+
16
+ _ARPAKIT_LIB_MODULE_VERSION = "3.0"
17
+
18
+ _logger = logging.getLogger(__name__)
19
+
20
+
21
+ class BaseTgCommandModel(BaseModel):
22
+ model_config = ConfigDict(extra="ignore", arbitrary_types_allowed=True, from_attributes=True)
23
+
24
+ help: bool | None = Field(default=False)
25
+
26
+
27
+ class ExampleTgCommandModel(BaseTgCommandModel):
28
+ """Это описание команды hello-world"""
29
+
30
+ hello: str | None = Field(description="Example Desc", default="Hello world")
31
+
32
+
33
+ def _generate_help_text(
34
+ *,
35
+ command_name: str,
36
+ model_class: type[BaseTgCommandModel],
37
+ desc: str | None = None
38
+ ) -> str:
39
+ """Генерирует help-текст по описанию модели."""
40
+ lines = [f"<b>Command</b> /{command_name}"]
41
+
42
+ if desc:
43
+ desc = desc.strip()
44
+ if desc:
45
+ lines.append(f"\n{desc}")
46
+
47
+ lines.append(f"\n\n<b>Fields ({len(model_class.model_fields)}):</b>")
48
+
49
+ for name, field in model_class.model_fields.items():
50
+
51
+ default_value = (
52
+ field.default
53
+ if field.default is not PydanticUndefined
54
+ else "<i>required</i>"
55
+ )
56
+
57
+ origin = get_origin(field.annotation)
58
+ args = get_args(field.annotation)
59
+
60
+ if origin is list and args:
61
+ type_name = f"list[{args[0].__name__}]"
62
+ elif hasattr(field.annotation, "__name__"):
63
+ type_name = field.annotation.__name__
64
+ else:
65
+ type_name = str(field.annotation)
66
+
67
+ description = f" — {field.description}" if field.description else ""
68
+
69
+ lines.append(f"\n• <code>-{name}</code>: <i>{type_name}</i>{description} (default: {default_value})")
70
+
71
+ lines.append(f"\n\n<b>Usage for help:</b>\n<code>/{command_name} -help</code>")
72
+
73
+ return "\n".join(lines)
74
+
75
+
76
+ def _parse_tg_param(value: Any) -> Any:
77
+ """Интеллектуальное преобразование строки из Telegram-команды в Python-значение."""
78
+ if isinstance(value, (bool, int, float)) or value is None:
79
+ return value
80
+
81
+ v = value.strip()
82
+ if v.lower() in {"true", "false"}:
83
+ return v.lower() == "true"
84
+
85
+ try:
86
+ result = ast.literal_eval(v)
87
+ # Если получился список — проверим, не смесь ли типов
88
+ if isinstance(result, list):
89
+ # Если все элементы одного типа — оставляем
90
+ if len(result) > 0 and len({type(x) for x in result}) > 1:
91
+ # Приводим всё к строкам для единообразия
92
+ result = [str(x) for x in result]
93
+ return result
94
+ except Exception:
95
+ # не получилось распарсить — возвращаем как строку
96
+ pass
97
+
98
+ try:
99
+ result = json.loads(v)
100
+ return result
101
+ except Exception:
102
+ pass
103
+
104
+ return v
105
+
106
+
107
+ def as_tg_command_handler(
108
+ *,
109
+ tg_command_format_class: type[BaseTgCommandModel],
110
+ desc: str | None = None
111
+ ) -> Callable[[Callable[..., Awaitable[Any]]], Callable[..., Awaitable[Any]]]:
112
+ def decorator(handler):
113
+
114
+ async def new_handler(*args, **kwargs):
115
+
116
+ message: types.Message = args[0]
117
+ if not isinstance(message, types.Message):
118
+ raise TypeError("not isinstance(message, types.Message)")
119
+
120
+ tg_command: CommandObject = kwargs.get("command")
121
+ if tg_command is None:
122
+ raise ValueError("Missing 'command' in handler kwargs")
123
+
124
+ try:
125
+
126
+ parsed_command = parse_command(text=tg_command.text)
127
+ kwargs["parsed_command"] = parsed_command
128
+
129
+ if parsed_command.has_flag(flag="help") or parsed_command.has_flag(flag="h"):
130
+ await message.answer(
131
+ text=_generate_help_text(
132
+ command_name=tg_command.command,
133
+ model_class=tg_command_format_class,
134
+ desc=desc
135
+ ),
136
+ disable_web_page_preview=True,
137
+ parse_mode=ParseMode.HTML
138
+ )
139
+ return None
140
+
141
+ tg_command_model_data: dict[str, Any] = {}
142
+
143
+ for key, value in parsed_command.key_to_value.items():
144
+ if value is None:
145
+ tg_command_model_data[key] = True
146
+ else:
147
+ tg_command_model_data[key] = _parse_tg_param(value=value)
148
+
149
+ for i, value in enumerate(parsed_command.values_without_key):
150
+ tg_command_model_data[f"arg_{i}"] = _parse_tg_param(value=value)
151
+
152
+ tg_command_format_obj = tg_command_format_class(**tg_command_model_data)
153
+
154
+ kwargs["tg_command_format_obj"] = tg_command_format_obj
155
+
156
+ except Exception as exception:
157
+
158
+ _logger.exception("Error while parsing command %s", tg_command.text, exc_info=True)
159
+
160
+ await message.answer(
161
+ text=(
162
+ f"<b>Bad command usage</b> /{tg_command.command}"
163
+ f"\n"
164
+ f"\n<b>Error:</b>"
165
+ f"\n{exception}"
166
+ f"\n"
167
+ f"\nUse <code>/{tg_command.command} -help</code> for help info"
168
+ ),
169
+ disable_web_page_preview=True,
170
+ parse_mode=ParseMode.HTML
171
+ )
172
+
173
+ return None
174
+
175
+ return await handler(*args, **kwargs)
176
+
177
+ return new_handler
178
+
179
+ return decorator
180
+
181
+
182
+ def __example():
183
+ pass
184
+
185
+
186
+ async def __async_example():
187
+ pass
188
+
189
+
190
+ if __name__ == '__main__':
191
+ __example()
192
+ asyncio.run(__async_example())
@@ -1,7 +1,9 @@
1
1
  # arpakit
2
+ # DEPRECATED
2
3
 
3
4
  import asyncio
4
5
  import logging
6
+ from pathlib import Path
5
7
  from typing import Optional, Any, Callable
6
8
 
7
9
  from aiogram import types
@@ -17,6 +19,8 @@ _ARPAKIT_LIB_MODULE_VERSION = "3.0"
17
19
 
18
20
  _logger = logging.getLogger(__name__)
19
21
 
22
+ _logger.warning(f"Module '{Path(__file__).name}' is deprecated; use 'ar_aiogram_as_tg_command_2_util' instead.")
23
+
20
24
 
21
25
  class BadTgCommandFormat(BadCommandFormat):
22
26
  pass
@@ -150,13 +150,7 @@ def get_arpakit_lib_modules() -> ArpakitLibModules:
150
150
 
151
151
 
152
152
  def __example():
153
- for module_name, d in (
154
- get_arpakit_lib_modules().module_name_to_module_version_and_module_has_errors().items()
155
- ):
156
- print(module_name)
157
- print(d)
158
- print()
159
- print("have_modules_with_error", get_arpakit_lib_modules().have_modules_with_error())
153
+ pass
160
154
 
161
155
 
162
156
  if __name__ == '__main__':
@@ -37,9 +37,7 @@ def convert_file_to_base64_string(*, filepath: str, raise_for_error: bool = Fals
37
37
 
38
38
 
39
39
  def __example():
40
- print(convert_base64_string_to_string(
41
- base64_string=convert_file_to_base64_string(filepath="./ar_arpakitlib_cli_util.py")
42
- ))
40
+ pass
43
41
 
44
42
 
45
43
  if __name__ == '__main__':
@@ -0,0 +1,47 @@
1
+ import logging
2
+ from typing import Any
3
+
4
+ import aiohttp
5
+ import requests
6
+
7
+ from arpakitlib.ar_dict_util import combine_dicts
8
+ from arpakitlib.ar_http_request_util import async_make_http_request, sync_make_http_request
9
+
10
+
11
+ class BaseHTTPAPIClient:
12
+ def __init__(self):
13
+ self.headers = {"Content-Type": "application/json"}
14
+ self._logger = logging.getLogger(f"{self.__class__.__name__}")
15
+
16
+ def _sync_make_http_request(
17
+ self,
18
+ *,
19
+ method: str,
20
+ url: str,
21
+ headers: dict[str, Any] | None = None,
22
+ **kwargs
23
+ ) -> requests.Response:
24
+ return sync_make_http_request(
25
+ method=method,
26
+ url=url,
27
+ headers=combine_dicts(self.headers, (headers if headers is not None else {})),
28
+ **kwargs
29
+ )
30
+
31
+ async def _async_make_http_request(
32
+ self,
33
+ *,
34
+ method: str = "GET",
35
+ url: str,
36
+ headers: dict[str, Any] | None = None,
37
+ **kwargs
38
+ ) -> aiohttp.ClientResponse:
39
+ return await async_make_http_request(
40
+ method=method,
41
+ url=url,
42
+ headers=combine_dicts(self.headers, (headers if headers is not None else {})),
43
+ **kwargs
44
+ )
45
+
46
+ def healthcheck(self) -> bool:
47
+ raise NotImplemented()
@@ -183,7 +183,7 @@ def safe_run_workers_in_background(
183
183
 
184
184
 
185
185
  async def a():
186
- print("1")
186
+ pass
187
187
 
188
188
 
189
189
  def __example():
@@ -13,14 +13,14 @@ def clone_pydantic_model_fields(
13
13
  base_model: Type[BaseModel] = BaseModel,
14
14
  fields_to_remove: Iterable[str] | None = None,
15
15
  new_class_name: str | None = None,
16
- class_name_prefix: str | None = "Cloned"
16
+ class_name_suffix: str | None = "Cloned"
17
17
  ) -> Type[BaseModel]:
18
18
  if fields_to_remove is None:
19
19
  fields_to_remove = set()
20
- if class_name_prefix is None:
21
- class_name_prefix = "Cloned"
20
+ if class_name_suffix is None:
21
+ class_name_suffix = "Cloned"
22
22
  if new_class_name is None:
23
- new_class_name = f"{model_cls.__name__}{class_name_prefix}"
23
+ new_class_name = f"{model_cls.__name__}{class_name_suffix}"
24
24
 
25
25
  field_defs: dict[str, tuple[type[Any], Any]] = {}
26
26
 
@@ -0,0 +1,59 @@
1
+ # arpakit
2
+
3
+ from typing import Any
4
+
5
+ _ARPAKIT_LIB_MODULE_VERSION = "3.0"
6
+
7
+
8
+ def combine_dicts(*dicts: dict) -> dict[Any, Any]:
9
+ res = {}
10
+ for dict_ in dicts:
11
+ res.update(dict_)
12
+ return res
13
+
14
+
15
+ def replace_dict_key(*, dict_: dict, old_key: Any, new_key: Any) -> dict[Any, Any]:
16
+ if old_key in dict_:
17
+ dict_[new_key] = dict_.pop(old_key)
18
+ return dict_
19
+
20
+
21
+ class GetTypedFromDictException(Exception):
22
+ pass
23
+
24
+
25
+ def get_typed_from_dict(
26
+ *,
27
+ d: dict,
28
+ key: str,
29
+ type_,
30
+ allow_missing: bool = False,
31
+ custom_exception: type[Exception] = GetTypedFromDictException
32
+ ) -> Any:
33
+ """
34
+ Получает d[key], проверяет, что оно относится к типу typ.
35
+ Если ключ отсутствует:
36
+ - если allow_non_existing=True → возвращаем None
37
+ - иначе → KeyError
38
+ Если тип не совпадает → TypeError
39
+ """
40
+
41
+ if key not in d:
42
+ if allow_missing:
43
+ return None
44
+ raise custom_exception(f"Missing key: {key}")
45
+
46
+ val = d[key]
47
+
48
+ if not isinstance(val, type_):
49
+ raise custom_exception(f"Expected {type_}, got {type(val)} for key '{key}'")
50
+
51
+ return val
52
+
53
+
54
+ def __example():
55
+ pass
56
+
57
+
58
+ if __name__ == '__main__':
59
+ __example()
@@ -0,0 +1,18 @@
1
+ import traceback
2
+
3
+ _ARPAKIT_LIB_MODULE_VERSION = "3.0"
4
+
5
+
6
+ def exception_to_traceback_str(exception: BaseException) -> str:
7
+ try:
8
+ return "".join(traceback.format_exception(type(exception), exception, exception.__traceback__))
9
+ except Exception as exception_:
10
+ return f"Failed to format exception to traceback str {exception!r}: {exception_!r}"
11
+
12
+
13
+ def __example():
14
+ pass
15
+
16
+
17
+ if __name__ == '__main__':
18
+ __example()
@@ -58,21 +58,7 @@ def generate_connection_url(
58
58
 
59
59
 
60
60
  def __example():
61
- print(generate_connection_url())
62
- # → redis://127.0.0.1:6379/0
63
-
64
- # Redis с паролем
65
- print(generate_connection_url(password="supersecret", host="redis"))
66
- # → redis://:supersecret@redis:6379/0
67
-
68
- # RabbitMQ (AMQP)
69
- print(generate_connection_url(scheme="amqp", user="guest", password="guest", host="rabbitmq", port=6789))
70
- # → amqp://guest:guest@rabbitmq:6379/0
71
-
72
- # Redis с параметрами
73
- print(generate_connection_url(scheme="mongodb", user="root", password="pass", host="localhost", port=27017,
74
- authSource="fghjkl;", quote_query_params=True))
75
- # → redis://:pass@127.0.0.1:6379/0?ssl_cert_reqs=none&socket_timeout=10
61
+ pass
76
62
 
77
63
 
78
64
  if __name__ == '__main__':
@@ -0,0 +1,41 @@
1
+ import random
2
+ import secrets
3
+ import string
4
+ import uuid
5
+
6
+
7
+ def generate_difficult_password(*, difficult: int = 1):
8
+ # динамический диапазон длины
9
+ base = 32 + difficult * 16 # минимальная длина
10
+ variance = 64 + difficult * 32 # насколько может "гулять"
11
+ target_len = random.randint(base, base + variance)
12
+
13
+ alphabet = (
14
+ string.ascii_letters +
15
+ string.digits +
16
+ string.punctuation
17
+ )
18
+
19
+ password = []
20
+
21
+ # добавляем случайный шум из UUID блоков
22
+ for _ in range(difficult * 2):
23
+ noise_block = uuid.uuid4().hex
24
+ password.append(noise_block)
25
+
26
+ # основная часть пароля — криптостойкие символы
27
+ for _ in range(target_len):
28
+ password.append(secrets.choice(alphabet))
29
+
30
+ # финальная перемешка обеспечивает нерегулярность структуры
31
+ secrets.SystemRandom().shuffle(password)
32
+
33
+ return "".join(password)
34
+
35
+
36
+ def __example():
37
+ pass
38
+
39
+
40
+ if __name__ == '__main__':
41
+ __example()
@@ -10,7 +10,7 @@ def generate_simple_code(
10
10
 
11
11
 
12
12
  def __example():
13
- print(generate_simple_code(amount=5))
13
+ pass
14
14
 
15
15
 
16
16
  if __name__ == '__main__':
@@ -57,12 +57,30 @@ def remove_from_lists_if_left(
57
57
  return lists_
58
58
 
59
59
 
60
+ def int_to_list_(value: int | list | None) -> list[int] | None:
61
+ if isinstance(value, int):
62
+ return [value]
63
+ elif isinstance(value, list):
64
+ return value
65
+ elif value is None:
66
+ return None
67
+ else:
68
+ raise TypeError(f"{type(value)=}")
69
+
70
+
71
+ def str_to_list_(value: str | list | None) -> list[str] | None:
72
+ if isinstance(value, str):
73
+ return [value]
74
+ elif isinstance(value, list):
75
+ return value
76
+ elif value is None:
77
+ return None
78
+ else:
79
+ raise TypeError(f"{type(value)=}")
80
+
81
+
60
82
  def __example():
61
- a = remove_from_list_if_left(
62
- list_=[1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3],
63
- values=[1, 2, 3]
64
- )
65
- print(a)
83
+ pass
66
84
 
67
85
 
68
86
  if __name__ == '__main__':
@@ -62,17 +62,7 @@ def parse_need_type(value: Any, need_type: str, allow_none: bool = False) -> Any
62
62
 
63
63
 
64
64
  def __example():
65
- print(parse_need_type(value=123, need_type="int"))
66
- print(parse_need_type(value="True", need_type="bool"))
67
- print(parse_need_type(value=123.456, need_type="float"))
68
- print(parse_need_type(value='[1, 2, 3]', need_type="list_of_int"))
69
- print(parse_need_type(value='["a", "b", "c"]', need_type="list_of_str"))
70
- print(parse_need_type(value='[1.1, 2.2, 3.3]', need_type="list_of_float"))
71
- print(parse_need_type(value='{"key": "value"}', need_type="json"))
72
- print(parse_need_type(value="hello world", need_type="str"))
73
- print(parse_need_type(value="[]", need_type=NeedTypes.list_of_str))
74
- print(parse_need_type(value="", need_type=NeedTypes.list_of_str))
75
- print(parse_need_type(value="none,asfasfas", need_type=NeedTypes.list_of_str))
65
+ pass
76
66
 
77
67
 
78
68
  if __name__ == '__main__':
@@ -75,8 +75,6 @@ def _type_matches(*, type_: Any, allowed_types: list[type]) -> bool:
75
75
  - Annotated (смотрит на базовый тип),
76
76
  - generics (List[int], Dict[str, Any]) — сравнивает по origin (list, dict, и т.п.).
77
77
  """
78
- if type_ is Any:
79
- return True
80
78
 
81
79
  origin = get_origin(type_)
82
80
  if origin is Union: # Optional/Union
@@ -126,7 +124,8 @@ def pydantic_schema_from_sqlalchemy_model(
126
124
  remove_property_prefixes: list[str] | None = None,
127
125
  skip_property_if_cannot_define_type: bool = True,
128
126
  skip_property_name_if_exists: bool = True,
129
- model_name_suffix: str = "Schema"
127
+ model_name_prefix: str | None = "Schema",
128
+ model_name_suffix: str | None = "Schema",
130
129
  ) -> type[BaseModel]:
131
130
  """
132
131
  Генерирует Pydantic-модель из колонок SQLAlchemy-модели и (опционально) из @property.
@@ -139,7 +138,13 @@ def pydantic_schema_from_sqlalchemy_model(
139
138
  - exclude_property_names: blacklist имён свойств (исключаются после whitelist'а).
140
139
  """
141
140
  mapper = inspect(sqlalchemy_model).mapper
142
- model_name = model_name or f"{sqlalchemy_model.__name__}{model_name_suffix}"
141
+
142
+ if not model_name:
143
+ model_name = str(sqlalchemy_model.__name__)
144
+ if model_name_prefix:
145
+ model_name = f"{model_name_prefix}{model_name}"
146
+ if model_name_suffix:
147
+ model_name = f"{model_name}{model_name_suffix}"
143
148
 
144
149
  annotations: dict[str, Any] = {}
145
150
  attrs: dict[str, Any] = {}
@@ -63,14 +63,7 @@ async def rat_async_func(
63
63
 
64
64
 
65
65
  def __example():
66
- def go():
67
- return "go"
68
-
69
- a = rat_sync_func(sync_func=go)
70
- print(a.has_exception)
71
- print(a)
72
- print(a.is_func_res_set)
73
- print(a.is_func_res_not_set)
66
+ pass
74
67
 
75
68
 
76
69
  if __name__ == '__main__':