arpakitlib 1.7.214__tar.gz → 1.7.216__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.214 → arpakitlib-1.7.216}/PKG-INFO +1 -1
  2. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_arpakit_schedule_uust_api_client_util.py +160 -166
  3. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_fastapi_util.py +7 -2
  4. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_http_request_util.py +20 -8
  5. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_schedule_uust_api_client_util.py +4 -2
  6. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/pyproject.toml +1 -1
  7. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/LICENSE +0 -0
  8. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/README.md +0 -0
  9. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/__init__.py +0 -0
  10. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/.gitignore +0 -0
  11. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/.python-version +0 -0
  12. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/ARPAKITLIB +0 -0
  13. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/LICENSE +0 -0
  14. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/README.md +0 -0
  15. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/example.env +0 -0
  16. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/manage/__init__.py +0 -0
  17. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/manage/docker_ps.sh +0 -0
  18. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/manage/docker_ps_a.sh +0 -0
  19. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/manage/docker_run_postgres_for_dev.sh +0 -0
  20. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/manage/docker_start_postgres_for_dev.sh +0 -0
  21. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/manage/docker_stop_postgres_for_dev.sh +0 -0
  22. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/manage/git_branch.sh +0 -0
  23. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/manage/git_commit.sh +0 -0
  24. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/manage/git_push_arpakit_company_github_1.sh +0 -0
  25. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/manage/git_push_arpakit_company_gitlab_1.sh +0 -0
  26. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/manage/git_push_arpakit_github_1.sh +0 -0
  27. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/manage/git_push_arpakit_gitlab_1.sh +0 -0
  28. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/manage/git_remote_v.sh +0 -0
  29. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/manage/git_set_arpakit_company_origin.sh +0 -0
  30. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/manage/git_set_arpakit_origin.sh +0 -0
  31. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/manage/git_status.sh +0 -0
  32. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/manage/hello_world.py +0 -0
  33. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/manage/json_beautify.py +0 -0
  34. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/manage/note/__init__.py +0 -0
  35. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/manage/note/note_1.txt +0 -0
  36. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/manage/note/note_2.txt +0 -0
  37. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/manage/note/note_3.txt +0 -0
  38. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/manage/note/note_4.txt +0 -0
  39. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/manage/note/note_5.txt +0 -0
  40. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/manage/poetry_add_plugin_export.sh +0 -0
  41. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/manage/poetry_check.sh +0 -0
  42. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/manage/poetry_clear_cache.sh +0 -0
  43. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/manage/poetry_config.sh +0 -0
  44. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/manage/poetry_config_virtualenvs_in_project_true.sh +0 -0
  45. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/manage/poetry_install.sh +0 -0
  46. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/manage/poetry_lock.sh +0 -0
  47. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/manage/poetry_remove_and_add_arpakitlib.sh +0 -0
  48. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/manage/poetry_self_add_plugin_export.sh +0 -0
  49. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/manage/poetry_show.sh +0 -0
  50. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/manage/poetry_show_arpakitlib.sh +0 -0
  51. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/manage/poetry_update.sh +0 -0
  52. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/manage/poetry_update_arpakitlib.sh +0 -0
  53. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/manage/sandbox/__init__.py +0 -0
  54. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_1.py +0 -0
  55. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_2.py +0 -0
  56. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_3.py +0 -0
  57. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_4.py +0 -0
  58. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_5.py +0 -0
  59. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_6.py +0 -0
  60. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_7.py +0 -0
  61. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_8.sh +0 -0
  62. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_9.sh +0 -0
  63. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/resource/__init__.py +0 -0
  64. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/resource/static/__init__.py +0 -0
  65. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/resource/static/healthcheck +0 -0
  66. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/resource/static/helloworld +0 -0
  67. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/__init__.py +0 -0
  68. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/additional_model/__init__.py +0 -0
  69. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/additional_model/additional_model.py +0 -0
  70. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/admin1/__init__.py +0 -0
  71. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/admin1/add_admin_in_app.py +0 -0
  72. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/admin1/admin_auth.py +0 -0
  73. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/admin1/model_view.py +0 -0
  74. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/api/__init__.py +0 -0
  75. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/api/_start_api_with_reload.py +0 -0
  76. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/api/_start_api_without_reload.py +0 -0
  77. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/api/asgi.py +0 -0
  78. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/api/auth.py +0 -0
  79. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/api/const.py +0 -0
  80. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/api/create_api_app.py +0 -0
  81. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/api/event.py +0 -0
  82. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/api/router/__init__.py +0 -0
  83. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/api/router/main_router.py +0 -0
  84. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/api/router/v1/__init__.py +0 -0
  85. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/api/router/v1/get_api_error_info.py +0 -0
  86. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/api/router/v1/main_router.py +0 -0
  87. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/api/schema/__init__.py +0 -0
  88. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/api/schema/v1/__init__.py +0 -0
  89. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/api/schema/v1/in_.py +0 -0
  90. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/api/schema/v1/out.py +0 -0
  91. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/api/transmitted_api_data.py +0 -0
  92. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/api/util.py +0 -0
  93. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/business_service/__init__.py +0 -0
  94. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/business_service/hello_world.py +0 -0
  95. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/core/__init__.py +0 -0
  96. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/core/_check_logging.py +0 -0
  97. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/core/_check_settings.py +0 -0
  98. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/core/_generate_settings_env_example.py +0 -0
  99. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/core/const.py +0 -0
  100. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/core/settings.py +0 -0
  101. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/core/util.py +0 -0
  102. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/db/__init__.py +0 -0
  103. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/db/_check_conn_sqlalchemy_db.py +0 -0
  104. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/db/_init_sqlalchemy_db.py +0 -0
  105. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/db/_reinit_sqlalchemy_db.py +0 -0
  106. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/db/const.py +0 -0
  107. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/db/sqlalchemy_model.py +0 -0
  108. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/db/util.py +0 -0
  109. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/operation_execution/__init__.py +0 -0
  110. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/operation_execution/_start_operation_executor_worker.py +0 -0
  111. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/operation_execution/_start_scheduled_operation_creator_worker.py +0 -0
  112. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/operation_execution/const.py +0 -0
  113. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/operation_execution/operation_executor.py +0 -0
  114. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/operation_execution/scheduled_operations.py +0 -0
  115. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/operation_execution/util.py +0 -0
  116. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/test_data/__init__.py +0 -0
  117. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_1.py +0 -0
  118. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_2.py +0 -0
  119. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_3.py +0 -0
  120. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_4.py +0 -0
  121. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_5.py +0 -0
  122. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/tg_bot/__init__.py +0 -0
  123. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/tg_bot/router/__init__.py +0 -0
  124. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/tg_bot/start_tg_bot.py +0 -0
  125. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/_arpakit_project_template/src/util/__init__.py +0 -0
  126. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_additional_model_util.py +0 -0
  127. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_aiogram_util.py +0 -0
  128. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_api_key_util.py +0 -0
  129. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_arpakit_lib_module_util.py +0 -0
  130. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_arpakit_project_template_util.py +0 -0
  131. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_arpakitlib_cli_util.py +0 -0
  132. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_base64_util.py +0 -0
  133. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_base_worker_util.py +0 -0
  134. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_cache_file_util.py +0 -0
  135. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_class_util.py +0 -0
  136. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_datetime_util.py +0 -0
  137. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_dict_util.py +0 -0
  138. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_dream_ai_api_client_util.py +0 -0
  139. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_encrypt_decrypt_util.py +0 -0
  140. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_enumeration_util.py +0 -0
  141. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_exception_util.py +0 -0
  142. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_fastapi_static/healthcheck +0 -0
  143. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_fastapi_static/redoc/redoc.standalone.js +0 -0
  144. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_fastapi_static/swagger-ui/favicon-16x16.png +0 -0
  145. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_fastapi_static/swagger-ui/favicon-32x32.png +0 -0
  146. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_fastapi_static/swagger-ui/index.css +0 -0
  147. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_fastapi_static/swagger-ui/index.html +0 -0
  148. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_fastapi_static/swagger-ui/oauth2-redirect.html +0 -0
  149. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-initializer.js +0 -0
  150. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-bundle.js +0 -0
  151. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-bundle.js.map +0 -0
  152. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle-core.js +0 -0
  153. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle-core.js.map +0 -0
  154. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle.js +0 -0
  155. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle.js.map +0 -0
  156. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-standalone-preset.js +0 -0
  157. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-standalone-preset.js.map +0 -0
  158. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css +0 -0
  159. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css.map +0 -0
  160. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js +0 -0
  161. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js.map +0 -0
  162. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_file_storage_in_dir_util.py +0 -0
  163. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_file_util.py +0 -0
  164. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_func_util.py +0 -0
  165. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_hash_util.py +0 -0
  166. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_ip_util.py +0 -0
  167. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_json_db_util.py +0 -0
  168. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_json_util.py +0 -0
  169. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_jwt_util.py +0 -0
  170. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_list_of_dicts_to_xlsx.py +0 -0
  171. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_list_util.py +0 -0
  172. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_logging_util.py +0 -0
  173. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_mongodb_util.py +0 -0
  174. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_need_type_util.py +0 -0
  175. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_openai_api_client_util.py +0 -0
  176. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_operation_execution_util.py +0 -0
  177. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_parse_command.py +0 -0
  178. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_postgresql_util.py +0 -0
  179. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_run_cmd_util.py +0 -0
  180. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_settings_util.py +0 -0
  181. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_sleep_util.py +0 -0
  182. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_sqladmin_util.py +0 -0
  183. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_sqlalchemy_model_util.py +0 -0
  184. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_sqlalchemy_util.py +0 -0
  185. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_ssh_runner_util.py +0 -0
  186. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_str_util.py +0 -0
  187. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_type_util.py +0 -0
  188. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/arpakitlib/ar_yookassa_api_client_util.py +0 -0
  189. {arpakitlib-1.7.214 → arpakitlib-1.7.216}/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.214
