arpakitlib 1.7.17__tar.gz → 1.7.19__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 (169) hide show
  1. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/PKG-INFO +2 -2
  2. arpakitlib-1.7.19/arpakitlib/_arpakit_project_template/manage/example_init_arpakit_project_template.sh +1 -0
  3. arpakitlib-1.7.19/arpakitlib/_arpakit_project_template/manage/start_api_for_dev_with_reload.py +9 -0
  4. arpakitlib-1.7.19/arpakitlib/_arpakit_project_template/manage/start_api_for_dev_without_reload.py +9 -0
  5. arpakitlib-1.7.19/arpakitlib/_arpakit_project_template/src/api/create_api_app.py +61 -0
  6. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/src/api/event.py +4 -4
  7. arpakitlib-1.7.19/arpakitlib/_arpakit_project_template/src/api/router/v1/main_router.py +3 -0
  8. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/src/api/start_api_for_dev.py +3 -3
  9. arpakitlib-1.7.19/arpakitlib/_arpakit_project_template/src/core/__init__.py +0 -0
  10. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/src/core/settings.py +2 -0
  11. arpakitlib-1.7.19/arpakitlib/_arpakit_project_template/src/db/__init__.py +0 -0
  12. arpakitlib-1.7.19/arpakitlib/_arpakit_project_template/src/db/sqlalchemy_model.py +0 -0
  13. arpakitlib-1.7.19/arpakitlib/_arpakit_project_template/src/db/util.py +0 -0
  14. arpakitlib-1.7.19/arpakitlib/_arpakit_project_template/src/test_data/__init__.py +0 -0
  15. arpakitlib-1.7.19/arpakitlib/_arpakit_project_template/src/util/__init__.py +0 -0
  16. arpakitlib-1.7.17/arpakitlib/ar_project_template_util.py → arpakitlib-1.7.19/arpakitlib/ar_arpakit_project_template_util.py +15 -2
  17. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_arpakitlib_cli_util.py +16 -4
  18. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_fastapi_util.py +11 -7
  19. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/pyproject.toml +2 -2
  20. arpakitlib-1.7.17/arpakitlib/_arpakit_project_template/manage/example_init_arpakit_project_template.sh +0 -1
  21. arpakitlib-1.7.17/arpakitlib/_arpakit_project_template/src/api/create_api_app.py +0 -5
  22. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/LICENSE +0 -0
  23. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/NOTICE +0 -0
  24. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/README.md +0 -0
  25. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/__init__.py +0 -0
  26. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/.gitignore +0 -0
  27. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/.python-version +0 -0
  28. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/ARPAKITLIB +0 -0
  29. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/AUTHOR.md +0 -0
  30. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/LICENSE +0 -0
  31. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/NOTICE +0 -0
  32. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/README.md +0 -0
  33. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/example.env +0 -0
  34. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/example_pyproject.toml +0 -0
  35. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/__init__.py +0 -0
  36. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/beutify_json.py +0 -0
  37. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/check_logging.py +0 -0
  38. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/check_settings.py +0 -0
  39. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/check_sqlalchemy_db_conn.py +0 -0
  40. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/docker_ps.sh +0 -0
  41. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/docker_run_postgres_for_dev.sh +0 -0
  42. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/docker_start_postgres_for_dev.sh +0 -0
  43. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/docker_stop_postgres_for_dev.sh +0 -0
  44. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/example_nginx_proxy.nginx +0 -0
  45. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/example_systemd.service +0 -0
  46. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/generate_env_example.py +0 -0
  47. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/git_commit.sh +0 -0
  48. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/git_push_arpakit_company_github_1.sh +0 -0
  49. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/git_push_arpakit_company_gitlab_1.sh +0 -0
  50. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/git_push_arpakit_github_1.sh +0 -0
  51. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/git_push_arpakit_gitlab_1.sh +0 -0
  52. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/git_remote_v.sh +0 -0
  53. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/git_set_arpakit_company_origin.sh +0 -0
  54. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/git_set_arpakit_origin.sh +0 -0
  55. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/git_status.sh +0 -0
  56. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/hello_world.py +0 -0
  57. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/note/__init__.py +0 -0
  58. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/note/note_1.txt +0 -0
  59. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/note/note_2.txt +0 -0
  60. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/note/note_3.txt +0 -0
  61. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/note/note_4.txt +0 -0
  62. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/note/note_5.txt +0 -0
  63. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/poetry_add_plugin_export.sh +0 -0
  64. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/poetry_check.sh +0 -0
  65. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/poetry_clear_cache.sh +0 -0
  66. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/poetry_config_virtualenvs_in_project_true.sh +0 -0
  67. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/poetry_generate_requirements.txt.sh +0 -0
  68. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/poetry_install.sh +0 -0
  69. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/poetry_lock.sh +0 -0
  70. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/poetry_remove_and_add_arpakitlib.sh +0 -0
  71. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/poetry_show.sh +0 -0
  72. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/poetry_show_arpakitlib.sh +0 -0
  73. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/poetry_update.sh +0 -0
  74. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/poetry_update_arpakitlib.sh +0 -0
  75. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/sandbox/__init__.py +0 -0
  76. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_1.py +0 -0
  77. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_2.py +0 -0
  78. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_3.py +0 -0
  79. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_4.py +0 -0
  80. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_5.py +0 -0
  81. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_6.py +0 -0
  82. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_7.py +0 -0
  83. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_8.sh +0 -0
  84. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_9.sh +0 -0
  85. /arpakitlib-1.7.17/arpakitlib/_arpakit_project_template/manage/init_sqlalchemy_db.py → /arpakitlib-1.7.19/arpakitlib/_arpakit_project_template/manage/sqlalchemy_db_init.py +0 -0
  86. /arpakitlib-1.7.17/arpakitlib/_arpakit_project_template/manage/reinit_sqlalchemy_db.py → /arpakitlib-1.7.19/arpakitlib/_arpakit_project_template/manage/sqlalchemy_db_reinit.py +0 -0
  87. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/resource/__init__.py +0 -0
  88. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/resource/static/__init__.py +0 -0
  89. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/src/__init__.py +0 -0
  90. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/src/additional_model/__init__.py +0 -0
  91. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/src/additional_model/additional_model.py +0 -0
  92. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/src/api/__init__.py +0 -0
  93. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/src/api/asgi.py +0 -0
  94. {arpakitlib-1.7.17/arpakitlib/_arpakit_project_template/src/business_service → arpakitlib-1.7.19/arpakitlib/_arpakit_project_template/src/api/router}/__init__.py +0 -0
  95. {arpakitlib-1.7.17/arpakitlib/_arpakit_project_template/src/core → arpakitlib-1.7.19/arpakitlib/_arpakit_project_template/src/api/router/v1}/__init__.py +0 -0
  96. {arpakitlib-1.7.17/arpakitlib/_arpakit_project_template/src/db → arpakitlib-1.7.19/arpakitlib/_arpakit_project_template/src/api/schema}/__init__.py +0 -0
  97. {arpakitlib-1.7.17/arpakitlib/_arpakit_project_template/src/test_data → arpakitlib-1.7.19/arpakitlib/_arpakit_project_template/src/api/schema/v1}/__init__.py +0 -0
  98. /arpakitlib-1.7.17/arpakitlib/_arpakit_project_template/src/db/sqlalchemy_model.py → /arpakitlib-1.7.19/arpakitlib/_arpakit_project_template/src/api/schema/v1/in_.py +0 -0
  99. /arpakitlib-1.7.17/arpakitlib/_arpakit_project_template/src/db/util.py → /arpakitlib-1.7.19/arpakitlib/_arpakit_project_template/src/api/schema/v1/out.py +0 -0
  100. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/src/api/transmitted_api_data.py +0 -0
  101. {arpakitlib-1.7.17/arpakitlib/_arpakit_project_template/src/util → arpakitlib-1.7.19/arpakitlib/_arpakit_project_template/src/business_service}/__init__.py +0 -0
  102. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/src/core/const.py +0 -0
  103. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/src/core/operation_executor.py +0 -0
  104. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/src/core/scheduled_operations.py +0 -0
  105. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/src/core/util.py +0 -0
  106. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_1.py +0 -0
  107. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_2.py +0 -0
  108. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_3.py +0 -0
  109. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_4.py +0 -0
  110. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_5.py +0 -0
  111. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_additional_model_util.py +0 -0
  112. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_aiogram_util.py +0 -0
  113. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_arpakit_lib_module_util.py +0 -0
  114. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_arpakit_schedule_uust_api_client_util.py +0 -0
  115. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_base64_util.py +0 -0
  116. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_base_worker_util.py +0 -0
  117. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_cache_file_util.py +0 -0
  118. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_datetime_util.py +0 -0
  119. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_dict_util.py +0 -0
  120. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_dream_ai_api_client_util.py +0 -0
  121. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_encrypt_decrypt_util.py +0 -0
  122. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_enumeration_util.py +0 -0
  123. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_fastapi_static/redoc/redoc.standalone.js +0 -0
  124. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_fastapi_static/swagger-ui/favicon-16x16.png +0 -0
  125. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_fastapi_static/swagger-ui/favicon-32x32.png +0 -0
  126. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_fastapi_static/swagger-ui/index.css +0 -0
  127. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_fastapi_static/swagger-ui/index.html +0 -0
  128. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_fastapi_static/swagger-ui/oauth2-redirect.html +0 -0
  129. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-initializer.js +0 -0
  130. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-bundle.js +0 -0
  131. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-bundle.js.map +0 -0
  132. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle-core.js +0 -0
  133. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle-core.js.map +0 -0
  134. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle.js +0 -0
  135. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle.js.map +0 -0
  136. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-standalone-preset.js +0 -0
  137. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-standalone-preset.js.map +0 -0
  138. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css +0 -0
  139. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css.map +0 -0
  140. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js +0 -0
  141. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js.map +0 -0
  142. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_file_storage_in_dir_util.py +0 -0
  143. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_file_util.py +0 -0
  144. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_hash_util.py +0 -0
  145. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_http_request_util.py +0 -0
  146. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_ip_util.py +0 -0
  147. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_json_db_util.py +0 -0
  148. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_json_util.py +0 -0
  149. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_jwt_util.py +0 -0
  150. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_list_of_dicts_to_xlsx.py +0 -0
  151. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_list_util.py +0 -0
  152. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_logging_util.py +0 -0
  153. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_mongodb_util.py +0 -0
  154. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_need_type_util.py +0 -0
  155. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_openai_api_client_util.py +0 -0
  156. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_operation_execution_util.py +0 -0
  157. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_parse_command.py +0 -0
  158. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_postgresql_util.py +0 -0
  159. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_run_cmd_util.py +0 -0
  160. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_schedule_uust_api_client_util.py +0 -0
  161. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_settings_util.py +0 -0
  162. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_sleep_util.py +0 -0
  163. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_sqlalchemy_model_util.py +0 -0
  164. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_sqlalchemy_util.py +0 -0
  165. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_ssh_runner_util.py +0 -0
  166. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_str_util.py +0 -0
  167. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_type_util.py +0 -0
  168. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/arpakitlib/ar_yookassa_api_client_util.py +0 -0
  169. {arpakitlib-1.7.17 → arpakitlib-1.7.19}/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.17
