arpakitlib 1.8.33__tar.gz → 1.8.35__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.8.33 → arpakitlib-1.8.35}/PKG-INFO +1 -1
- arpakitlib-1.8.35/arpakitlib/_arpakit_project_template_v_5/arpakitlib_project_template_info.json +4 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/api_key.py +7 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/story_log.py +8 -0
- arpakitlib-1.8.35/arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/user.py +174 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/user_token.py +5 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_arpakitlib_cli_util.py +0 -1
- arpakitlib-1.8.35/arpakitlib/ar_openai_api_client_util.py +131 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_parse_command.py +0 -11
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/pyproject.toml +1 -1
- arpakitlib-1.8.33/arpakitlib/_arpakit_project_template_v_5/arpakitlib_project_template_info.json +0 -4
- arpakitlib-1.8.33/arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/user.py +0 -87
- arpakitlib-1.8.33/arpakitlib/ar_openai_api_client_util.py +0 -75
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/LICENSE +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/README.md +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/.gitignore +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/.python-version +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/LICENSE +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/README.md +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/alembic/README +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/alembic/env.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/alembic/script.py.mako +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/alembic/versions/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/alembic.ini +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/alembic_history.sh +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/alembic_revision_autogenerate.sh +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/alembic_upgrade_head.sh +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/beautify_json.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/check_logging.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/check_sqlalchemy_db.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/demojize.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/docker_ps_a.sh +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/docker_rm_postgres.sh +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/docker_run_postgres.sh +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/docker_start_postgres.sh +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/docker_stop_postgres.sh +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/drop_json_db.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/drop_sqlalchemy_db.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/generate_settings_env_example.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/git_commit.sh +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/git_push_arpakit_company_github_1.sh +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/git_push_arpakit_company_gitlab_1.sh +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/git_push_arpakit_github_1.sh +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/git_push_arpakit_gitlab_1.sh +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/git_remote_v.sh +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/git_set_arpakit_company_origin.sh +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/git_set_arpakit_origin.sh +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/git_set_divarteam_origin.sh +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/git_status.sh +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/hello_world.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/init_json_db.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/init_sqlalchemy_db.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/poetry_check.sh +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/poetry_clear_cache.sh +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/poetry_config.sh +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/poetry_install.sh +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/poetry_lock.sh +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/poetry_remove_and_add_arpakitlib.sh +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/poetry_show.sh +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/poetry_show_arpakitlib.sh +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/poetry_update.sh +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/poetry_update_arpakitlib.sh +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/reinit_all_sqlalchemy_db.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/reinit_json_db.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/reinit_sqlalchemy_db.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/remove_operations.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/remove_story_logs.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/rm_all_records_in_json_db.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/set_tg_bot_commands.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/show_settings.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/show_sqlalchemy_db_table_name_to_amount.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/start_api.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/start_api_for_prod.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/start_api_with_reload.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/start_operation_executor_worker.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/start_operation_executor_workers.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/start_scheduled_operation_creator_worker.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/start_sqladmin.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/start_sqladmin_for_prod.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/start_sqladmin_with_reload.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/start_tg_bot.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/start_tg_bot_for_prod.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/example.env +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/note/note_1.txt +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/note/note_2.txt +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/note/note_3.txt +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/note/note_4.txt +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/note/note_5.txt +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/additional_model/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/additional_model/common.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/asgi.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/authorize.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/blank/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/blank/admin.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/blank/client.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/blank/common.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/const.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/create_api_app.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/event.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/exception.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/exception_handler.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/openapi_ui.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/response.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/router/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/get_arpakitlib_project_template_info.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/get_auth_data.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/get_story_log.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/init_sqlalchemy_db.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/main_router.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/raise_fake_error.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/reinit_sqlalchemy_db.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/router/client/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/router/client/get_current_api_key.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/router/client/get_current_user.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/router/client/get_current_user_token.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/router/client/get_errors_info.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/router/client/main_router.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/router/general/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/router/general/healthcheck.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/router/general/main_router.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/router/general/now_utc_datetime.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/router/main_router.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/schema/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/schema/common.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/schema/in_/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/schema/in_/admin/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/schema/in_/admin/common.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/schema/in_/client/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/schema/in_/client/common.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/schema/in_/common/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/schema/in_/general/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/schema/in_/general/common.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/admin/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/admin/common.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/admin/operation.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/admin/story_log.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/client/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/client/api_key.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/client/common.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/client/user.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/client/user_token.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/common/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/common/datetime_.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/common/error.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/common/raw_data.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/general/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/general/common.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/general/errors_info_general.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/general/healthcheck.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/api/util.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/business_service/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/business_service/hello_world.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/business_service/remove_operations.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/celery_/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/core/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/core/cache_file_storage_in_dir.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/core/const.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/core/dump_file_storage_in_dir.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/core/jinja2_templates.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/core/media_file_storage_in_dir.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/core/settings.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/core/util.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/json_db/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/json_db/json_db.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/more/helloworld +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/operation_execution/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/operation_execution/const.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/operation_execution/operation_executor_worker.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/operation_execution/scheduled_operation_creator_worker.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/operation_execution/scheduled_operations.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/operation_execution/util.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/resource/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/resource/static/1 +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/resource/static/healthcheck +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/resource/static/helloworld +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/resource/static/openapi-favicon.png +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/resource/static/redoc/redoc.standalone.js +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/resource/static/sqladmin-favicon.png +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/resource/static/swagger-ui/favicon-16x16.png +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/resource/static/swagger-ui/favicon-32x32.png +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/resource/static/swagger-ui/index.css +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/resource/static/swagger-ui/index.html +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/resource/static/swagger-ui/oauth2-redirect.html +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/resource/static/swagger-ui/swagger-initializer.js +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/resource/static/swagger-ui/swagger-ui-bundle.js +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/resource/static/swagger-ui/swagger-ui-bundle.js.map +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/resource/static/swagger-ui/swagger-ui-es-bundle-core.js +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/resource/static/swagger-ui/swagger-ui-es-bundle-core.js.map +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/resource/static/swagger-ui/swagger-ui-es-bundle.js +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/resource/static/swagger-ui/swagger-ui-es-bundle.js.map +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/resource/static/swagger-ui/swagger-ui-standalone-preset.js +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/resource/static/swagger-ui/swagger-ui-standalone-preset.js.map +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/resource/static/swagger-ui/swagger-ui.css +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/resource/static/swagger-ui/swagger-ui.css.map +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/resource/static/swagger-ui/swagger-ui.js +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/resource/static/swagger-ui/swagger-ui.js.map +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/sandbox/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/sandbox/sandbox_1.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/sandbox/sandbox_2.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/sandbox/sandbox_3.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/sandbox/sandbox_4.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/sandbox/sandbox_5.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/sandbox/sandbox_6.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/sandbox/sandbox_7.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/site/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/site/asgi.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/site/consts.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/site/create_site_app.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/site/event.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/site/exception_handler.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/site/router/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/site/router/main_router.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/add_admin_in_app.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/admin_authorize.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/asgi.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/create_sqladmin_app.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/event.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/api_key.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/common.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/operation.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/story_log.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/user.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/user_token.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/const.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_db.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/common.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/operation.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/util.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/test_data/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/test_data/make_test_api_keys.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/test_data/make_test_data_1.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/test_data/make_test_data_2.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/test_data/make_test_data_3.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/test_data/make_test_data_4.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/test_data/make_test_data_5.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/blank/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/blank/admin.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/blank/client.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/blank/common.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/callback/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/callback/admin.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/callback/client.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/callback/common.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/const.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/event.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/filter_/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/filter_/is_private_chat.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/filter_/message_text.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/filter_/not_prod_mode_filter.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/filter_/prod_mode_filter.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/filter_/user_roles_has_admin.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/filter_/user_roles_has_client.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/kb/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/kb/inline_/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/kb/inline_/admin/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/kb/inline_/admin/common.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/kb/inline_/client/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/kb/inline_/client/common.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/kb/inline_/client/hello_world.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/kb/inline_/common.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/kb/static_/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/kb/static_/admin/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/kb/static_/admin/common.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/kb/static_/client/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/kb/static_/client/common.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/kb/static_/client/hello_world.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/kb/static_/common.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/middleware/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/middleware/common.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/middleware/init_user.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/middleware/middleware.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/arpakitlib_project_template_info.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/clear_log_file.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/drop_sqlalchemy_db.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/init_sqlalchemy_db.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/kb_with_not_modified.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/kb_with_old_cd.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/kb_with_raise_error.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/kb_with_remove_message.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/log_file.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/me.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/raise_fake_error.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/reinit_sqlalchemy_db.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/set_tg_bot_commands.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/general/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/general/about.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/general/author.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/general/error_handler.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/general/healthcheck.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/general/hello_world.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/general/raw_callback_query.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/general/raw_inline_query.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/general/raw_message.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/general/remove_message.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/general/start.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/general/support.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/main_router.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/start_tg_bot.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/tg_bot.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/tg_bot_dispatcher.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/util/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/util/etc.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/util/notify_admins.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/tg_bot/util/set_tg_bot_commands.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/util/__init__.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/project/util/arpakitlib_project_template.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_additional_model_util.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_aiogram_util.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_arpakit_lib_module_util.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_arpakit_project_template_util.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_arpakit_schedule_uust_api_client_util.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_arpakit_schedule_uust_site_util.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_base64_util.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_base_worker_util.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_blank_util.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_cache_file_util.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_class_util.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_cryptomus_api_client_util.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_datetime_util.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_dict_util.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_dream_ai_api_client_util.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_encrypt_decrypt_util.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_enumeration_util.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_exception_util.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_file_storage_in_dir_util.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_file_util.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_func_util.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_hash_util.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_http_request_util.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_ip_util.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_json_db_util.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_json_util.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_jwt_util.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_list_of_dicts_to_xlsx.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_list_util.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_logging_util.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_mongodb_util.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_need_type_util.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_postgresql_util.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_rat_func_util.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_retry_func_util.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_run_cmd_util.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_schedule_uust_api_client_util.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_settings_util.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_sleep_util.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_sqladmin_util.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_sqlalchemy_util.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_ssh_runner_util.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_steam_payment_api_client_util.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_str_util.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_type_util.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_wata_api_client.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_yookassa_api_client_util.py +0 -0
- {arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/ar_zabbix_api_client_util.py +0 -0
@@ -43,3 +43,10 @@ class ApiKeyDBM(SimpleDBM):
|
|
43
43
|
server_default="true",
|
44
44
|
nullable=False
|
45
45
|
)
|
46
|
+
|
47
|
+
def __repr__(self) -> str:
|
48
|
+
res = f"{self.entity_name} (id={self.id}, is_active={self.is_active}"
|
49
|
+
if self.title:
|
50
|
+
res += f", title={self.title}"
|
51
|
+
res += ")"
|
52
|
+
return res
|
@@ -49,3 +49,11 @@ class StoryLogDBM(SimpleDBM):
|
|
49
49
|
server_default="{}",
|
50
50
|
nullable=False
|
51
51
|
)
|
52
|
+
|
53
|
+
@property
|
54
|
+
def sdp_allowed_levels(self) -> list[str]:
|
55
|
+
return self.Levels.values_list()
|
56
|
+
|
57
|
+
@property
|
58
|
+
def sdp_allowed_types(self) -> list[str]:
|
59
|
+
return self.Types.values_list()
|
@@ -0,0 +1,174 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
|
3
|
+
import datetime as dt
|
4
|
+
from typing import TYPE_CHECKING, Any
|
5
|
+
|
6
|
+
import sqlalchemy
|
7
|
+
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
8
|
+
|
9
|
+
from arpakitlib.ar_enumeration_util import Enumeration
|
10
|
+
from arpakitlib.ar_type_util import raise_for_type
|
11
|
+
from project.sqlalchemy_db_.sqlalchemy_model.common import SimpleDBM
|
12
|
+
|
13
|
+
if TYPE_CHECKING:
|
14
|
+
from project.sqlalchemy_db_.sqlalchemy_model.user_token import UserTokenDBM
|
15
|
+
|
16
|
+
|
17
|
+
class UserDBM(SimpleDBM):
|
18
|
+
__tablename__ = "user"
|
19
|
+
|
20
|
+
class Roles(Enumeration):
|
21
|
+
admin = "admin"
|
22
|
+
client = "client"
|
23
|
+
|
24
|
+
email: Mapped[str | None] = mapped_column(
|
25
|
+
sqlalchemy.TEXT,
|
26
|
+
unique=True,
|
27
|
+
insert_default=None,
|
28
|
+
nullable=True
|
29
|
+
)
|
30
|
+
roles: Mapped[list[str]] = mapped_column(
|
31
|
+
sqlalchemy.ARRAY(sqlalchemy.TEXT),
|
32
|
+
insert_default=[Roles.client],
|
33
|
+
index=True,
|
34
|
+
nullable=False
|
35
|
+
)
|
36
|
+
is_active: Mapped[bool] = mapped_column(
|
37
|
+
sqlalchemy.Boolean,
|
38
|
+
index=True,
|
39
|
+
insert_default=True,
|
40
|
+
server_default="true",
|
41
|
+
nullable=False
|
42
|
+
)
|
43
|
+
tg_id: Mapped[int | None] = mapped_column(
|
44
|
+
sqlalchemy.BIGINT,
|
45
|
+
unique=True,
|
46
|
+
nullable=True
|
47
|
+
)
|
48
|
+
tg_bot_last_action_dt: Mapped[dt.datetime | None] = mapped_column(
|
49
|
+
sqlalchemy.TIMESTAMP(timezone=True),
|
50
|
+
insert_default=None,
|
51
|
+
nullable=True
|
52
|
+
)
|
53
|
+
tg_data: Mapped[dict[str, Any] | None] = mapped_column(
|
54
|
+
sqlalchemy.JSON,
|
55
|
+
insert_default={},
|
56
|
+
server_default="{}",
|
57
|
+
nullable=True
|
58
|
+
)
|
59
|
+
|
60
|
+
# many to one
|
61
|
+
user_tokens: Mapped[list[UserTokenDBM]] = relationship(
|
62
|
+
"UserTokenDBM",
|
63
|
+
uselist=True,
|
64
|
+
back_populates="user",
|
65
|
+
foreign_keys="UserTokenDBM.user_id"
|
66
|
+
)
|
67
|
+
|
68
|
+
def __repr__(self) -> str:
|
69
|
+
if self.email is not None:
|
70
|
+
res = f"{self.entity_name} (id={self.id}, email={self.email})"
|
71
|
+
else:
|
72
|
+
res = f"{self.entity_name} (id={self.id})"
|
73
|
+
return res
|
74
|
+
|
75
|
+
@property
|
76
|
+
def sdp_allowed_roles(self) -> list[str]:
|
77
|
+
return self.Roles.values_list()
|
78
|
+
|
79
|
+
@property
|
80
|
+
def roles_has_admin(self) -> bool:
|
81
|
+
return self.Roles.admin in self.roles
|
82
|
+
|
83
|
+
@property
|
84
|
+
def sdp_roles_has_admin(self) -> bool:
|
85
|
+
return self.roles_has_admin
|
86
|
+
|
87
|
+
@property
|
88
|
+
def roles_has_client(self) -> bool:
|
89
|
+
return self.Roles.client in self.roles
|
90
|
+
|
91
|
+
@property
|
92
|
+
def sdp_roles_has_client(self) -> bool:
|
93
|
+
return self.roles_has_client
|
94
|
+
|
95
|
+
def compare_roles(self, roles: list[str] | str) -> bool:
|
96
|
+
if isinstance(roles, str):
|
97
|
+
roles = [roles]
|
98
|
+
raise_for_type(roles, list)
|
99
|
+
return bool(set(roles) & set(self.roles))
|
100
|
+
|
101
|
+
@property
|
102
|
+
def tg_first_name(self) -> str | None:
|
103
|
+
if self.tg_data and "first_name" in self.tg_data:
|
104
|
+
return self.tg_data["first_name"]
|
105
|
+
return None
|
106
|
+
|
107
|
+
@property
|
108
|
+
def sdp_tg_first_name(self) -> str | None:
|
109
|
+
return self.tg_first_name
|
110
|
+
|
111
|
+
@property
|
112
|
+
def tg_last_name(self) -> str | None:
|
113
|
+
if self.tg_data and "last_name" in self.tg_data:
|
114
|
+
return self.tg_data["last_name"]
|
115
|
+
return None
|
116
|
+
|
117
|
+
@property
|
118
|
+
def sdp_tg_last_name(self) -> str | None:
|
119
|
+
return self.tg_last_name
|
120
|
+
|
121
|
+
@property
|
122
|
+
def tg_language_code(self) -> str | None:
|
123
|
+
if self.tg_data and "language_code" in self.tg_data:
|
124
|
+
return self.tg_data["language_code"]
|
125
|
+
return None
|
126
|
+
|
127
|
+
@property
|
128
|
+
def sdp_tg_language_code(self) -> str | None:
|
129
|
+
return self.tg_language_code
|
130
|
+
|
131
|
+
@property
|
132
|
+
def tg_username(self) -> str | None:
|
133
|
+
if self.tg_data and "username" in self.tg_data:
|
134
|
+
return self.tg_data["username"]
|
135
|
+
return None
|
136
|
+
|
137
|
+
@property
|
138
|
+
def sdp_tg_username(self) -> str | None:
|
139
|
+
return self.tg_username
|
140
|
+
|
141
|
+
@property
|
142
|
+
def tg_at_username(self) -> str | None:
|
143
|
+
if self.tg_username:
|
144
|
+
return f"@{self.tg_username}"
|
145
|
+
return None
|
146
|
+
|
147
|
+
@property
|
148
|
+
def sdp_tg_at_username(self) -> str | None:
|
149
|
+
return self.tg_at_username
|
150
|
+
|
151
|
+
@property
|
152
|
+
def tg_fullname(self) -> str | None:
|
153
|
+
if not self.tg_first_name and not self.tg_last_name:
|
154
|
+
return None
|
155
|
+
res = ""
|
156
|
+
if self.tg_first_name:
|
157
|
+
res += self.tg_first_name
|
158
|
+
if self.tg_last_name:
|
159
|
+
res += " " + self.tg_last_name
|
160
|
+
return res
|
161
|
+
|
162
|
+
@property
|
163
|
+
def sdp_tg_fullname(self) -> str | None:
|
164
|
+
return self.tg_fullname
|
165
|
+
|
166
|
+
@property
|
167
|
+
def tg_link_by_username(self) -> str | None:
|
168
|
+
if not self.tg_username:
|
169
|
+
return None
|
170
|
+
return f"https://t.me/{self.tg_username}"
|
171
|
+
|
172
|
+
@property
|
173
|
+
def sdp_tg_link_by_username(self) -> str | None:
|
174
|
+
return self.tg_link_by_username
|
@@ -45,9 +45,14 @@ class UserTokenDBM(SimpleDBM):
|
|
45
45
|
nullable=False
|
46
46
|
)
|
47
47
|
|
48
|
+
# one to many
|
48
49
|
user: Mapped[UserDBM] = relationship(
|
49
50
|
"UserDBM",
|
50
51
|
uselist=False,
|
51
52
|
back_populates="user_tokens",
|
52
53
|
foreign_keys=[user_id]
|
53
54
|
)
|
55
|
+
|
56
|
+
def __repr__(self) -> str:
|
57
|
+
res = f"{self.entity_name} (id={self.id}, user_id={self.user_id})"
|
58
|
+
return res
|
@@ -14,7 +14,6 @@ def execute_arpakitlib_cli(*, full_command: str | None = None):
|
|
14
14
|
full_command = " ".join(sys.argv)
|
15
15
|
|
16
16
|
parsed_command = parse_command(text=full_command)
|
17
|
-
parsed_command.raise_for_command(needed_command="arpakitlib", lower_=True)
|
18
17
|
|
19
18
|
command = parsed_command.get_value_by_keys(keys=["command", "c"])
|
20
19
|
if command:
|
@@ -0,0 +1,131 @@
|
|
1
|
+
# arpakit
|
2
|
+
|
3
|
+
import asyncio
|
4
|
+
import logging
|
5
|
+
|
6
|
+
import httpx
|
7
|
+
from openai import OpenAI, AsyncOpenAI
|
8
|
+
from openai.types.chat import ChatCompletion
|
9
|
+
|
10
|
+
from arpakitlib.ar_logging_util import setup_normal_logging
|
11
|
+
|
12
|
+
_ARPAKIT_LIB_MODULE_VERSION = "3.0"
|
13
|
+
|
14
|
+
"""
|
15
|
+
https://platform.openai.com/docs/
|
16
|
+
"""
|
17
|
+
|
18
|
+
|
19
|
+
class OpenAIAPIClient:
|
20
|
+
def __init__(
|
21
|
+
self,
|
22
|
+
*,
|
23
|
+
open_ai: OpenAI,
|
24
|
+
async_open_ai: AsyncOpenAI
|
25
|
+
):
|
26
|
+
self._logger = logging.getLogger(self.__class__.__name__)
|
27
|
+
|
28
|
+
self.open_ai = open_ai
|
29
|
+
self.async_open_ai = async_open_ai
|
30
|
+
|
31
|
+
def check_conn(self):
|
32
|
+
self.open_ai.models.list()
|
33
|
+
|
34
|
+
def is_conn_good(self) -> bool:
|
35
|
+
try:
|
36
|
+
self.check_conn()
|
37
|
+
return True
|
38
|
+
except Exception as e:
|
39
|
+
self._logger.error(e)
|
40
|
+
return False
|
41
|
+
|
42
|
+
async def async_check_conn(self):
|
43
|
+
await self.async_open_ai.models.list()
|
44
|
+
|
45
|
+
async def async_is_conn_good(self) -> bool:
|
46
|
+
try:
|
47
|
+
await self.async_check_conn()
|
48
|
+
return True
|
49
|
+
except Exception as e:
|
50
|
+
self._logger.error(e)
|
51
|
+
return False
|
52
|
+
|
53
|
+
def simple_ask(self, *, prompt: str | None = None, string: str) -> ChatCompletion:
|
54
|
+
messages = []
|
55
|
+
if prompt is not None:
|
56
|
+
messages.append({
|
57
|
+
"role": "system",
|
58
|
+
"content": prompt
|
59
|
+
})
|
60
|
+
messages.append({
|
61
|
+
"role": "user",
|
62
|
+
"content": string
|
63
|
+
})
|
64
|
+
response: ChatCompletion = self.open_ai.chat.completions.create(
|
65
|
+
model="gpt-4o",
|
66
|
+
messages=messages,
|
67
|
+
n=1,
|
68
|
+
temperature=0.1,
|
69
|
+
top_p=0.9,
|
70
|
+
max_tokens=300
|
71
|
+
)
|
72
|
+
return response
|
73
|
+
|
74
|
+
async def async_simple_ask(self, *, prompt: str | None = None, string: str) -> ChatCompletion:
|
75
|
+
messages = []
|
76
|
+
if prompt is not None:
|
77
|
+
messages.append({
|
78
|
+
"role": "system",
|
79
|
+
"content": prompt
|
80
|
+
})
|
81
|
+
messages.append({
|
82
|
+
"role": "user",
|
83
|
+
"content": string
|
84
|
+
})
|
85
|
+
response: ChatCompletion = await self.async_open_ai.chat.completions.create(
|
86
|
+
model="gpt-4o",
|
87
|
+
messages=messages,
|
88
|
+
n=1,
|
89
|
+
temperature=0.1,
|
90
|
+
top_p=0.9,
|
91
|
+
max_tokens=300
|
92
|
+
)
|
93
|
+
return response
|
94
|
+
|
95
|
+
|
96
|
+
def __example():
|
97
|
+
pass
|
98
|
+
|
99
|
+
|
100
|
+
async def __async_example():
|
101
|
+
setup_normal_logging()
|
102
|
+
api_key = ""
|
103
|
+
base_url = "https://api.proxyapi.ru/openai/v1"
|
104
|
+
client = OpenAIAPIClient(
|
105
|
+
open_ai=OpenAI(
|
106
|
+
api_key=api_key,
|
107
|
+
base_url=base_url,
|
108
|
+
timeout=httpx.Timeout(
|
109
|
+
timeout=60,
|
110
|
+
)
|
111
|
+
),
|
112
|
+
async_open_ai=AsyncOpenAI(
|
113
|
+
api_key=api_key,
|
114
|
+
base_url=base_url,
|
115
|
+
timeout=httpx.Timeout(
|
116
|
+
timeout=60,
|
117
|
+
)
|
118
|
+
)
|
119
|
+
)
|
120
|
+
|
121
|
+
print(await client.async_is_conn_good())
|
122
|
+
|
123
|
+
response = client.simple_ask(
|
124
|
+
string="Привет, проверяю тебя"
|
125
|
+
)
|
126
|
+
print(response.choices[0].message.content)
|
127
|
+
|
128
|
+
|
129
|
+
if __name__ == '__main__':
|
130
|
+
__example()
|
131
|
+
asyncio.run(__async_example())
|
@@ -4,8 +4,6 @@ import shlex
|
|
4
4
|
|
5
5
|
from pydantic import BaseModel
|
6
6
|
|
7
|
-
from arpakitlib.ar_enumeration_util import ValuesForParseType
|
8
|
-
|
9
7
|
_ARPAKIT_LIB_MODULE_VERSION = "3.0"
|
10
8
|
|
11
9
|
|
@@ -19,15 +17,6 @@ class ParsedCommand(BaseModel):
|
|
19
17
|
key_to_value: dict[str, str | None] = {}
|
20
18
|
values_without_key: list[str] = []
|
21
19
|
|
22
|
-
def raise_for_command(self, needed_command: str, lower_: bool = True):
|
23
|
-
needed_command = needed_command.strip()
|
24
|
-
|
25
|
-
if (
|
26
|
-
(self.command.lower() if lower_ else self.command)
|
27
|
-
!= (needed_command.lower() if lower_ else needed_command)
|
28
|
-
):
|
29
|
-
raise ValuesForParseType(f"needed_command != {self.command}, lower_={lower_}")
|
30
|
-
|
31
20
|
@property
|
32
21
|
def keys(self) -> list[str]:
|
33
22
|
return [k for k, v in self.key_to_value.items() if v is not None]
|
@@ -1,87 +0,0 @@
|
|
1
|
-
from __future__ import annotations
|
2
|
-
|
3
|
-
import datetime as dt
|
4
|
-
from typing import TYPE_CHECKING, Any
|
5
|
-
|
6
|
-
import sqlalchemy
|
7
|
-
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
8
|
-
|
9
|
-
from arpakitlib.ar_enumeration_util import Enumeration
|
10
|
-
from arpakitlib.ar_type_util import raise_for_type
|
11
|
-
from project.sqlalchemy_db_.sqlalchemy_model.common import SimpleDBM
|
12
|
-
|
13
|
-
if TYPE_CHECKING:
|
14
|
-
from project.sqlalchemy_db_.sqlalchemy_model.user_token import UserTokenDBM
|
15
|
-
|
16
|
-
|
17
|
-
class UserDBM(SimpleDBM):
|
18
|
-
__tablename__ = "user"
|
19
|
-
|
20
|
-
class Roles(Enumeration):
|
21
|
-
admin = "admin"
|
22
|
-
client = "client"
|
23
|
-
|
24
|
-
email: Mapped[str | None] = mapped_column(
|
25
|
-
sqlalchemy.TEXT,
|
26
|
-
unique=True,
|
27
|
-
insert_default=None,
|
28
|
-
nullable=True
|
29
|
-
)
|
30
|
-
roles: Mapped[list[str]] = mapped_column(
|
31
|
-
sqlalchemy.ARRAY(sqlalchemy.TEXT),
|
32
|
-
insert_default=[Roles.client],
|
33
|
-
index=True,
|
34
|
-
nullable=False
|
35
|
-
)
|
36
|
-
is_active: Mapped[bool] = mapped_column(
|
37
|
-
sqlalchemy.Boolean,
|
38
|
-
index=True,
|
39
|
-
insert_default=True,
|
40
|
-
server_default="true",
|
41
|
-
nullable=False
|
42
|
-
)
|
43
|
-
tg_id: Mapped[int | None] = mapped_column(
|
44
|
-
sqlalchemy.BIGINT,
|
45
|
-
unique=True,
|
46
|
-
nullable=True
|
47
|
-
)
|
48
|
-
tg_bot_last_action_dt: Mapped[dt.datetime | None] = mapped_column(
|
49
|
-
sqlalchemy.TIMESTAMP(timezone=True),
|
50
|
-
insert_default=None,
|
51
|
-
nullable=True
|
52
|
-
)
|
53
|
-
tg_data: Mapped[dict[str, Any] | None] = mapped_column(
|
54
|
-
sqlalchemy.JSON,
|
55
|
-
insert_default={},
|
56
|
-
server_default="{}",
|
57
|
-
nullable=True
|
58
|
-
)
|
59
|
-
|
60
|
-
user_tokens: Mapped[list[UserTokenDBM]] = relationship(
|
61
|
-
"UserTokenDBM",
|
62
|
-
uselist=True,
|
63
|
-
back_populates="user",
|
64
|
-
foreign_keys="UserTokenDBM.user_id"
|
65
|
-
)
|
66
|
-
|
67
|
-
@property
|
68
|
-
def roles_has_admin(self) -> bool:
|
69
|
-
return self.Roles.admin in self.roles
|
70
|
-
|
71
|
-
@property
|
72
|
-
def sdp_roles_has_admin(self) -> bool:
|
73
|
-
return self.roles_has_admin
|
74
|
-
|
75
|
-
@property
|
76
|
-
def roles_has_client(self) -> bool:
|
77
|
-
return self.Roles.client in self.roles
|
78
|
-
|
79
|
-
@property
|
80
|
-
def sdp_roles_has_client(self) -> bool:
|
81
|
-
return self.roles_has_client
|
82
|
-
|
83
|
-
def compare_roles(self, roles: list[str] | str) -> bool:
|
84
|
-
if isinstance(roles, str):
|
85
|
-
roles = [roles]
|
86
|
-
raise_for_type(roles, list)
|
87
|
-
return bool(set(roles) & set(self.roles))
|
@@ -1,75 +0,0 @@
|
|
1
|
-
# arpakit
|
2
|
-
|
3
|
-
import asyncio
|
4
|
-
import logging
|
5
|
-
from typing import Optional
|
6
|
-
|
7
|
-
from openai import OpenAI, AsyncOpenAI
|
8
|
-
|
9
|
-
_ARPAKIT_LIB_MODULE_VERSION = "3.0"
|
10
|
-
|
11
|
-
"""
|
12
|
-
https://platform.openai.com/docs/
|
13
|
-
"""
|
14
|
-
|
15
|
-
|
16
|
-
class OpenAIAPIClient:
|
17
|
-
def __init__(
|
18
|
-
self,
|
19
|
-
*,
|
20
|
-
open_ai: Optional[OpenAI] = None,
|
21
|
-
async_open_ai: Optional[AsyncOpenAI] = None
|
22
|
-
):
|
23
|
-
self._logger = logging.getLogger(self.__class__.__name__)
|
24
|
-
|
25
|
-
self.open_ai = open_ai
|
26
|
-
self.async_open_ai = async_open_ai
|
27
|
-
|
28
|
-
def check_conn(self):
|
29
|
-
self.open_ai.models.list()
|
30
|
-
|
31
|
-
def is_conn_good(self) -> bool:
|
32
|
-
try:
|
33
|
-
self.check_conn()
|
34
|
-
return True
|
35
|
-
except Exception as e:
|
36
|
-
self._logger.error(e)
|
37
|
-
return False
|
38
|
-
|
39
|
-
async def async_check_conn(self):
|
40
|
-
await self.async_open_ai.models.list()
|
41
|
-
|
42
|
-
async def async_is_conn_good(self) -> bool:
|
43
|
-
try:
|
44
|
-
await self.async_check_conn()
|
45
|
-
return True
|
46
|
-
except Exception as e:
|
47
|
-
self._logger.error(e)
|
48
|
-
return False
|
49
|
-
|
50
|
-
|
51
|
-
def __example():
|
52
|
-
open_ai = OpenAI(api_key="your-api-key")
|
53
|
-
client = OpenAIAPIClient(open_ai=open_ai)
|
54
|
-
|
55
|
-
print("Checking OpenAI API connection...")
|
56
|
-
if client.is_conn_good():
|
57
|
-
print("Connection to OpenAI API is good")
|
58
|
-
else:
|
59
|
-
print("Failed to connect to OpenAI API")
|
60
|
-
|
61
|
-
|
62
|
-
async def __async_example():
|
63
|
-
async_open_ai = AsyncOpenAI(api_key="your-api-key")
|
64
|
-
client = OpenAIAPIClient(async_open_ai=async_open_ai)
|
65
|
-
|
66
|
-
print("Checking OpenAI API async connection...")
|
67
|
-
if await client.async_is_conn_good():
|
68
|
-
print("Async connection to OpenAI API is good")
|
69
|
-
else:
|
70
|
-
print("Failed to async connect to OpenAI API")
|
71
|
-
|
72
|
-
|
73
|
-
if __name__ == '__main__':
|
74
|
-
__example()
|
75
|
-
asyncio.run(__async_example())
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/.python-version
RENAMED
File without changes
|
File without changes
|
File without changes
|
{arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/alembic/README
RENAMED
File without changes
|
{arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/alembic/env.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/alembic.ini
RENAMED
File without changes
|
{arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{arpakitlib-1.8.33 → arpakitlib-1.8.35}/arpakitlib/_arpakit_project_template_v_5/command/demojize.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|