arpakitlib 1.7.91__tar.gz → 1.7.94__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 (185) hide show
  1. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/PKG-INFO +1 -1
  2. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_base_worker_util.py +35 -15
  3. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_operation_execution_util.py +39 -21
  4. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_sqlalchemy_model_util.py +5 -3
  5. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/pyproject.toml +1 -1
  6. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/LICENSE +0 -0
  7. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/NOTICE +0 -0
  8. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/README.md +0 -0
  9. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/__init__.py +0 -0
  10. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/.gitignore +0 -0
  11. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/.python-version +0 -0
  12. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/ARPAKITLIB +0 -0
  13. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/AUTHOR.md +0 -0
  14. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/LICENSE +0 -0
  15. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/NOTICE +0 -0
  16. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/README.md +0 -0
  17. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/example.env +0 -0
  18. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/__init__.py +0 -0
  19. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/docker_ps.sh +0 -0
  20. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/docker_ps_a.sh +0 -0
  21. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/docker_run_postgres_for_dev.sh +0 -0
  22. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/docker_start_postgres_for_dev.sh +0 -0
  23. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/docker_stop_postgres_for_dev.sh +0 -0
  24. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/example_nginx_proxy.nginx +0 -0
  25. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/example_poetry_arpakitlib.sh +0 -0
  26. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/example_pyproject.toml +0 -0
  27. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/example_systemd.service +0 -0
  28. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/git_branch.sh +0 -0
  29. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/git_commit.sh +0 -0
  30. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/git_push_arpakit_company_github_1.sh +0 -0
  31. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/git_push_arpakit_company_gitlab_1.sh +0 -0
  32. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/git_push_arpakit_github_1.sh +0 -0
  33. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/git_push_arpakit_gitlab_1.sh +0 -0
  34. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/git_remote_v.sh +0 -0
  35. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/git_set_arpakit_company_origin.sh +0 -0
  36. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/git_set_arpakit_origin.sh +0 -0
  37. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/git_status.sh +0 -0
  38. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/hello_world.py +0 -0
  39. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/json_beutify.py +0 -0
  40. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/logging_check.py +0 -0
  41. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/note/__init__.py +0 -0
  42. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/note/note_1.txt +0 -0
  43. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/note/note_2.txt +0 -0
  44. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/note/note_3.txt +0 -0
  45. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/note/note_4.txt +0 -0
  46. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/note/note_5.txt +0 -0
  47. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/poetry_add_plugin_export.sh +0 -0
  48. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/poetry_check.sh +0 -0
  49. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/poetry_clear_cache.sh +0 -0
  50. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/poetry_config_virtualenvs_in_project_true.sh +0 -0
  51. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/poetry_generate_requirements.txt.sh +0 -0
  52. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/poetry_install.sh +0 -0
  53. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/poetry_lock.sh +0 -0
  54. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/poetry_remove_and_add_arpakitlib.sh +0 -0
  55. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/poetry_show.sh +0 -0
  56. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/poetry_show_arpakitlib.sh +0 -0
  57. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/poetry_update.sh +0 -0
  58. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/poetry_update_arpakitlib.sh +0 -0
  59. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/requirements.txt +0 -0
  60. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/sandbox/__init__.py +0 -0
  61. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_1.py +0 -0
  62. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_2.py +0 -0
  63. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_3.py +0 -0
  64. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_4.py +0 -0
  65. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_5.py +0 -0
  66. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_6.py +0 -0
  67. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_7.py +0 -0
  68. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_8.sh +0 -0
  69. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_9.sh +0 -0
  70. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/settings_check.py +0 -0
  71. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/settings_generate_env_example.py +0 -0
  72. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/sqlalchemy_db_check_conn.py +0 -0
  73. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/sqlalchemy_db_init.py +0 -0
  74. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/manage/sqlalchemy_db_reinit.py +0 -0
  75. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/resource/__init__.py +0 -0
  76. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/resource/static/__init__.py +0 -0
  77. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/resource/static/healthcheck +0 -0
  78. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/resource/static/helloworld +0 -0
  79. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/src/__init__.py +0 -0
  80. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/src/additional_model/__init__.py +0 -0
  81. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/src/additional_model/additional_model.py +0 -0
  82. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/src/api/__init__.py +0 -0
  83. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/src/api/asgi.py +0 -0
  84. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/src/api/auth.py +0 -0
  85. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/src/api/const.py +0 -0
  86. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/src/api/create_api_app.py +0 -0
  87. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/src/api/event.py +0 -0
  88. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/src/api/router/__init__.py +0 -0
  89. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/src/api/router/main_router.py +0 -0
  90. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/src/api/router/v1/__init__.py +0 -0
  91. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/src/api/router/v1/get_api_error_info.py +0 -0
  92. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/src/api/router/v1/main_router.py +0 -0
  93. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/src/api/schema/__init__.py +0 -0
  94. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/src/api/schema/v1/__init__.py +0 -0
  95. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/src/api/schema/v1/in_.py +0 -0
  96. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/src/api/schema/v1/out.py +0 -0
  97. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/src/api/start_api_for_dev.py +0 -0
  98. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/src/api/start_api_for_dev_with_reload.py +0 -0
  99. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/src/api/transmitted_api_data.py +0 -0
  100. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/src/api/util.py +0 -0
  101. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/src/business_service/__init__.py +0 -0
  102. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/src/core/__init__.py +0 -0
  103. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/src/core/const.py +0 -0
  104. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/src/core/settings.py +0 -0
  105. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/src/core/util.py +0 -0
  106. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/src/db/__init__.py +0 -0
  107. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/src/db/sqlalchemy_model.py +0 -0
  108. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/src/db/util.py +0 -0
  109. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/src/operation_execution/__init__.py +0 -0
  110. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/src/operation_execution/const.py +0 -0
  111. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/src/operation_execution/operation_executor.py +0 -0
  112. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/src/operation_execution/scheduled_operations.py +0 -0
  113. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/src/operation_execution/start_operation_executor_worker_for_dev.py +0 -0
  114. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/src/operation_execution/start_scheduled_operation_creator_worker_for_dev.py +0 -0
  115. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/src/operation_execution/util.py +0 -0
  116. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/src/test_data/__init__.py +0 -0
  117. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_1.py +0 -0
  118. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_2.py +0 -0
  119. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_3.py +0 -0
  120. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_4.py +0 -0
  121. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_5.py +0 -0
  122. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/_arpakit_project_template/src/util/__init__.py +0 -0
  123. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/api_key_util.py +0 -0
  124. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_additional_model_util.py +0 -0
  125. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_aiogram_util.py +0 -0
  126. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_arpakit_lib_module_util.py +0 -0
  127. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_arpakit_project_template_util.py +0 -0
  128. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_arpakit_schedule_uust_api_client_util.py +0 -0
  129. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_arpakitlib_cli_util.py +0 -0
  130. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_base64_util.py +0 -0
  131. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_cache_file_util.py +0 -0
  132. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_datetime_util.py +0 -0
  133. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_dict_util.py +0 -0
  134. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_dream_ai_api_client_util.py +0 -0
  135. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_encrypt_decrypt_util.py +0 -0
  136. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_enumeration_util.py +0 -0
  137. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_exception_util.py +0 -0
  138. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_fastapi_static/healthcheck +0 -0
  139. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_fastapi_static/redoc/redoc.standalone.js +0 -0
  140. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_fastapi_static/swagger-ui/favicon-16x16.png +0 -0
  141. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_fastapi_static/swagger-ui/favicon-32x32.png +0 -0
  142. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_fastapi_static/swagger-ui/index.css +0 -0
  143. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_fastapi_static/swagger-ui/index.html +0 -0
  144. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_fastapi_static/swagger-ui/oauth2-redirect.html +0 -0
  145. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-initializer.js +0 -0
  146. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-bundle.js +0 -0
  147. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-bundle.js.map +0 -0
  148. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle-core.js +0 -0
  149. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle-core.js.map +0 -0
  150. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle.js +0 -0
  151. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle.js.map +0 -0
  152. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-standalone-preset.js +0 -0
  153. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-standalone-preset.js.map +0 -0
  154. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css +0 -0
  155. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css.map +0 -0
  156. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js +0 -0
  157. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js.map +0 -0
  158. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_fastapi_util.py +0 -0
  159. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_file_storage_in_dir_util.py +0 -0
  160. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_file_util.py +0 -0
  161. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_func_util.py +0 -0
  162. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_hash_util.py +0 -0
  163. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_http_request_util.py +0 -0
  164. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_ip_util.py +0 -0
  165. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_json_db_util.py +0 -0
  166. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_json_util.py +0 -0
  167. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_jwt_util.py +0 -0
  168. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_list_of_dicts_to_xlsx.py +0 -0
  169. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_list_util.py +0 -0
  170. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_logging_util.py +0 -0
  171. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_mongodb_util.py +0 -0
  172. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_need_type_util.py +0 -0
  173. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_openai_api_client_util.py +0 -0
  174. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_parse_command.py +0 -0
  175. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_postgresql_util.py +0 -0
  176. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_run_cmd_util.py +0 -0
  177. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_schedule_uust_api_client_util.py +0 -0
  178. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_settings_util.py +0 -0
  179. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_sleep_util.py +0 -0
  180. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_sqlalchemy_util.py +0 -0
  181. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_ssh_runner_util.py +0 -0
  182. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_str_util.py +0 -0
  183. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_type_util.py +0 -0
  184. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_yookassa_api_client_util.py +0 -0
  185. {arpakitlib-1.7.91 → arpakitlib-1.7.94}/arpakitlib/ar_zabbix_api_client_util.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: arpakitlib