3
+ Version: 1.7.19
4
4
  Summary: arpakitlib
5
5
  Home-page: https://github.com/ARPAKIT-Company/arpakitlib
6
6
  License: Apache-2.0
@@ -8,7 +8,7 @@ Keywords: arpakitlib,arpakit,arpakit-company,arpakitcompany,arpakit_company
8
8
  Author: arpakit
9
9
  Author-email: arpakit@gmail.com
10
10
  Requires-Python: >=3.12,<4.0
11
- Classifier: Development Status :: 4 - Beta
11
+ Classifier: Development Status :: 5 - Production/Stable
12
12
  Classifier: Intended Audience :: Developers
13
13
  Classifier: License :: OSI Approved :: Apache Software License
14
14
  Classifier: Operating System :: OS Independent
@@ -0,0 +1 @@
1
+ arpakitlib -c init_arpakit_project_template -project_dirpath ./ -overwrite_if_exists ... -project_name ... -sql_db_port ... -api_port ... -ignore_paths_startswith ... -only_paths_startswith ...
@@ -0,0 +1,9 @@
1
+ from src.api.start_api_for_dev import start_api_for_dev
2
+
3
+
4
+ def command():
5
+ start_api_for_dev(reload=True)
6
+
7
+
8
+ if __name__ == '__main__':
9
+ command()
@@ -0,0 +1,9 @@
1
+ from src.api.start_api_for_dev import start_api_for_dev
2
+
3
+
4
+ def command():
5
+ start_api_for_dev(reload=False)
6
+
7
+
8
+ if __name__ == '__main__':
9
+ command()
@@ -0,0 +1,61 @@
1
+ from fastapi import FastAPI
2
+
3
+ from arpakitlib.ar_fastapi_util import create_fastapi_app, InitSqlalchemyDBStartupAPIEvent, InitFileStoragesInDir, \
4
+ create_handle_exception, create_handle_exception_creating_story_log
5
+ from src.api.event import FirstStartupAPIEvent, FirstShutdownAPIEvent
6
+ from src.api.router.v1.main_router import api_v1_main_router
7
+ from src.api.transmitted_api_data import TransmittedAPIData
8
+ from src.core.settings import get_cached_settings
9
+ from src.core.util import get_cached_sqlalchemy_db, get_cached_media_file_storage_in_dir, \
10
+ get_cached_cache_file_storage_in_dir, get_cached_dump_file_storage_in_dir, setup_logging
11
+
12
+
13
+ def create_api_app() -> FastAPI:
14
+ setup_logging()
15
+
16
+ settings = get_cached_settings()
17
+ sqlalchemy_db = get_cached_sqlalchemy_db() if settings.sql_db_url is not None else None
18
+
19
+ transmitted_api_data = TransmittedAPIData(
20
+ settings=get_cached_settings(),
21
+ sqlalchemy_db=sqlalchemy_db
22
+ )
23
+
24
+ api_app = create_fastapi_app(
25
+ title="{PROJECT_NAME}",
26
+ description="{PROJECT_NAME}",
27
+ log_filepath=get_cached_settings().log_filepath,
28
+ handle_exception_=create_handle_exception(
29
+ funcs_before_response=[
30
+ create_handle_exception_creating_story_log(sqlalchemy_db=sqlalchemy_db)
31
+ if sqlalchemy_db is not None else None
32
+ ],
33
+ async_funcs_after_response=[]
34
+ ),
35
+ startup_api_events=[
36
+ FirstStartupAPIEvent(transmitted_api_data=transmitted_api_data),
37
+ InitFileStoragesInDir(
38
+ file_storages_in_dir=[
39
+ get_cached_media_file_storage_in_dir(),
40
+ get_cached_cache_file_storage_in_dir(),
41
+ get_cached_dump_file_storage_in_dir()
42
+ ]
43
+ ),
44
+ (
45
+ InitSqlalchemyDBStartupAPIEvent(sqlalchemy_db=sqlalchemy_db)
46
+ if (sqlalchemy_db is not None and settings.init_sql_db_at_start) else None
47
+ ),
48
+ ],
49
+ shutdown_api_events=[
50
+ FirstShutdownAPIEvent(transmitted_api_data=transmitted_api_data)
51
+ ],
52
+ transmitted_api_data=transmitted_api_data,
53
+ main_api_router=api_v1_main_router,
54
+ media_dirpath=settings.media_dirpath
55
+ )
56
+
57
+ return api_app
58
+
59
+
60
+ if __name__ == '__main__':
61
+ create_api_app()
@@ -6,19 +6,19 @@ from src.api.transmitted_api_data import TransmittedAPIData
6
6
  _logger = logging.getLogger(__name__)
