arpakitlib 1.7.76__tar.gz → 1.7.77__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.76 → arpakitlib-1.7.77}/PKG-INFO +1 -1
  2. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_fastapi_util.py +72 -39
  3. arpakitlib-1.7.77/arpakitlib/ar_func_util.py +51 -0
  4. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_type_util.py +0 -5
  5. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/pyproject.toml +1 -1
  6. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/LICENSE +0 -0
  7. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/NOTICE +0 -0
  8. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/README.md +0 -0
  9. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/__init__.py +0 -0
  10. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/.gitignore +0 -0
  11. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/.python-version +0 -0
  12. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/ARPAKITLIB +0 -0
  13. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/AUTHOR.md +0 -0
  14. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/LICENSE +0 -0
  15. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/NOTICE +0 -0
  16. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/README.md +0 -0
  17. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/example.env +0 -0
  18. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/__init__.py +0 -0
  19. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/docker_ps.sh +0 -0
  20. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/docker_ps_a.sh +0 -0
  21. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/docker_run_postgres_for_dev.sh +0 -0
  22. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/docker_start_postgres_for_dev.sh +0 -0
  23. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/docker_stop_postgres_for_dev.sh +0 -0
  24. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/example_nginx_proxy.nginx +0 -0
  25. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/example_poetry_arpakitlib.sh +0 -0
  26. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/example_pyproject.toml +0 -0
  27. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/example_systemd.service +0 -0
  28. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/git_branch.sh +0 -0
  29. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/git_commit.sh +0 -0
  30. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/git_push_arpakit_company_github_1.sh +0 -0
  31. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/git_push_arpakit_company_gitlab_1.sh +0 -0
  32. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/git_push_arpakit_github_1.sh +0 -0
  33. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/git_push_arpakit_gitlab_1.sh +0 -0
  34. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/git_remote_v.sh +0 -0
  35. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/git_set_arpakit_company_origin.sh +0 -0
  36. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/git_set_arpakit_origin.sh +0 -0
  37. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/git_status.sh +0 -0
  38. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/hello_world.py +0 -0
  39. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/json_beutify.py +0 -0
  40. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/logging_check.py +0 -0
  41. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/note/__init__.py +0 -0
  42. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/note/note_1.txt +0 -0
  43. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/note/note_2.txt +0 -0
  44. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/note/note_3.txt +0 -0
  45. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/note/note_4.txt +0 -0
  46. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/note/note_5.txt +0 -0
  47. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/poetry_add_plugin_export.sh +0 -0
  48. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/poetry_check.sh +0 -0
  49. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/poetry_clear_cache.sh +0 -0
  50. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/poetry_config_virtualenvs_in_project_true.sh +0 -0
  51. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/poetry_generate_requirements.txt.sh +0 -0
  52. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/poetry_install.sh +0 -0
  53. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/poetry_lock.sh +0 -0
  54. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/poetry_remove_and_add_arpakitlib.sh +0 -0
  55. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/poetry_show.sh +0 -0
  56. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/poetry_show_arpakitlib.sh +0 -0
  57. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/poetry_update.sh +0 -0
  58. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/poetry_update_arpakitlib.sh +0 -0
  59. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/requirements.txt +0 -0
  60. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/sandbox/__init__.py +0 -0
  61. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_1.py +0 -0
  62. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_2.py +0 -0
  63. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_3.py +0 -0
  64. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_4.py +0 -0
  65. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_5.py +0 -0
  66. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_6.py +0 -0
  67. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_7.py +0 -0
  68. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_8.sh +0 -0
  69. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_9.sh +0 -0
  70. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/settings_check.py +0 -0
  71. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/settings_generate_env_example.py +0 -0
  72. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/sqlalchemy_db_check_conn.py +0 -0
  73. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/sqlalchemy_db_init.py +0 -0
  74. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/manage/sqlalchemy_db_reinit.py +0 -0
  75. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/resource/__init__.py +0 -0
  76. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/resource/static/__init__.py +0 -0
  77. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/resource/static/healthcheck +0 -0
  78. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/resource/static/helloworld +0 -0
  79. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/src/__init__.py +0 -0
  80. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/src/additional_model/__init__.py +0 -0
  81. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/src/additional_model/additional_model.py +0 -0
  82. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/src/api/__init__.py +0 -0
  83. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/src/api/asgi.py +0 -0
  84. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/src/api/auth.py +0 -0
  85. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/src/api/const.py +0 -0
  86. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/src/api/create_api_app.py +0 -0
  87. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/src/api/event.py +0 -0
  88. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/src/api/router/__init__.py +0 -0
  89. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/src/api/router/main_router.py +0 -0
  90. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/src/api/router/v1/__init__.py +0 -0
  91. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/src/api/router/v1/get_api_error_info.py +0 -0
  92. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/src/api/router/v1/main_router.py +0 -0
  93. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/src/api/schema/__init__.py +0 -0
  94. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/src/api/schema/v1/__init__.py +0 -0
  95. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/src/api/schema/v1/in_.py +0 -0
  96. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/src/api/schema/v1/out.py +0 -0
  97. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/src/api/start_api_for_dev.py +0 -0
  98. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/src/api/start_api_for_dev_with_reload.py +0 -0
  99. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/src/api/transmitted_api_data.py +0 -0
  100. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/src/api/util.py +0 -0
  101. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/src/business_service/__init__.py +0 -0
  102. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/src/core/__init__.py +0 -0
  103. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/src/core/const.py +0 -0
  104. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/src/core/settings.py +0 -0
  105. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/src/core/util.py +0 -0
  106. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/src/db/__init__.py +0 -0
  107. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/src/db/sqlalchemy_model.py +0 -0
  108. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/src/db/util.py +0 -0
  109. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/src/operation_execution/__init__.py +0 -0
  110. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/src/operation_execution/const.py +0 -0
  111. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/src/operation_execution/operation_executor.py +0 -0
  112. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/src/operation_execution/scheduled_operations.py +0 -0
  113. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/src/operation_execution/start_operation_executor_worker_for_dev.py +0 -0
  114. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/src/operation_execution/start_scheduled_operation_creator_worker_for_dev.py +0 -0
  115. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/src/operation_execution/util.py +0 -0
  116. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/src/test_data/__init__.py +0 -0
  117. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_1.py +0 -0
  118. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_2.py +0 -0
  119. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_3.py +0 -0
  120. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_4.py +0 -0
  121. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_5.py +0 -0
  122. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/_arpakit_project_template/src/util/__init__.py +0 -0
  123. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/api_key_util.py +0 -0
  124. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_additional_model_util.py +0 -0
  125. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_aiogram_util.py +0 -0
  126. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_arpakit_lib_module_util.py +0 -0
  127. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_arpakit_project_template_util.py +0 -0
  128. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_arpakit_schedule_uust_api_client_util.py +0 -0
  129. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_arpakitlib_cli_util.py +0 -0
  130. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_base64_util.py +0 -0
  131. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_base_worker_util.py +0 -0
  132. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_cache_file_util.py +0 -0
  133. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_datetime_util.py +0 -0
  134. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_dict_util.py +0 -0
  135. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_dream_ai_api_client_util.py +0 -0
  136. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_encrypt_decrypt_util.py +0 -0
  137. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_enumeration_util.py +0 -0
  138. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_exception_util.py +0 -0
  139. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_fastapi_static/healthcheck +0 -0
  140. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_fastapi_static/redoc/redoc.standalone.js +0 -0
  141. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_fastapi_static/swagger-ui/favicon-16x16.png +0 -0
  142. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_fastapi_static/swagger-ui/favicon-32x32.png +0 -0
  143. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_fastapi_static/swagger-ui/index.css +0 -0
  144. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_fastapi_static/swagger-ui/index.html +0 -0
  145. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_fastapi_static/swagger-ui/oauth2-redirect.html +0 -0
  146. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-initializer.js +0 -0
  147. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-bundle.js +0 -0
  148. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-bundle.js.map +0 -0
  149. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle-core.js +0 -0
  150. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle-core.js.map +0 -0
  151. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle.js +0 -0
  152. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle.js.map +0 -0
  153. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-standalone-preset.js +0 -0
  154. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-standalone-preset.js.map +0 -0
  155. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css +0 -0
  156. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css.map +0 -0
  157. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js +0 -0
  158. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js.map +0 -0
  159. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_file_storage_in_dir_util.py +0 -0
  160. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_file_util.py +0 -0
  161. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_hash_util.py +0 -0
  162. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_http_request_util.py +0 -0
  163. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_ip_util.py +0 -0
  164. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_json_db_util.py +0 -0
  165. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_json_util.py +0 -0
  166. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_jwt_util.py +0 -0
  167. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_list_of_dicts_to_xlsx.py +0 -0
  168. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_list_util.py +0 -0
  169. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_logging_util.py +0 -0
  170. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_mongodb_util.py +0 -0
  171. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_need_type_util.py +0 -0
  172. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_openai_api_client_util.py +0 -0
  173. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_operation_execution_util.py +0 -0
  174. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_parse_command.py +0 -0
  175. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_postgresql_util.py +0 -0
  176. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_run_cmd_util.py +0 -0
  177. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_schedule_uust_api_client_util.py +0 -0
  178. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_settings_util.py +0 -0
  179. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_sleep_util.py +0 -0
  180. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_sqlalchemy_model_util.py +0 -0
  181. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_sqlalchemy_util.py +0 -0
  182. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_ssh_runner_util.py +0 -0
  183. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_str_util.py +0 -0
  184. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/arpakitlib/ar_yookassa_api_client_util.py +0 -0
  185. {arpakitlib-1.7.76 → arpakitlib-1.7.77}/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.76