3
- Version: 1.7.91
3
+ Version: 1.7.94
4
4
  Summary: arpakitlib
5
5
  Home-page: https://github.com/ARPAKIT-Company/arpakitlib
6
6
  License: Apache-2.0
@@ -6,11 +6,14 @@ import multiprocessing
6
6
  import threading
7
7
  from abc import ABC
8
8
  from datetime import timedelta
9
+ from random import randint
9
10
  from typing import Any
11
+ from uuid import uuid4
10
12
 
13
+ from arpakitlib.ar_datetime_util import now_utc_dt
11
14
  from arpakitlib.ar_enumeration_util import Enumeration
12
15
  from arpakitlib.ar_func_util import is_async_function, is_sync_function
13
- from arpakitlib.ar_sleep_util import sync_safe_sleep, async_safe_sleep
16
+ from arpakitlib.ar_sleep_util import sync_safe_sleep
14
17
 
15
18
  _ARPAKIT_LIB_MODULE_VERSION = "3.0"
16
19
 
@@ -19,17 +22,25 @@ class BaseWorker(ABC):
19
22
  def __init__(
20
23
  self,
21
24
  *,
22
- timeout_after_run=timedelta(seconds=0.1),
25
+ timeout_after_run=timedelta(seconds=0.3),
23
26
  timeout_after_err_in_run=timedelta(seconds=1),
24
- startup_funcs: list[Any] | None = None
27
+ startup_funcs: list[Any] | None = None,
28
+ worker_name: str | None = None
25
29
  ):