7
7
 
8
8
 
9
- class StartupAPIEvent(BaseStartupAPIEvent):
9
+ class FirstStartupAPIEvent(BaseStartupAPIEvent):
10
10
  def __init__(self, transmitted_api_data: TransmittedAPIData):
11
11
  super().__init__()
12
12
  self.transmitted_api_data = transmitted_api_data
13
13
 
14
14
  async def async_on_startup(self, *args, **kwargs):
15
- pass
15
+ self._logger.info(self.__class__.__name__)
16
16
 
17
17
 
18
- class ShutdownAPIEvent(BaseShutdownAPIEvent):
18
+ class FirstShutdownAPIEvent(BaseShutdownAPIEvent):
19
19
  def __init__(self, transmitted_api_data: TransmittedAPIData):
20
20
  super().__init__()
21
21
  self.transmitted_api_data = transmitted_api_data
22
22
 
23
23
  async def async_on_shutdown(self, *args, **kwargs):
24
- pass
24
+ self._logger.info(self.__class__.__name__)
@@ -0,0 +1,3 @@
1
+ from fastapi import APIRouter
2
+
3
+ api_v1_main_router = APIRouter()
@@ -1,10 +1,10 @@
1
1
  import uvicorn
2
2
 
3
3
 
4
- def start_app_for_dev(reload: bool = True):
4
+ def start_api_for_dev(reload: bool = True):
5
5
  uvicorn.run(
6
6
  "src.api.asgi:app",
7
- port=...,
7
+ port=int("{API_PORT}"),
8
8
  host="localhost",
9
9
  workers=1,
10
10
  reload=reload
@@ -12,4 +12,4 @@ def start_app_for_dev(reload: bool = True):
12
12
 
13
13
 
14
14
  if __name__ == '__main__':
15
- start_app_for_dev()
15
+ start_api_for_dev()
@@ -34,6 +34,8 @@ class Settings(SimpleSettings):
34
34
  "postgresql://{PROJECT_NAME}:{PROJECT_NAME}@127.0.0.1:{SQL_DB_PORT}/{PROJECT_NAME}"
35
35
  )
