arpakitlib 1.7.257__tar.gz → 1.8.1__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.257 → arpakitlib-1.8.1}/PKG-INFO +5 -3
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/README.md +1 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1}/README.md +1 -1
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1}/alembic/env.py +3 -3
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/api/asgi.py +3 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/api/auth.py +235 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/api/const.py +18 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/api/create_api_app.py +71 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/api/event.py +74 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/api/exception.py +38 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/api/exception_handler.py +308 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/api/openapi_ui.py +28 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/api/response.py +31 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1}/api/router/main_router.py +4 -3
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/api/router/v1/arpakit_project_template.py +22 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/api/router/v1/check_auth.py +30 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/api/router/v1/clear_log_file.py +25 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/api/router/v1/get_errors_info.py +24 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/api/router/v1/get_log_file.py +23 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/api/router/v1/healthcheck.py +21 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/api/router/v1/main_router.py +67 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/api/router/v1/now_utc_datetime.py +21 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/api/router/v1/raise_fake_error.py +35 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/api/schema/base_schema.py +26 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/api/schema/common/in_.py +5 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/api/schema/common/out.py +60 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/api/schema/v1/in_.py +5 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/api/schema/v1/out.py +47 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/arpakitlib_project_template.json +3 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1}/business_service/hello_world.py +1 -1
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/business_service/remove_operations.py +51 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command/alembic_history.sh +2 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command/alembic_revision_autogenerate.sh +2 -0
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/manage/json_beautify.py → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command/beautify_json.py +2 -2
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/core/_check_logging.py → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command/check_logging.py +3 -3
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command/check_sqlalchemy_db.py +11 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command/drop_json_db.py +13 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command/drop_sqlalchemy_db.py +14 -0
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/core/_generate_settings_env_example.py → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command/generate_settings_env_example.py +4 -4
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/manage → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command}/hello_world.py +2 -2
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command/init_json_db.py +11 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command/init_sqlalchemy_db.py +11 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command/reinit_json_db.py +13 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command/reinit_sqlalchemy_db.py +13 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command/remove_operations.py +13 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command/remove_story_logs.py +16 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command/rm_all_records_in_json_db.py +13 -0
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/core/_show_settings.py → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command/show_settings.py +3 -3
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/api/_start_api_with_reload.py → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command/start_api_with_reload.py +5 -5
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/api/_start_api_without_reload.py → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command/start_api_without_reload.py +5 -5
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command/start_async_operation_executor_worker.py +14 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command/start_async_scheduled_operation_creator_worker.py +14 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command/start_sync_operation_executor_worker.py +15 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command/start_sync_operation_executor_workers.py +22 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command/start_sync_scheduled_operation_creator_worker.py +12 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/core/cache_file_storage_in_dir.py +23 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/core/const.py +33 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/core/dump_file_storage_in_dir.py +23 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/core/jinja2_templates.py +14 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/core/media_file_storage_in_dir.py +23 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/core/settings.py +195 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/core/util.py +29 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1}/example.env +13 -7
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/json_db/json_db.py +28 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/operation_execution/operation_executor_worker.py +256 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/operation_execution/scheduled_operation_creator_worker.py +106 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/operation_execution/scheduled_operations.py +49 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/operation_execution/util.py +29 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/resource/static/openapi-favicon.png +0 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/resource/static/swagger-ui/index.html +19 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/resource/static/swagger-ui/swagger-ui-bundle.js +2 -0
- {arpakitlib-1.7.257/arpakitlib/ar_fastapi_static → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/resource/static}/swagger-ui/swagger-ui-es-bundle-core.js +1 -1
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/resource/static/swagger-ui/swagger-ui-es-bundle-core.js.map +1 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/resource/static/swagger-ui/swagger-ui-es-bundle.js +2 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/resource/static/swagger-ui/swagger-ui-standalone-preset.js +2 -0
- {arpakitlib-1.7.257/arpakitlib/ar_fastapi_static → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/resource/static}/swagger-ui/swagger-ui.js +1 -1
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/resource/static/swagger-ui/swagger-ui.js.map +1 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/sandbox/sandbox_1.py +14 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/sandbox/sandbox_2.py +14 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/sandbox/sandbox_3.py +14 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/sandbox/sandbox_4.py +14 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/sandbox/sandbox_5.py +14 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/sandbox/sandbox_6.py +14 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/sandbox/sandbox_7.py +14 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/site/router/main_router.py +3 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/sqladmin_/add_admin_in_app.py +24 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/sqladmin_/admin_auth.py +54 -0
- arpakitlib-1.7.257/arpakitlib/ar_sqladmin_util.py → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/sqladmin_/model_view.py +41 -51
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/sqlalchemy_db/sqlalchemy_db.py +22 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/sqlalchemy_db/sqlalchemy_model.py +129 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/sqlalchemy_db/util.py +28 -0
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/sandbox/sandbox_2.py → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/test_data/make_test_data_1.py +8 -3
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/test_data/make_test_data_2.py +22 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/test_data/make_test_data_3.py +22 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/test_data/make_test_data_4.py +22 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/test_data/make_test_data_5.py +22 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/tg_bot/blank/blank.py +5 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1}/tg_bot/blank/util.py +1 -1
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1}/tg_bot/const.py +6 -3
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/tg_bot/event.py +51 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1}/tg_bot/filter/not_prod_mode.py +1 -1
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1}/tg_bot/filter/prod_mode.py +1 -1
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/tg_bot/kb/static_/__init__.py +0 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/tg_bot/kb/static_/common.py +0 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/tg_bot/middleware/__init__.py +0 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/tg_bot/middleware/init_user.py +24 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/tg_bot/middleware/middleware.py +12 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/tg_bot/router/__init__.py +0 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/tg_bot/router/arpakitlib_.py +10 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/tg_bot/router/error.py +15 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/tg_bot/router/healthcheck.py +10 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/tg_bot/router/main_router.py +14 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/tg_bot/start_tg_bot.py +34 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/tg_bot/tg_bot.py +24 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/tg_bot/tg_bot_dispatcher.py +19 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/tg_bot/transmitted_tg_data.py +58 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/tg_bot/util.py +0 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/util/__init__.py +0 -0
- arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/util/read_arpakitlib_project_template_file.py +17 -0
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/arpakitlib/ar_aiogram_util.py +41 -52
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/arpakitlib/ar_arpakit_project_template_util.py +5 -11
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/arpakitlib/ar_arpakitlib_cli_util.py +8 -2
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/arpakitlib/ar_base_worker_util.py +35 -17
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/arpakitlib/ar_class_util.py +11 -0
- arpakitlib-1.8.1/arpakitlib/ar_func_util.py +45 -0
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/arpakitlib/ar_http_request_util.py +10 -2
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/arpakitlib/ar_rat_func_util.py +1 -1
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/arpakitlib/ar_retry_func_util.py +4 -4
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/arpakitlib/ar_schedule_uust_api_client_util.py +1 -1
- arpakitlib-1.8.1/arpakitlib/ar_settings_util.py +49 -0
- arpakitlib-1.8.1/arpakitlib/ar_sqladmin_util.py +10 -0
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/arpakitlib/ar_sqlalchemy_util.py +65 -13
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/arpakitlib/ar_type_util.py +0 -2
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/pyproject.toml +2 -2
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/ARPAKITLIB +0 -1
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/manage/docker_ps.sh +0 -2
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/manage/git_branch.sh +0 -2
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/manage/poetry_add_plugin_export.sh +0 -2
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/manage/poetry_config_virtualenvs_in_project_true.sh +0 -2
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/manage/poetry_self_add_plugin_export.sh +0 -2
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/admin1/add_admin_in_app.py +0 -32
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/admin1/admin_auth.py +0 -29
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/admin1/model_view.py +0 -1
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/api/asgi.py +0 -3
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/api/auth.py +0 -53
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/api/const.py +0 -13
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/api/create_api_app.py +0 -43
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/api/create_handle_exception_.py +0 -59
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/api/event.py +0 -83
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/api/router/v1/get_api_error_info.py +0 -27
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/api/router/v1/main_router.py +0 -15
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/api/schema/v1/in_.py +0 -1
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/api/schema/v1/out.py +0 -1
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/api/transmitted_api_data.py +0 -7
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/api/util.py +0 -44
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/core/const.py +0 -41
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/core/settings.py +0 -21
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/core/util.py +0 -61
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/json_db/_drop_json_db.py +0 -13
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/json_db/_init_json_db.py +0 -11
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/json_db/_reinit_json_db.py +0 -13
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/json_db/_rm_all_records_in_json_db.py +0 -13
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/json_db/json_db.py +0 -11
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/json_db/util.py +0 -17
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/just_script/example.py +0 -16
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/operation_execution/_start_operation_executor_worker.py +0 -17
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/operation_execution/_start_scheduled_operation_creator_worker.py +0 -17
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/operation_execution/const.py +0 -9
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/operation_execution/operation_executor.py +0 -16
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/operation_execution/scheduled_operations.py +0 -29
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/operation_execution/util.py +0 -1
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/sandbox/sandbox_1.py +0 -17
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/sandbox/sandbox_3.py +0 -17
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/sandbox/sandbox_4.py +0 -17
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/sandbox/sandbox_5.py +0 -17
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/sandbox/sandbox_6.py +0 -17
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/sandbox/sandbox_7.py +0 -17
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/sqlalchemy_db/_check_conn_sqlalchemy_db.py +0 -11
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/sqlalchemy_db/_drop_sqlalchemy_db.py +0 -13
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/sqlalchemy_db/_init_sqlalchemy_db.py +0 -11
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/sqlalchemy_db/_reinit_sqlalchemy_db.py +0 -13
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/sqlalchemy_db/_remove_operations.py +0 -15
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/sqlalchemy_db/_remove_story_logs.py +0 -16
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/sqlalchemy_db/sqlalchemy_model.py +0 -13
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/sqlalchemy_db/util.py +0 -27
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_1.py +0 -8
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_2.py +0 -8
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_3.py +0 -8
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_4.py +0 -8
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_5.py +0 -8
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/tg_bot/blank/blank.py +0 -10
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/tg_bot/event.py +0 -39
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/tg_bot/router/error.py +0 -3
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/tg_bot/router/router.py +0 -7
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/tg_bot/start_tg_bot.py +0 -11
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/tg_bot/transmitted_tg_data.py +0 -6
- arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/tg_bot/util.py +0 -44
- arpakitlib-1.7.257/arpakitlib/ar_api_key_util.py +0 -21
- arpakitlib-1.7.257/arpakitlib/ar_fastapi_static/swagger-ui/index.html +0 -19
- arpakitlib-1.7.257/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-bundle.js +0 -2
- arpakitlib-1.7.257/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle-core.js.map +0 -1
- arpakitlib-1.7.257/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle.js +0 -2
- arpakitlib-1.7.257/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-standalone-preset.js +0 -2
- arpakitlib-1.7.257/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js.map +0 -1
- arpakitlib-1.7.257/arpakitlib/ar_fastapi_util.py +0 -862
- arpakitlib-1.7.257/arpakitlib/ar_func_util.py +0 -55
- arpakitlib-1.7.257/arpakitlib/ar_operation_execution_util.py +0 -504
- arpakitlib-1.7.257/arpakitlib/ar_settings_util.py +0 -250
- arpakitlib-1.7.257/arpakitlib/ar_sqlalchemy_model_util.py +0 -183
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/LICENSE +0 -0
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/arpakitlib/__init__.py +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1}/.gitignore +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1}/.python-version +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1}/LICENSE +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/manage → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/additional_model}/__init__.py +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1}/additional_model/additional_model.py +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1}/alembic/README +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1}/alembic/script.py.mako +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1}/alembic.ini +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/manage/note → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/api}/__init__.py +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/resource → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/api/router}/__init__.py +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/resource/static → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/api/router/v1}/__init__.py +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/api/schema}/__init__.py +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/additional_model → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/api/schema/common}/__init__.py +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/admin1 → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/api/schema/v1}/__init__.py +0 -0
- /arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/manage/note/note_1.txt → /arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/api/util.py +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/api → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/business_service}/__init__.py +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/api/router → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/celery_}/__init__.py +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/api/router/v1 → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command}/__init__.py +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/manage → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command}/alembic_upgrade_head .sh +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/manage → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command}/docker_ps_a.sh +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/manage → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command}/docker_rm_postgres.sh +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/manage → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command}/docker_run_postgres.sh +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/manage → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command}/docker_start_postgres.sh +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/manage → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command}/docker_stop_postgres.sh +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/manage → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command}/git_commit.sh +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/manage → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command}/git_push_arpakit_company_github_1.sh +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/manage → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command}/git_push_arpakit_company_gitlab_1.sh +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/manage → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command}/git_push_arpakit_github_1.sh +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/manage → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command}/git_push_arpakit_gitlab_1.sh +0 -0
- /arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/manage/git_remote_v.sh → /arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command/git_remote.sh +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/manage → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command}/git_set_arpakit_company_origin.sh +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/manage → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command}/git_set_arpakit_origin.sh +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/manage → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command}/git_status.sh +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/manage → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command}/poetry_check.sh +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/manage → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command}/poetry_clear_cache.sh +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/manage → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command}/poetry_config.sh +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/manage → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command}/poetry_install.sh +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/manage → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command}/poetry_lock.sh +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/manage → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command}/poetry_remove_and_add_arpakitlib.sh +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/manage → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command}/poetry_show.sh +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/manage → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command}/poetry_show_arpakitlib.sh +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/manage → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command}/poetry_update.sh +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/manage → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/command}/poetry_update_arpakitlib.sh +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/api/schema → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/core}/__init__.py +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/api/schema/v1 → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/json_db}/__init__.py +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/business_service → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/note}/__init__.py +0 -0
- /arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/manage/note/note_2.txt → /arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/note/note_1.txt +0 -0
- /arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/manage/note/note_3.txt → /arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/note/note_2.txt +0 -0
- /arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/manage/note/note_4.txt → /arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/note/note_3.txt +0 -0
- /arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/manage/note/note_5.txt → /arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/note/note_4.txt +0 -0
- /arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/core/__init__.py → /arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/note/note_5.txt +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/json_db → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/operation_execution}/__init__.py +0 -0
- /arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/just_script/__init__.py → /arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/operation_execution/const.py +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/operation_execution → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/resource}/__init__.py +0 -0
- /arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/resource/static/healthcheck → /arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/resource/static/1 +0 -0
- {arpakitlib-1.7.257/arpakitlib/ar_fastapi_static → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/resource/static}/healthcheck +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1}/resource/static/helloworld +0 -0
- {arpakitlib-1.7.257/arpakitlib/ar_fastapi_static → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/resource/static}/redoc/redoc.standalone.js +0 -0
- {arpakitlib-1.7.257/arpakitlib/ar_fastapi_static → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/resource/static}/swagger-ui/favicon-16x16.png +0 -0
- {arpakitlib-1.7.257/arpakitlib/ar_fastapi_static → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/resource/static}/swagger-ui/favicon-32x32.png +0 -0
- {arpakitlib-1.7.257/arpakitlib/ar_fastapi_static → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/resource/static}/swagger-ui/index.css +0 -0
- {arpakitlib-1.7.257/arpakitlib/ar_fastapi_static → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/resource/static}/swagger-ui/oauth2-redirect.html +0 -0
- {arpakitlib-1.7.257/arpakitlib/ar_fastapi_static → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/resource/static}/swagger-ui/swagger-initializer.js +0 -0
- {arpakitlib-1.7.257/arpakitlib/ar_fastapi_static → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/resource/static}/swagger-ui/swagger-ui-bundle.js.map +0 -0
- {arpakitlib-1.7.257/arpakitlib/ar_fastapi_static → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/resource/static}/swagger-ui/swagger-ui-es-bundle.js.map +0 -0
- {arpakitlib-1.7.257/arpakitlib/ar_fastapi_static → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/resource/static}/swagger-ui/swagger-ui-standalone-preset.js.map +0 -0
- {arpakitlib-1.7.257/arpakitlib/ar_fastapi_static → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/resource/static}/swagger-ui/swagger-ui.css +0 -0
- {arpakitlib-1.7.257/arpakitlib/ar_fastapi_static → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/resource/static}/swagger-ui/swagger-ui.css.map +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1}/sandbox/__init__.py +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/sqlalchemy_db → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/site}/__init__.py +0 -0
- /arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/test_data/__init__.py → /arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/site/asgi.py +0 -0
- /arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/tg_bot/__init__.py → /arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/site/consts.py +0 -0
- /arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/tg_bot/blank/__init__.py → /arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/site/create_site_app.py +0 -0
- /arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/tg_bot/filter/__init__.py → /arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/site/event.py +0 -0
- /arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/tg_bot/handler/__init__.py → /arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/site/exception_handler.py +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/tg_bot/kb → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/site/router}/__init__.py +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/tg_bot/kb/inline_ → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/sqladmin_}/__init__.py +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/tg_bot/kb/static_ → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/sqlalchemy_db}/__init__.py +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1}/sqlalchemy_db/const.py +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/tg_bot/middleware → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/test_data}/__init__.py +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/tg_bot/router → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/tg_bot}/__init__.py +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/util → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/tg_bot/blank}/__init__.py +0 -0
- /arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/tg_bot/handler/cmd_arpakitlib.py → /arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/tg_bot/filter/__init__.py +0 -0
- /arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/tg_bot/handler/cmd_healthcheck.py → /arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/tg_bot/kb/__init__.py +0 -0
- /arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/tg_bot/kb/inline_/callback.py → /arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/tg_bot/kb/inline_/__init__.py +0 -0
- /arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/tg_bot/kb/inline_/common.py → /arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/tg_bot/kb/inline_/callback.py +0 -0
- {arpakitlib-1.7.257/arpakitlib/_arpakit_project_template/src/tg_bot/kb/static_ → arpakitlib-1.8.1/arpakitlib/_arpakit_project_template_v_1/tg_bot/kb/inline_}/common.py +0 -0
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/arpakitlib/ar_additional_model_util.py +0 -0
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/arpakitlib/ar_arpakit_lib_module_util.py +0 -0
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/arpakitlib/ar_arpakit_schedule_uust_api_client_util.py +0 -0
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/arpakitlib/ar_arpakit_schedule_uust_site_util.py +0 -0
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/arpakitlib/ar_base64_util.py +0 -0
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/arpakitlib/ar_blank_util.py +0 -0
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/arpakitlib/ar_cache_file_util.py +0 -0
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/arpakitlib/ar_cryptomus_api_client_util.py +0 -0
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/arpakitlib/ar_datetime_util.py +0 -0
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/arpakitlib/ar_dict_util.py +0 -0
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/arpakitlib/ar_dream_ai_api_client_util.py +0 -0
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/arpakitlib/ar_encrypt_decrypt_util.py +0 -0
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/arpakitlib/ar_enumeration_util.py +0 -0
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/arpakitlib/ar_exception_util.py +0 -0
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/arpakitlib/ar_file_storage_in_dir_util.py +0 -0
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/arpakitlib/ar_file_util.py +0 -0
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/arpakitlib/ar_hash_util.py +0 -0
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/arpakitlib/ar_ip_util.py +0 -0
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/arpakitlib/ar_json_db_util.py +0 -0
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/arpakitlib/ar_json_util.py +0 -0
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/arpakitlib/ar_jwt_util.py +0 -0
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/arpakitlib/ar_list_of_dicts_to_xlsx.py +0 -0
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/arpakitlib/ar_list_util.py +0 -0
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/arpakitlib/ar_logging_util.py +0 -0
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/arpakitlib/ar_mongodb_util.py +0 -0
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/arpakitlib/ar_need_type_util.py +0 -0
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/arpakitlib/ar_openai_api_client_util.py +0 -0
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/arpakitlib/ar_parse_command.py +0 -0
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/arpakitlib/ar_postgresql_util.py +0 -0
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/arpakitlib/ar_run_cmd_util.py +0 -0
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/arpakitlib/ar_sleep_util.py +0 -0
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/arpakitlib/ar_ssh_runner_util.py +0 -0
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/arpakitlib/ar_steam_payment_api_client_util.py +0 -0
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/arpakitlib/ar_str_util.py +0 -0
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/arpakitlib/ar_wata_api_client.py +0 -0
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/arpakitlib/ar_yookassa_api_client_util.py +0 -0
- {arpakitlib-1.7.257 → arpakitlib-1.8.1}/arpakitlib/ar_zabbix_api_client_util.py +0 -0
@@ -1,11 +1,11 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: arpakitlib
|
3
|
-
Version: 1.
|
3
|
+
Version: 1.8.1
|
4
4
|
Summary: arpakitlib
|
5
5
|
License: Apache-2.0
|
6
6
|
Keywords: arpakitlib,arpakit,arpakit-company,arpakitcompany,arpakit_company
|
7
|
-
Author:
|
8
|
-
Author-email: arpakit
|
7
|
+
Author: arpakit_support
|
8
|
+
Author-email: support@arpakit.com
|
9
9
|
Requires-Python: >=3.12.4,<4.0
|
10
10
|
Classifier: Development Status :: 5 - Production/Stable
|
11
11
|
Classifier: Intended Audience :: Developers
|
@@ -55,6 +55,7 @@ Requires-Dist: uvicorn (>=0.34.0,<0.35.0)
|
|
55
55
|
Project-URL: Documentation, https://github.com/ARPAKIT-Company/arpakitlib
|
56
56
|
Project-URL: Homepage, https://github.com/ARPAKIT-Company/arpakitlib
|
57
57
|
Project-URL: Repository, https://github.com/ARPAKIT-Company/arpakitlib
|
58
|
+
Project-URL: arpakit_company_site, https://arpakit.com/
|
58
59
|
Project-URL: telegram_channel, https://t.me/arpakitlib
|
59
60
|
Description-Content-Type: text/markdown
|
60
61
|
|
@@ -89,6 +90,7 @@ pip install arpakitlib
|
|
89
90
|
|
90
91
|
```
|
91
92
|
poetry run arpakitlib -c help
|
93
|
+
poetry run arpakitlib -c init_arpakit_project_template -version 1 -project_dirpath ./ -overwrite_if_exists True
|
92
94
|
```
|
93
95
|
|
94
96
|
---
|
@@ -5,8 +5,8 @@ from sqlalchemy import engine_from_config
|
|
5
5
|
from sqlalchemy import pool
|
6
6
|
|
7
7
|
from arpakitlib.ar_type_util import raise_for_type
|
8
|
-
from
|
9
|
-
from
|
8
|
+
from core.settings import get_cached_settings
|
9
|
+
from sqlalchemy_db.sqlalchemy_model import get_simple_dbm
|
10
10
|
|
11
11
|
# this is the Alembic Config object, which provides
|
12
12
|
# access to the values within the .ini file in use.
|
@@ -24,7 +24,7 @@ if config.config_file_name is not None:
|
|
24
24
|
# for 'autogenerate' support
|
25
25
|
# from myapp import mymodel
|
26
26
|
# target_metadata = mymodel.Base.metadata
|
27
|
-
target_metadata =
|
27
|
+
target_metadata = get_simple_dbm().metadata
|
28
28
|
|
29
29
|
|
30
30
|
# other values from the config, defined by the needs of env.py,
|
@@ -0,0 +1,235 @@
|
|
1
|
+
from typing import Callable
|
2
|
+
|
3
|
+
import fastapi
|
4
|
+
import fastapi.exceptions
|
5
|
+
import fastapi.responses
|
6
|
+
import fastapi.security
|
7
|
+
from fastapi import Security
|
8
|
+
from fastapi.security import APIKeyHeader
|
9
|
+
from pydantic import BaseModel, ConfigDict
|
10
|
+
|
11
|
+
from api.const import APIErrorCodes
|
12
|
+
from api.exception import APIException
|
13
|
+
from arpakitlib.ar_func_util import is_async_callable, is_sync_function
|
14
|
+
from arpakitlib.ar_json_util import safely_transfer_obj_to_json_str_to_json_obj
|
15
|
+
from arpakitlib.ar_type_util import raise_for_type
|
16
|
+
from core.settings import get_cached_settings
|
17
|
+
|
18
|
+
|
19
|
+
class APIAuthData(BaseModel):
|
20
|
+
model_config = ConfigDict(extra="forbid", arbitrary_types_allowed=True, from_attributes=True)
|
21
|
+
|
22
|
+
require_api_key_string: bool = False
|
23
|
+
require_token_string: bool = False
|
24
|
+
|
25
|
+
require_correct_api_key: bool = False
|
26
|
+
require_correct_token: bool = False
|
27
|
+
|
28
|
+
token_string: str | None = None
|
29
|
+
api_key_string: str | None = None
|
30
|
+
|
31
|
+
is_token_correct: bool | None = None
|
32
|
+
is_api_key_correct: bool | None = None
|
33
|
+
|
34
|
+
|
35
|
+
def api_auth(
|
36
|
+
*,
|
37
|
+
require_api_key_string: bool = False,
|
38
|
+
require_token_string: bool = False,
|
39
|
+
validate_api_key_func: Callable | None = None,
|
40
|
+
validate_token_func: Callable | None = None,
|
41
|
+
correct_api_keys: str | list[str] | None = None,
|
42
|
+
correct_tokens: str | list[str] | None = None,
|
43
|
+
require_correct_api_key: bool = False,
|
44
|
+
require_correct_token: bool = False
|
45
|
+
) -> Callable:
|
46
|
+
if isinstance(correct_api_keys, str):
|
47
|
+
correct_api_keys = [correct_api_keys]
|
48
|
+
if correct_api_keys is not None:
|
49
|
+
raise_for_type(correct_api_keys, list)
|
50
|
+
|
51
|
+
if validate_api_key_func is None and correct_api_keys is not None:
|
52
|
+
validate_api_key_func = lambda *args, **kwargs_: kwargs_["api_auth_data"].api_key_string in correct_api_keys
|
53
|
+
|
54
|
+
if isinstance(correct_tokens, str):
|
55
|
+
correct_tokens = [correct_tokens]
|
56
|
+
if correct_tokens is not None:
|
57
|
+
raise_for_type(correct_tokens, list)
|
58
|
+
|
59
|
+
if validate_token_func is None and correct_tokens is not None:
|
60
|
+
validate_token_func = lambda *args, **kwargs_: kwargs_["api_auth_data"].token_string in correct_tokens
|
61
|
+
|
62
|
+
if require_correct_api_key is True:
|
63
|
+
require_api_key_string = True
|
64
|
+
|
65
|
+
if require_correct_token is True:
|
66
|
+
require_token_string = True
|
67
|
+
|
68
|
+
async def func(
|
69
|
+
*,
|
70
|
+
ac: fastapi.security.HTTPAuthorizationCredentials | None = fastapi.Security(
|
71
|
+
fastapi.security.HTTPBearer(auto_error=False)
|
72
|
+
),
|
73
|
+
api_key_string: str | None = Security(
|
74
|
+
APIKeyHeader(name="apikey", auto_error=False)
|
75
|
+
),
|
76
|
+
request: fastapi.requests.Request
|
77
|
+
) -> APIAuthData:
|
78
|
+
|
79
|
+
api_auth_data = APIAuthData(
|
80
|
+
require_api_key_string=require_api_key_string,
|
81
|
+
require_token_string=require_token_string,
|
82
|
+
require_correct_api_key=require_correct_api_key,
|
83
|
+
require_correct_token=require_correct_token
|
84
|
+
)
|
85
|
+
|
86
|
+
# parse api_key
|
87
|
+
|
88
|
+
api_auth_data.api_key_string = api_key_string
|
89
|
+
|
90
|
+
if not api_auth_data.api_key_string and "api_key" in request.headers.keys():
|
91
|
+
api_auth_data.api_key_string = request.headers["api_key"]
|
92
|
+
if not api_auth_data.api_key_string and "api-key" in request.headers.keys():
|
93
|
+
api_auth_data.api_key_string = request.headers["api-key"]
|
94
|
+
if not api_auth_data.api_key_string and "apikey" in request.headers.keys():
|
95
|
+
api_auth_data.api_key_string = request.headers["apikey"]
|
96
|
+
|
97
|
+
if not api_auth_data.api_key_string and "api_key" in request.query_params.keys():
|
98
|
+
api_auth_data.api_key_string = request.query_params["api_key"]
|
99
|
+
if not api_auth_data.api_key_string and "api-key" in request.query_params.keys():
|
100
|
+
api_auth_data.api_key_string = request.query_params["api-key"]
|
101
|
+
if not api_auth_data.api_key_string and "apikey" in request.query_params.keys():
|
102
|
+
api_auth_data.api_key_string = request.query_params["apikey"]
|
103
|
+
|
104
|
+
# parse token
|
105
|
+
|
106
|
+
api_auth_data.token_string = ac.credentials if ac and ac.credentials and ac.credentials.strip() else None
|
107
|
+
|
108
|
+
if not api_auth_data.token_string and "token" in request.headers.keys():
|
109
|
+
api_auth_data.token_string = request.headers["token"]
|
110
|
+
|
111
|
+
if not api_auth_data.token_string and "user_token" in request.headers.keys():
|
112
|
+
api_auth_data.token_string = request.headers["user_token"]
|
113
|
+
if not api_auth_data.token_string and "user-token" in request.headers.keys():
|
114
|
+
api_auth_data.token_string = request.headers["user-token"]
|
115
|
+
if not api_auth_data.token_string and "usertoken" in request.headers.keys():
|
116
|
+
api_auth_data.token_string = request.headers["usertoken"]
|
117
|
+
|
118
|
+
if not api_auth_data.token_string and "token" in request.query_params.keys():
|
119
|
+
api_auth_data.token_string = request.query_params["token"]
|
120
|
+
|
121
|
+
if not api_auth_data.token_string and "user_token" in request.query_params.keys():
|
122
|
+
api_auth_data.token_string = request.query_params["user_token"]
|
123
|
+
if not api_auth_data.token_string and "user-token" in request.query_params.keys():
|
124
|
+
api_auth_data.token_string = request.query_params["user-token"]
|
125
|
+
if not api_auth_data.token_string and "usertoken" in request.query_params.keys():
|
126
|
+
api_auth_data.token_string = request.query_params["usertoken"]
|
127
|
+
|
128
|
+
if api_auth_data.token_string:
|
129
|
+
api_auth_data.token_string = api_auth_data.token_string.strip()
|
130
|
+
if not api_auth_data.token_string:
|
131
|
+
api_auth_data.token_string = None
|
132
|
+
|
133
|
+
# require_api_key_string
|
134
|
+
|
135
|
+
if require_api_key_string and not api_auth_data.api_key_string:
|
136
|
+
raise APIException(
|
137
|
+
status_code=fastapi.status.HTTP_401_UNAUTHORIZED,
|
138
|
+
error_code=APIErrorCodes.cannot_authorize,
|
139
|
+
error_data=safely_transfer_obj_to_json_str_to_json_obj(api_auth_data.model_dump())
|
140
|
+
)
|
141
|
+
|
142
|
+
# require_token_string
|
143
|
+
|
144
|
+
if require_token_string and not api_auth_data.token_string:
|
145
|
+
raise APIException(
|
146
|
+
status_code=fastapi.status.HTTP_401_UNAUTHORIZED,
|
147
|
+
error_code=APIErrorCodes.cannot_authorize,
|
148
|
+
error_data=safely_transfer_obj_to_json_str_to_json_obj(api_auth_data.model_dump())
|
149
|
+
)
|
150
|
+
|
151
|
+
# validate_api_key_func
|
152
|
+
|
153
|
+
if validate_api_key_func is not None:
|
154
|
+
if is_async_callable(validate_api_key_func):
|
155
|
+
api_auth_data.is_api_key_correct = await validate_api_key_func(
|
156
|
+
api_auth_data=api_auth_data,
|
157
|
+
request=request
|
158
|
+
)
|
159
|
+
elif is_sync_function(validate_api_key_func):
|
160
|
+
api_auth_data.is_api_key_correct = validate_api_key_func()
|
161
|
+
else:
|
162
|
+
raise TypeError("unknown validate_api_key_func type")
|
163
|
+
|
164
|
+
# validate_token_func
|
165
|
+
|
166
|
+
if validate_token_func is not None:
|
167
|
+
if is_async_callable(validate_token_func):
|
168
|
+
api_auth_data.is_token_correct = await validate_token_func(
|
169
|
+
api_auth_data=api_auth_data,
|
170
|
+
request=request
|
171
|
+
)
|
172
|
+
elif is_sync_function(validate_token_func):
|
173
|
+
api_auth_data.is_token_correct = validate_token_func()
|
174
|
+
else:
|
175
|
+
raise TypeError("unknown validate_token_func type")
|
176
|
+
|
177
|
+
# require_correct_api_key
|
178
|
+
|
179
|
+
if require_correct_api_key:
|
180
|
+
if not api_auth_data.is_api_key_correct:
|
181
|
+
raise APIException(
|
182
|
+
status_code=fastapi.status.HTTP_401_UNAUTHORIZED,
|
183
|
+
error_code=APIErrorCodes.cannot_authorize,
|
184
|
+
error_description="not api_auth_data.is_api_key_correct",
|
185
|
+
error_data=safely_transfer_obj_to_json_str_to_json_obj(api_auth_data.model_dump()),
|
186
|
+
)
|
187
|
+
|
188
|
+
# require_correct_token
|
189
|
+
|
190
|
+
if require_correct_token:
|
191
|
+
if not api_auth_data.is_token_correct:
|
192
|
+
raise APIException(
|
193
|
+
status_code=fastapi.status.HTTP_401_UNAUTHORIZED,
|
194
|
+
error_code=APIErrorCodes.cannot_authorize,
|
195
|
+
error_description="not api_auth_data.is_token_correct",
|
196
|
+
error_data=safely_transfer_obj_to_json_str_to_json_obj(api_auth_data.model_dump())
|
197
|
+
)
|
198
|
+
|
199
|
+
return api_auth_data
|
200
|
+
|
201
|
+
return func
|
202
|
+
|
203
|
+
|
204
|
+
def correct_api_keys_from_settings__validate_api_key_func() -> Callable:
|
205
|
+
async def func(
|
206
|
+
*,
|
207
|
+
api_auth_data: APIAuthData,
|
208
|
+
request: fastapi.requests.Request,
|
209
|
+
):
|
210
|
+
if get_cached_settings().api_correct_api_keys is None:
|
211
|
+
return False
|
212
|
+
if api_auth_data.api_key_string is None:
|
213
|
+
return False
|
214
|
+
if api_auth_data.api_key_string.strip() not in get_cached_settings().api_correct_api_keys:
|
215
|
+
return False
|
216
|
+
return True
|
217
|
+
|
218
|
+
return func
|
219
|
+
|
220
|
+
|
221
|
+
def correct_tokens_from_settings__validate_api_key_func() -> Callable:
|
222
|
+
async def func(
|
223
|
+
*,
|
224
|
+
api_auth_data: APIAuthData,
|
225
|
+
request: fastapi.requests.Request,
|
226
|
+
):
|
227
|
+
if get_cached_settings().api_correct_tokens is None:
|
228
|
+
return False
|
229
|
+
if api_auth_data.token_string is None:
|
230
|
+
return False
|
231
|
+
if api_auth_data.token_string.strip() not in get_cached_settings().api_correct_tokens:
|
232
|
+
return False
|
233
|
+
return True
|
234
|
+
|
235
|
+
return func
|
@@ -0,0 +1,18 @@
|
|
1
|
+
from arpakitlib.ar_enumeration_util import Enumeration
|
2
|
+
|
3
|
+
|
4
|
+
class APIErrorCodes(Enumeration):
|
5
|
+
cannot_authorize = "CANNOT_AUTHORIZE"
|
6
|
+
unknown_error = "UNKNOWN_ERROR"
|
7
|
+
error_in_request = "ERROR_IN_REQUEST"
|
8
|
+
not_found = "NOT_FOUND"
|
9
|
+
|
10
|
+
|
11
|
+
class APIErrorSpecificationCodes(Enumeration):
|
12
|
+
pass
|
13
|
+
|
14
|
+
|
15
|
+
if __name__ == '__main__':
|
16
|
+
print(APIErrorCodes.str_for_print())
|
17
|
+
print()
|
18
|
+
print(APIErrorSpecificationCodes.str_for_print())
|
@@ -0,0 +1,71 @@
|
|
1
|
+
import logging
|
2
|
+
import os
|
3
|
+
|
4
|
+
from fastapi import FastAPI
|
5
|
+
from fastapi.middleware.cors import CORSMiddleware
|
6
|
+
from fastapi.staticfiles import StaticFiles
|
7
|
+
|
8
|
+
from api.event import get_api_startup_events, get_api_shutdown_events
|
9
|
+
from api.exception_handler import add_exception_handler_to_app
|
10
|
+
from api.openapi_ui import add_local_openapi_ui_to_app
|
11
|
+
from api.router.main_router import main_api_router
|
12
|
+
from core.const import ProjectPaths
|
13
|
+
from core.settings import get_cached_settings
|
14
|
+
from core.util import setup_logging
|
15
|
+
|
16
|
+
_logger = logging.getLogger(__name__)
|
17
|
+
|
18
|
+
|
19
|
+
def create_api_app(*, prefix: str = "/api") -> FastAPI:
|
20
|
+
setup_logging()
|
21
|
+
|
22
|
+
_logger.info("start")
|
23
|
+
|
24
|
+
api_app = FastAPI(
|
25
|
+
title=get_cached_settings().project_name,
|
26
|
+
description=get_cached_settings().project_name,
|
27
|
+
docs_url=None,
|
28
|
+
redoc_url=None,
|
29
|
+
openapi_url="/openapi",
|
30
|
+
on_startup=get_api_startup_events(),
|
31
|
+
on_shutdown=get_api_shutdown_events(),
|
32
|
+
contact={
|
33
|
+
"name": "ARPAKIT Company",
|
34
|
+
"url": "https://arpakit.com/",
|
35
|
+
"email": "support@arpakit.com",
|
36
|
+
},
|
37
|
+
)
|
38
|
+
|
39
|
+
api_app.add_middleware(
|
40
|
+
CORSMiddleware,
|
41
|
+
allow_origins=["*"],
|
42
|
+
allow_credentials=True,
|
43
|
+
allow_methods=["*"],
|
44
|
+
allow_headers=["*"],
|
45
|
+
)
|
46
|
+
|
47
|
+
add_local_openapi_ui_to_app(app=api_app)
|
48
|
+
|
49
|
+
add_exception_handler_to_app(app=api_app)
|
50
|
+
|
51
|
+
api_app.include_router(
|
52
|
+
prefix=prefix,
|
53
|
+
router=main_api_router
|
54
|
+
)
|
55
|
+
|
56
|
+
if get_cached_settings().media_dirpath is not None:
|
57
|
+
if not os.path.exists(get_cached_settings().media_dirpath):
|
58
|
+
os.makedirs(get_cached_settings().media_dirpath, exist_ok=True)
|
59
|
+
api_app.mount("/media", StaticFiles(directory=get_cached_settings().media_dirpath), name="media")
|
60
|
+
|
61
|
+
if not os.path.exists(ProjectPaths.static_dirpath):
|
62
|
+
os.makedirs(ProjectPaths.static_dirpath, exist_ok=True)
|
63
|
+
api_app.mount("/static", StaticFiles(directory=ProjectPaths.static_dirpath), name="static")
|
64
|
+
|
65
|
+
if get_cached_settings().api_enable_sqladmin:
|
66
|
+
from sqladmin_.add_admin_in_app import add_sqladmin_in_app
|
67
|
+
add_sqladmin_in_app(app=api_app)
|
68
|
+
|
69
|
+
_logger.info("finish")
|
70
|
+
|
71
|
+
return api_app
|
@@ -0,0 +1,74 @@
|
|
1
|
+
import logging
|
2
|
+
from typing import Callable
|
3
|
+
|
4
|
+
from arpakitlib.ar_base_worker_util import safe_run_worker_in_background, SafeRunInBackgroundModes
|
5
|
+
from core.cache_file_storage_in_dir import get_cached_cache_file_storage_in_dir
|
6
|
+
from core.dump_file_storage_in_dir import get_cached_dump_file_storage_in_dir
|
7
|
+
from core.media_file_storage_in_dir import get_cached_media_file_storage_in_dir
|
8
|
+
from core.settings import get_cached_settings
|
9
|
+
from json_db.json_db import get_cached_json_db
|
10
|
+
from operation_execution.operation_executor_worker import create_operation_executor_worker
|
11
|
+
from operation_execution.scheduled_operation_creator_worker import create_scheduled_operation_creator_worker
|
12
|
+
from sqlalchemy_db.sqlalchemy_db import get_cached_sqlalchemy_db
|
13
|
+
|
14
|
+
_logger = logging.getLogger(__name__)
|
15
|
+
|
16
|
+
|
17
|
+
# STARTUP API EVENTS
|
18
|
+
|
19
|
+
|
20
|
+
async def async_api_startup_event():
|
21
|
+
_logger.info("start")
|
22
|
+
|
23
|
+
if get_cached_media_file_storage_in_dir() is not None:
|
24
|
+
get_cached_media_file_storage_in_dir().init()
|
25
|
+
|
26
|
+
if get_cached_cache_file_storage_in_dir() is not None:
|
27
|
+
get_cached_cache_file_storage_in_dir().init()
|
28
|
+
|
29
|
+
if get_cached_dump_file_storage_in_dir() is not None:
|
30
|
+
get_cached_dump_file_storage_in_dir().init()
|
31
|
+
|
32
|
+
if (
|
33
|
+
get_cached_sqlalchemy_db() is not None
|
34
|
+
and get_cached_settings().api_init_sqlalchemy_db
|
35
|
+
):
|
36
|
+
get_cached_sqlalchemy_db().init()
|
37
|
+
|
38
|
+
if (
|
39
|
+
get_cached_json_db() is not None
|
40
|
+
and get_cached_settings().api_init_json_db
|
41
|
+
):
|
42
|
+
get_cached_json_db().init()
|
43
|
+
|
44
|
+
if get_cached_settings().api_start_operation_executor_worker:
|
45
|
+
_ = safe_run_worker_in_background(
|
46
|
+
worker=create_operation_executor_worker(),
|
47
|
+
mode=SafeRunInBackgroundModes.thread
|
48
|
+
)
|
49
|
+
|
50
|
+
if get_cached_settings().api_start_scheduled_operation_creator_worker:
|
51
|
+
_ = safe_run_worker_in_background(
|
52
|
+
worker=create_scheduled_operation_creator_worker(),
|
53
|
+
mode=SafeRunInBackgroundModes.async_task
|
54
|
+
)
|
55
|
+
|
56
|
+
_logger.info("finish")
|
57
|
+
|
58
|
+
|
59
|
+
def get_api_startup_events() -> list[Callable]:
|
60
|
+
res = [async_api_startup_event]
|
61
|
+
return res
|
62
|
+
|
63
|
+
|
64
|
+
# SHUTDOWN API EVENTS
|
65
|
+
|
66
|
+
|
67
|
+
async def async_api_shutdown_event():
|
68
|
+
_logger.info("start")
|
69
|
+
_logger.info("finish")
|
70
|
+
|
71
|
+
|
72
|
+
def get_api_shutdown_events() -> list[Callable]:
|
73
|
+
res = [async_api_shutdown_event]
|
74
|
+
return res
|
@@ -0,0 +1,38 @@
|
|
1
|
+
from typing import Any
|
2
|
+
|
3
|
+
import fastapi.security
|
4
|
+
|
5
|
+
from api.const import APIErrorCodes
|
6
|
+
from api.schema.common.out import ErrorCommonSO
|
7
|
+
|
8
|
+
|
9
|
+
class APIException(fastapi.exceptions.HTTPException):
|
10
|
+
def __init__(
|
11
|
+
self,
|
12
|
+
*,
|
13
|
+
status_code: int = fastapi.status.HTTP_400_BAD_REQUEST,
|
14
|
+
error_code: str | None = APIErrorCodes.unknown_error,
|
15
|
+
error_specification_code: str | None = None,
|
16
|
+
error_description: str | None = None,
|
17
|
+
error_data: dict[str, Any] | None = None
|
18
|
+
):
|
19
|
+
self.status_code = status_code
|
20
|
+
self.error_code = error_code
|
21
|
+
self.error_specification_code = error_specification_code
|
22
|
+
self.error_description = error_description
|
23
|
+
if error_data is None:
|
24
|
+
error_data = {}
|
25
|
+
self.error_data = error_data
|
26
|
+
|
27
|
+
self.error_common_so = ErrorCommonSO(
|
28
|
+
has_error=True,
|
29
|
+
error_code=self.error_code,
|
30
|
+
error_specification_code=self.error_specification_code,
|
31
|
+
error_description=self.error_description,
|
32
|
+
error_data=self.error_data
|
33
|
+
)
|
34
|
+
|
35
|
+
super().__init__(
|
36
|
+
status_code=self.status_code,
|
37
|
+
detail=self.error_common_so.model_dump(mode="json")
|
38
|
+
)
|