26
30
  if startup_funcs is None:
27
31
  startup_funcs = []
28
32
  self.startup_funcs = startup_funcs
29
- self.worker_name = self.__class__.__name__
30
- self._logger = logging.getLogger(self.worker_name)
31
- self.timeout_after_run = timeout_after_run.total_seconds()
32
- self.timeout_after_err_in_run = timeout_after_err_in_run.total_seconds()
33
+ if worker_name is None:
34
+ worker_name = self.__class__.__name__
35
+ self.worker_name = worker_name
36
+ self.worker_creation_dt = now_utc_dt()
37
+ self.worker_id = f"{str(uuid4()).replace(' - ', '')}_{randint(1000, 9999)}"
38
+ self.worker_fullname = (
39
+ f"{self.worker_name}_{self.worker_creation_dt.isoformat()}_{self.worker_id}"
40
+ )
41
+ self._logger = logging.getLogger(self.worker_fullname)
42
+ self.timeout_after_run = timeout_after_run
43
+ self.timeout_after_err_in_run = timeout_after_err_in_run
33
44
 
34
45
  def sync_run_startup_funcs(self):
35
46
  for startup_func in self.startup_funcs:
@@ -41,10 +52,10 @@ class BaseWorker(ABC):
41
52
  raise TypeError("no sync and not async")