36
36
 
37
+ init_sql_db_at_start: bool = False
38
+
37
39
  sql_db_echo: bool = False
38
40
 
39
41
 
@@ -4,6 +4,7 @@ import logging
4
4
  import os
5
5
 
6
6
  from arpakitlib.ar_str_util import make_none_if_blank, raise_if_string_blank
7
+ from arpakitlib.ar_type_util import raise_for_type
7
8
 
8
9
  _ARPAKIT_LIB_MODULE_VERSION = "3.0"
9
10
 
@@ -15,8 +16,10 @@ def init_arpakit_project_template(
15
16
  project_dirpath: str,
16
17
  overwrite_if_exists: bool = False,
17
18
  project_name: str | None = None,
19
+ sql_db_port: int | None = None,
20
+ api_port: int | None = None,
18
21
  ignore_paths_startswith: list[str] | str | None = None,
19
- only_paths_startswith: list[str] | str | None = None
22
+ only_paths_startswith: list[str] | str | None = None,
20
23
  ):
21
24
  raise_if_string_blank(project_dirpath)
22
25
 
@@ -24,6 +27,12 @@ def init_arpakit_project_template(
24
27
  project_name = project_name.strip()
25
28
  project_name = make_none_if_blank(project_name)
26
29
 
30
+ if sql_db_port is not None:
31
+ raise_for_type(sql_db_port, int)
32
+
33
+ if api_port is not None:
34
+ raise_for_type(api_port, int)
35
+
27
36
  if isinstance(ignore_paths_startswith, str):
28
37
  ignore_paths_startswith = [ignore_paths_startswith]
29
38
  if ignore_paths_startswith is None:
@@ -59,8 +68,12 @@ def init_arpakit_project_template(
59
68
  continue
60
69
  with open(os.path.join(root, file), "r", encoding="utf-8") as _file:
61
70
  _content = _file.read()
62
- if project_name:
71
+ if project_name is not None:
63
72
  _content = _content.replace("{PROJECT_NAME}", project_name)
73
+ if sql_db_port is not None:
74
+ _content = _content.replace("{SQL_DB_PORT}", str(sql_db_port))
75
+ if api_port is not None:
76
+ _content = _content.replace("{API_PORT}", str(api_port))
64
77
  res[rel_path] = _content
65
78
  return res
66
79
 
@@ -2,9 +2,9 @@
2
2
 
3
3
  import sys
4
4
 
5
+ from arpakitlib.ar_arpakit_project_template_util import init_arpakit_project_template
5
6
  from arpakitlib.ar_need_type_util import parse_need_type, NeedTypes
6
7
  from arpakitlib.ar_parse_command import parse_command
7
- from arpakitlib.ar_project_template_util import init_arpakit_project_template
8
8
  from arpakitlib.ar_str_util import raise_if_string_blank
9
9
 
10
10
 
@@ -25,7 +25,8 @@ def execute_arpakitlib_cli(*, full_command: str | None = None):
25
25
  print(
26
26
  "Commands:"
27
27
  "\n- init_arpakit_project_template"
28
- " (project_dirpath, overwrite_if_exists, project_name, ignore_paths_startswith, only_paths_startswith)"
28
+ " (project_dirpath, overwrite_if_exists, project_name, sql_db_port, api_port,"
29
+ " ignore_paths_startswith, only_paths_startswith)"
29
30
  )
30
31
 
31
32
  elif command == "init_arpakit_project_template":
@@ -36,7 +37,17 @@ def execute_arpakitlib_cli(*, full_command: str | None = None):
36
37
  allow_none=False
37
38
  )
38
39
  project_name: str = parsed_command.get_value_by_keys(keys=["pm", "project_name"])
39
- project_name = project_name if project_name.strip() else None
40
+ project_name = project_name.strip() if project_name.strip() else None
41
+ sql_db_port: int | None = parse_need_type(
42
+ value=parsed_command.get_value_by_keys(keys=["sdp", "sql_db_port"]),
43
+ need_type=NeedTypes.int_,
44
+ allow_none=True
45
+ )
46
+ api_port: int | None = parse_need_type(
47
+ value=parsed_command.get_value_by_keys(keys=["ap", "api_port"]),
48
+ need_type=NeedTypes.int_,
49
+ allow_none=True
50
+ )
40
51
  ignore_paths_startswith: list[str] | None = parse_need_type(
41
52
  value=parsed_command.get_value_by_keys(keys=["ipsw", "ignore_paths_startswith"]),
42
53
  need_type=NeedTypes.list_of_str,
@@ -48,7 +59,8 @@ def execute_arpakitlib_cli(*, full_command: str | None = None):
48
59
  allow_none=True
49
60
  )
50
61
  init_arpakit_project_template(
51
- project_dirpath=project_dirpath, overwrite_if_exists=overwrite_if_exists, project_name=project_name,
62
+ project_dirpath=project_dirpath, overwrite_if_exists=overwrite_if_exists,
63
+ project_name=project_name, sql_db_port=sql_db_port, api_port=api_port,
52
64
  ignore_paths_startswith=ignore_paths_startswith, only_paths_startswith=only_paths_startswith
53
65
  )
54
66
 
@@ -7,6 +7,7 @@ import logging
7
7
  import os.path
8
8
  import pathlib
9
9
  import traceback
10
+ from contextlib import suppress
10
11
  from datetime import datetime
11
12
  from typing import Any, Callable
12
13
 
@@ -19,7 +20,6 @@ import starlette.status
19
20
  from fastapi import FastAPI, APIRouter, Query, Security
20
21
  from fastapi.openapi.docs import get_swagger_ui_html, get_redoc_html
21
22
  from fastapi.security import APIKeyHeader
22
- from jaraco.context import suppress
23
23
  from pydantic import BaseModel, ConfigDict
24
24
  from starlette.middleware.cors import CORSMiddleware
25
25
  from starlette.staticfiles import StaticFiles
@@ -147,14 +147,16 @@ class APIException(fastapi.exceptions.HTTPException):
147
147
 
148
148
  def create_handle_exception(
149
149
  *,
150
- funcs_before_response: list[Callable] | None = None,
151
- async_funcs_after_response: list[Callable] | None = None,
152
- ) -> Any:
150
+ funcs_before_response: list[Callable | None] | None = None,
151
+ async_funcs_after_response: list[Callable | None] | None = None,
152
+ ) -> Callable:
153
153
  if funcs_before_response is None:
154
154
  funcs_before_response = []
155
+ funcs_before_response = [v for v in funcs_before_response if v is not None]
155
156
 
156
157
  if async_funcs_after_response is None:
157
158
  async_funcs_after_response = []
159
+ async_funcs_after_response = [v for v in async_funcs_after_response if v is not None]
158
160
 
159
161
  async def handle_exception(
160
162
  request: starlette.requests.Request, exception: Exception
@@ -564,7 +566,7 @@ def simple_api_router_for_testing():
564
566
 
565
567
 
566
568
  _DEFAULT_CONTACT = {
567
- "name": "arpakit",
569
+ "name": "ARPAKIT Company",
568
570
  "email": "support@arpakit.com"
569
571
  }
570
572
 
@@ -575,8 +577,8 @@ def create_fastapi_app(
575
577
  description: str | None = "arpakitlib FastAPI",
576
578
  log_filepath: str | None = "./story.log",
577
579
  handle_exception_: Callable | None = create_handle_exception(),
578
- startup_api_events: list[BaseStartupAPIEvent] | None = None,
579
- shutdown_api_events: list[BaseShutdownAPIEvent] | None = None,
580
+ startup_api_events: list[BaseStartupAPIEvent | None] | None = None,
581
+ shutdown_api_events: list[BaseShutdownAPIEvent | None] | None = None,
580
582
  transmitted_api_data: BaseTransmittedAPIData = BaseTransmittedAPIData(),
581
583
  main_api_router: APIRouter = simple_api_router_for_testing(),
582
584
  contact: dict[str, Any] | None = None,
@@ -589,9 +591,11 @@ def create_fastapi_app(
589
591
 
590
592
  if not startup_api_events:
591
593
  startup_api_events = [BaseStartupAPIEvent()]
594
+ startup_api_events = [v for v in startup_api_events if v is not None]
592
595
 
593
596
  if not shutdown_api_events:
594
597
  shutdown_api_events = [BaseShutdownAPIEvent()]
598
+ shutdown_api_events = [v for v in shutdown_api_events if v is not None]
595
599
 
596
600
  app = FastAPI(
597
601
  title=title,
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "arpakitlib"
3
- version = "1.7.17"
3
+ version = "1.7.19"
4
4
  description = "arpakitlib"
5
5
  authors = ["arpakit <arpakit@gmail.com>", "arpakit_support <support@arpakit.com>"]
6
6
  license = "Apache License 2.0"
@@ -8,7 +8,7 @@ readme = "README.md"
8
8
  keywords = ["arpakitlib", "arpakit", "arpakit-company", "arpakitcompany", "arpakit_company"]
9
9
  package-mode = true
10
10
  classifiers = [
11
- "Development Status :: 4 - Beta",
11
+ "Development Status :: 5 - Production/Stable",
12
12
  "Intended Audience :: Developers",
13
13
  "License :: OSI Approved :: Apache Software License",
14
14
  "Programming Language :: Python",
@@ -1 +0,0 @@
1
- arpakitlib -c init_arpakit_project_template -project_dirpath ./ -overwrite_if_exists ... -project_name ... -ignore_paths_startswith ... -only_paths_startswith ...
@@ -1,5 +0,0 @@
1
- from fastapi import FastAPI
2
-
3
-
4
- def create_api_app() -> FastAPI:
5
- pass
File without changes
File without changes
File without changes