3
+ Version: 1.7.216
4
4
  Summary: arpakitlib
5
5
  License: Apache-2.0
6
6
  Keywords: arpakitlib,arpakit,arpakit-company,arpakitcompany,arpakit_company
@@ -3,21 +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
15
  from arpakitlib.ar_enumeration_util import Enumeration
19
- from arpakitlib.ar_sleep_util import async_safe_sleep
20
- from arpakitlib.ar_type_util import raise_for_type
16
+ from arpakitlib.ar_http_request_util import async_make_http_request
17
+ from arpakitlib.ar_json_util import safely_transfer_obj_to_json_str
21
18
 
22
19
  _ARPAKIT_LIB_MODULE_VERSION = "3.0"
23
20
 
@@ -53,23 +50,28 @@ class BaseAPIModel(BaseModel):
53
50
 
54
51
  class CurrentSemesterAPIModel(BaseAPIModel):
55
52
  id: int
53
+ long_id: str
56
54
  creation_dt: datetime
57
- sync_from_uust_api_dt: datetime
55
+ entity_type: str
56
+ actualization_dt: datetime
58
57
  value: str
59
- raw_value: str
60
58
 
61
59
 
62
60
  class CurrentWeekAPIModel(BaseAPIModel):
63
61
  id: int
62
+ long_id: str
64
63
  creation_dt: datetime