42
53
 
43
54
  def sync_on_startup(self):
44
- pass
55
+ self.sync_run_startup_funcs()
45
56
 
46
57
  def sync_run(self):
47
- self._logger.info("hello world")
58
+ self._logger.info(f"hello world, im {self.worker_fullname}")
48
59
 
49
60
  def sync_run_on_error(self, exception: BaseException, **kwargs):
50
61
  pass
@@ -66,8 +77,8 @@ class BaseWorker(ABC):
66
77
  except BaseException as exception_:
67
78
  self._logger.error("error in sync_run_on_error", exc_info=exception_)
68
79
  raise exception_
69
- if self.timeout_after_run is not None:
70
- sync_safe_sleep(self.timeout_after_run)
80
+ sync_safe_sleep(self.timeout_after_err_in_run)
81
+ sync_safe_sleep(self.timeout_after_run)
71
82
 
72
83
  async def async_run_startup_funcs(self):
73
84
  for startup_func in self.startup_funcs:
@@ -79,10 +90,10 @@ class BaseWorker(ABC):
79
90
  raise TypeError("no sync and not async")
80
91
 
81
92
  async def async_on_startup(self):
82
- pass
93
+ await self.async_run_startup_funcs()
83
94
 
84
95
  async def async_run(self):
85
- self._logger.info("hello world")
96
+ self._logger.info(f"hello world, im {self.worker_fullname}")
86
97
 
87
98
  async def async_run_on_error(self, exception: BaseException, **kwargs):
88
99
  pass
@@ -104,8 +115,8 @@ class BaseWorker(ABC):
104
115
  except BaseException as exception_:
105
116
  self._logger.error("error in async_run_on_error", exc_info=exception_)
106
117
  raise exception_
107
- if self.timeout_after_err_in_run is not None:
108
- await async_safe_sleep(self.timeout_after_err_in_run)
118
+ sync_safe_sleep(self.timeout_after_err_in_run)
119
+ sync_safe_sleep(self.timeout_after_run)
109
120
 
110
121
 
111
122
  class SafeRunInBackgroundModes(Enumeration):
