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.
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/PKG-INFO +1 -1
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_arpakit_schedule_uust_api_client_util.py +60 -211
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_fastapi_util.py +13 -8
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_http_request_util.py +20 -8
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_schedule_uust_api_client_util.py +4 -2
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/pyproject.toml +1 -1
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/LICENSE +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/README.md +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/__init__.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/.gitignore +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/.python-version +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/ARPAKITLIB +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/LICENSE +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/README.md +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/example.env +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/__init__.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/docker_ps.sh +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/docker_ps_a.sh +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/docker_run_postgres_for_dev.sh +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/docker_start_postgres_for_dev.sh +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/docker_stop_postgres_for_dev.sh +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/git_branch.sh +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/git_commit.sh +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/git_push_arpakit_company_github_1.sh +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/git_push_arpakit_company_gitlab_1.sh +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/git_push_arpakit_github_1.sh +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/git_push_arpakit_gitlab_1.sh +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/git_remote_v.sh +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/git_set_arpakit_company_origin.sh +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/git_set_arpakit_origin.sh +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/git_status.sh +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/hello_world.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/json_beautify.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/note/__init__.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/note/note_1.txt +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/note/note_2.txt +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/note/note_3.txt +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/note/note_4.txt +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/note/note_5.txt +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/poetry_add_plugin_export.sh +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/poetry_check.sh +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/poetry_clear_cache.sh +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/poetry_config.sh +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/poetry_config_virtualenvs_in_project_true.sh +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/poetry_install.sh +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/poetry_lock.sh +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/poetry_remove_and_add_arpakitlib.sh +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/poetry_self_add_plugin_export.sh +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/poetry_show.sh +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/poetry_show_arpakitlib.sh +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/poetry_update.sh +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/poetry_update_arpakitlib.sh +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/sandbox/__init__.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_1.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_2.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_3.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_4.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_5.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_6.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_7.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_8.sh +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_9.sh +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/resource/__init__.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/resource/static/__init__.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/resource/static/healthcheck +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/resource/static/helloworld +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/__init__.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/additional_model/__init__.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/additional_model/additional_model.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/admin1/__init__.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/admin1/add_admin_in_app.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/admin1/admin_auth.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/admin1/model_view.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/api/__init__.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/api/_start_api_with_reload.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/api/_start_api_without_reload.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/api/asgi.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/api/auth.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/api/const.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/api/create_api_app.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/api/event.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/api/router/__init__.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/api/router/main_router.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/api/router/v1/__init__.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/api/router/v1/get_api_error_info.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/api/router/v1/main_router.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/api/schema/__init__.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/api/schema/v1/__init__.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/api/schema/v1/in_.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/api/schema/v1/out.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/api/transmitted_api_data.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/api/util.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/business_service/__init__.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/business_service/hello_world.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/core/__init__.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/core/_check_logging.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/core/_check_settings.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/core/_generate_settings_env_example.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/core/const.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/core/settings.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/core/util.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/db/__init__.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/db/_check_conn_sqlalchemy_db.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/db/_init_sqlalchemy_db.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/db/_reinit_sqlalchemy_db.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/db/const.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/db/sqlalchemy_model.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/db/util.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/operation_execution/__init__.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/operation_execution/_start_operation_executor_worker.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/operation_execution/_start_scheduled_operation_creator_worker.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/operation_execution/const.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/operation_execution/operation_executor.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/operation_execution/scheduled_operations.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/operation_execution/util.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/test_data/__init__.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_1.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_2.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_3.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_4.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_5.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/tg_bot/__init__.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/tg_bot/router/__init__.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/tg_bot/start_tg_bot.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/src/util/__init__.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_additional_model_util.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_aiogram_util.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_api_key_util.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_arpakit_lib_module_util.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_arpakit_project_template_util.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_arpakitlib_cli_util.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_base64_util.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_base_worker_util.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_cache_file_util.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_class_util.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_datetime_util.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_dict_util.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_dream_ai_api_client_util.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_encrypt_decrypt_util.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_enumeration_util.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_exception_util.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_fastapi_static/healthcheck +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_fastapi_static/redoc/redoc.standalone.js +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_fastapi_static/swagger-ui/favicon-16x16.png +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_fastapi_static/swagger-ui/favicon-32x32.png +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_fastapi_static/swagger-ui/index.css +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_fastapi_static/swagger-ui/index.html +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_fastapi_static/swagger-ui/oauth2-redirect.html +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-initializer.js +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-bundle.js +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-bundle.js.map +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle-core.js +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle-core.js.map +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle.js +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle.js.map +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-standalone-preset.js +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-standalone-preset.js.map +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css.map +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js.map +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_file_storage_in_dir_util.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_file_util.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_func_util.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_hash_util.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_ip_util.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_json_db_util.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_json_util.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_jwt_util.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_list_of_dicts_to_xlsx.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_list_util.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_logging_util.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_mongodb_util.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_need_type_util.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_openai_api_client_util.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_operation_execution_util.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_parse_command.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_postgresql_util.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_run_cmd_util.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_settings_util.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_sleep_util.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_sqladmin_util.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_sqlalchemy_model_util.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_sqlalchemy_util.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_ssh_runner_util.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_str_util.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_type_util.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_yookassa_api_client_util.py +0 -0
- {arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_zabbix_api_client_util.py +0 -0
{arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/ar_arpakit_schedule_uust_api_client_util.py
RENAMED
@@ -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
|
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
|
-
|
56
|
-
|
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:
|
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
|
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(
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
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
|
-
|
320
|
-
|
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
|
233
|
+
return json_data
|
345
234
|
|
346
|
-
async def
|
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
|
-
|
369
|
-
|
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
|
-
|
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
|
382
|
-
response = await self._async_make_request(method="GET", url=urljoin(self.base_url, "
|
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
|
-
|
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="
|
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
|
-
|
536
|
-
print(
|
383
|
+
print(f"check_auth")
|
384
|
+
print(safely_transfer_obj_to_json_str(await client.check_auth()))
|
385
|
+
print()
|
537
386
|
|
538
|
-
|
539
|
-
print(
|
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
|
-
|
542
|
-
print(
|
390
|
+
print(f"get_current_week")
|
391
|
+
print(safely_transfer_obj_to_json_str((await client.get_current_week()).model_dump()))
|
543
392
|
|
544
|
-
|
545
|
-
print(
|
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={
|
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
|
-
|
453
|
-
|
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.
|
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.
|
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.
|
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
|
-
|
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.
|
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"
|
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.
|
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"
|
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_}.
|
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"
|
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.
|
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"
|
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_}.
|
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():
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/.python-version
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/__init__.py
RENAMED
File without changes
|
{arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/docker_ps.sh
RENAMED
File without changes
|
{arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/docker_ps_a.sh
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/git_branch.sh
RENAMED
File without changes
|
{arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/git_commit.sh
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/git_status.sh
RENAMED
File without changes
|
{arpakitlib-1.7.213 → arpakitlib-1.7.215}/arpakitlib/_arpakit_project_template/manage/hello_world.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|