65
- sync_from_uust_api_dt: datetime
66
- value: str
64
+ entity_type: str
65
+ actualization_dt: datetime
66
+ value: int
67
67
 
68
68
 
69
69
  class GroupAPIModel(BaseAPIModel):
70
70
  id: int
71
+ long_id: str
71
72
  creation_dt: datetime
72
- sync_from_uust_api_dt: datetime
73
+ entity_type: str
74
+ actualization_dt: datetime
73
75
  uust_api_id: int
74
76
  title: str
75
77
  faculty: str | None
@@ -80,8 +82,10 @@ class GroupAPIModel(BaseAPIModel):
80
82
 
81
83
  class TeacherAPIModel(BaseAPIModel):
82
84
  id: int
85
+ long_id: str
83
86
  creation_dt: datetime
84
- sync_from_uust_api_dt: datetime
87
+ entity_type: str
88
+ actualization_dt: datetime
85
89
  uust_api_id: int
86
90
  name: str | None
87
91
  surname: str | None
@@ -98,8 +102,10 @@ class TeacherAPIModel(BaseAPIModel):
98
102
 
99
103
  class GroupLessonAPIModel(BaseAPIModel):
100
104
  id: int
105
+ long_id: str
101
106
  creation_dt: datetime
102
- sync_from_uust_api_dt: datetime
107
+ entity_type: str
108
+ actualization_dt: datetime
103
109
  uust_api_id: int