@@ -136,6 +147,15 @@ def safe_run_worker_in_background(*, worker: BaseWorker, mode: str) -> (
136
147
  return res
137
148
 
138
149
 
150
+ def safe_run_workers_in_background(
151
+ *, workers: list[BaseWorker], mode: str
152
+ ) -> list[asyncio.Task] | list[threading.Thread] | list[multiprocessing.Process]:
153
+ res = []
154
+ for worker in workers:
155
+ res.append(safe_run_worker_in_background(worker=worker, mode=mode))
156
+ return res
157
+
158
+
139
159
  def __example():
140
160
  pass
141
161
 
@@ -11,6 +11,7 @@ from typing import Any, Callable
11
11
  from pydantic import ConfigDict
12
12
  from pydantic.v1 import BaseModel
13
13
  from sqlalchemy import asc
14
+ from sqlalchemy.exc import NoResultFound
14
15
  from sqlalchemy.orm import Session
15
16
 
16
17
  from arpakitlib.ar_base_worker_util import BaseWorker
@@ -61,7 +62,8 @@ def get_operation_by_id(
61
62
  session: Session | None = None,
62
63
  sqlalchemy_db: SQLAlchemyDB | None = None,
63
64
  filter_operation_id: int,
64
- raise_if_not_found: bool = False
65
+ raise_if_not_found: bool = False,
66
+ lock: bool = False
65
67
  ) -> OperationDBM | None:
66
68
  def func(session_: Session):
67
69
  query = (
@@ -69,8 +71,16 @@ def get_operation_by_id(
69
71
  .query(OperationDBM)
70
72
  .filter(OperationDBM.id == filter_operation_id)
71
73
  )
74
+
75
+ if lock:
76
+ query = query.with_for_update()
77
+
72
78
  if raise_if_not_found:
73
- return query.one()
79
+ try:
80
+ return query.one()
81
+ except NoResultFound:
82
+ if raise_if_not_found:
83
+ raise ValueError("Operation not found")
74
84
  else:
75
85
  return query.one_or_none()
76
86
 
@@ -138,7 +148,9 @@ class BaseOperationExecutor:
138
148
  raise Exception("raise_fake_exception")
139
149
  return operation_dbm
140
150
 
141
- def sync_safe_execute_operation(self, operation_dbm: OperationDBM) -> OperationDBM:
151
+ def sync_safe_execute_operation(
152
+ self, operation_dbm: OperationDBM, worker: OperationExecutorWorker
153
+ ) -> OperationDBM:
142
154
  self._logger.info(
143
155
  f"start "
144
156
  f"operation_dbm.id={operation_dbm.id}, "
@@ -152,6 +164,12 @@ class BaseOperationExecutor:
152
164
  )
153
165
  operation_dbm.execution_start_dt = now_utc_dt()
154
166
  operation_dbm.status = OperationDBM.Statuses.executing
167
+ operation_dbm.output_data = combine_dicts(
168
+ operation_dbm.output_data,
169
+ {
170
+ worker.worker_fullname: True
171
+ }
172
+ )
155
173
  session.commit()
156
174
  session.refresh(operation_dbm)
157
175
 
@@ -221,7 +239,9 @@ class BaseOperationExecutor:
221
239
  raise Exception("raise_fake_exception")
222
240
  return operation_dbm
223
241
 
224
- async def async_safe_execute_operation(self, operation_dbm: OperationDBM) -> OperationDBM:
242
+ async def async_safe_execute_operation(
243
+ self, operation_dbm: OperationDBM, worker: OperationExecutorWorker
244
+ ) -> OperationDBM:
225
245
  self._logger.info(
226
246
  f"start "
227
247
  f"operation_dbm.id={operation_dbm.id}, "
@@ -235,6 +255,12 @@ class BaseOperationExecutor:
235
255
  )
236
256
  operation_dbm.execution_start_dt = now_utc_dt()
237
257
  operation_dbm.status = OperationDBM.Statuses.executing
258
+ operation_dbm.output_data = combine_dicts(
259
+ operation_dbm.output_data,
260
+ {
261
+ worker.worker_fullname: True
262
+ }
263
+ )
238
264
  session.commit()
239
265
  session.refresh(operation_dbm)
240
266
 
@@ -305,19 +331,15 @@ class OperationExecutorWorker(BaseWorker):
305
331
  sqlalchemy_db: SQLAlchemyDB,
306
332
  operation_executor: BaseOperationExecutor | None = None,
307
333
  filter_operation_types: str | list[str] | None = None,
308
- timeout_after_run=timedelta(seconds=0.1),
309
- timeout_after_err_in_run=timedelta(seconds=1),
310
334
  startup_funcs: list[Any] | None = None
311
335
  ):
312
- super().__init__(
313
- timeout_after_run=timeout_after_run,
314
- timeout_after_err_in_run=timeout_after_err_in_run,
315
- startup_funcs=startup_funcs
316
- )
336
+ super().__init__(startup_funcs=startup_funcs)
317
337
  self.sqlalchemy_db = sqlalchemy_db
318
338
  if operation_executor is None:
319
339
  operation_executor = BaseOperationExecutor(sqlalchemy_db=sqlalchemy_db)
320
340
  self.operation_executor = operation_executor
341
+ if isinstance(filter_operation_types, str):
342
+ filter_operation_types = [filter_operation_types]
321
343
  self.filter_operation_types = filter_operation_types
322
344
 
323
345
  def sync_on_startup(self):
@@ -325,7 +347,7 @@ class OperationExecutorWorker(BaseWorker):
325
347
  self.sync_run_startup_funcs()
326
348
 
327
349
  def sync_execute_operation(self, operation_dbm: OperationDBM) -> OperationDBM:
328
- return self.operation_executor.sync_safe_execute_operation(operation_dbm=operation_dbm)
350
+ return self.operation_executor.sync_safe_execute_operation(operation_dbm=operation_dbm, worker=self)
329
351
 
330
352
  def sync_run(self):
331
353
  operation_dbm: OperationDBM | None = get_operation_for_execution(
@@ -344,7 +366,7 @@ class OperationExecutorWorker(BaseWorker):
344
366
  await self.async_run_startup_funcs()
345
367
 
346
368
  async def async_execute_operation(self, operation_dbm: OperationDBM) -> OperationDBM:
347
- return await self.operation_executor.async_safe_execute_operation(operation_dbm=operation_dbm)
369
+ return await self.operation_executor.async_safe_execute_operation(operation_dbm=operation_dbm, worker=self)
348
370
 
349
371
  async def async_run(self):
350
372
  operation_dbm: OperationDBM | None = get_operation_for_execution(
@@ -373,19 +395,15 @@ class ScheduledOperationCreatorWorker(BaseWorker):
373
395
  self,
374
396
  *,
375
397
  sqlalchemy_db: SQLAlchemyDB,
376
- scheduled_operations: list[ScheduledOperation] | None = None,
377
- timeout_after_run=timedelta(seconds=0.1),
378
- timeout_after_err_in_run=timedelta(seconds=1),
398
+ scheduled_operations: ScheduledOperation | list[ScheduledOperation] | None = None,
379
399
  startup_funcs: list[Any] | None = None
380
400
  ):
381
- super().__init__(
382
- timeout_after_run=timeout_after_run,
383
- timeout_after_err_in_run=timeout_after_err_in_run,
384
- startup_funcs=startup_funcs
385
- )
401
+ super().__init__(startup_funcs=startup_funcs)
386
402
  self.sqlalchemy_db = sqlalchemy_db
387
403
  if scheduled_operations is None:
388
404
  scheduled_operations = []
405
+ if isinstance(scheduled_operations, ScheduledOperation):
406
+ scheduled_operations = [scheduled_operations]
389
407
  self.scheduled_operations = scheduled_operations
390
408
 
391
409
  def sync_on_startup(self):
@@ -4,7 +4,7 @@ from datetime import datetime, timedelta
4
4
  from typing import Any
5
5
  from uuid import uuid4
6
6
 
7
- from sqlalchemy import inspect, INTEGER, TEXT, TIMESTAMP
7
+ from sqlalchemy import inspect, INTEGER, TEXT, TIMESTAMP, func
8
8
  from sqlalchemy.dialects.postgresql import JSONB
9
9
  from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
10
10
 
@@ -78,10 +78,12 @@ class SimpleDBM(BaseDBM):
78
78
  INTEGER, primary_key=True, autoincrement=True, sort_order=-3, nullable=False
79
79
  )
80
80
  long_id: Mapped[str] = mapped_column(
81
- TEXT, insert_default=generate_default_long_id, unique=True, sort_order=-2, nullable=False
81
+ TEXT, insert_default=generate_default_long_id, server_default=func.gen_random_uuid(),
82
+ unique=True, sort_order=-2, nullable=False
82
83
  )
83
84
  creation_dt: Mapped[datetime] = mapped_column(
84
- TIMESTAMP(timezone=True), insert_default=now_utc_dt, index=True, sort_order=-1, nullable=False
85
+ TIMESTAMP(timezone=True), insert_default=now_utc_dt, server_default=func.now(),
86
+ index=True, sort_order=-1, nullable=False
85
87
  )
86
88
 
87
89
  def __repr__(self):
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "arpakitlib"
3
- version = "1.7.91"
3
+ version = "1.7.94"
4
4
  description = "arpakitlib"
5
5
  authors = ["arpakit <arpakit@gmail.com>", "arpakit_support <support@arpakit.com>"]
6
6
  license = "Apache License 2.0"
File without changes
File without changes
File without changes