3
+ Version: 1.7.77
4
4
  Summary: arpakitlib
5
5
  Home-page: https://github.com/ARPAKIT-Company/arpakitlib
6
6
  License: Apache-2.0
@@ -29,11 +29,12 @@ from arpakitlib.ar_base_worker_util import BaseWorker, safe_run_worker_in_backgr
29
29
  from arpakitlib.ar_dict_util import combine_dicts
30
30
  from arpakitlib.ar_enumeration_util import Enumeration
31
31
  from arpakitlib.ar_file_storage_in_dir_util import FileStorageInDir
32
+ from arpakitlib.ar_func_util import raise_if_not_async_func, is_async_function
32
33
  from arpakitlib.ar_json_util import safely_transfer_obj_to_json_str_to_json_obj
33
34
  from arpakitlib.ar_logging_util import setup_normal_logging
34
35
  from arpakitlib.ar_sqlalchemy_model_util import StoryLogDBM
35
36
  from arpakitlib.ar_sqlalchemy_util import SQLAlchemyDB
36
- from arpakitlib.ar_type_util import raise_for_type, raise_if_not_async_func, raise_if_none
37
+ from arpakitlib.ar_type_util import raise_for_type
37
38
 
38
39
  _ARPAKIT_LIB_MODULE_VERSION = "3.0"