104
110
  type: str
105
111
  title: str
@@ -134,8 +140,10 @@ class GroupLessonAPIModel(BaseAPIModel):
134
140
 
135
141
  class TeacherLessonAPIModel(BaseAPIModel):
136
142
  id: int
143
+ long_id: str
137
144
  creation_dt: datetime
138
- sync_from_uust_api_dt: datetime
145
+ entity_type: str
146
+ actualization_dt: datetime
139
147
  uust_api_id: int
140
148
  type: str
141
149
  title: str
@@ -209,104 +217,63 @@ class ARPAKITScheduleUUSTAPIClient:
209
217
  if self.ttl_cache is not None:
210
218
  self.ttl_cache.clear()
211
219
 
212
- async def _async_make_request(self, *, method: str = "GET", url: str, **kwargs) -> ClientResponse:
213
- max_tries = 7
214
- tries = 0
215
-
216
- kwargs["url"] = url
217
- kwargs["method"] = method
218
- kwargs["timeout"] = ClientTimeout(total=timedelta(seconds=15).total_seconds())
219
- kwargs["headers"] = self.headers
220
-
221
- cache_key = (
222
- "_async_make_request",
223
- hashlib.sha256(json.dumps(kwargs, ensure_ascii=False, default=str).encode()).hexdigest()
220
+ async def _async_make_http_request(
221
+ self,
222
+ *,
223
+ method: str = "GET",
224
+ url: str,
225
+ params: dict[str, Any] | None = None,
226
+ **kwargs
227
+ ) -> ClientResponse:
228
+ response = await async_make_http_request(
229
+ method=method,
230
+ url=url,
231
+ headers=self.headers,
232
+ params=params,
233
+ raise_for_status_=True,
234
+ **kwargs
224
235
  )
236
+ return response
225
237
 
226
- if self.use_cache and self.ttl_cache is not None:
227
- if cache_key in self.ttl_cache:
228
- return self.ttl_cache[cache_key]
229
-
230
- while True:
231
- tries += 1
232
- self._logger.info(f"{method} {url}")
233
- try:
234
- async with aiohttp.ClientSession() as session:
235
- async with session.request(**kwargs) as response:
236
- await response.read()
237
- if self.use_cache and self.ttl_cache is not None:
238
- self.ttl_cache[cache_key] = response
239
- return response
240
- except Exception as err:
241
- self._logger.warning(f"{tries}/{max_tries} {err} {method} {url}")
242
- if tries >= max_tries:
243
- raise err
244
- await async_safe_sleep(timedelta(seconds=0.1).total_seconds())
245
- continue
246
-
247
- async def healthcheck(self) -> bool:
248
- response = await self._async_make_request(method="GET", url=urljoin(self.base_url, "healthcheck"))
249
- response.raise_for_status()
238
+ async def check_auth(self) -> dict[str, Any]:
239
+ response = await self._async_make_http_request(method="GET", url=urljoin(self.base_url, "check_auth"))
250
240
  json_data = await response.json()
251
- return json_data["data"]["healthcheck"]
252
-
253
- async def is_healthcheck_good(self) -> bool:
254
- try:
255
- return await self.healthcheck()
256
- except ClientResponseError:
257
- return False
241
+ return json_data
258
242
 
259
- async def auth_healthcheck(self) -> bool:
260
- response = await self._async_make_request(method="GET", url=urljoin(self.base_url, "check_auth"))
261
- response.raise_for_status()
262
- json_data = await response.json()
263
- return json_data["data"]["auth_healthcheck"]
264
-
265
- async def is_auth_healthcheck_good(self) -> bool:
266
- try:
267
- return await self.auth_healthcheck()
268
- except ClientResponseError:
269
- return False
270
-
271
- async def get_required_current_week_value(self) -> int:
272
- response = await self._async_make_request(method="GET", url=urljoin(self.base_url, "get_current_week"))
273
- response.raise_for_status()
243
+ async def get_current_week(self) -> CurrentWeekAPIModel | None:
244
+ response = await self._async_make_http_request(
245
+ method="GET", url=urljoin(self.base_url, "get_current_week")
246
+ )
274
247
  json_data = await response.json()
275
- raise_for_type(json_data["value"], int)
276
- return json_data["value"]
248
+ if json_data is None:
249
+ return None
250
+ return CurrentWeekAPIModel.model_validate(json_data)
277
251
 
278
252
  async def get_current_semester(self) -> CurrentSemesterAPIModel | None:
279
- response = await self._async_make_request(method="GET", url=urljoin(self.base_url, "get_current_semester"))
253
+ response = await self._async_make_http_request(
254
+ method="GET", url=urljoin(self.base_url, "get_current_semester")
255
+ )
280
256
  json_data = await response.json()
281
257
  if json_data is None:
282
258
  return None
283
- if "error_code" in json_data and json_data["error_code"] == "CURRENT_SEMESTER_NOT_FOUND":
284
- return None
285
- response.raise_for_status()
286
- return CurrentSemesterAPIModel.from_arpakit_uust_api_data(arpakit_uust_api_data=json_data)
259
+ return CurrentSemesterAPIModel.model_validate(json_data)
287
260
 
288
- async def get_current_week(self) -> CurrentWeekAPIModel | None:
289
- response = await self._async_make_request(method="GET", url=urljoin(self.base_url, "get_current_week"))
261
+ async def get_weather_in_ufa(self) -> WeatherInUfaAPIModel:
262
+ response = await self._async_make_http_request(
263
+ method="GET", url=urljoin(self.base_url, "get_weather_in_ufa")
264
+ )
290
265
  json_data = await response.json()
291
- if json_data is None:
292
- return None
293
- if "error_code" in json_data and json_data["error_code"] == "CURRENT_WEEK_NOT_FOUND":
294
- return None
295
- response.raise_for_status()
296
- return CurrentWeekAPIModel.from_arpakit_uust_api_data(arpakit_uust_api_data=json_data)
266
+ return WeatherInUfaAPIModel.model_validate(json_data)
297
267
 
298
268
  async def get_log_file_content(self) -> str | None:
299
-
300
- response = await self._async_make_request(method="GET", url=urljoin(self.base_url, "extra/get_log_file"))
301
- response.raise_for_status()
269
+ response = await self._async_make_http_request(method="GET", url=urljoin(self.base_url, "get_log_file"))
302
270
  text_data = await response.text()
303
271
  return text_data
304
272
 
305
273
  async def get_groups(self) -> list[GroupAPIModel]:
306
- response = await self._async_make_request(method="GET", url=urljoin(self.base_url, "group/get_groups"))
307
- response.raise_for_status()
274
+ response = await self._async_make_http_request(method="GET", url=urljoin(self.base_url, "get_groups"))
308
275
  json_data = await response.json()
309
- return [GroupAPIModel.from_arpakit_uust_api_data(arpakit_uust_api_data=d) for d in json_data]
276
+ return [GroupAPIModel.model_validate(d) for d in json_data]
310
277
 
311
278
  async def get_group(
312
279
  self, *, filter_id: int | None = None, filter_uust_api_id: int | None = None
@@ -316,34 +283,25 @@ class ARPAKITScheduleUUSTAPIClient:
316
283
  params["filter_id"] = filter_id
317
284
  if filter_uust_api_id is not None:
318
285
  params["filter_uust_api_id"] = filter_uust_api_id
319
- response = await self._async_make_request(
320
- method="GET",
321
- url=urljoin(self.base_url, "group/get_group"),
322
- params=params
323
- )
286
+ response = await self._async_make_http_request(method="GET", url=urljoin(self.base_url, "get_group"),
287
+ params=params)
324
288
  json_data = await response.json()
325
- if "error_code" in json_data and json_data["error_code"] == "GROUP_NOT_FOUND":
289
+ if json_data is None:
326
290
  return None
327
- response.raise_for_status()
328
- return GroupAPIModel.from_arpakit_uust_api_data(arpakit_uust_api_data=json_data)
291
+ return GroupAPIModel.model_validate(json_data)
329
292
 
330
293
  async def find_groups(
331
294
  self, *, q: str
332
295
  ) -> list[GroupAPIModel]:
333
- response = await self._async_make_request(
334
- method="GET",
335
- url=urljoin(self.base_url, "group/find_groups"),
336
- params={"q": q.strip()}
337
- )
338
- response.raise_for_status()
296
+ response = await self._async_make_http_request(method="GET", url=urljoin(self.base_url, "find_groups"),
297
+ params={"q": q.strip()})
339
298
  json_data = await response.json()
340
- return [GroupAPIModel.from_arpakit_uust_api_data(arpakit_uust_api_data=d) for d in json_data]
299
+ return [GroupAPIModel.model_validate(d) for d in json_data]
341
300
 
342
301
  async def get_teachers(self) -> list[TeacherAPIModel]:
343
- response = await self._async_make_request(method="GET", url=urljoin(self.base_url, "teacher/get_teachers"))
344
- response.raise_for_status()
302
+ response = await self._async_make_http_request(method="GET", url=urljoin(self.base_url, "get_teachers"))
345
303
  json_data = await response.json()
346
- return [TeacherAPIModel.from_arpakit_uust_api_data(arpakit_uust_api_data=d) for d in json_data]
304
+ return [TeacherAPIModel.model_validate(d) for d in json_data]
347
305
 
348
306
  async def get_teacher(
349
307
  self, *, filter_id: int | None = None, filter_uust_api_id: int | None = None
@@ -353,28 +311,37 @@ class ARPAKITScheduleUUSTAPIClient:
353
311
  params["filter_id"] = filter_id
354
312
  if filter_uust_api_id is not None:
355
313
  params["filter_uust_api_id"] = filter_uust_api_id
356
- response = await self._async_make_request(
357
- method="GET",
358
- url=urljoin(self.base_url, "teacher/get_teacher"),
359
- params=params
360
- )
314
+ response = await self._async_make_http_request(method="GET", url=urljoin(self.base_url, "get_teacher"),
315
+ params=params)
361
316
  json_data = await response.json()
362
- if "error_code" in json_data and json_data["error_code"] == "TEACHER_NOT_FOUND":
317
+ if json_data is None:
363
318
  return None
364
- response.raise_for_status()
365
- return TeacherAPIModel.from_arpakit_uust_api_data(arpakit_uust_api_data=json_data)
319
+ return TeacherAPIModel.model_validate(json_data)
366
320
 
367
321
  async def find_teachers(
368
322
  self, *, q: str
369
323
  ) -> list[TeacherAPIModel]:
370
- response = await self._async_make_request(
371
- method="GET",
372
- url=urljoin(self.base_url, "teacher/find_teachers"),
373
- params={"q": q.strip()}
374
- )
375
- response.raise_for_status()
324
+ response = await self._async_make_http_request(method="GET", url=urljoin(self.base_url, "find_teachers"),
325
+ params={"q": q.strip()})
376
326
  json_data = await response.json()
377
- return [TeacherAPIModel.from_arpakit_uust_api_data(arpakit_uust_api_data=d) for d in json_data]
327
+ return [TeacherAPIModel.model_validate(d) for d in json_data]
328
+
329
+ async def find_any(
330
+ self, *, q: str
331
+ ) -> list[TeacherAPIModel | GroupLessonAPIModel]:
332
+ response = await self._async_make_http_request(method="GET", url=urljoin(self.base_url, "find_any"),
333
+ params={"q": q.strip()})
334
+ json_data = await response.json()
335
+
336
+ results = []
337
+ for i in json_data:
338
+ if i.get("entity_type") == "group":
339
+ results.append(GroupAPIModel.model_validate(i))
340
+ elif i.get("entity_type") == "teacher":
341
+ results.append(TeacherAPIModel.model_validate(i))
342
+ else:
343
+ pass
344
+ return results
378
345
 
379
346
  async def get_group_lessons(
380
347
  self,
@@ -387,14 +354,11 @@ class ARPAKITScheduleUUSTAPIClient:
387
354
  params["filter_group_id"] = filter_group_id
388
355
  if filter_group_uust_api_id is not None:
389
356
  params["filter_group_uust_api_id"] = filter_group_uust_api_id
390
- response = await self._async_make_request(
391
- method="GET",
392
- url=urljoin(self.base_url, "group_lesson/get_group_lessons"),
393
- params=params
357
+ response = await self._async_make_http_request(
358
+ method="GET", url=urljoin(self.base_url, "get_group_lessons"), params=params
394
359
  )
395
- response.raise_for_status()
396
360
  json_data = await response.json()
397
- return [GroupLessonAPIModel.from_arpakit_uust_api_data(arpakit_uust_api_data=d) for d in json_data]
361
+ return [GroupLessonAPIModel.model_validate(d) for d in json_data]
398
362
 
399
363
  async def get_teacher_lessons(
400
364
  self,
@@ -407,20 +371,11 @@ class ARPAKITScheduleUUSTAPIClient:
407
371
  params["filter_teacher_id"] = filter_teacher_id
408
372
  if filter_teacher_uust_api_id is not None:
409
373
  params["filter_teacher_uust_api_id"] = filter_teacher_uust_api_id
410
- response = await self._async_make_request(
411
- method="GET",
412
- url=urljoin(self.base_url, "teacher_lesson/get_teacher_lessons"),
413
- params=params
374
+ response = await self._async_make_http_request(
375
+ method="GET", url=urljoin(self.base_url, "get_teacher_lessons"), params=params
414
376
  )
415
- response.raise_for_status()
416
377
  json_data = await response.json()
417
- return [TeacherLessonAPIModel.from_arpakit_uust_api_data(arpakit_uust_api_data=d) for d in json_data]
418
-
419
- async def get_weather_in_ufa(self) -> WeatherInUfaAPIModel:
420
- response = await self._async_make_request(method="GET", url=urljoin(self.base_url, "get_weather_in_ufa"))
421
- response.raise_for_status()
422
- json_data = await response.json()
423
- return WeatherInUfaAPIModel.from_arpakit_uust_api_data(json_data)
378
+ return [TeacherLessonAPIModel.model_validate(d) for d in json_data]
424
379
 
425
380
 
426
381
  def __example():
@@ -428,28 +383,67 @@ def __example():
428
383
 
429
384
 
430
385
  async def __async_example():
431
- client = ARPAKITScheduleUUSTAPIClient(api_key="TEST_API_KEY", use_cache=True)
432
-
433
- healthcheck = await client.healthcheck()
434
- print(f"Healthcheck: {healthcheck}")
435
-
436
- auth_healthcheck = await client.auth_healthcheck()
437
- print(f"Auth Healthcheck: {auth_healthcheck}")
438
-
439
- current_week = await client.get_current_week()
440
- print(f"Текущая неделя: {current_week.simple_json() if current_week else 'Не найдено'}")
441
-
442
- current_semester = await client.get_current_semester()
443
- print(f"Текущий семестр: {current_semester.simple_json() if current_semester else 'Не найдено'}")
444
-
445
- groups = await client.get_groups()
446
- print(f"Группы: {[group.simple_json() for group in groups]}")
447
-
448
- teachers = await client.get_teachers()
449
- print(f"Преподаватели: {[teacher.simple_json() for teacher in teachers]}")
450
-
451
- weather = await client.get_weather_in_ufa()
452
- print(f"Погода в Уфе: {weather.simple_json()}")
386
+ client = ARPAKITScheduleUUSTAPIClient(api_key="viewer", use_cache=True)
387
+
388
+ print(f"check_auth")
389
+ print(safely_transfer_obj_to_json_str(await client.check_auth()))
390
+
391
+ print(f"get_weather_in_ufa")
392
+ print(safely_transfer_obj_to_json_str((await client.get_weather_in_ufa()).model_dump()))
393
+
394
+ print(f"get_current_week")
395
+ print(safely_transfer_obj_to_json_str((await client.get_current_week()).model_dump()))
396
+
397
+ print(f"get_current_semester")
398
+ print(safely_transfer_obj_to_json_str((await client.get_current_semester()).model_dump()))
399
+
400
+ # Group
401
+ print(f"get_groups")
402
+ print(safely_transfer_obj_to_json_str((await client.get_groups())))
403
+
404
+ print(f"get_group")
405
+ if await client.get_group(filter_id=25285, filter_uust_api_id=6674):
406
+ print(safely_transfer_obj_to_json_str(
407
+ (await client.get_group(filter_id=25285, filter_uust_api_id=6674)).model_dump()))
408
+ else:
409
+ print("Group is none")
410
+
411
+ print(f"find_groups")
412
+ print(safely_transfer_obj_to_json_str((await client.find_groups(q="ПИ-427Б"))))
413
+
414
+ # Teacher
415
+ print(f"get_teachers")
416
+ print(safely_transfer_obj_to_json_str((await client.get_teachers())))
417
+
418
+ print(f"get_teacher")
419
+ if await client.get_teacher(filter_id=16975, filter_uust_api_id=112978):
420
+ print(safely_transfer_obj_to_json_str(
421
+ (await client.get_teacher(filter_id=16975, filter_uust_api_id=112978)).model_dump()))
422
+ else:
423
+ print("Teacher is none")
424
+
425
+ print(f"find_teachers")
426
+ print(safely_transfer_obj_to_json_str((await client.find_teachers(q="Казанцев"))))
427
+
428
+ # Group Lesson
429
+ print(f"get_group_lessons")
430
+ if await client.get_group_lessons(filter_group_id=25285, filter_group_uust_api_id=6674):
431
+ print(safely_transfer_obj_to_json_str((await client.get_group_lessons(filter_group_id=25285,
432
+ filter_group_uust_api_id=6674))))
433
+ else:
434
+ print("Group lessons is none")
435
+
436
+ # Teacher Lesson
437
+ print(f"get_teacher_lessons")
438
+ if await client.get_teacher_lessons(filter_teacher_id=16975, filter_teacher_uust_api_id=112978):
439
+ print(safely_transfer_obj_to_json_str((await client.get_teacher_lessons(filter_teacher_id=16975,
440
+ filter_teacher_uust_api_id=112978))))
441
+ else:
442
+ print("Teacher lessons is none")
443
+
444
+ # Find Any
445
+ print(f"find_any")
446
+ print(safely_transfer_obj_to_json_str((await client.find_any(q="ПИ"))))
453
447
 
454
448
 
455
449
  if __name__ == '__main__':
@@ -282,7 +282,8 @@ def create_handle_exception(
282
282
  def create_story_log_before_response_in_handle_exception(
283
283
  *,
284
284
  sqlalchemy_db: SQLAlchemyDB,
285
- ignore_api_error_code_not_found: bool = True
285
+ ignore_api_error_codes: list[str] | None = None,
286
+ ignore_status_codes: list[int] | None = None
286
287
  ) -> Callable:
287
288
  def func(
288
289
  *,
@@ -292,8 +293,12 @@ def create_story_log_before_response_in_handle_exception(
292
293
  exception: Exception,
293
294
  **kwargs
294
295
  ) -> (int, ErrorSO, dict[str, Any]):
295
- if ignore_api_error_code_not_found and error_so.error_code == BaseAPIErrorCodes.not_found:
296
+ if ignore_api_error_codes and error_so.error_code in ignore_api_error_codes:
296
297
  return status_code, error_so, kwargs
298
+
299
+ if ignore_status_codes and status_code in ignore_status_codes:
300
+ return status_code, error_so, kwargs
301
+
297
302
  sqlalchemy_db.init()
298
303
  traceback_str = "".join(traceback.format_exception(type(exception), exception, exception.__traceback__))
299
304
  with sqlalchemy_db.new_session() as session:
@@ -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.214"
3
+ version = "1.7.216"
4
4
  description = "arpakitlib"
5
5
  authors = [
6
6
  { name = "arpakit", email = "arpakit@gmail.com" },
File without changes
File without changes