arpakitlib 1.7.213__tar.gz → 1.7.215__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 (189) hide show
  1. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/PKG-INFO +1 -1
  2. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_arpakit_schedule_uust_api_client_util.py +60 -211
  3. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_fastapi_util.py +13 -8
  4. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_http_request_util.py +20 -8
  5. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_schedule_uust_api_client_util.py +4 -2
  6. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/pyproject.toml +1 -1
  7. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/LICENSE +0 -0
  8. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/README.md +0 -0
  9. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/__init__.py +0 -0
  10. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/.gitignore +0 -0
  11. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/.python-version +0 -0
  12. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/ARPAKITLIB +0 -0
  13. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/LICENSE +0 -0
  14. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/README.md +0 -0
  15. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/example.env +0 -0
  16. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/__init__.py +0 -0
  17. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/docker_ps.sh +0 -0
  18. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/docker_ps_a.sh +0 -0
  19. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/docker_run_postgres_for_dev.sh +0 -0
  20. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/docker_start_postgres_for_dev.sh +0 -0
  21. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/docker_stop_postgres_for_dev.sh +0 -0
  22. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/git_branch.sh +0 -0
  23. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/git_commit.sh +0 -0
  24. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/git_push_arpakit_company_github_1.sh +0 -0
  25. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/git_push_arpakit_company_gitlab_1.sh +0 -0
  26. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/git_push_arpakit_github_1.sh +0 -0
  27. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/git_push_arpakit_gitlab_1.sh +0 -0
  28. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/git_remote_v.sh +0 -0
  29. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/git_set_arpakit_company_origin.sh +0 -0
  30. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/git_set_arpakit_origin.sh +0 -0
  31. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/git_status.sh +0 -0
  32. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/hello_world.py +0 -0
  33. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/json_beautify.py +0 -0
  34. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/note/__init__.py +0 -0
  35. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/note/note_1.txt +0 -0
  36. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/note/note_2.txt +0 -0
  37. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/note/note_3.txt +0 -0
  38. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/note/note_4.txt +0 -0
  39. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/note/note_5.txt +0 -0
  40. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/poetry_add_plugin_export.sh +0 -0
  41. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/poetry_check.sh +0 -0
  42. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/poetry_clear_cache.sh +0 -0
  43. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/poetry_config.sh +0 -0
  44. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/poetry_config_virtualenvs_in_project_true.sh +0 -0
  45. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/poetry_install.sh +0 -0
  46. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/poetry_lock.sh +0 -0
  47. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/poetry_remove_and_add_arpakitlib.sh +0 -0
  48. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/poetry_self_add_plugin_export.sh +0 -0
  49. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/poetry_show.sh +0 -0
  50. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/poetry_show_arpakitlib.sh +0 -0
  51. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/poetry_update.sh +0 -0
  52. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/poetry_update_arpakitlib.sh +0 -0
  53. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/sandbox/__init__.py +0 -0
  54. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_1.py +0 -0
  55. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_2.py +0 -0
  56. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_3.py +0 -0
  57. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_4.py +0 -0
  58. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_5.py +0 -0
  59. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_6.py +0 -0
  60. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_7.py +0 -0
  61. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_8.sh +0 -0
  62. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_9.sh +0 -0
  63. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/resource/__init__.py +0 -0
  64. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/resource/static/__init__.py +0 -0
  65. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/resource/static/healthcheck +0 -0
  66. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/resource/static/helloworld +0 -0
  67. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/__init__.py +0 -0
  68. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/additional_model/__init__.py +0 -0
  69. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/additional_model/additional_model.py +0 -0
  70. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/admin1/__init__.py +0 -0
  71. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/admin1/add_admin_in_app.py +0 -0
  72. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/admin1/admin_auth.py +0 -0
  73. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/admin1/model_view.py +0 -0
  74. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/api/__init__.py +0 -0
  75. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/api/_start_api_with_reload.py +0 -0
  76. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/api/_start_api_without_reload.py +0 -0
  77. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/api/asgi.py +0 -0
  78. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/api/auth.py +0 -0
  79. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/api/const.py +0 -0
  80. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/api/create_api_app.py +0 -0
  81. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/api/event.py +0 -0
  82. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/api/router/__init__.py +0 -0
  83. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/api/router/main_router.py +0 -0
  84. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/api/router/v1/__init__.py +0 -0
  85. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/api/router/v1/get_api_error_info.py +0 -0
  86. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/api/router/v1/main_router.py +0 -0
  87. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/api/schema/__init__.py +0 -0
  88. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/api/schema/v1/__init__.py +0 -0
  89. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/api/schema/v1/in_.py +0 -0
  90. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/api/schema/v1/out.py +0 -0
  91. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/api/transmitted_api_data.py +0 -0
  92. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/api/util.py +0 -0
  93. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/business_service/__init__.py +0 -0
  94. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/business_service/hello_world.py +0 -0
  95. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/core/__init__.py +0 -0
  96. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/core/_check_logging.py +0 -0
  97. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/core/_check_settings.py +0 -0
  98. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/core/_generate_settings_env_example.py +0 -0
  99. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/core/const.py +0 -0
  100. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/core/settings.py +0 -0
  101. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/core/util.py +0 -0
  102. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/db/__init__.py +0 -0
  103. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/db/_check_conn_sqlalchemy_db.py +0 -0
  104. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/db/_init_sqlalchemy_db.py +0 -0
  105. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/db/_reinit_sqlalchemy_db.py +0 -0
  106. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/db/const.py +0 -0
  107. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/db/sqlalchemy_model.py +0 -0
  108. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/db/util.py +0 -0
  109. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/operation_execution/__init__.py +0 -0
  110. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/operation_execution/_start_operation_executor_worker.py +0 -0
  111. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/operation_execution/_start_scheduled_operation_creator_worker.py +0 -0
  112. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/operation_execution/const.py +0 -0
  113. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/operation_execution/operation_executor.py +0 -0
  114. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/operation_execution/scheduled_operations.py +0 -0
  115. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/operation_execution/util.py +0 -0
  116. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/test_data/__init__.py +0 -0
  117. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_1.py +0 -0
  118. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_2.py +0 -0
  119. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_3.py +0 -0
  120. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_4.py +0 -0
  121. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_5.py +0 -0
  122. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/tg_bot/__init__.py +0 -0
  123. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/tg_bot/router/__init__.py +0 -0
  124. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/tg_bot/start_tg_bot.py +0 -0
  125. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/util/__init__.py +0 -0
  126. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_additional_model_util.py +0 -0
  127. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_aiogram_util.py +0 -0
  128. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_api_key_util.py +0 -0
  129. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_arpakit_lib_module_util.py +0 -0
  130. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_arpakit_project_template_util.py +0 -0
  131. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_arpakitlib_cli_util.py +0 -0
  132. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_base64_util.py +0 -0
  133. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_base_worker_util.py +0 -0
  134. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_cache_file_util.py +0 -0
  135. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_class_util.py +0 -0
  136. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_datetime_util.py +0 -0
  137. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_dict_util.py +0 -0
  138. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_dream_ai_api_client_util.py +0 -0
  139. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_encrypt_decrypt_util.py +0 -0
  140. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_enumeration_util.py +0 -0
  141. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_exception_util.py +0 -0
  142. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_fastapi_static/healthcheck +0 -0
  143. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_fastapi_static/redoc/redoc.standalone.js +0 -0
  144. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_fastapi_static/swagger-ui/favicon-16x16.png +0 -0
  145. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_fastapi_static/swagger-ui/favicon-32x32.png +0 -0
  146. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_fastapi_static/swagger-ui/index.css +0 -0
  147. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_fastapi_static/swagger-ui/index.html +0 -0
  148. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_fastapi_static/swagger-ui/oauth2-redirect.html +0 -0
  149. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-initializer.js +0 -0
  150. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-bundle.js +0 -0
  151. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-bundle.js.map +0 -0
  152. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle-core.js +0 -0
  153. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle-core.js.map +0 -0
  154. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle.js +0 -0
  155. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle.js.map +0 -0
  156. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-standalone-preset.js +0 -0
  157. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-standalone-preset.js.map +0 -0
  158. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css +0 -0
  159. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css.map +0 -0
  160. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js +0 -0
  161. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js.map +0 -0
  162. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_file_storage_in_dir_util.py +0 -0
  163. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_file_util.py +0 -0
  164. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_func_util.py +0 -0
  165. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_hash_util.py +0 -0
  166. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_ip_util.py +0 -0
  167. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_json_db_util.py +0 -0
  168. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_json_util.py +0 -0
  169. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_jwt_util.py +0 -0
  170. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_list_of_dicts_to_xlsx.py +0 -0
  171. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_list_util.py +0 -0
  172. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_logging_util.py +0 -0
  173. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_mongodb_util.py +0 -0
  174. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_need_type_util.py +0 -0
  175. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_openai_api_client_util.py +0 -0
  176. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_operation_execution_util.py +0 -0
  177. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_parse_command.py +0 -0
  178. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_postgresql_util.py +0 -0
  179. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_run_cmd_util.py +0 -0
  180. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_settings_util.py +0 -0
  181. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_sleep_util.py +0 -0
  182. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_sqladmin_util.py +0 -0
  183. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_sqlalchemy_model_util.py +0 -0
  184. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_sqlalchemy_util.py +0 -0
  185. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_ssh_runner_util.py +0 -0
  186. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_str_util.py +0 -0
  187. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_type_util.py +0 -0
  188. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_yookassa_api_client_util.py +0 -0
  189. {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_zabbix_api_client_util.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: arpakitlib
3
- Version: 1.7.213
3
+ Version: 1.7.215
4
4
  Summary: arpakitlib
5
5
  License: Apache-2.0
6
6
  Keywords: arpakitlib,arpakit,arpakit-company,arpakitcompany,arpakit_company
@@ -3,23 +3,18 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  import asyncio
6
- import hashlib
7
- import json
8
6
  import logging
9
7
  from datetime import timedelta, datetime, time
10
8
  from typing import Any
11
9
  from urllib.parse import urljoin
12
10
 
13
- import aiohttp
14
11
  import cachetools
15
- from aiohttp import ClientResponse, ClientTimeout, ClientResponseError
12
+ from aiohttp import ClientResponse
16
13
  from pydantic import ConfigDict, BaseModel
17
14
 
18
- from arpakitlib.ar_dict_util import combine_dicts
19
15
  from arpakitlib.ar_enumeration_util import Enumeration
16
+ from arpakitlib.ar_http_request_util import async_make_http_request
20
17
  from arpakitlib.ar_json_util import safely_transfer_obj_to_json_str
21
- from arpakitlib.ar_sleep_util import async_safe_sleep
22
- from arpakitlib.ar_type_util import raise_for_type
23
18
 
24
19
  _ARPAKIT_LIB_MODULE_VERSION = "3.0"
25
20
 
@@ -52,8 +47,23 @@ class Months(Enumeration):
52
47
  class BaseAPIModel(BaseModel):
53
48
  model_config = ConfigDict(extra="forbid", arbitrary_types_allowed=True, from_attributes=True)
54
49
 
55
- def simple_json(self) -> str:
56
- return safely_transfer_obj_to_json_str(self.model_dump(mode="json"))
50
+
51
+ class CurrentSemesterAPIModel(BaseAPIModel):
52
+ id: int
53
+ long_id: str
54
+ creation_dt: datetime
55
+ entity_type: str
56
+ actualization_dt: datetime
57
+ value: str
58
+
59
+
60
+ class CurrentWeekAPIModel(BaseAPIModel):
61
+ id: int
62
+ long_id: str
63
+ creation_dt: datetime
64
+ entity_type: str
65
+ actualization_dt: datetime
66
+ value: int
57
67
 
58
68
 
59
69
  class GroupAPIModel(BaseAPIModel):
@@ -67,15 +77,6 @@ class GroupAPIModel(BaseAPIModel):
67
77
  difference_level: int | None = None
68
78
  uust_api_data: dict[str, Any]
69
79
 
70
- arpakit_uust_api_data: dict[str, Any]
71
-
72
- @classmethod
73
- def from_arpakit_uust_api_data(cls, arpakit_uust_api_data: dict[str, Any]) -> GroupAPIModel:
74
- return GroupAPIModel.model_validate(combine_dicts(
75
- arpakit_uust_api_data,
76
- {"arpakit_uust_api_data": arpakit_uust_api_data}
77
- ))
78
-
79
80
 
80
81
  class TeacherAPIModel(BaseAPIModel):
81
82
  id: int
@@ -94,15 +95,6 @@ class TeacherAPIModel(BaseAPIModel):
94
95
  difference_level: int | None
95
96
  uust_api_data: dict[str, Any]
96
97
 
97
- arpakit_uust_api_data: dict[str, Any]
98
-
99
- @classmethod
100
- def from_arpakit_uust_api_data(cls, arpakit_uust_api_data: dict[str, Any]) -> TeacherAPIModel:
101
- return TeacherAPIModel.model_validate(combine_dicts(
102
- arpakit_uust_api_data,
103
- {"arpakit_uust_api_data": arpakit_uust_api_data}
104
- ))
105
-
106
98
 
107
99
  class GroupLessonAPIModel(BaseAPIModel):
108
100
  id: int
@@ -125,29 +117,6 @@ class GroupLessonAPIModel(BaseAPIModel):
125
117
  teacher: TeacherAPIModel | None
126
118
  uust_api_data: dict[str, Any]
127
119
 
128
- arpakit_uust_api_data: dict[str, Any]
129
-
130
- @classmethod
131
- def from_arpakit_uust_api_data(cls, arpakit_uust_api_data: dict[str, Any]) -> GroupLessonAPIModel:
132
- return GroupLessonAPIModel.model_validate(combine_dicts(
133
- arpakit_uust_api_data,
134
- {"arpakit_uust_api_data": arpakit_uust_api_data},
135
- {
136
- "group": GroupAPIModel.from_arpakit_uust_api_data(
137
- arpakit_uust_api_data=arpakit_uust_api_data["group"]
138
- )
139
- },
140
- {
141
- "teacher": (
142
- TeacherAPIModel.from_arpakit_uust_api_data(
143
- arpakit_uust_api_data=arpakit_uust_api_data["teacher"]
144
- )
145
- if arpakit_uust_api_data["teacher"] is not None
146
- else None
147
- )
148
- },
149
- ))
150
-
151
120
  def compare_type(self, *types: str | list[str]) -> bool:
152
121
  type_ = self.type.strip().lower()
153
122
  for type__ in types:
@@ -184,26 +153,6 @@ class TeacherLessonAPIModel(BaseAPIModel):
184
153
  groups: list[GroupAPIModel]
185
154
  uust_api_data: dict[str, Any]
186
155
 
187
- arpakit_uust_api_data: dict[str, Any]
188
-
189
- @classmethod
190
- def from_arpakit_uust_api_data(cls, arpakit_uust_api_data: dict[str, Any]) -> TeacherLessonAPIModel:
191
- return TeacherLessonAPIModel.model_validate(combine_dicts(
192
- arpakit_uust_api_data,
193
- {"arpakit_uust_api_data": arpakit_uust_api_data},
194
- {
195
- "teacher": TeacherAPIModel.from_arpakit_uust_api_data(
196
- arpakit_uust_api_data=arpakit_uust_api_data["teacher"]
197
- )
198
- },
199
- {
200
- "groups": [
201
- GroupAPIModel.from_arpakit_uust_api_data(arpakit_uust_api_data=d)
202
- for d in arpakit_uust_api_data["groups"]
203
- ]
204
- },
205
- ))
206
-
207
156
  def compare_type(self, *types: str | list[str]) -> bool:
208
157
  type_ = self.type.strip().lower()
209
158
  for type__ in types:
@@ -219,39 +168,6 @@ class TeacherLessonAPIModel(BaseAPIModel):
219
168
  return False
220
169
 
221
170
 
222
- class CurrentSemesterAPIModel(BaseAPIModel):
223
- id: int
224
- creation_dt: datetime
225
- sync_from_uust_api_dt: datetime
226
- value: str
227
- raw_value: str
228
-
229
- arpakit_uust_api_data: dict[str, Any]
230
-
231
- @classmethod
232
- def from_arpakit_uust_api_data(cls, *, arpakit_uust_api_data: dict[str, Any]) -> CurrentSemesterAPIModel:
233
- return CurrentSemesterAPIModel.model_validate(combine_dicts(
234
- arpakit_uust_api_data,
235
- {"arpakit_uust_api_data": arpakit_uust_api_data}
236
- ))
237
-
238
-
239
- class CurrentWeekAPIModel(BaseAPIModel):
240
- id: int
241
- creation_dt: datetime
242
- sync_from_uust_api_dt: datetime
243
- value: str
244
-
245
- arpakit_uust_api_data: dict[str, Any]
246
-
247
- @classmethod
248
- def from_arpakit_uust_api_data(cls, *, arpakit_uust_api_data: dict[str, Any]) -> CurrentWeekAPIModel:
249
- return CurrentWeekAPIModel.model_validate(combine_dicts(
250
- arpakit_uust_api_data,
251
- {"arpakit_uust_api_data": arpakit_uust_api_data}
252
- ))
253
-
254
-
255
171
  class WeatherInUfaAPIModel(BaseAPIModel):
256
172
  temperature: float
257
173
  temperature_feels_like: float
@@ -263,15 +179,6 @@ class WeatherInUfaAPIModel(BaseAPIModel):
263
179
  has_snow: bool
264
180
  data: dict
265
181
 
266
- arpakit_uust_api_data: dict[str, Any]
267
-
268
- @classmethod
269
- def from_arpakit_uust_api_data(cls, arpakit_uust_api_data: dict[float, Any]) -> WeatherInUfaAPIModel:
270
- return WeatherInUfaAPIModel.model_validate(combine_dicts(
271
- arpakit_uust_api_data,
272
- {"arpakit_uust_api_data": arpakit_uust_api_data}
273
- ))
274
-
275
182
 
276
183
  class ARPAKITScheduleUUSTAPIClient:
277
184
  def __init__(
@@ -280,7 +187,7 @@ class ARPAKITScheduleUUSTAPIClient:
280
187
  base_url: str = "https://api.schedule-uust.arpakit.com/api/v1",
281
188
  api_key: str | None = "viewer",
282
189
  use_cache: bool = False,
283
- cache_ttl: int | float | None = timedelta(minutes=10).total_seconds()
190
+ cache_ttl: timedelta | None = timedelta(minutes=10)
284
191
  ):
285
192
  self._logger = logging.getLogger(__name__)
286
193
  self.api_key = api_key
@@ -290,103 +197,59 @@ class ARPAKITScheduleUUSTAPIClient:
290
197
  self.base_url = base_url
291
198
  self.headers = {"Content-Type": "application/json"}
292
199
  if api_key is not None:
293
- self.headers.update({"apikey": api_key})
200
+ self.headers.update({"apikey": self.api_key})
294
201
  self.use_cache = use_cache
295
202
  self.cache_ttl = cache_ttl
296
203
  if cache_ttl is not None:
297
- self.ttl_cache = cachetools.TTLCache(maxsize=100, ttl=cache_ttl)
204
+ self.ttl_cache = cachetools.TTLCache(maxsize=100, ttl=cache_ttl.total_seconds())
298
205
  else:
299
206
  self.ttl_cache = None
300
207
 
301
- def clear_a_s_u_api_client(self):
208
+ def clear_cache(self):
302
209
  if self.ttl_cache is not None:
303
210
  self.ttl_cache.clear()
304
211
 
305
- async def _async_make_request(self, *, method: str = "GET", url: str, **kwargs) -> ClientResponse:
306
- max_tries = 7
307
- tries = 0
308
-
309
- kwargs["url"] = url
310
- kwargs["method"] = method
311
- kwargs["timeout"] = ClientTimeout(total=timedelta(seconds=15).total_seconds())
312
- kwargs["headers"] = self.headers
313
-
314
- cache_key = (
315
- "_async_make_request",
316
- hashlib.sha256(json.dumps(kwargs, ensure_ascii=False, default=str).encode()).hexdigest()
212
+ async def _async_make_request(
213
+ self,
214
+ *,
215
+ method: str = "GET",
216
+ url: str,
217
+ params: dict[str, Any] | None = None,
218
+ **kwargs
219
+ ) -> ClientResponse:
220
+ response = await async_make_http_request(
221
+ method=method,
222
+ url=url,
223
+ headers=self.headers,
224
+ params=params,
225
+ raise_for_status_=True,
226
+ **kwargs
317
227
  )
228
+ return response
318
229
 
319
- if self.use_cache and self.ttl_cache is not None:
320
- if cache_key in self.ttl_cache:
321
- return self.ttl_cache[cache_key]
322
-
323
- while True:
324
- tries += 1
325
- self._logger.info(f"{method} {url}")
326
- try:
327
- async with aiohttp.ClientSession() as session:
328
- async with session.request(**kwargs) as response:
329
- await response.read()
330
- if self.use_cache and self.ttl_cache is not None:
331
- self.ttl_cache[cache_key] = response
332
- return response
333
- except Exception as err:
334
- self._logger.warning(f"{tries}/{max_tries} {err} {method} {url}")
335
- if tries >= max_tries:
336
- raise err
337
- await async_safe_sleep(timedelta(seconds=0.1).total_seconds())
338
- continue
339
-
340
- async def healthcheck(self) -> bool:
341
- response = await self._async_make_request(method="GET", url=urljoin(self.base_url, "healthcheck"))
342
- response.raise_for_status()
230
+ async def check_auth(self) -> dict[str, Any]:
231
+ response = await self._async_make_request(method="GET", url=urljoin(self.base_url, "check_auth"))
343
232
  json_data = await response.json()
344
- return json_data["data"]["healthcheck"]
233
+ return json_data
345
234
 
346
- async def is_healthcheck_good(self) -> bool:
347
- try:
348
- return await self.healthcheck()
349
- except ClientResponseError:
350
- return False
351
-
352
- async def auth_healthcheck(self) -> bool:
353
- response = await self._async_make_request(method="GET", url=urljoin(self.base_url, "auth_healthcheck"))
354
- response.raise_for_status()
355
- json_data = await response.json()
356
- return json_data["data"]["auth_healthcheck"]
357
-
358
- async def is_auth_healthcheck_good(self) -> bool:
359
- try:
360
- return await self.auth_healthcheck()
361
- except ClientResponseError:
362
- return False
363
-
364
- async def get_required_current_week_value(self) -> int:
235
+ async def get_current_week(self) -> CurrentWeekAPIModel | None:
365
236
  response = await self._async_make_request(method="GET", url=urljoin(self.base_url, "get_current_week"))
366
- response.raise_for_status()
367
237
  json_data = await response.json()
368
- raise_for_type(json_data["value"], int)
369
- return json_data["value"]
238
+ if json_data is None:
239
+ return None
240
+ return CurrentWeekAPIModel.model_validate(json_data)
370
241
 
371
242
  async def get_current_semester(self) -> CurrentSemesterAPIModel | None:
372
243
  response = await self._async_make_request(method="GET", url=urljoin(self.base_url, "get_current_semester"))
373
244
  json_data = await response.json()
374
245
  if json_data is None:
375
246
  return None
376
- if "error_code" in json_data and json_data["error_code"] == "CURRENT_SEMESTER_NOT_FOUND":
377
- return None
378
- response.raise_for_status()
379
- return CurrentSemesterAPIModel.from_arpakit_uust_api_data(arpakit_uust_api_data=json_data)
247
+ return CurrentSemesterAPIModel.model_validate(json_data)
380
248
 
381
- async def get_current_week(self) -> CurrentWeekAPIModel | None:
382
- response = await self._async_make_request(method="GET", url=urljoin(self.base_url, "get_current_week"))
249
+ async def get_weather_in_ufa(self) -> WeatherInUfaAPIModel:
250
+ response = await self._async_make_request(method="GET", url=urljoin(self.base_url, "get_weather_in_ufa"))
383
251
  json_data = await response.json()
384
- if json_data is None:
385
- return None
386
- if "error_code" in json_data and json_data["error_code"] == "CURRENT_WEEK_NOT_FOUND":
387
- return None
388
- response.raise_for_status()
389
- return CurrentWeekAPIModel.from_arpakit_uust_api_data(arpakit_uust_api_data=json_data)
252
+ return WeatherInUfaAPIModel.model_validate(json_data)
390
253
 
391
254
  async def get_log_file_content(self) -> str | None:
392
255
 
@@ -509,40 +372,26 @@ class ARPAKITScheduleUUSTAPIClient:
509
372
  json_data = await response.json()
510
373
  return [TeacherLessonAPIModel.from_arpakit_uust_api_data(arpakit_uust_api_data=d) for d in json_data]
511
374
 
512
- async def get_weather_in_ufa(self) -> WeatherInUfaAPIModel:
513
- response = await self._async_make_request(method="GET", url=urljoin(self.base_url, "get_weather_in_ufa"))
514
- response.raise_for_status()
515
- json_data = await response.json()
516
- return WeatherInUfaAPIModel.from_arpakit_uust_api_data(json_data)
517
-
518
375
 
519
376
  def __example():
520
377
  pass
521
378
 
522
379
 
523
380
  async def __async_example():
524
- client = ARPAKITScheduleUUSTAPIClient(api_key="TEST_API_KEY", use_cache=True)
525
-
526
- healthcheck = await client.healthcheck()
527
- print(f"Healthcheck: {healthcheck}")
528
-
529
- auth_healthcheck = await client.auth_healthcheck()
530
- print(f"Auth Healthcheck: {auth_healthcheck}")
531
-
532
- current_week = await client.get_current_week()
533
- print(f"Текущая неделя: {current_week.simple_json() if current_week else 'Не найдено'}")
381
+ client = ARPAKITScheduleUUSTAPIClient(api_key="viewer", use_cache=True)
534
382
 
535
- current_semester = await client.get_current_semester()
536
- print(f"Текущий семестр: {current_semester.simple_json() if current_semester else 'Не найдено'}")
383
+ print(f"check_auth")
384
+ print(safely_transfer_obj_to_json_str(await client.check_auth()))
385
+ print()
537
386
 
538
- groups = await client.get_groups()
539
- print(f"Группы: {[group.simple_json() for group in groups]}")
387
+ print(f"get_weather_in_ufa")
388
+ print(safely_transfer_obj_to_json_str((await client.get_weather_in_ufa()).model_dump()))
540
389
 
541
- teachers = await client.get_teachers()
542
- print(f"Преподаватели: {[teacher.simple_json() for teacher in teachers]}")
390
+ print(f"get_current_week")
391
+ print(safely_transfer_obj_to_json_str((await client.get_current_week()).model_dump()))
543
392
 
544
- weather = await client.get_weather_in_ufa()
545
- print(f"Погода в Уфе: {weather.simple_json()}")
393
+ print(f"get_current_semester")
394
+ print(safely_transfer_obj_to_json_str((await client.get_current_semester()).model_dump()))
546
395
 
547
396
 
548
397
  if __name__ == '__main__':
@@ -391,7 +391,10 @@ def add_needed_api_router_to_app(*, app: FastAPI):
391
391
  async def _():
392
392
  return APIJSONResponse(
393
393
  status_code=starlette.status.HTTP_200_OK,
394
- content=RawDataSO(data={"healthcheck": "healthcheck"})
394
+ content=RawDataSO(data={
395
+ "healthcheck": "healthcheck",
396
+ "is_ok": True
397
+ })
395
398
  )
396
399
 
397
400
  @api_router.get(
@@ -449,8 +452,8 @@ class BaseAPIAuthData(BaseModel):
449
452
  token_string: str | None = None
450
453
  api_key_string: str | None = None
451
454
 
452
- is_token_string_correct: bool | None = None
453
- is_api_key_string_correct: bool | None = None
455
+ is_token_correct: bool | None = None
456
+ is_api_key_correct: bool | None = None
454
457
 
455
458
 
456
459
  def base_api_auth(
@@ -580,7 +583,7 @@ def base_api_auth(
580
583
  )
581
584
  if is_async_object(validate_api_key_func_data):
582
585
  validate_api_key_func_data = await validate_api_key_func_data
583
- api_auth_data.is_api_key_string_correct = validate_api_key_func_data
586
+ api_auth_data.is_api_key_correct = validate_api_key_func_data
584
587
 
585
588
  # token
586
589
 
@@ -595,25 +598,27 @@ def base_api_auth(
595
598
  )
596
599
  if is_async_object(validate_token_func_data):
597
600
  validate_token_func_data_data = await validate_token_func_data
598
- api_auth_data.is_token_string_correct = validate_token_func_data_data
601
+ api_auth_data.is_token_correct = validate_token_func_data_data
599
602
 
600
603
  # api_key
601
604
 
602
605
  if require_correct_api_key:
603
- if not api_auth_data.is_api_key_string_correct:
606
+ if not api_auth_data.is_api_key_correct:
604
607
  raise APIException(
605
608
  status_code=starlette.status.HTTP_401_UNAUTHORIZED,
606
609
  error_code=BaseAPIErrorCodes.cannot_authorize,
607
- error_data=safely_transfer_obj_to_json_str_to_json_obj(api_auth_data.model_dump())
610
+ error_description="not api_auth_data.is_api_key_correct",
611
+ error_data=safely_transfer_obj_to_json_str_to_json_obj(api_auth_data.model_dump()),
608
612
  )
609
613
 
610
614
  # token
611
615
 
612
616
  if require_correct_token:
613
- if not api_auth_data.is_token_string_correct:
617
+ if not api_auth_data.is_token_correct:
614
618
  raise APIException(
615
619
  status_code=starlette.status.HTTP_401_UNAUTHORIZED,
616
620
  error_code=BaseAPIErrorCodes.cannot_authorize,
621
+ error_description="not api_auth_data.is_token_correct",
617
622
  error_data=safely_transfer_obj_to_json_str_to_json_obj(api_auth_data.model_dump())
618
623
  )
619
624
 
@@ -26,6 +26,7 @@ def sync_make_http_request(
26
26
  max_tries_: int = 9,
27
27
  proxy_url_: str | None = None,
28
28
  raise_for_status_: bool = False,
29
+ not_raise_for_statuses: list[int] | None = None,
29
30
  timeout_: timedelta | float = timedelta(seconds=15).total_seconds(),
30
31
  enable_logging_: bool = False,
31
32
  **kwargs
@@ -53,21 +54,25 @@ def sync_make_http_request(
53
54
  kwargs["allow_redirects"] = True
54
55
 
55
56
  if enable_logging_:
56
- _logger.info(f"TRY HTTP {method} {url} {params}")
57
+ _logger.info(f"try http {method} {url} {params}")
57
58
 
58
59
  while True:
59
60
  tries_counter += 1
60
61
  try:
61
62
  response = requests.request(**kwargs)
62
63
  if raise_for_status_:
63
- response.raise_for_status()
64
+ if not_raise_for_statuses and response.status_code in not_raise_for_statuses:
65
+ if enable_logging_:
66
+ _logger.info(f"ignored status {response.status_code} for http {method} {url} {params}")
67
+ else:
68
+ response.raise_for_status()
64
69
  if enable_logging_:
65
- _logger.info(f"GOOD TRY HTTP {method} {url} {params}")
70
+ _logger.info(f"good try http {method} {url} {params}")
66
71
  return response
67
72
  except BaseException as exception:
68
73
  if enable_logging_:
69
74
  _logger.warning(
70
- f"{tries_counter}/{max_tries_}. RETRY {method} {url} {params}, exception={exception}"
75
+ f"{tries_counter}/{max_tries_}. retry {method} {url} {params}, exception={exception}"
71
76
  )
72
77
  if tries_counter >= max_tries_:
73
78
  raise exception
@@ -84,6 +89,7 @@ async def async_make_http_request(
84
89
  max_tries_: int = 9,
85
90
  proxy_url_: str | None = None,
86
91
  raise_for_status_: bool = False,
92
+ not_raise_for_statuses: list[int] | None = None,
87
93
  timeout_: timedelta | None = timedelta(seconds=15),
88
94
  enable_logging_: bool = False,
89
95
  **kwargs
@@ -106,7 +112,7 @@ async def async_make_http_request(
106
112
  proxy_connector = ProxyConnector.from_url(proxy_url_)
107
113
 
108
114
  if enable_logging_:
109
- _logger.info(f"TRY HTTP {method} {url} {params}")
115
+ _logger.info(f"try http {method} {url} {params}")
110
116
 
111
117
  while True:
112
118
  tries_counter += 1
@@ -114,15 +120,21 @@ async def async_make_http_request(
114
120
  async with aiohttp.ClientSession(connector=proxy_connector) as session:
115
121
  async with session.request(**kwargs) as response:
116
122
  if raise_for_status_:
117
- response.raise_for_status()
123
+ if not_raise_for_statuses and response.status in not_raise_for_statuses:
124
+ if enable_logging_:
125
+ _logger.info(
126
+ f"ignored status {response.status} for http {method} {url} {params}"
127
+ )
128
+ else:
129
+ response.raise_for_status()
118
130
  await response.read()
119
131
  if enable_logging_:
120
- _logger.info(f"GOOD TRY HTTP {method} {url} {params}")
132
+ _logger.info(f"good try http {method} {url} {params}")
121
133
  return response
122
134
  except BaseException as exception:
123
135
  if enable_logging_:
124
136
  _logger.warning(
125
- f"{tries_counter}/{max_tries_}. RETRY HTTP {method} {url} {params}, exception={exception}"
137
+ f"{tries_counter}/{max_tries_}. retry http {method} {url} {params}, exception={exception}"
126
138
  )
127
139
  if tries_counter >= max_tries_:
128
140
  raise exception
@@ -77,7 +77,8 @@ class ScheduleUUSTAPIClient:
77
77
  *,
78
78
  method: str = "GET",
79
79
  url: str,
80
- params: dict[str, Any] | None = None
80
+ params: dict[str, Any] | None = None,
81
+ **kwargs
81
82
  ) -> ClientResponse:
82
83
  response = await async_make_http_request(
83
84
  method=method,
@@ -85,7 +86,8 @@ class ScheduleUUSTAPIClient:
85
86
  headers=self.headers,
86
87
  params=combine_dicts(params, self.auth_params()),
87
88
  proxy_url_=self.api_proxy_url,
88
- raise_for_status_=True
89
+ raise_for_status_=True,
90
+ **kwargs
89
91
  )
90
92
  json_data = await response.json()
91
93
  if "error" in json_data.keys():
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "arpakitlib"
3
- version = "1.7.213"
3
+ version = "1.7.215"
4
4
  description = "arpakitlib"
5
5
  authors = [
6
6
  { name = "arpakit", email = "arpakit@gmail.com" },
File without changes
File without changes