39
40
 
@@ -250,7 +251,7 @@ def create_handle_exception(
250
251
  _func_data = func(
251
252
  status_code=status_code, error_so=error_so, request=request, exception=exception, **_kwargs
252
253
  )
253
- if asyncio.iscoroutine(_func_data):
254
+ if is_async_function(_func_data):
254
255
  _func_data = await _func_data
255
256
  if _func_data is not None:
256
257
  status_code, error_so, _kwargs = _func_data[0], _func_data[1], _func_data[2]
@@ -470,19 +471,41 @@ class BaseAPIAuthData(BaseModel):
470
471
  token_string: str | None = None
471
472
  api_key_string: str | None = None
472
473
 
474
+ is_token_string_correct: bool | None = None
475
+ is_api_key_string_correct: bool | None = None
476
+
473
477
 
474
478
  def base_api_auth(
475
479
  *,
476
480
  require_api_key_string: bool = False,
477
- require_token_string: bool = False
481
+ require_token_string: bool = False,
482
+ validate_api_key_func: Callable | None = None,
483
+ validate_token_func: Callable | None = None,
484
+ correct_api_keys: str | list[str] | None = None,
485
+ correct_tokens: str | list[str] | None = None,
486
+ require_correct_api_key: bool = False,
487
+ require_correct_token: bool = False,
478
488
  ) -> Callable:
489
+ if isinstance(correct_api_keys, str):
490
+ correct_api_keys = [correct_api_keys]
491
+ if correct_api_keys is not None:
492
+ raise_for_type(correct_api_keys, list)
493
+ validate_api_key_func = lambda *args, **kwargs: kwargs["api_key_string"] in correct_api_keys
494
+
495
+ if isinstance(correct_tokens, str):
496
+ correct_tokens = [correct_tokens]
497
+ if correct_tokens is not None:
498
+ raise_for_type(correct_tokens, list)
499
+ validate_token_func = lambda *args, **kwargs: kwargs["token_string"] in correct_tokens
500
+
479
501
  async def func(
480
502
  *,
481
503
  ac: fastapi.security.HTTPAuthorizationCredentials | None = fastapi.Security(
482
504
  fastapi.security.HTTPBearer(auto_error=False)
483
505
  ),
484
506
  api_key_string: str | None = Security(APIKeyHeader(name="apikey", auto_error=False)),
485
- request: starlette.requests.Request
507
+ request: starlette.requests.Request,
508
+ transmitted_api_data: BaseTransmittedAPIData = Depends(get_transmitted_api_data)
486
509
  ) -> BaseAPIAuthData:
487
510
 
488
511
  api_auth_data = BaseAPIAuthData(
@@ -537,6 +560,8 @@ def base_api_auth(
537
560
  if not api_auth_data.token_string:
538
561
  api_auth_data.token_string = None
539
562
 
563
+ # api_key
564
+
540
565
  if require_api_key_string and not api_auth_data.api_key_string:
541
566
  raise APIException(
542
567
  status_code=starlette.status.HTTP_401_UNAUTHORIZED,
@@ -544,6 +569,8 @@ def base_api_auth(
544
569
  error_data=safely_transfer_obj_to_json_str_to_json_obj(api_auth_data.model_dump())
545
570
  )
546
571
 
572
+ # token
573
+
547
574
  if require_token_string and not api_auth_data.token_string:
548
575
  raise APIException(
549
576
  status_code=starlette.status.HTTP_401_UNAUTHORIZED,
@@ -551,49 +578,55 @@ def base_api_auth(
551
578
  error_data=safely_transfer_obj_to_json_str_to_json_obj(api_auth_data.model_dump())
552
579
  )
553
580
 
554
- return api_auth_data
581
+ # api_key
555
582
 
556
- return func
583
+ if validate_api_key_func is not None:
584
+ validate_api_key_func_data = validate_api_key_func(
585
+ api_key_string=api_auth_data.api_key_string,
586
+ token_string=api_auth_data.token_string,
587
+ base_api_auth_data=api_auth_data,
588
+ transmitted_api_data=transmitted_api_data,
589
+ request=request
590
+ )
591
+ if is_async_function(validate_api_key_func_data):
592
+ validate_api_key_func_data = await validate_api_key_func_data
593
+ api_auth_data.is_api_key_string_correct = validate_api_key_func_data
557
594
 
595
+ # token
558
596
 
559
- class CheckAPIKeyAPIAuthData(BaseAPIAuthData):
560
- is_api_key_correct: bool | None = None
597
+ if validate_token_func is not None:
598
+ validate_token_func_data = validate_token_func(
599
+ api_key_string=api_auth_data.api_key_string,
600
+ token_string=api_auth_data.token_string,
601
+ base_api_auth_data=api_auth_data,
602
+ transmitted_api_data=transmitted_api_data,
603
+ request=request
604
+ )
605
+ if is_async_function(validate_token_func_data):
606
+ validate_token_func_data_data = await validate_token_func_data
607
+ api_auth_data.is_token_string_correct = validate_token_func_data_data
561
608
 
609
+ # api_key
562
610
 
563
- def api_key_api_auth(
564
- *,
565
- validate_api_key_func: Callable | None = None,
566
- correct_api_key: str | None = None
567
- ):
568
- if correct_api_key is not None:
569
- validate_api_key_func = lambda *args, **kwargs: kwargs["api_key_string"] == correct_api_key
570
- raise_if_none(validate_api_key_func)
611
+ if require_correct_api_key:
612
+ if not api_auth_data.is_api_key_string_correct:
613
+ raise APIException(
614
+ status_code=starlette.status.HTTP_401_UNAUTHORIZED,
615
+ error_code=BaseAPIErrorCodes.cannot_authorize,
616
+ error_data=safely_transfer_obj_to_json_str_to_json_obj(api_auth_data.model_dump())
617
+ )
571
618
 
572
- async def func(
573
- *,
574
- base_api_auth_data: BaseAPIAuthData = Depends(base_api_auth(
575
- require_api_key_string=True,
576
- require_token_string=False
577
- )),
578
- transmitted_api_data: BaseTransmittedAPIData = Depends(get_transmitted_api_data),
579
- request: starlette.requests.Request
580
- ) -> CheckAPIKeyAPIAuthData:
581
- check_api_key_api_auth_data = CheckAPIKeyAPIAuthData.model_validate(base_api_auth_data)
582
- check_api_key_api_auth_data.is_api_key_correct = validate_api_key_func(
583
- api_key_string=base_api_auth_data.api_key_string,
584
- base_api_auth_data=base_api_auth_data,
585
- transmitted_api_data=transmitted_api_data,
586
- request=request
587
- )
619
+ # token
588
620
 
589
- if not check_api_key_api_auth_data.is_api_key_correct:
590
- raise APIException(
591
- status_code=starlette.status.HTTP_401_UNAUTHORIZED,
592
- error_code=BaseAPIErrorCodes.cannot_authorize,
593
- error_data=safely_transfer_obj_to_json_str_to_json_obj(check_api_key_api_auth_data.model_dump())
594
- )
621
+ if require_correct_token:
622
+ if not api_auth_data.is_token_string_correct:
623
+ raise APIException(
624
+ status_code=starlette.status.HTTP_401_UNAUTHORIZED,
625
+ error_code=BaseAPIErrorCodes.cannot_authorize,
626
+ error_data=safely_transfer_obj_to_json_str_to_json_obj(api_auth_data.model_dump())
627
+ )
595
628
 
596
- return check_api_key_api_auth_data
629
+ return api_auth_data
597
630
 
598
631
  return func
599
632
 
@@ -0,0 +1,51 @@
1
+ import asyncio
2
+ import inspect
3
+ from typing import Callable
4
+
5
+ _ARPAKIT_LIB_MODULE_VERSION = "3.0"
6
+
7
+
8
+ def is_async_function(func: Callable) -> bool:
9
+ return asyncio.iscoroutinefunction(func)
10
+
11
+
12
+ def is_sync_function(func: Callable) -> bool:
13
+ return inspect.isfunction(func) and not is_async_function(func)
14
+
15
+
16
+ def raise_if_not_async_func(func: Callable):
17
+ if not is_async_function(func):
18
+ raise TypeError(f"The provided function '{func.__name__}' is not an async function")
19
+
20
+
21
+ def raise_if_not_sync_func(func: Callable):
22
+ if not is_sync_function(func):
23
+ raise TypeError(f"The provided function '{func.__name__}' is not a sync function")
24
+
25
+
26
+ def raise_if_async_func(func: Callable):
27
+ if is_async_function(func):
28
+ raise TypeError(f"The provided function '{func.__name__}' should not be async")
29
+
30
+
31
+ def raise_if_sync_func(func: Callable):
32
+ if is_sync_function(func):
33
+ raise TypeError(f"The provided function '{func.__name__}' should not be sync")
34
+
35
+
36
+ def __example():
37
+ def one():
38
+ pass
39
+
40
+ async def two():
41
+ pass
42
+
43
+ print(is_sync_function(one))
44
+ print(is_sync_function(two))
45
+
46
+ print(is_async_function(one))
47
+ print(is_async_function(two))
48
+
49
+
50
+ if __name__ == '__main__':
51
+ __example()
@@ -67,11 +67,6 @@ def raise_for_types(comparable, need_types, comment_for_error: Optional[str] = N
67
67
  raise TypeError(err)
68
68
 
69
69
 
70
- def raise_if_not_async_func(func: Any):
71
- if not inspect.iscoroutinefunction(func):
72
- raise TypeError(f"The provided function '{func.__name__}' is not an async function")
73
-
74
-
75
70
  def make_none_to_false(v: Any) -> Any:
76
71
  if v is None:
77
72
  return False
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "arpakitlib"
3
- version = "1.7.76"
3
+ version = "1.7.77"
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