arpakitlib 1.7.90__tar.gz → 1.7.201__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.90 → arpakitlib-1.7.201}/PKG-INFO +27 -20
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/README.md +7 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/README.md +1 -3
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/example.env +5 -0
- arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/manage/docker_run_postgres_for_dev.sh +4 -0
- arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/manage/docker_start_postgres_for_dev.sh +2 -0
- arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/manage/docker_stop_postgres_for_dev.sh +2 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/manage/git_set_arpakit_company_origin.sh +2 -2
- arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/manage/git_set_arpakit_origin.sh +7 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/manage/hello_world.py +2 -2
- arpakitlib-1.7.90/arpakitlib/_arpakit_project_template/manage/json_beutify.py → arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/manage/json_beautify.py +2 -2
- arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/manage/poetry_config.sh +2 -0
- arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/manage/poetry_self_add_plugin_export.sh +2 -0
- arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/manage/poetry_show_arpakitlib.sh +2 -0
- arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_1.py +14 -0
- arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_2.py +14 -0
- arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_3.py +14 -0
- arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_4.py +14 -0
- arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_5.py +14 -0
- arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_6.py +14 -0
- arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_7.py +14 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/src/additional_model/additional_model.py +2 -0
- arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/src/admin1/add_admin_in_app.py +26 -0
- arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/src/admin1/admin_auth.py +29 -0
- arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/src/admin1/model_view.py +19 -0
- arpakitlib-1.7.90/arpakitlib/_arpakit_project_template/src/api/start_api_for_dev.py → arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/src/api/_start_api_with_reload.py +3 -3
- arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/src/api/_start_api_without_reload.py +17 -0
- arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/src/api/create_api_app.py +77 -0
- arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/src/api/event.py +63 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/src/api/router/main_router.py +3 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/src/api/router/v1/get_api_error_info.py +1 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/src/api/router/v1/main_router.py +4 -0
- arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/src/api/schema/v1/in_.py +1 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/src/api/schema/v1/out.py +2 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/src/api/transmitted_api_data.py +6 -0
- arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/src/business_service/hello_world.py +15 -0
- arpakitlib-1.7.90/arpakitlib/_arpakit_project_template/manage/logging_check.py → arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/src/core/_check_logging.py +3 -3
- arpakitlib-1.7.90/arpakitlib/_arpakit_project_template/manage/settings_check.py → arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/src/core/_check_settings.py +2 -2
- arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/src/core/_generate_settings_env_example.py +14 -0
- arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/src/core/const.py +41 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/src/core/settings.py +17 -21
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/src/core/util.py +3 -0
- arpakitlib-1.7.90/arpakitlib/_arpakit_project_template/manage/sqlalchemy_db_check_conn.py → arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/src/db/_check_conn_sqlalchemy_db.py +2 -2
- arpakitlib-1.7.90/arpakitlib/_arpakit_project_template/manage/sqlalchemy_db_init.py → arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/src/db/_init_sqlalchemy_db.py +2 -2
- arpakitlib-1.7.90/arpakitlib/_arpakit_project_template/manage/sqlalchemy_db_reinit.py → arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/src/db/_reinit_sqlalchemy_db.py +4 -2
- arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/src/db/const.py +1 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/src/db/util.py +2 -0
- arpakitlib-1.7.90/arpakitlib/_arpakit_project_template/src/operation_execution/start_operation_executor_worker_for_dev.py → arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/src/operation_execution/_start_operation_executor_worker.py +3 -4
- arpakitlib-1.7.90/arpakitlib/_arpakit_project_template/src/operation_execution/start_scheduled_operation_creator_worker_for_dev.py → arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/src/operation_execution/_start_scheduled_operation_creator_worker.py +4 -4
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/src/operation_execution/operation_executor.py +6 -4
- arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/src/operation_execution/scheduled_operations.py +29 -0
- arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/src/operation_execution/util.py +1 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_1.py +2 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_2.py +2 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_3.py +2 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_4.py +2 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/src/test_data/make_test_data_5.py +2 -0
- arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/src/tg_bot/router/__init__.py +0 -0
- arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/src/tg_bot/start_tg_bot.py +0 -0
- arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/src/util/__init__.py +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_arpakit_lib_module_util.py +7 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_arpakit_project_template_util.py +3 -3
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_base_worker_util.py +39 -19
- arpakitlib-1.7.201/arpakitlib/ar_class_util.py +17 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_enumeration_util.py +19 -1
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_fastapi_util.py +0 -42
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_func_util.py +1 -1
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_operation_execution_util.py +130 -126
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_schedule_uust_api_client_util.py +13 -6
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_settings_util.py +16 -7
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_sqlalchemy_model_util.py +5 -3
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_str_util.py +15 -15
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_type_util.py +16 -2
- arpakitlib-1.7.201/pyproject.toml +82 -0
- arpakitlib-1.7.90/NOTICE +0 -16
- arpakitlib-1.7.90/arpakitlib/_arpakit_project_template/AUTHOR.md +0 -4
- arpakitlib-1.7.90/arpakitlib/_arpakit_project_template/NOTICE +0 -16
- arpakitlib-1.7.90/arpakitlib/_arpakit_project_template/manage/docker_run_postgres_for_dev.sh +0 -4
- arpakitlib-1.7.90/arpakitlib/_arpakit_project_template/manage/docker_start_postgres_for_dev.sh +0 -2
- arpakitlib-1.7.90/arpakitlib/_arpakit_project_template/manage/docker_stop_postgres_for_dev.sh +0 -2
- arpakitlib-1.7.90/arpakitlib/_arpakit_project_template/manage/example_nginx_proxy.nginx +0 -14
- arpakitlib-1.7.90/arpakitlib/_arpakit_project_template/manage/example_poetry_arpakitlib.sh +0 -1
- arpakitlib-1.7.90/arpakitlib/_arpakit_project_template/manage/example_pyproject.toml +0 -18
- arpakitlib-1.7.90/arpakitlib/_arpakit_project_template/manage/example_systemd.service +0 -12
- arpakitlib-1.7.90/arpakitlib/_arpakit_project_template/manage/git_set_arpakit_origin.sh +0 -7
- arpakitlib-1.7.90/arpakitlib/_arpakit_project_template/manage/poetry_generate_requirements.txt.sh +0 -1
- arpakitlib-1.7.90/arpakitlib/_arpakit_project_template/manage/poetry_show_arpakitlib.sh +0 -2
- arpakitlib-1.7.90/arpakitlib/_arpakit_project_template/manage/requirements.txt +0 -209
- arpakitlib-1.7.90/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_1.py +0 -14
- arpakitlib-1.7.90/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_2.py +0 -14
- arpakitlib-1.7.90/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_3.py +0 -14
- arpakitlib-1.7.90/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_4.py +0 -14
- arpakitlib-1.7.90/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_5.py +0 -14
- arpakitlib-1.7.90/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_6.py +0 -14
- arpakitlib-1.7.90/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_7.py +0 -14
- arpakitlib-1.7.90/arpakitlib/_arpakit_project_template/manage/settings_generate_env_example.py +0 -13
- arpakitlib-1.7.90/arpakitlib/_arpakit_project_template/src/api/create_api_app.py +0 -117
- arpakitlib-1.7.90/arpakitlib/_arpakit_project_template/src/api/event.py +0 -20
- arpakitlib-1.7.90/arpakitlib/_arpakit_project_template/src/api/start_api_for_dev_with_reload.py +0 -9
- arpakitlib-1.7.90/arpakitlib/_arpakit_project_template/src/core/const.py +0 -48
- arpakitlib-1.7.90/arpakitlib/_arpakit_project_template/src/operation_execution/scheduled_operations.py +0 -25
- arpakitlib-1.7.90/arpakitlib/_arpakit_project_template/src/operation_execution/util.py +0 -21
- arpakitlib-1.7.90/pyproject.toml +0 -68
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/LICENSE +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/__init__.py +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/.gitignore +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/.python-version +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/ARPAKITLIB +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/LICENSE +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/manage/__init__.py +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/manage/docker_ps.sh +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/manage/docker_ps_a.sh +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/manage/git_branch.sh +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/manage/git_commit.sh +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/manage/git_push_arpakit_company_github_1.sh +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/manage/git_push_arpakit_company_gitlab_1.sh +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/manage/git_push_arpakit_github_1.sh +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/manage/git_push_arpakit_gitlab_1.sh +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/manage/git_remote_v.sh +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/manage/git_status.sh +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/manage/note/__init__.py +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/manage/note/note_1.txt +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/manage/note/note_2.txt +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/manage/note/note_3.txt +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/manage/note/note_4.txt +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/manage/note/note_5.txt +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/manage/poetry_add_plugin_export.sh +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/manage/poetry_check.sh +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/manage/poetry_clear_cache.sh +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/manage/poetry_config_virtualenvs_in_project_true.sh +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/manage/poetry_install.sh +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/manage/poetry_lock.sh +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/manage/poetry_remove_and_add_arpakitlib.sh +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/manage/poetry_show.sh +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/manage/poetry_update.sh +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/manage/poetry_update_arpakitlib.sh +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/manage/sandbox/__init__.py +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_8.sh +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_9.sh +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/resource/__init__.py +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/resource/static/__init__.py +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/resource/static/healthcheck +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/resource/static/helloworld +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/src/__init__.py +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/src/additional_model/__init__.py +0 -0
- {arpakitlib-1.7.90/arpakitlib/_arpakit_project_template/src/api → arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/src/admin1}/__init__.py +0 -0
- {arpakitlib-1.7.90/arpakitlib/_arpakit_project_template/src/api/router → arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/src/api}/__init__.py +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/src/api/asgi.py +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/src/api/auth.py +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/src/api/const.py +0 -0
- {arpakitlib-1.7.90/arpakitlib/_arpakit_project_template/src/api/router/v1 → arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/src/api/router}/__init__.py +0 -0
- {arpakitlib-1.7.90/arpakitlib/_arpakit_project_template/src/api/schema → arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/src/api/router/v1}/__init__.py +0 -0
- {arpakitlib-1.7.90/arpakitlib/_arpakit_project_template/src/api/schema/v1 → arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/src/api/schema}/__init__.py +0 -0
- {arpakitlib-1.7.90/arpakitlib/_arpakit_project_template/src/business_service → arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/src/api/schema/v1}/__init__.py +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/src/api/util.py +0 -0
- {arpakitlib-1.7.90/arpakitlib/_arpakit_project_template/src/core → arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/src/business_service}/__init__.py +0 -0
- {arpakitlib-1.7.90/arpakitlib/_arpakit_project_template/src/db → arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/src/core}/__init__.py +0 -0
- {arpakitlib-1.7.90/arpakitlib/_arpakit_project_template/src/operation_execution → arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/src/db}/__init__.py +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/src/db/sqlalchemy_model.py +0 -0
- {arpakitlib-1.7.90/arpakitlib/_arpakit_project_template/src/test_data → arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/src/operation_execution}/__init__.py +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/_arpakit_project_template/src/operation_execution/const.py +0 -0
- {arpakitlib-1.7.90/arpakitlib/_arpakit_project_template/src/util → arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/src/test_data}/__init__.py +0 -0
- /arpakitlib-1.7.90/arpakitlib/_arpakit_project_template/src/api/schema/v1/in_.py → /arpakitlib-1.7.201/arpakitlib/_arpakit_project_template/src/tg_bot/__init__.py +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_additional_model_util.py +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_aiogram_util.py +0 -0
- /arpakitlib-1.7.90/arpakitlib/api_key_util.py → /arpakitlib-1.7.201/arpakitlib/ar_api_key_util.py +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_arpakit_schedule_uust_api_client_util.py +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_arpakitlib_cli_util.py +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_base64_util.py +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_cache_file_util.py +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_datetime_util.py +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_dict_util.py +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_dream_ai_api_client_util.py +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_encrypt_decrypt_util.py +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_exception_util.py +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_fastapi_static/healthcheck +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_fastapi_static/redoc/redoc.standalone.js +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_fastapi_static/swagger-ui/favicon-16x16.png +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_fastapi_static/swagger-ui/favicon-32x32.png +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_fastapi_static/swagger-ui/index.css +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_fastapi_static/swagger-ui/index.html +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_fastapi_static/swagger-ui/oauth2-redirect.html +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-initializer.js +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-bundle.js +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-bundle.js.map +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle-core.js +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle-core.js.map +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle.js +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle.js.map +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-standalone-preset.js +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-standalone-preset.js.map +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css.map +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js.map +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_file_storage_in_dir_util.py +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_file_util.py +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_hash_util.py +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_http_request_util.py +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_ip_util.py +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_json_db_util.py +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_json_util.py +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_jwt_util.py +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_list_of_dicts_to_xlsx.py +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_list_util.py +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_logging_util.py +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_mongodb_util.py +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_need_type_util.py +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_openai_api_client_util.py +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_parse_command.py +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_postgresql_util.py +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_run_cmd_util.py +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_sleep_util.py +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_sqlalchemy_util.py +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_ssh_runner_util.py +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_yookassa_api_client_util.py +0 -0
- {arpakitlib-1.7.90 → arpakitlib-1.7.201}/arpakitlib/ar_zabbix_api_client_util.py +0 -0
@@ -1,55 +1,55 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.3
|
2
2
|
Name: arpakitlib
|
3
|
-
Version: 1.7.
|
3
|
+
Version: 1.7.201
|
4
4
|
Summary: arpakitlib
|
5
|
-
Home-page: https://github.com/ARPAKIT-Company/arpakitlib
|
6
5
|
License: Apache-2.0
|
7
6
|
Keywords: arpakitlib,arpakit,arpakit-company,arpakitcompany,arpakit_company
|
8
7
|
Author: arpakit
|
9
8
|
Author-email: arpakit@gmail.com
|
10
|
-
Requires-Python: >=3.12,<4.0
|
9
|
+
Requires-Python: >=3.12.4,<4.0
|
11
10
|
Classifier: Development Status :: 5 - Production/Stable
|
12
11
|
Classifier: Intended Audience :: Developers
|
13
12
|
Classifier: License :: OSI Approved :: Apache Software License
|
14
|
-
Classifier: Operating System :: OS Independent
|
15
13
|
Classifier: Programming Language :: Python
|
16
14
|
Classifier: Programming Language :: Python :: 3
|
17
15
|
Classifier: Programming Language :: Python :: 3.12
|
18
|
-
Classifier:
|
16
|
+
Classifier: Operating System :: OS Independent
|
19
17
|
Classifier: Topic :: Software Development :: Libraries
|
20
|
-
Requires-Dist: aiogram (>=3.
|
21
|
-
Requires-Dist: aiohttp-socks (>=0.
|
22
|
-
Requires-Dist: alembic (>=1.14.
|
18
|
+
Requires-Dist: aiogram (>=3.17.0,<4.0.0)
|
19
|
+
Requires-Dist: aiohttp-socks (>=0.10.1,<0.11.0)
|
20
|
+
Requires-Dist: alembic (>=1.14.1,<2.0.0)
|
23
21
|
Requires-Dist: asyncpg (>=0.30.0,<0.31.0)
|
24
|
-
Requires-Dist: asyncssh (>=2.
|
22
|
+
Requires-Dist: asyncssh (>=2.19.0,<3.0.0)
|
25
23
|
Requires-Dist: bs4 (>=0.0.2,<0.0.3)
|
26
|
-
Requires-Dist: cachetools (>=5.5.
|
24
|
+
Requires-Dist: cachetools (>=5.5.1,<6.0.0)
|
27
25
|
Requires-Dist: celery (>=5.4.0,<6.0.0)
|
28
26
|
Requires-Dist: cryptography (>=44.0.0,<45.0.0)
|
29
27
|
Requires-Dist: email-validator (>=2.2.0,<3.0.0)
|
30
|
-
Requires-Dist: emoji (>=2.14.
|
31
|
-
Requires-Dist: fastapi (>=0.115.
|
28
|
+
Requires-Dist: emoji (>=2.14.1,<3.0.0)
|
29
|
+
Requires-Dist: fastapi (>=0.115.6,<0.116.0)
|
32
30
|
Requires-Dist: gunicorn (>=23.0.0,<24.0.0)
|
33
31
|
Requires-Dist: itsdangerous (>=2.2.0,<3.0.0)
|
34
32
|
Requires-Dist: jupyter (>=1.1.1,<2.0.0)
|
35
33
|
Requires-Dist: matplotlib (>=3.10.0,<4.0.0)
|
36
|
-
Requires-Dist: openai (>=1.
|
34
|
+
Requires-Dist: openai (>=1.59.9,<2.0.0)
|
37
35
|
Requires-Dist: openpyxl (>=3.1.5,<4.0.0)
|
38
36
|
Requires-Dist: pandas (>=2.2.3,<3.0.0)
|
39
37
|
Requires-Dist: paramiko (>=3.5.0,<4.0.0)
|
40
|
-
Requires-Dist: poetry (>=
|
38
|
+
Requires-Dist: poetry (>=2.0.1,<3.0.0)
|
41
39
|
Requires-Dist: psycopg2-binary (>=2.9.10,<3.0.0)
|
42
|
-
Requires-Dist: pydantic
|
40
|
+
Requires-Dist: pydantic (>=2.10.5,<3.0.0)
|
41
|
+
Requires-Dist: pydantic-settings (>=2.7.1,<3.0.0)
|
43
42
|
Requires-Dist: pyjwt (>=2.10.1,<3.0.0)
|
44
43
|
Requires-Dist: pymongo (>=4.10.1,<5.0.0)
|
45
44
|
Requires-Dist: pytz (>=2024.2,<2025.0)
|
46
45
|
Requires-Dist: pyzabbix (>=1.3.1,<2.0.0)
|
47
|
-
Requires-Dist: redis (>=5.2.0,<6.0.0)
|
48
46
|
Requires-Dist: requests[socks] (>=2.32.3,<3.0.0)
|
49
47
|
Requires-Dist: sqladmin (>=0.20.1,<0.21.0)
|
50
|
-
Requires-Dist: sqlalchemy (>=2.0.
|
51
|
-
Requires-Dist: twine (>=6.0
|
52
|
-
Requires-Dist: uvicorn (>=0.
|
48
|
+
Requires-Dist: sqlalchemy (>=2.0.37,<3.0.0)
|
49
|
+
Requires-Dist: twine (>=6.1.0,<7.0.0)
|
50
|
+
Requires-Dist: uvicorn (>=0.34.0,<0.35.0)
|
51
|
+
Project-URL: Documentation, https://github.com/ARPAKIT-Company/arpakitlib
|
52
|
+
Project-URL: Homepage, https://github.com/ARPAKIT-Company/arpakitlib
|
53
53
|
Project-URL: Repository, https://github.com/ARPAKIT-Company/arpakitlib
|
54
54
|
Description-Content-Type: text/markdown
|
55
55
|
|
@@ -80,6 +80,13 @@ poetry add arpakitlib
|
|
80
80
|
pip install arpakitlib
|
81
81
|
```
|
82
82
|
|
83
|
+
### Init template
|
84
|
+
|
85
|
+
```
|
86
|
+
# poetry run arpakitlib -c help
|
87
|
+
poetry run arpakitlib -c init_arpakit_project_template -project_dirpath ./ -overwrite_if_exists true -project_name ... -sql_db_port ... (optional) -api_port ... (optional) -ignore_paths_startswith ... (optional) -only_paths_startswith ...(optional)
|
88
|
+
```
|
89
|
+
|
83
90
|
---
|
84
91
|
|
85
92
|
### Links
|
@@ -25,6 +25,13 @@ poetry add arpakitlib
|
|
25
25
|
pip install arpakitlib
|
26
26
|
```
|
27
27
|
|
28
|
+
### Init template
|
29
|
+
|
30
|
+
```
|
31
|
+
# poetry run arpakitlib -c help
|
32
|
+
poetry run arpakitlib -c init_arpakit_project_template -project_dirpath ./ -overwrite_if_exists true -project_name ... -sql_db_port ... (optional) -api_port ... (optional) -ignore_paths_startswith ... (optional) -only_paths_startswith ...(optional)
|
33
|
+
```
|
34
|
+
|
28
35
|
---
|
29
36
|
|
30
37
|
### Links
|
@@ -1,4 +1,6 @@
|
|
1
1
|
# mode_type=
|
2
|
+
# project_name=
|
3
|
+
# sql_db_port=
|
2
4
|
# sql_db_url=
|
3
5
|
# sql_db_echo=
|
4
6
|
# api_init_sql_db_at_start=
|
@@ -9,6 +11,8 @@
|
|
9
11
|
# api_start_scheduled_operation_creator_worker=
|
10
12
|
# api_port=
|
11
13
|
# api_correct_api_key=
|
14
|
+
# api_correct_token=
|
15
|
+
# api_enable_admin1=
|
12
16
|
# var_dirname=
|
13
17
|
# var_dirpath=
|
14
18
|
# log_filename=
|
@@ -20,3 +24,4 @@
|
|
20
24
|
# dump_dirname=
|
21
25
|
# dump_dirpath=
|
22
26
|
# local_timezone=
|
27
|
+
# admin1_secret_key=
|
@@ -0,0 +1,4 @@
|
|
1
|
+
cd ..
|
2
|
+
docker rm {{PROJECT_NAME}}_postgres
|
3
|
+
docker run --name {{PROJECT_NAME}}_postgres -d -p {{SQL_DB_PORT}}:5432 -e POSTGRES_USER={{PROJECT_NAME}} -e POSTGRES_PASSWORD={{PROJECT_NAME}} -e POSTGRES_DB={{PROJECT_NAME}} postgres:16 -c max_connections=100
|
4
|
+
docker start {{PROJECT_NAME}}_postgres
|
@@ -1,7 +1,7 @@
|
|
1
1
|
cd ..
|
2
2
|
|
3
3
|
git remote remove arpakit_company_github_1
|
4
|
-
git remote add arpakit_company_github_1 git@github.com:ARPAKIT-Company/{PROJECT_NAME}.git
|
4
|
+
git remote add arpakit_company_github_1 git@github.com:ARPAKIT-Company/{{PROJECT_NAME}}.git
|
5
5
|
|
6
6
|
git remote remove arpakit_company_gitlab_1
|
7
|
-
git remote add arpakit_company_gitlab_1 git@gitlab.com:ARPAKIT-Company/{PROJECT_NAME}.git
|
7
|
+
git remote add arpakit_company_gitlab_1 git@gitlab.com:ARPAKIT-Company/{{PROJECT_NAME}}.git
|
@@ -1,10 +1,10 @@
|
|
1
1
|
from arpakitlib.ar_json_util import safely_transfer_str_to_json_obj_to_json_str
|
2
2
|
|
3
3
|
|
4
|
-
def
|
4
|
+
def __json_beautify():
|
5
5
|
s = input("JSON:\n")
|
6
6
|
print(safely_transfer_str_to_json_obj_to_json_str(s))
|
7
7
|
|
8
8
|
|
9
9
|
if __name__ == '__main__':
|
10
|
-
|
10
|
+
__json_beautify()
|
@@ -0,0 +1,26 @@
|
|
1
|
+
from fastapi import FastAPI
|
2
|
+
from sqladmin import Admin
|
3
|
+
|
4
|
+
from src.admin1.admin_auth import AdminAuth
|
5
|
+
from src.admin1.model_view import MODEL_VIEWS
|
6
|
+
from src.api.transmitted_api_data import TransmittedAPIData
|
7
|
+
from src.core.settings import get_cached_settings
|
8
|
+
|
9
|
+
|
10
|
+
def add_admin1_in_app(*, app: FastAPI) -> FastAPI:
|
11
|
+
transmitted_api_data: TransmittedAPIData = app.state.transmitted_api_data
|
12
|
+
|
13
|
+
authentication_backend = AdminAuth()
|
14
|
+
|
15
|
+
admin = Admin(
|
16
|
+
app=app,
|
17
|
+
engine=transmitted_api_data.sqlalchemy_db.engine,
|
18
|
+
base_url="/admin1",
|
19
|
+
authentication_backend=authentication_backend,
|
20
|
+
title=get_cached_settings().project_name
|
21
|
+
)
|
22
|
+
|
23
|
+
for model_view in MODEL_VIEWS:
|
24
|
+
admin.add_model_view(model_view)
|
25
|
+
|
26
|
+
return app
|
@@ -0,0 +1,29 @@
|
|
1
|
+
import logging
|
2
|
+
|
3
|
+
from sqladmin.authentication import AuthenticationBackend
|
4
|
+
from starlette.requests import Request
|
5
|
+
|
6
|
+
from src.core.settings import get_cached_settings
|
7
|
+
|
8
|
+
|
9
|
+
class AdminAuth(AuthenticationBackend):
|
10
|
+
def __init__(self):
|
11
|
+
self._logger = logging.getLogger(self.__class__.__name__)
|
12
|
+
super().__init__(secret_key=get_cached_settings().admin1_secret_key)
|
13
|
+
|
14
|
+
async def login(self, request: Request) -> bool:
|
15
|
+
# ...
|
16
|
+
# form = await request.form()
|
17
|
+
# request.session.update(...)
|
18
|
+
# ...
|
19
|
+
return True
|
20
|
+
|
21
|
+
async def logout(self, request: Request) -> bool:
|
22
|
+
request.session.clear()
|
23
|
+
return True
|
24
|
+
|
25
|
+
async def authenticate(self, request: Request) -> bool:
|
26
|
+
# ...
|
27
|
+
# request.session.get("...")
|
28
|
+
# ...
|
29
|
+
return True
|
@@ -0,0 +1,19 @@
|
|
1
|
+
from sqladmin import ModelView
|
2
|
+
|
3
|
+
|
4
|
+
class BaseModelView(ModelView):
|
5
|
+
can_create = True
|
6
|
+
can_edit = True
|
7
|
+
can_delete = True
|
8
|
+
can_view_details = True
|
9
|
+
can_export = True
|
10
|
+
page_size = 50
|
11
|
+
page_size_options = [25, 50, 100, 200]
|
12
|
+
save_as = True
|
13
|
+
save_as_continue = True
|
14
|
+
export_types = ["xlsx", "csv", "json"]
|
15
|
+
|
16
|
+
|
17
|
+
MODEL_VIEWS = []
|
18
|
+
|
19
|
+
# ...
|
@@ -3,15 +3,15 @@ import uvicorn
|
|
3
3
|
from src.core.settings import get_cached_settings
|
4
4
|
|
5
5
|
|
6
|
-
def
|
6
|
+
def _start_api_for_dev_with_reload():
|
7
7
|
uvicorn.run(
|
8
8
|
"src.api.asgi:app",
|
9
9
|
port=get_cached_settings().api_port,
|
10
10
|
host="localhost",
|
11
11
|
workers=1,
|
12
|
-
reload=
|
12
|
+
reload=True
|
13
13
|
)
|
14
14
|
|
15
15
|
|
16
16
|
if __name__ == '__main__':
|
17
|
-
|
17
|
+
_start_api_for_dev_with_reload()
|
@@ -0,0 +1,17 @@
|
|
1
|
+
import uvicorn
|
2
|
+
|
3
|
+
from src.core.settings import get_cached_settings
|
4
|
+
|
5
|
+
|
6
|
+
def _start_api_for_dev_without_reload():
|
7
|
+
uvicorn.run(
|
8
|
+
"src.api.asgi:app",
|
9
|
+
port=get_cached_settings().api_port,
|
10
|
+
host="localhost",
|
11
|
+
workers=1,
|
12
|
+
reload=False
|
13
|
+
)
|
14
|
+
|
15
|
+
|
16
|
+
if __name__ == '__main__':
|
17
|
+
_start_api_for_dev_without_reload()
|
@@ -0,0 +1,77 @@
|
|
1
|
+
from fastapi import FastAPI
|
2
|
+
|
3
|
+
from arpakitlib.ar_fastapi_util import create_fastapi_app, \
|
4
|
+
create_handle_exception, create_story_log_before_response_in_handle_exception
|
5
|
+
from arpakitlib.ar_sqlalchemy_util import SQLAlchemyDB
|
6
|
+
from arpakitlib.ar_type_util import raise_for_type
|
7
|
+
from src.api.event import StartupAPIEvent, ShutdownAPIEvent
|
8
|
+
from src.api.router.main_router import main_api_router
|
9
|
+
from src.api.transmitted_api_data import TransmittedAPIData
|
10
|
+
from src.core.const import ProjectPaths
|
11
|
+
from src.core.settings import get_cached_settings
|
12
|
+
from src.core.util import setup_logging, get_cached_media_file_storage_in_dir, get_cached_cache_file_storage_in_dir, \
|
13
|
+
get_cached_dump_file_storage_in_dir
|
14
|
+
from src.db.util import get_cached_sqlalchemy_db
|
15
|
+
|
16
|
+
|
17
|
+
def create_api_app() -> FastAPI:
|
18
|
+
setup_logging()
|
19
|
+
|
20
|
+
settings = get_cached_settings()
|
21
|
+
|
22
|
+
sqlalchemy_db = get_cached_sqlalchemy_db() if settings.sql_db_url is not None else None
|
23
|
+
|
24
|
+
transmitted_api_data = TransmittedAPIData(
|
25
|
+
settings=settings,
|
26
|
+
sqlalchemy_db=sqlalchemy_db,
|
27
|
+
media_file_storage_in_dir=get_cached_media_file_storage_in_dir(),
|
28
|
+
cache_file_storage_in_dir=get_cached_cache_file_storage_in_dir(),
|
29
|
+
dump_file_storage_in_dir=get_cached_dump_file_storage_in_dir()
|
30
|
+
)
|
31
|
+
|
32
|
+
funcs_before_response = []
|
33
|
+
|
34
|
+
if settings.api_create_story_log_before_response_in_handle_exception:
|
35
|
+
raise_for_type(sqlalchemy_db, SQLAlchemyDB)
|
36
|
+
funcs_before_response.append(
|
37
|
+
create_story_log_before_response_in_handle_exception(
|
38
|
+
sqlalchemy_db=sqlalchemy_db,
|
39
|
+
ignore_api_error_code_not_found=True
|
40
|
+
)
|
41
|
+
)
|
42
|
+
|
43
|
+
handle_exception = create_handle_exception(
|
44
|
+
funcs_before_response=funcs_before_response,
|
45
|
+
async_funcs_after_response=[]
|
46
|
+
)
|
47
|
+
|
48
|
+
startup_api_events = []
|
49
|
+
|
50
|
+
startup_api_events.append(StartupAPIEvent(transmitted_api_data=transmitted_api_data))
|
51
|
+
|
52
|
+
shutdown_api_events = []
|
53
|
+
|
54
|
+
shutdown_api_events.append(ShutdownAPIEvent(transmitted_api_data=transmitted_api_data))
|
55
|
+
|
56
|
+
api_app = create_fastapi_app(
|
57
|
+
title=settings.api_title.strip(),
|
58
|
+
description=settings.api_description.strip(),
|
59
|
+
log_filepath=settings.log_filepath,
|
60
|
+
handle_exception_=handle_exception,
|
61
|
+
startup_api_events=startup_api_events,
|
62
|
+
shutdown_api_events=shutdown_api_events,
|
63
|
+
transmitted_api_data=transmitted_api_data,
|
64
|
+
main_api_router=main_api_router,
|
65
|
+
media_dirpath=settings.media_dirpath,
|
66
|
+
static_dirpath=ProjectPaths.static_dirpath
|
67
|
+
)
|
68
|
+
|
69
|
+
if settings.api_enable_admin1:
|
70
|
+
from src.admin1.add_admin_in_app import add_admin1_in_app
|
71
|
+
add_admin1_in_app(app=api_app)
|
72
|
+
|
73
|
+
return api_app
|
74
|
+
|
75
|
+
|
76
|
+
if __name__ == '__main__':
|
77
|
+
create_api_app()
|
@@ -0,0 +1,63 @@
|
|
1
|
+
from arpakitlib.ar_base_worker_util import safe_run_worker_in_background, SafeRunInBackgroundModes
|
2
|
+
from arpakitlib.ar_fastapi_util import BaseStartupAPIEvent, BaseShutdownAPIEvent
|
3
|
+
from arpakitlib.ar_operation_execution_util import OperationExecutorWorker, ScheduledOperationCreatorWorker
|
4
|
+
from arpakitlib.ar_sqlalchemy_util import SQLAlchemyDB
|
5
|
+
from arpakitlib.ar_type_util import raise_for_type
|
6
|
+
from src.api.transmitted_api_data import TransmittedAPIData
|
7
|
+
from src.operation_execution.operation_executor import OperationExecutor
|
8
|
+
from src.operation_execution.scheduled_operations import SCHEDULED_OPERATIONS
|
9
|
+
|
10
|
+
|
11
|
+
class StartupAPIEvent(BaseStartupAPIEvent):
|
12
|
+
def __init__(self, transmitted_api_data: TransmittedAPIData):
|
13
|
+
super().__init__()
|
14
|
+
self.transmitted_api_data = transmitted_api_data
|
15
|
+
|
16
|
+
async def async_on_startup(self, *args, **kwargs):
|
17
|
+
self._logger.info("start")
|
18
|
+
|
19
|
+
if self.transmitted_api_data.media_file_storage_in_dir is not None:
|
20
|
+
self.transmitted_api_data.media_file_storage_in_dir.init()
|
21
|
+
|
22
|
+
if self.transmitted_api_data.cache_file_storage_in_dir is not None:
|
23
|
+
self.transmitted_api_data.cache_file_storage_in_dir.init()
|
24
|
+
|
25
|
+
if self.transmitted_api_data.dump_file_storage_in_dir is not None:
|
26
|
+
self.transmitted_api_data.dump_file_storage_in_dir.init()
|
27
|
+
|
28
|
+
if self.transmitted_api_data.settings.api_init_sql_db_at_start:
|
29
|
+
raise_for_type(self.transmitted_api_data.sqlalchemy_db, SQLAlchemyDB)
|
30
|
+
self.transmitted_api_data.sqlalchemy_db.init()
|
31
|
+
|
32
|
+
if self.transmitted_api_data.settings.api_start_operation_executor_worker:
|
33
|
+
raise_for_type(self.transmitted_api_data.sqlalchemy_db, SQLAlchemyDB)
|
34
|
+
_ = safe_run_worker_in_background(
|
35
|
+
worker=OperationExecutorWorker(
|
36
|
+
sqlalchemy_db=self.transmitted_api_data.sqlalchemy_db,
|
37
|
+
operation_executor=OperationExecutor(sqlalchemy_db=self.transmitted_api_data.sqlalchemy_db),
|
38
|
+
filter_operation_types=None
|
39
|
+
),
|
40
|
+
mode=SafeRunInBackgroundModes.thread
|
41
|
+
)
|
42
|
+
|
43
|
+
if self.transmitted_api_data.settings.api_start_scheduled_operation_creator_worker:
|
44
|
+
raise_for_type(self.transmitted_api_data.sqlalchemy_db, SQLAlchemyDB)
|
45
|
+
_ = safe_run_worker_in_background(
|
46
|
+
worker=ScheduledOperationCreatorWorker(
|
47
|
+
sqlalchemy_db=self.transmitted_api_data.sqlalchemy_db,
|
48
|
+
scheduled_operations=SCHEDULED_OPERATIONS
|
49
|
+
),
|
50
|
+
mode=SafeRunInBackgroundModes.async_task
|
51
|
+
)
|
52
|
+
|
53
|
+
self._logger.info("finish")
|
54
|
+
|
55
|
+
|
56
|
+
class ShutdownAPIEvent(BaseShutdownAPIEvent):
|
57
|
+
def __init__(self, transmitted_api_data: TransmittedAPIData):
|
58
|
+
super().__init__()
|
59
|
+
self.transmitted_api_data = transmitted_api_data
|
60
|
+
|
61
|
+
async def async_on_shutdown(self, *args, **kwargs):
|
62
|
+
self._logger.info("start")
|
63
|
+
self._logger.info("finish")
|
@@ -4,8 +4,12 @@ from src.api.router.v1 import get_api_error_info
|
|
4
4
|
|
5
5
|
main_v1_api_router = APIRouter()
|
6
6
|
|
7
|
+
# API Error Info
|
8
|
+
|
7
9
|
main_v1_api_router.include_router(
|
8
10
|
router=get_api_error_info.api_router,
|
9
11
|
prefix="/get_api_error_info",
|
10
12
|
tags=["API Error Info"]
|
11
13
|
)
|
14
|
+
|
15
|
+
# ...
|
@@ -0,0 +1 @@
|
|
1
|
+
# ...
|
@@ -1,4 +1,5 @@
|
|
1
1
|
from arpakitlib.ar_fastapi_util import BaseTransmittedAPIData
|
2
|
+
from arpakitlib.ar_file_storage_in_dir_util import FileStorageInDir
|
2
3
|
from arpakitlib.ar_sqlalchemy_util import SQLAlchemyDB
|
3
4
|
|
4
5
|
from src.core.settings import Settings
|
@@ -7,3 +8,8 @@ from src.core.settings import Settings
|
|
7
8
|
class TransmittedAPIData(BaseTransmittedAPIData):
|
8
9
|
settings: Settings
|
9
10
|
sqlalchemy_db: SQLAlchemyDB | None = None
|
11
|
+
media_file_storage_in_dir: FileStorageInDir | None = None
|
12
|
+
cache_file_storage_in_dir: FileStorageInDir | None = None
|
13
|
+
dump_file_storage_in_dir: FileStorageInDir | None = None
|
14
|
+
|
15
|
+
# ...
|
@@ -0,0 +1,15 @@
|
|
1
|
+
import logging
|
2
|
+
|
3
|
+
from src.core.util import setup_logging
|
4
|
+
|
5
|
+
_logger = logging.getLogger(__name__)
|
6
|
+
|
7
|
+
|
8
|
+
def hello_world() -> str:
|
9
|
+
_logger.info("hello world")
|
10
|
+
return "Hello world"
|
11
|
+
|
12
|
+
|
13
|
+
if __name__ == '__main__':
|
14
|
+
setup_logging()
|
15
|
+
hello_world()
|