pybotx 0.77.0__tar.gz → 0.77.2__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.
- pybotx-0.77.2/.gitlab-ci.yml +56 -0
- pybotx-0.77.0/README.md → pybotx-0.77.2/PKG-INFO +57 -14
- pybotx-0.77.0/PKG-INFO → pybotx-0.77.2/README.md +38 -33
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/__init__.py +12 -1
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/bot/bot.py +246 -88
- pybotx-0.77.2/pybotx/bot/bot_account_provider.py +64 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/bot/bot_accounts_storage.py +69 -13
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/bot/contextvars.py +3 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/bot/exceptions.py +9 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/bot/handler_collector.py +14 -1
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/events_api/reply_event.py +28 -3
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/models/bot_account.py +10 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pyproject.toml +6 -5
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/events_api/test_reply_event.py +75 -9
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/deprecated/test_verify_request_v1.py +10 -3
- pybotx-0.77.2/tests/test_bot_account_provider.py +641 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/test_verify_request.py +49 -2
- {pybotx-0.77.0 → pybotx-0.77.2}/uv.lock +1 -1
- {pybotx-0.77.0 → pybotx-0.77.2}/.github/dependabot.yml +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/.github/pull_request_template.md +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/.github/workflows/publish-pypi.yml +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/.github/workflows/python-app.yml +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/.gitignore +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/LICENSE +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/docs/production_presets.md +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/docs/retry_safety.md +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/docs/widgets/WIDGETS.md +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/docs/widgets/img.png +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/docs/widgets/img_1.png +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/docs/widgets/img_10.png +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/docs/widgets/img_11.png +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/docs/widgets/img_12.png +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/docs/widgets/img_13.png +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/docs/widgets/img_14.png +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/docs/widgets/img_15.png +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/docs/widgets/img_2.png +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/docs/widgets/img_3.png +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/docs/widgets/img_4.png +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/docs/widgets/img_5.png +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/docs/widgets/img_6.png +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/docs/widgets/img_7.png +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/docs/widgets/img_8.png +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/docs/widgets/img_9.png +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/example/__init__.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/example/main.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/mkdocs.yml +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/poetry.lock +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/async_buffer.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/auth.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/bot/__init__.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/bot/api/__init__.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/bot/api/exceptions.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/bot/api/responses/__init__.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/bot/api/responses/bot_disabled.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/bot/api/responses/command_accepted.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/bot/api/responses/unverified_request.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/bot/callbacks/__init__.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/bot/callbacks/callback_manager.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/bot/callbacks/callback_memory_repo.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/bot/callbacks/callback_repo_proto.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/bot/command_processing.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/bot/handler.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/bot/healthcheck.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/bot/ingress_observability.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/bot/middlewares/__init__.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/bot/middlewares/exception_middleware.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/bot/testing.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/cli.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/__init__.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/authorized_botx_method.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/bots_api/__init__.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/bots_api/bot_catalog.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/bots_api/get_token.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/botx_method.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/chats_api/__init__.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/chats_api/add_admin.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/chats_api/add_user.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/chats_api/chat_info.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/chats_api/create_chat.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/chats_api/create_chat_link.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/chats_api/create_thread.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/chats_api/disable_stealth.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/chats_api/list_chats.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/chats_api/personal_chat.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/chats_api/pin_message.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/chats_api/remove_user.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/chats_api/set_stealth.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/chats_api/unpin_message.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/events_api/__init__.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/events_api/delete_event.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/events_api/edit_event.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/events_api/message_status_event.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/events_api/stop_typing_event.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/events_api/typing_event.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/exceptions/__init__.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/exceptions/base.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/exceptions/callbacks.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/exceptions/chats.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/exceptions/common.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/exceptions/event.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/exceptions/files.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/exceptions/http.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/exceptions/message.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/exceptions/notifications.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/exceptions/users.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/files_api/__init__.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/files_api/download_file.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/files_api/upload_file.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/get_token.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/http_config.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/mertics_api/__init__.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/mertics_api/collect_bot_function.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/notifications_api/__init__.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/notifications_api/direct_notification.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/notifications_api/internal_bot_notification.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/observability.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/openid_api/__init__.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/openid_api/refresh_access_token.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/smartapps_api/__init__.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/smartapps_api/exceptions.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/smartapps_api/smartapp_custom_notification.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/smartapps_api/smartapp_event.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/smartapps_api/smartapp_manifest.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/smartapps_api/smartapp_notification.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/smartapps_api/smartapp_unread_counter.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/smartapps_api/smartapps_list.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/smartapps_api/upload_file.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/stickers_api/__init__.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/stickers_api/add_sticker.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/stickers_api/create_sticker_pack.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/stickers_api/delete_sticker.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/stickers_api/delete_sticker_pack.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/stickers_api/edit_sticker_pack.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/stickers_api/exceptions.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/stickers_api/get_sticker.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/stickers_api/get_sticker_pack.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/stickers_api/get_sticker_packs.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/stickers_api/sticker_pack.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/users_api/__init__.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/users_api/search_user_by_email.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/users_api/search_user_by_emails.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/users_api/search_user_by_huid.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/users_api/search_user_by_login.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/users_api/search_user_by_other_id.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/users_api/trusted_search.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/users_api/update_user_profile.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/users_api/user_from_csv.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/users_api/user_from_search.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/users_api/users_as_csv.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/voex_api/__init__.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/voex_api/exceptions.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/voex_api/get_call.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/client/voex_api/get_conference.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/constants.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/converters.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/image_validators.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/integrations/__init__.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/integrations/fastapi.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/logger.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/missing.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/models/__init__.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/models/api_base.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/models/async_files.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/models/attachments.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/models/base_command.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/models/bot_catalog.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/models/bot_sender.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/models/call.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/models/chats.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/models/commands.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/models/conference.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/models/enums.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/models/message/__init__.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/models/message/edit_message.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/models/message/forward.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/models/message/incoming_message.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/models/message/markup.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/models/message/mentions.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/models/message/message_status.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/models/message/outgoing_message.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/models/message/reply.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/models/message/reply_message.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/models/method_callbacks.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/models/smartapps.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/models/status.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/models/stickers.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/models/sync_smartapp_event.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/models/system_events/__init__.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/models/system_events/added_to_chat.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/models/system_events/chat_created.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/models/system_events/chat_deleted_by_user.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/models/system_events/conference_changed.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/models/system_events/conference_created.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/models/system_events/conference_deleted.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/models/system_events/cts_login.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/models/system_events/cts_logout.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/models/system_events/deleted_from_chat.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/models/system_events/event_delete.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/models/system_events/event_edit.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/models/system_events/internal_bot_notification.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/models/system_events/left_from_chat.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/models/system_events/smartapp_event.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/models/system_events/user_joined_to_chat.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/models/users.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/presets.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/py.typed +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/scaffold/__init__.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/scaffold/_shared.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/scaffold/command.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/scaffold/fsm_flow.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/scaffold/manifest.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/scaffold/port.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/scaffold/project.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/scaffold/repository.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/scaffold/service.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/scaffold/templates.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/scaffold/widget.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/scaffold/widget_flow.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/widgets/__init__.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/widgets/approval.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/widgets/async_job.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/widgets/base.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/widgets/calendar.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/widgets/carousel.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/widgets/checklist.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/widgets/checktable.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/widgets/confirm.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/widgets/date_range.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/widgets/factory.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/widgets/file_batch.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/widgets/form_wizard.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/widgets/markup.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/widgets/messages_pager.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/widgets/multi_select.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/widgets/observability.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/widgets/pagination.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/widgets/presets.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/widgets/range.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/widgets/runner.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/widgets/search_select.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/widgets/select.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/widgets/service.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/widgets/strings.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/widgets/table.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/pybotx/widgets/undefined.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/scripts/docs-lint +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/scripts/format +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/scripts/lint +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/scripts/test +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/scripts/wip-marks +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/setup.cfg +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/__init__.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/__init__.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/bots_api/__init__.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/bots_api/test_bots_list.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/bots_api/test_get_token.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/chats_api/__init__.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/chats_api/factories.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/chats_api/test_add_admin.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/chats_api/test_add_user.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/chats_api/test_chat_info.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/chats_api/test_chat_info_validation.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/chats_api/test_create_chat.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/chats_api/test_create_chat_link.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/chats_api/test_create_thread.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/chats_api/test_disable_stealth.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/chats_api/test_list_chats.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/chats_api/test_list_chats_validation.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/chats_api/test_personal_chat.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/chats_api/test_personal_chat_additional.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/chats_api/test_pin_message.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/chats_api/test_remove_user.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/chats_api/test_set_stealth.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/chats_api/test_unpin_message.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/events_api/__init__.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/events_api/test_delete_event.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/events_api/test_edit_event.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/events_api/test_message_status_event.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/events_api/test_stop_typing_event.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/events_api/test_typing_event.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/exceptions/test_callbacks.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/exceptions/test_http.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/files_api/__init__.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/files_api/test_download_file.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/files_api/test_upload_file.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/notifications_api/__init__.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/notifications_api/test_direct_notification.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/notifications_api/test_direct_notification_sync.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/notifications_api/test_internal_bot_notification.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/notifications_api/test_markup.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/openid_api/__init__.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/openid_api/test_resfesh_access_token.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/smartapps_api/__init__.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/smartapps_api/test_smartapp_custom_notification.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/smartapps_api/test_smartapp_event.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/smartapps_api/test_smartapp_manifest.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/smartapps_api/test_smartapp_notification.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/smartapps_api/test_smartapp_unread_counter.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/smartapps_api/test_smartapp_upload_file.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/smartapps_api/test_smartapps_list.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/stickers_api/__init__.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/stickers_api/test_add_sticker.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/stickers_api/test_create_sticker_pack.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/stickers_api/test_delete_sticker.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/stickers_api/test_delete_sticker_pack.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/stickers_api/test_edit_sticker_pack.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/stickers_api/test_get_sticker.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/stickers_api/test_get_sticker_pack.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/stickers_api/test_get_sticker_packs.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/test_authorized_botx_method.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/test_botx_method.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/test_botx_method_callback.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/test_botx_method_stream.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/test_botx_method_undefined_cleaned.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/test_http_config.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/test_metrics_api/__init__.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/test_metrics_api/test_collect_metric.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/test_open_telemetry_tracing_collector.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/test_prometheus_metrics_collector.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/users_api/__init__.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/users_api/conftest.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/users_api/convert_to_datetime.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/users_api/test_search_user_by_email_post.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/users_api/test_search_user_by_emails.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/users_api/test_search_user_by_huid.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/users_api/test_search_user_by_login.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/users_api/test_search_user_by_other_id.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/users_api/test_trusted_search.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/users_api/test_update_user_profile.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/users_api/test_users_as_csv.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/voex_api/__init__.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/voex_api/test_call.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/client/voex_api/test_conference.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/conftest.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/deprecated/test_authorized_botx_method_v1.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/deprecated/test_lifespan_v1.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/deprecated/test_search_user_by_email_get.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/fixtures/users_api.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/models/__init__.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/models/test_api_base_property.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/models/test_bot_account.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/models/test_bot_account_with_secret.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/models/test_botx_api_markup.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/models/test_enums.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/models/test_enums_property.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/models/test_incoming_message.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/models/test_incoming_message_validation.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/models/test_markup.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/models/test_mentions_list.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/models/test_status_recipient.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/models/test_sync_smartapp_event.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/models/test_users.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/system_events/factories.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/system_events/test_added_to_chat.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/system_events/test_chat_created.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/system_events/test_chat_deleted_by_user.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/system_events/test_conference_changed.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/system_events/test_conference_created.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/system_events/test_conference_deleted.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/system_events/test_cts_login.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/system_events/test_cts_logout.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/system_events/test_deleted_from_chat.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/system_events/test_event_delete.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/system_events/test_event_edit.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/system_events/test_internal_bot_notification.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/system_events/test_join_to_chat.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/system_events/test_left_from_chat.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/system_events/test_smartapp_event.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/test_async_buffer.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/test_attachments.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/test_base_command.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/test_bot_constructing.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/test_bot_edge_cases.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/test_command_processing.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/test_end_to_end.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/test_exception_middleware.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/test_fastapi_adapter.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/test_files.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/test_handler_collector.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/test_healthcheck.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/test_incoming_message.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/test_ingress_observability.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/test_lifespan.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/test_logger.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/test_logs.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/test_middlewares.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/test_personal_chat_ensure.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/test_presets.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/test_scaffold.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/test_scaffold_edge_cases.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/test_state.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/test_status.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/test_stickers.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/test_system_events_routing.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/testkit/__init__.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/testkit/botx.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/widgets/test_approval.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/widgets/test_async_job.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/widgets/test_base.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/widgets/test_calendar.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/widgets/test_carousel.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/widgets/test_checklist.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/widgets/test_checktable.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/widgets/test_confirm.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/widgets/test_date_range.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/widgets/test_factory.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/widgets/test_file_batch.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/widgets/test_form_wizard.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/widgets/test_markup.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/widgets/test_messages_pager.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/widgets/test_module.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/widgets/test_multi_select.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/widgets/test_observability.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/widgets/test_pagination.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/widgets/test_presets.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/widgets/test_range.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/widgets/test_runner.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/widgets/test_search_select.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/widgets/test_select.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/widgets/test_service.py +0 -0
- {pybotx-0.77.0 → pybotx-0.77.2}/tests/widgets/test_table.py +0 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
workflow:
|
|
2
|
+
rules:
|
|
3
|
+
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
|
4
|
+
- if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS'
|
|
5
|
+
when: never
|
|
6
|
+
- if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH'
|
|
7
|
+
|
|
8
|
+
stages:
|
|
9
|
+
- check
|
|
10
|
+
- package
|
|
11
|
+
|
|
12
|
+
variables:
|
|
13
|
+
PYTHON_VERSION: "3.13"
|
|
14
|
+
|
|
15
|
+
default:
|
|
16
|
+
image: "python:${PYTHON_VERSION}-bookworm"
|
|
17
|
+
tags:
|
|
18
|
+
- docker
|
|
19
|
+
before_script:
|
|
20
|
+
- python -m pip install uv
|
|
21
|
+
- uv sync --locked --dev
|
|
22
|
+
|
|
23
|
+
test:
|
|
24
|
+
stage: check
|
|
25
|
+
parallel:
|
|
26
|
+
matrix:
|
|
27
|
+
- PYTHON_VERSION: ["3.10", "3.11", "3.12", "3.13", "3.14"]
|
|
28
|
+
script:
|
|
29
|
+
- >-
|
|
30
|
+
uv run --no-sync ./scripts/test -n 4 --cov-report=xml
|
|
31
|
+
--junitxml=junit.xml --junit-prefix="py${PYTHON_VERSION}"
|
|
32
|
+
coverage: '/^TOTAL\s+.*\s+([0-9]+(?:\.[0-9]+)?%)\s*$/'
|
|
33
|
+
artifacts:
|
|
34
|
+
reports:
|
|
35
|
+
junit: junit.xml
|
|
36
|
+
coverage_report:
|
|
37
|
+
coverage_format: cobertura
|
|
38
|
+
path: coverage.xml
|
|
39
|
+
|
|
40
|
+
lint:
|
|
41
|
+
stage: check
|
|
42
|
+
script:
|
|
43
|
+
- uv run --no-sync ./scripts/lint
|
|
44
|
+
|
|
45
|
+
docs-lint:
|
|
46
|
+
stage: check
|
|
47
|
+
script:
|
|
48
|
+
- uv run --no-sync bash ./scripts/docs-lint
|
|
49
|
+
|
|
50
|
+
package:
|
|
51
|
+
stage: package
|
|
52
|
+
script:
|
|
53
|
+
- uv build
|
|
54
|
+
artifacts:
|
|
55
|
+
paths:
|
|
56
|
+
- dist/
|
|
@@ -1,3 +1,22 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: pybotx
|
|
3
|
+
Version: 0.77.2
|
|
4
|
+
Summary: A python library for interacting with eXpress BotX API
|
|
5
|
+
Project-URL: Repository, https://github.com/ExpressApp/pybotx
|
|
6
|
+
Author: Sidnev Nikolay, Maxim Gorbachev, Alexander Samoylenko, Arseniy Zhiltsov, Aleksandr Osovskii
|
|
7
|
+
License-File: LICENSE
|
|
8
|
+
Requires-Python: <4.0,>=3.10
|
|
9
|
+
Requires-Dist: aiocsv<2,>=1.4.0
|
|
10
|
+
Requires-Dist: aiofiles<26,>=25.1.0
|
|
11
|
+
Requires-Dist: httpcore<2,>=1.0.9
|
|
12
|
+
Requires-Dist: httpx<0.29,>=0.28.1
|
|
13
|
+
Requires-Dist: loguru<0.8,>=0.7.3
|
|
14
|
+
Requires-Dist: mypy-extensions<2,>=1.1.0
|
|
15
|
+
Requires-Dist: pydantic<3,>=2.12.5
|
|
16
|
+
Requires-Dist: pyjwt<3,>=2.11.0
|
|
17
|
+
Requires-Dist: tenacity<10,>=9.1.2
|
|
18
|
+
Description-Content-Type: text/markdown
|
|
19
|
+
|
|
1
20
|
# pybotx
|
|
2
21
|
|
|
3
22
|
*Библиотека для создания чат-ботов и SmartApps для мессенджера eXpress*
|
|
@@ -122,20 +141,6 @@ uv run pybotx create widget-flow deployment-approval --project-dir my-bot --kind
|
|
|
122
141
|
- `src/<package>/domain/` - доменные модели и контракты, включая `domain/ports/`
|
|
123
142
|
- `src/<package>/infrastructure/` - config, repository/adapters, внешние интеграции
|
|
124
143
|
|
|
125
|
-
**Предупреждение:** Данный проект находится в активной разработке (`0.y.z`) и
|
|
126
|
-
его API может быть изменён при повышении минорной версии.
|
|
127
|
-
|
|
128
|
-
## Документация по виджетам
|
|
129
|
-
|
|
130
|
-
Подробное и исчерпывающее руководство по всем виджетам и API раннера:
|
|
131
|
-
|
|
132
|
-
- `/Users/aleksandrosovskii/PycharmProjects/pybotx_stable/WIDGETS.md`
|
|
133
|
-
|
|
134
|
-
Демо-бот с примерами всех виджетов:
|
|
135
|
-
|
|
136
|
-
- `/Users/aleksandrosovskii/PycharmProjects/pybotx_stable/example/README.md`
|
|
137
|
-
|
|
138
|
-
|
|
139
144
|
## Информация о мессенджере eXpress и платформе BotX
|
|
140
145
|
|
|
141
146
|
Документацию по мессенджеру (включая руководство пользователя и администратора)
|
|
@@ -217,6 +222,44 @@ app: FastAPI = create_fastapi_bot_app(
|
|
|
217
222
|
- опционально `GET /metrics`
|
|
218
223
|
- healthcheck routes через `setup_healthcheck(...)`
|
|
219
224
|
|
|
225
|
+
### Динамические account-ы и несколько CTS
|
|
226
|
+
|
|
227
|
+
Если credentials появляются во время работы процесса, передайте
|
|
228
|
+
`account_provider` вместо `bot_accounts`. Provider является синхронным
|
|
229
|
+
read-side контрактом: он не должен выполнять сетевой или database I/O в
|
|
230
|
+
обработчике команды. Для динамического хранилища используйте локальный
|
|
231
|
+
snapshot, обновляемый приложением после регистрации или через invalidation.
|
|
232
|
+
|
|
233
|
+
```python
|
|
234
|
+
from uuid import UUID
|
|
235
|
+
|
|
236
|
+
from pybotx import Bot, BotAccountKey, BotAccountProvider, HandlerCollector
|
|
237
|
+
|
|
238
|
+
collector = HandlerCollector()
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
def create_bot(registration_account_provider: BotAccountProvider) -> Bot:
|
|
242
|
+
return Bot(
|
|
243
|
+
collectors=[collector],
|
|
244
|
+
account_provider=registration_account_provider,
|
|
245
|
+
)
|
|
246
|
+
|
|
247
|
+
# В background-задаче CTS выбирается явно.
|
|
248
|
+
async def send_registration_confirmation(
|
|
249
|
+
bot: Bot, *, bot_id: UUID, chat_id: UUID
|
|
250
|
+
) -> None:
|
|
251
|
+
with bot.account_scope(BotAccountKey(server_id="cts-001", bot_id=bot_id)):
|
|
252
|
+
await bot.send_message(bot_id=bot_id, chat_id=chat_id, body="Готово")
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
Входящие команды связываются с `BotAccountKey` provider-ом до вызова handler;
|
|
256
|
+
JWT v1 cache изолирован ключом account-а и его `revision`. Если вызов производится
|
|
257
|
+
вне handler и один `bot_id` зарегистрирован на нескольких CTS, provider обязан
|
|
258
|
+
поднять `AmbiguousBotAccountError`, а не выбрать произвольный credential.
|
|
259
|
+
|
|
260
|
+
Полный контракт и требования к adapter-у описаны в
|
|
261
|
+
[`docs/dynamic_accounts.md`](docs/dynamic_accounts.md).
|
|
262
|
+
|
|
220
263
|
Если у вас уже есть свой `FastAPI()` объект, можно не создавать новый app, а
|
|
221
264
|
подключить `pybotx` в существующий:
|
|
222
265
|
|
|
@@ -1,22 +1,3 @@
|
|
|
1
|
-
Metadata-Version: 2.5
|
|
2
|
-
Name: pybotx
|
|
3
|
-
Version: 0.77.0
|
|
4
|
-
Summary: A python library for interacting with eXpress BotX API
|
|
5
|
-
Project-URL: Repository, https://github.com/ExpressApp/pybotx
|
|
6
|
-
Author-email: Sidnev Nikolay <nsidnev@ccsteam.ru>, Maxim Gorbachev <mgorbachev@ccsteam.ru>, Alexander Samoylenko <alexandr.samojlenko@ccsteam.ru>, Arseniy Zhiltsov <arseniy.zhiltsov@ccsteam.ru>
|
|
7
|
-
License-File: LICENSE
|
|
8
|
-
Requires-Python: <4.0,>=3.10
|
|
9
|
-
Requires-Dist: aiocsv<2,>=1.4.0
|
|
10
|
-
Requires-Dist: aiofiles<26,>=25.1.0
|
|
11
|
-
Requires-Dist: httpcore<2,>=1.0.9
|
|
12
|
-
Requires-Dist: httpx<0.29,>=0.28.1
|
|
13
|
-
Requires-Dist: loguru<0.8,>=0.7.3
|
|
14
|
-
Requires-Dist: mypy-extensions<2,>=1.1.0
|
|
15
|
-
Requires-Dist: pydantic<3,>=2.12.5
|
|
16
|
-
Requires-Dist: pyjwt<3,>=2.11.0
|
|
17
|
-
Requires-Dist: tenacity<10,>=9.1.2
|
|
18
|
-
Description-Content-Type: text/markdown
|
|
19
|
-
|
|
20
1
|
# pybotx
|
|
21
2
|
|
|
22
3
|
*Библиотека для создания чат-ботов и SmartApps для мессенджера eXpress*
|
|
@@ -141,20 +122,6 @@ uv run pybotx create widget-flow deployment-approval --project-dir my-bot --kind
|
|
|
141
122
|
- `src/<package>/domain/` - доменные модели и контракты, включая `domain/ports/`
|
|
142
123
|
- `src/<package>/infrastructure/` - config, repository/adapters, внешние интеграции
|
|
143
124
|
|
|
144
|
-
**Предупреждение:** Данный проект находится в активной разработке (`0.y.z`) и
|
|
145
|
-
его API может быть изменён при повышении минорной версии.
|
|
146
|
-
|
|
147
|
-
## Документация по виджетам
|
|
148
|
-
|
|
149
|
-
Подробное и исчерпывающее руководство по всем виджетам и API раннера:
|
|
150
|
-
|
|
151
|
-
- `/Users/aleksandrosovskii/PycharmProjects/pybotx_stable/WIDGETS.md`
|
|
152
|
-
|
|
153
|
-
Демо-бот с примерами всех виджетов:
|
|
154
|
-
|
|
155
|
-
- `/Users/aleksandrosovskii/PycharmProjects/pybotx_stable/example/README.md`
|
|
156
|
-
|
|
157
|
-
|
|
158
125
|
## Информация о мессенджере eXpress и платформе BotX
|
|
159
126
|
|
|
160
127
|
Документацию по мессенджеру (включая руководство пользователя и администратора)
|
|
@@ -236,6 +203,44 @@ app: FastAPI = create_fastapi_bot_app(
|
|
|
236
203
|
- опционально `GET /metrics`
|
|
237
204
|
- healthcheck routes через `setup_healthcheck(...)`
|
|
238
205
|
|
|
206
|
+
### Динамические account-ы и несколько CTS
|
|
207
|
+
|
|
208
|
+
Если credentials появляются во время работы процесса, передайте
|
|
209
|
+
`account_provider` вместо `bot_accounts`. Provider является синхронным
|
|
210
|
+
read-side контрактом: он не должен выполнять сетевой или database I/O в
|
|
211
|
+
обработчике команды. Для динамического хранилища используйте локальный
|
|
212
|
+
snapshot, обновляемый приложением после регистрации или через invalidation.
|
|
213
|
+
|
|
214
|
+
```python
|
|
215
|
+
from uuid import UUID
|
|
216
|
+
|
|
217
|
+
from pybotx import Bot, BotAccountKey, BotAccountProvider, HandlerCollector
|
|
218
|
+
|
|
219
|
+
collector = HandlerCollector()
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
def create_bot(registration_account_provider: BotAccountProvider) -> Bot:
|
|
223
|
+
return Bot(
|
|
224
|
+
collectors=[collector],
|
|
225
|
+
account_provider=registration_account_provider,
|
|
226
|
+
)
|
|
227
|
+
|
|
228
|
+
# В background-задаче CTS выбирается явно.
|
|
229
|
+
async def send_registration_confirmation(
|
|
230
|
+
bot: Bot, *, bot_id: UUID, chat_id: UUID
|
|
231
|
+
) -> None:
|
|
232
|
+
with bot.account_scope(BotAccountKey(server_id="cts-001", bot_id=bot_id)):
|
|
233
|
+
await bot.send_message(bot_id=bot_id, chat_id=chat_id, body="Готово")
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
Входящие команды связываются с `BotAccountKey` provider-ом до вызова handler;
|
|
237
|
+
JWT v1 cache изолирован ключом account-а и его `revision`. Если вызов производится
|
|
238
|
+
вне handler и один `bot_id` зарегистрирован на нескольких CTS, provider обязан
|
|
239
|
+
поднять `AmbiguousBotAccountError`, а не выбрать произвольный credential.
|
|
240
|
+
|
|
241
|
+
Полный контракт и требования к adapter-у описаны в
|
|
242
|
+
[`docs/dynamic_accounts.md`](docs/dynamic_accounts.md).
|
|
243
|
+
|
|
239
244
|
Если у вас уже есть свой `FastAPI()` объект, можно не создавать новый app, а
|
|
240
245
|
подключить `pybotx` в существующий:
|
|
241
246
|
|
|
@@ -15,6 +15,10 @@ from pybotx.bot.api.responses.unverified_request import (
|
|
|
15
15
|
)
|
|
16
16
|
from pybotx.auth import BotXAuthVersion
|
|
17
17
|
from pybotx.bot.bot import Bot
|
|
18
|
+
from pybotx.bot.bot_account_provider import (
|
|
19
|
+
BotAccountProvider,
|
|
20
|
+
StaticBotAccountProvider,
|
|
21
|
+
)
|
|
18
22
|
from pybotx.bot.command_processing import (
|
|
19
23
|
BotCommandOverloadAction,
|
|
20
24
|
BotCommandOverloadStrategy,
|
|
@@ -152,7 +156,11 @@ from pybotx.models.attachments import (
|
|
|
152
156
|
AttachmentVoice,
|
|
153
157
|
OutgoingAttachment,
|
|
154
158
|
)
|
|
155
|
-
from pybotx.models.bot_account import
|
|
159
|
+
from pybotx.models.bot_account import (
|
|
160
|
+
BotAccount,
|
|
161
|
+
BotAccountKey,
|
|
162
|
+
BotAccountWithSecret,
|
|
163
|
+
)
|
|
156
164
|
from pybotx.models.bot_catalog import BotsListItem
|
|
157
165
|
from pybotx.models.bot_sender import BotSender
|
|
158
166
|
from pybotx.models.chats import (
|
|
@@ -242,6 +250,8 @@ __all__ = (
|
|
|
242
250
|
"AttachmentVideo",
|
|
243
251
|
"AttachmentVoice",
|
|
244
252
|
"Bot",
|
|
253
|
+
"BotAccountKey",
|
|
254
|
+
"BotAccountProvider",
|
|
245
255
|
"BotAPIBotDisabledErrorData",
|
|
246
256
|
"BotAPIBotDisabledResponse",
|
|
247
257
|
"BotAPIMethodFailedCallback",
|
|
@@ -385,6 +395,7 @@ __all__ = (
|
|
|
385
395
|
"SmartappManifestWebLayoutChoices",
|
|
386
396
|
"SmartappManifestWebParams",
|
|
387
397
|
"StatusRecipient",
|
|
398
|
+
"StaticBotAccountProvider",
|
|
388
399
|
"StealthModeDisabledError",
|
|
389
400
|
"Sticker",
|
|
390
401
|
"StickerPack",
|