python-trueconf-bot 1.5.1__tar.gz → 1.5.3__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.
Files changed (297) hide show
  1. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/.github/workflows/docs.yml +1 -1
  2. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/.github/workflows/release-test.yml +2 -2
  3. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/.github/workflows/release.yml +12 -3
  4. python_trueconf_bot-1.5.3/.github/workflows/test.yml +73 -0
  5. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/.gitignore +2 -4
  6. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/PKG-INFO +12 -8
  7. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/README-PyPI.md +9 -6
  8. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/README-ru.md +9 -6
  9. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/README.md +9 -6
  10. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/pyproject.toml +2 -1
  11. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/python_trueconf_bot.egg-info/PKG-INFO +12 -8
  12. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/python_trueconf_bot.egg-info/SOURCES.txt +3 -0
  13. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/python_trueconf_bot.egg-info/requires.txt +1 -1
  14. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/python_trueconf_bot.egg-info/scm_file_list.json +4 -1
  15. python_trueconf_bot-1.5.3/python_trueconf_bot.egg-info/scm_version.json +8 -0
  16. python_trueconf_bot-1.5.3/tests/test_httpx2_compat.py +70 -0
  17. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/_version.py +3 -3
  18. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/client/bot.py +6 -0
  19. python_trueconf_bot-1.5.3/uv.lock +2638 -0
  20. python_trueconf_bot-1.5.1/python_trueconf_bot.egg-info/scm_version.json +0 -8
  21. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/LICENSE +0 -0
  22. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/assets/head_en.png +0 -0
  23. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/assets/head_ru.png +0 -0
  24. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/assets/logo.svg +0 -0
  25. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/context7.json +0 -0
  26. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/context7.json +0 -0
  27. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/en/examples/index.md +0 -0
  28. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/en/features.md +0 -0
  29. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/en/img/head.png +0 -0
  30. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/en/img/router_scheme_en.svg +0 -0
  31. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/en/index.md +0 -0
  32. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/en/learn/authentication.md +0 -0
  33. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/en/learn/buttons.md +0 -0
  34. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/en/learn/enums.md +0 -0
  35. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/en/learn/files.md +0 -0
  36. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/en/learn/filters.md +0 -0
  37. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/en/learn/fsm.md +0 -0
  38. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/en/learn/getting-started.md +0 -0
  39. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/en/learn/middleware.md +0 -0
  40. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/en/learn/parse-messages.md +0 -0
  41. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/en/learn/restrictions.md +0 -0
  42. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/en/learn/send_message.md +0 -0
  43. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/en/learn/shortcuts.md +0 -0
  44. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/en/learn/types.md +0 -0
  45. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/en/learn/typing_indicator.md +0 -0
  46. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/en/reference/Bot.md +0 -0
  47. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/en/reference/Dispatcher.md +0 -0
  48. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/en/reference/Enums.md +0 -0
  49. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/en/reference/Exceptions.md +0 -0
  50. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/en/reference/Formatting.md +0 -0
  51. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/en/reference/Responses.md +0 -0
  52. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/en/reference/Router.md +0 -0
  53. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/en/reference/Types.md +0 -0
  54. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/en/reference/chat_activity.md +0 -0
  55. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/en/reference/index.md +0 -0
  56. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/en/release_notes.md +0 -0
  57. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/hooks/llms_txt.py +0 -0
  58. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/hooks/sitemap_dates.py +0 -0
  59. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/img/chatbot.svg +0 -0
  60. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/img/favicon.ico +0 -0
  61. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/img/logo.svg +0 -0
  62. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/overrides/main.html +0 -0
  63. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/overrides/sitemap.xml +0 -0
  64. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/ru/examples/index.md +0 -0
  65. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/ru/features.md +0 -0
  66. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/ru/img/head.png +0 -0
  67. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/ru/img/router_scheme_ru.svg +0 -0
  68. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/ru/index.md +0 -0
  69. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/ru/learn/authentication.md +0 -0
  70. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/ru/learn/buttons.md +0 -0
  71. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/ru/learn/enums.md +0 -0
  72. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/ru/learn/files.md +0 -0
  73. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/ru/learn/filters.md +0 -0
  74. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/ru/learn/fsm.md +0 -0
  75. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/ru/learn/getting-started.md +0 -0
  76. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/ru/learn/middleware.md +0 -0
  77. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/ru/learn/parse-messages.md +0 -0
  78. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/ru/learn/restrictions.md +0 -0
  79. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/ru/learn/send_message.md +0 -0
  80. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/ru/learn/shortcuts.md +0 -0
  81. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/ru/learn/types.md +0 -0
  82. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/ru/learn/typing_indicator.md +0 -0
  83. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/ru/release_notes.md +0 -0
  84. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/docs/stylesheets/extra.css +0 -0
  85. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/examples/README-ru.md +0 -0
  86. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/examples/README.md +0 -0
  87. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/examples/add_big_list_users_to_channel.py +0 -0
  88. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/examples/buttons_bot.py +0 -0
  89. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/examples/contacts.py +0 -0
  90. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/examples/filters.py +0 -0
  91. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/examples/report_bot.py +0 -0
  92. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/examples/update_token.py +0 -0
  93. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/examples/webhook.py +0 -0
  94. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/justfile +0 -0
  95. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/mkdocs.yml +0 -0
  96. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/python_trueconf_bot.egg-info/dependency_links.txt +0 -0
  97. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/python_trueconf_bot.egg-info/top_level.txt +0 -0
  98. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/setup.cfg +0 -0
  99. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/tests/test_answer_command.py +0 -0
  100. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/tests/test_auth_via_oauth.py +0 -0
  101. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/tests/test_callback_query_edit.py +0 -0
  102. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/tests/test_callback_query_routing.py +0 -0
  103. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/tests/test_chat_activity.py +0 -0
  104. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/tests/test_download_limit.py +0 -0
  105. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/tests/test_download_url_logging.py +0 -0
  106. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/tests/test_event_raw_routing.py +0 -0
  107. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/tests/test_formatting.py +0 -0
  108. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/tests/test_fsm.py +0 -0
  109. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/tests/test_inline_keyboard.py +0 -0
  110. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/tests/test_last_message.py +0 -0
  111. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/tests/test_message_binding.py +0 -0
  112. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/tests/test_parse_update.py +0 -0
  113. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/tests/test_public_contract_blockers.py +0 -0
  114. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/tests/test_reply_quote.py +0 -0
  115. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/tests/test_send_file_response.py +0 -0
  116. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/tests/test_shutdown.py +0 -0
  117. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/tests/test_split_text.py +0 -0
  118. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/tests/test_system_message_routing.py +0 -0
  119. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/tests/test_upload_errors.py +0 -0
  120. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/tests/test_user_agent.py +0 -0
  121. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/tests/test_vcard.py +0 -0
  122. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/tests/test_ws_retries.py +0 -0
  123. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/__init__.py +0 -0
  124. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/client/__init__.py +0 -0
  125. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/client/context_controller.py +0 -0
  126. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/client/session.py +0 -0
  127. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/dispatcher/__init__.py +0 -0
  128. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/dispatcher/dispatcher.py +0 -0
  129. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/dispatcher/router.py +0 -0
  130. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/enums/__init__.py +0 -0
  131. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/enums/aouth_error.py +0 -0
  132. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/enums/button.py +0 -0
  133. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/enums/chat_activity.py +0 -0
  134. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/enums/chat_participant_role.py +0 -0
  135. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/enums/chat_type.py +0 -0
  136. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/enums/command.py +0 -0
  137. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/enums/envelope_author_type.py +0 -0
  138. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/enums/file_ready_state.py +0 -0
  139. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/enums/incoming_update_method.py +0 -0
  140. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/enums/message_type.py +0 -0
  141. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/enums/parse_mode.py +0 -0
  142. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/enums/survey_type.py +0 -0
  143. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/enums/update_type.py +0 -0
  144. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/exceptions.py +0 -0
  145. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/filters/__init__.py +0 -0
  146. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/filters/base.py +0 -0
  147. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/filters/command.py +0 -0
  148. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/filters/instance_of.py +0 -0
  149. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/filters/message.py +0 -0
  150. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/filters/raw_update.py +0 -0
  151. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/fsm/__init__.py +0 -0
  152. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/fsm/context.py +0 -0
  153. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/fsm/filters.py +0 -0
  154. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/fsm/key_builder.py +0 -0
  155. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/fsm/manager.py +0 -0
  156. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/fsm/middleware.py +0 -0
  157. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/fsm/state.py +0 -0
  158. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/fsm/storage/__init__.py +0 -0
  159. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/fsm/storage/base.py +0 -0
  160. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/fsm/storage/memory.py +0 -0
  161. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/fsm/strategy.py +0 -0
  162. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/loggers.py +0 -0
  163. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/methods/__init__.py +0 -0
  164. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/methods/add_participant_to_chat.py +0 -0
  165. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/methods/answer_command.py +0 -0
  166. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/methods/auth.py +0 -0
  167. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/methods/base.py +0 -0
  168. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/methods/change_participant_role.py +0 -0
  169. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/methods/clear_chat_history.py +0 -0
  170. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/methods/create_channel.py +0 -0
  171. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/methods/create_favorites_chat.py +0 -0
  172. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/methods/create_group_chat.py +0 -0
  173. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/methods/create_p2p_chat.py +0 -0
  174. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/methods/edit_chat_avatar.py +0 -0
  175. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/methods/edit_chat_title.py +0 -0
  176. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/methods/edit_message.py +0 -0
  177. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/methods/edit_survey.py +0 -0
  178. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/methods/forward_message.py +0 -0
  179. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/methods/get_chat_by_id.py +0 -0
  180. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/methods/get_chat_history.py +0 -0
  181. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/methods/get_chat_participant.py +0 -0
  182. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/methods/get_chat_participants.py +0 -0
  183. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/methods/get_chats.py +0 -0
  184. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/methods/get_file_info.py +0 -0
  185. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/methods/get_file_upload_limits.py +0 -0
  186. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/methods/get_message_by_id.py +0 -0
  187. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/methods/get_user_display_name.py +0 -0
  188. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/methods/has_chat_participant.py +0 -0
  189. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/methods/remove_chat.py +0 -0
  190. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/methods/remove_message.py +0 -0
  191. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/methods/remove_participant_from_chat.py +0 -0
  192. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/methods/send_chat_activity.py +0 -0
  193. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/methods/send_file.py +0 -0
  194. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/methods/send_message.py +0 -0
  195. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/methods/send_survey.py +0 -0
  196. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/methods/subscribe_file_progress.py +0 -0
  197. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/methods/unsubscribe_file_progress.py +0 -0
  198. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/methods/upload_file.py +0 -0
  199. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/middleware.py +0 -0
  200. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/py.typed +0 -0
  201. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/__init__.py +0 -0
  202. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/author_box.py +0 -0
  203. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/callback_query.py +0 -0
  204. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/chat.py +0 -0
  205. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/chat_participant.py +0 -0
  206. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/contact.py +0 -0
  207. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/content/__init__.py +0 -0
  208. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/content/attachment.py +0 -0
  209. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/content/base.py +0 -0
  210. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/content/chat_created.py +0 -0
  211. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/content/clear_chat_history.py +0 -0
  212. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/content/document.py +0 -0
  213. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/content/edit_chat_avatar.py +0 -0
  214. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/content/edit_chat_title.py +0 -0
  215. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/content/forward_message.py +0 -0
  216. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/content/location.py +0 -0
  217. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/content/parser.py +0 -0
  218. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/content/photo.py +0 -0
  219. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/content/remove_participant.py +0 -0
  220. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/content/sticker.py +0 -0
  221. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/content/survey.py +0 -0
  222. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/content/text.py +0 -0
  223. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/content/video.py +0 -0
  224. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/content/voice.py +0 -0
  225. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/envelope_parser.py +0 -0
  226. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/input_file.py +0 -0
  227. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/keyboard.py +0 -0
  228. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/last_message.py +0 -0
  229. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/message.py +0 -0
  230. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/parser.py +0 -0
  231. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/requests/__init__.py +0 -0
  232. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/requests/added_chat_participant.py +0 -0
  233. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/requests/changed_file_upload_limits.py +0 -0
  234. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/requests/changed_participant_role.py +0 -0
  235. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/requests/cleared_chat_history.py +0 -0
  236. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/requests/created_channel.py +0 -0
  237. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/requests/created_favorites_chat.py +0 -0
  238. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/requests/created_group_chat.py +0 -0
  239. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/requests/created_personal_chat.py +0 -0
  240. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/requests/edited_chat_avatar.py +0 -0
  241. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/requests/edited_chat_title.py +0 -0
  242. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/requests/edited_message.py +0 -0
  243. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/requests/removed_chat.py +0 -0
  244. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/requests/removed_chat_participant.py +0 -0
  245. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/requests/removed_message.py +0 -0
  246. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/requests/uploading_progress.py +0 -0
  247. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/responses/__init__.py +0 -0
  248. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/responses/add_chat_participant_response.py +0 -0
  249. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/responses/answer_command_response.py +0 -0
  250. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/responses/api_error.py +0 -0
  251. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/responses/auth_response_payload.py +0 -0
  252. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/responses/change_participant_role_response.py +0 -0
  253. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/responses/clear_chat_history_response.py +0 -0
  254. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/responses/create_channel_response.py +0 -0
  255. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/responses/create_favorites_chat_response.py +0 -0
  256. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/responses/create_group_chat_response.py +0 -0
  257. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/responses/create_p2p_chat_response.py +0 -0
  258. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/responses/edit_chat_avatar_response.py +0 -0
  259. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/responses/edit_chat_title_response.py +0 -0
  260. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/responses/edit_message_response.py +0 -0
  261. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/responses/edit_survey_response.py +0 -0
  262. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/responses/forward_message_response.py +0 -0
  263. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/responses/get_chat_by_id_response.py +0 -0
  264. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/responses/get_chat_history_response.py +0 -0
  265. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/responses/get_chat_participant_response.py +0 -0
  266. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/responses/get_chat_participants_response.py +0 -0
  267. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/responses/get_chats_response.py +0 -0
  268. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/responses/get_file_info_response.py +0 -0
  269. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/responses/get_file_upload_limits_response.py +0 -0
  270. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/responses/get_message_by_id_response.py +0 -0
  271. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/responses/get_user_display_name_response.py +0 -0
  272. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/responses/has_chat_participant_response.py +0 -0
  273. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/responses/remove_chat_participant_response.py +0 -0
  274. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/responses/remove_chat_response.py +0 -0
  275. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/responses/remove_message_response.py +0 -0
  276. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/responses/send_chat_activity_response.py +0 -0
  277. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/responses/send_file_response.py +0 -0
  278. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/responses/send_message_response.py +0 -0
  279. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/responses/send_survey_response.py +0 -0
  280. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/responses/subscribe_file_progress_response.py +0 -0
  281. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/responses/unsubscribe_file_progress_response.py +0 -0
  282. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/responses/upload_file_response.py +0 -0
  283. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/system_message.py +0 -0
  284. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/types/update.py +0 -0
  285. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/utils/__init__.py +0 -0
  286. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/utils/_auth/__init__.py +0 -0
  287. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/utils/_auth/_token.py +0 -0
  288. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/utils/_generate_secret_for_survey.py +0 -0
  289. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/utils/_ssl.py +0 -0
  290. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/utils/_url.py +0 -0
  291. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/utils/_user_agent.py +0 -0
  292. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/utils/_version_checker.py +0 -0
  293. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/utils/chat_activity.py +0 -0
  294. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/utils/formatting/__init__.py +0 -0
  295. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/utils/formatting/decorations.py +0 -0
  296. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/utils/formatting/text.py +0 -0
  297. {python_trueconf_bot-1.5.1 → python_trueconf_bot-1.5.3}/trueconf/utils/split_text.py +0 -0
@@ -22,7 +22,7 @@ jobs:
22
22
  trueconf
23
23
 
24
24
  - name: Set up uv
25
- uses: astral-sh/setup-uv@v5
25
+ uses: astral-sh/setup-uv@v10.2.0
26
26
  with:
27
27
  enable-cache: true
28
28
 
@@ -17,14 +17,14 @@ jobs:
17
17
  runs-on: ubuntu-latest
18
18
  environment: testpypi
19
19
  steps:
20
- - uses: actions/checkout@v4
20
+ - uses: actions/checkout@v7
21
21
  with:
22
22
  fetch-depth: 0
23
23
  fetch-tags: true
24
24
  ref: ${{ github.event.inputs.tag }}
25
25
 
26
26
  - name: Set up Python
27
- uses: actions/setup-python@v5
27
+ uses: actions/setup-python@v7
28
28
  with:
29
29
  python-version: "3.10"
30
30
 
@@ -9,11 +9,20 @@ permissions:
9
9
  id-token: write
10
10
 
11
11
  jobs:
12
+ test:
13
+ name: Tests before release
14
+ uses: ./.github/workflows/test.yml
15
+ with:
16
+ ref: ${{ github.event.release.tag_name }}
17
+ permissions:
18
+ contents: read
19
+
12
20
  build-and-publish:
21
+ needs: test
13
22
  runs-on: ubuntu-latest
14
23
  environment: pypi
15
24
  steps:
16
- - uses: actions/checkout@v4
25
+ - uses: actions/checkout@v7
17
26
  with:
18
27
  fetch-depth: 0
19
28
  ref: ${{ github.event.release.tag_name }}
@@ -25,7 +34,7 @@ jobs:
25
34
  sed -i "s/^version = .*/version = \"${VERSION}\"/" pyproject.toml
26
35
 
27
36
  - name: Set up Python
28
- uses: actions/setup-python@v5
37
+ uses: actions/setup-python@v7
29
38
  with:
30
39
  python-version: "3.11"
31
40
 
@@ -35,7 +44,7 @@ jobs:
35
44
  python -m build
36
45
 
37
46
  - name: Upload artifacts to Actions
38
- uses: actions/upload-artifact@v4
47
+ uses: actions/upload-artifact@v7
39
48
  with:
40
49
  name: dist
41
50
  path: dist/*
@@ -0,0 +1,73 @@
1
+ name: Tests
2
+
3
+ on:
4
+ push:
5
+ branches: [master]
6
+ pull_request:
7
+ workflow_call:
8
+ inputs:
9
+ ref:
10
+ description: "Git ref to check out (used when called from another workflow)"
11
+ type: string
12
+ required: false
13
+
14
+ permissions:
15
+ contents: read
16
+
17
+ jobs:
18
+ test:
19
+ name: pytest (Python ${{ matrix.python-version }})
20
+ runs-on: ubuntu-latest
21
+ strategy:
22
+ fail-fast: false
23
+ matrix:
24
+ python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
25
+ steps:
26
+ - uses: actions/checkout@v7
27
+ with:
28
+ fetch-depth: 0
29
+ fetch-tags: true
30
+ ref: ${{ inputs.ref || github.ref }}
31
+
32
+ - name: Install uv
33
+ uses: astral-sh/setup-uv@v10.2.0
34
+ with:
35
+ python-version: ${{ matrix.python-version }}
36
+
37
+ - name: Install dependencies
38
+ run: uv sync --group test
39
+
40
+ - name: Show versions
41
+ run: |
42
+ uv run python -c "import sys, httpx2; print('python', sys.version.split()[0], '| httpx2', httpx2.__version__)"
43
+
44
+ - name: Run tests
45
+ run: uv run pytest tests/ -v
46
+
47
+ test-httpx2-floor:
48
+ name: pytest (Python 3.10, httpx2==2.7.0)
49
+ runs-on: ubuntu-latest
50
+ steps:
51
+ - uses: actions/checkout@v7
52
+ with:
53
+ fetch-depth: 0
54
+ fetch-tags: true
55
+ ref: ${{ inputs.ref || github.ref }}
56
+
57
+ - name: Install uv
58
+ uses: astral-sh/setup-uv@v10.2.0
59
+ with:
60
+ python-version: "3.10"
61
+ cache-suffix: "-httpx2-2.7.0"
62
+
63
+ - name: Create venv with httpx2 pinned to the minimum supported version
64
+ run: |
65
+ uv venv --python 3.10 --clear
66
+ uv pip install --python .venv/bin/python -e . "httpx2==2.7.0" pytest "anyio>=4.10" "trio>=0.34.0"
67
+
68
+ - name: Show versions
69
+ run: |
70
+ .venv/bin/python -c "import sys, httpx2; print('python', sys.version.split()[0], '| httpx2', httpx2.__version__)"
71
+
72
+ - name: Run tests
73
+ run: .venv/bin/python -m pytest tests/ -v
@@ -95,10 +95,8 @@ ipython_config.py
95
95
  #Pipfile.lock
96
96
 
97
97
  # UV
98
- # Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
99
- # This is especially recommended for binary packages to ensure reproducibility, and is more
100
- # commonly ignored for libraries.
101
- uv.lock
98
+ # uv.lock is committed to keep CI reproducible (same approach as aiogram).
99
+ # Run `uv lock` after changing dependencies in pyproject.toml.
102
100
 
103
101
  # poetry
104
102
  # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-trueconf-bot
3
- Version: 1.5.1
3
+ Version: 1.5.3
4
4
  Summary: Lightweight and powerful framework for the TrueConf Server Chatbot API
5
5
  Author-email: TrueConf LLC <info@trueconf.com>, Anton Baadzhi <baadzhianton@gmail.com>
6
6
  License-Expression: BSD-3-Clause-Clear
@@ -18,13 +18,14 @@ Classifier: Programming Language :: Python :: 3.10
18
18
  Classifier: Programming Language :: Python :: 3.11
19
19
  Classifier: Programming Language :: Python :: 3.12
20
20
  Classifier: Programming Language :: Python :: 3.13
21
+ Classifier: Programming Language :: Python :: 3.14
21
22
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
22
23
  Classifier: Topic :: Communications :: Chat
23
24
  Requires-Python: >=3.10
24
25
  Description-Content-Type: text/markdown
25
26
  License-File: LICENSE
26
27
  Requires-Dist: websockets
27
- Requires-Dist: httpx2>=2.13.0
28
+ Requires-Dist: httpx2>=2.7.0
28
29
  Requires-Dist: mashumaro>=3.23
29
30
  Requires-Dist: aiofiles
30
31
  Requires-Dist: magic-filter
@@ -98,12 +99,15 @@ uv add python-trueconf-bot
98
99
 
99
100
  ## 📦 Version Compatibility
100
101
 
101
- | TrueConf Server Version | Required Library Version |
102
- |:------------------------|:-------------------------|
103
- | < 5.5.0 | ❌ Not supported |
104
- | 5.5.0 — 5.5.2 | v1.1.x |
105
- | 5.5.3 — 5.5.5 | v1.2.1-1.4.x |
106
- | >= 5.5.6 | **v1.5.0** (or higher) |
102
+ | TrueConf Server Version | Library Version |
103
+ |:------------------------|:-----------------------------------------|
104
+ | < 5.5.0 | ❌ Not supported |
105
+ | 5.5.0 — 5.5.2 | v1.1.x |
106
+ | 5.5.3 — 5.5.5 | v1.2.1-1.4.x |
107
+ | >= 5.5.6 | v1.4.x — compatible / **v1.5.0+** — full support |
108
+
109
+ > [!NOTE]
110
+ > v1.4.x works with TrueConf Server 5.5.6 for basic messaging (new API fields are simply ignored). **v1.5.0+ is required** to use the new 5.5.6 features: inline buttons, chat activity, voice messages, `message.chat` and `reply_message`. Note that v1.4.x cannot parse voice messages (type 205) — such updates are dropped.
107
111
 
108
112
  ## 📌 Key Features
109
113
 
@@ -58,12 +58,15 @@ uv add python-trueconf-bot
58
58
 
59
59
  ## 📦 Version Compatibility
60
60
 
61
- | TrueConf Server Version | Required Library Version |
62
- |:------------------------|:-------------------------|
63
- | < 5.5.0 | ❌ Not supported |
64
- | 5.5.0 — 5.5.2 | v1.1.x |
65
- | 5.5.3 — 5.5.5 | v1.2.1-1.4.x |
66
- | >= 5.5.6 | **v1.5.0** (or higher) |
61
+ | TrueConf Server Version | Library Version |
62
+ |:------------------------|:-----------------------------------------|
63
+ | < 5.5.0 | ❌ Not supported |
64
+ | 5.5.0 — 5.5.2 | v1.1.x |
65
+ | 5.5.3 — 5.5.5 | v1.2.1-1.4.x |
66
+ | >= 5.5.6 | v1.4.x — compatible / **v1.5.0+** — full support |
67
+
68
+ > [!NOTE]
69
+ > v1.4.x works with TrueConf Server 5.5.6 for basic messaging (new API fields are simply ignored). **v1.5.0+ is required** to use the new 5.5.6 features: inline buttons, chat activity, voice messages, `message.chat` and `reply_message`. Note that v1.4.x cannot parse voice messages (type 205) — such updates are dropped.
67
70
 
68
71
  ## 📌 Key Features
69
72
 
@@ -60,12 +60,15 @@ uv add python-trueconf-bot
60
60
 
61
61
  ## 📦 Совместимость версий
62
62
 
63
- | Версия сервера TrueConf | Требуемая версия библиотеки |
64
- |:------------------------|:----------------------------|
65
- | < 5.5.0 | ❌ Не поддерживается |
66
- | 5.5.0 — 5.5.2 | v1.1.x |
67
- | 5.5.3 — 5.5.5 | v1.2.1-1.4.x |
68
- | >= 5.5.6 | **v1.5.0** (или выше) |
63
+ | Версия сервера TrueConf | Версия библиотеки |
64
+ |:------------------------|:-----------------------------------------------|
65
+ | < 5.5.0 | ❌ Не поддерживается |
66
+ | 5.5.0 — 5.5.2 | v1.1.x |
67
+ | 5.5.3 — 5.5.5 | v1.2.1-1.4.x |
68
+ | >= 5.5.6 | v1.4.x — совместима / **v1.5.0+** — полная поддержка |
69
+
70
+ > [!NOTE]
71
+ > v1.4.x работает с TrueConf Server 5.5.6 для базовых сценариев обмена сообщениями (новые поля API просто игнорируются). **v1.5.0+ обязательна** для использования новых функций 5.5.6: инлайн-кнопки, chat activity, голосовые сообщения, `message.chat` и `reply_message`. Обратите внимание: v1.4.x не может разобрать голосовые сообщения (тип 205) — такие апдейты отбрасываются.
69
72
 
70
73
  ## 📌 Ключевые возможности
71
74
 
@@ -62,12 +62,15 @@ uv add python-trueconf-bot
62
62
 
63
63
  ## 📦 Version Compatibility
64
64
 
65
- | TrueConf Server Version | Required Library Version |
66
- |:------------------------|:-------------------------|
67
- | < 5.5.0 | ❌ Not supported |
68
- | 5.5.0 — 5.5.2 | v1.1.x |
69
- | 5.5.3 — 5.5.5 | v1.2.1-1.4.x |
70
- | >= 5.5.6 | **v1.5.0** (or higher) |
65
+ | TrueConf Server Version | Library Version |
66
+ |:------------------------|:-----------------------------------------|
67
+ | < 5.5.0 | ❌ Not supported |
68
+ | 5.5.0 — 5.5.2 | v1.1.x |
69
+ | 5.5.3 — 5.5.5 | v1.2.1-1.4.x |
70
+ | >= 5.5.6 | v1.4.x — compatible / **v1.5.0+** — full support |
71
+
72
+ > [!NOTE]
73
+ > v1.4.x works with TrueConf Server 5.5.6 for basic messaging (new API fields are simply ignored). **v1.5.0+ is required** to use the new 5.5.6 features: inline buttons, chat activity, voice messages, `message.chat` and `reply_message`. Note that v1.4.x cannot parse voice messages (type 205) — such updates are dropped.
71
74
 
72
75
  ## 📌 Key Features
73
76
 
@@ -36,13 +36,14 @@ classifiers = [
36
36
  "Programming Language :: Python :: 3.11",
37
37
  "Programming Language :: Python :: 3.12",
38
38
  "Programming Language :: Python :: 3.13",
39
+ "Programming Language :: Python :: 3.14",
39
40
  "Topic :: Software Development :: Libraries :: Python Modules",
40
41
  "Topic :: Communications :: Chat",
41
42
  ]
42
43
 
43
44
  dependencies = [
44
45
  "websockets",
45
- "httpx2>=2.13.0",
46
+ "httpx2>=2.7.0",
46
47
  "mashumaro>=3.23",
47
48
  "aiofiles",
48
49
  "magic-filter",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-trueconf-bot
3
- Version: 1.5.1
3
+ Version: 1.5.3
4
4
  Summary: Lightweight and powerful framework for the TrueConf Server Chatbot API
5
5
  Author-email: TrueConf LLC <info@trueconf.com>, Anton Baadzhi <baadzhianton@gmail.com>
6
6
  License-Expression: BSD-3-Clause-Clear
@@ -18,13 +18,14 @@ Classifier: Programming Language :: Python :: 3.10
18
18
  Classifier: Programming Language :: Python :: 3.11
19
19
  Classifier: Programming Language :: Python :: 3.12
20
20
  Classifier: Programming Language :: Python :: 3.13
21
+ Classifier: Programming Language :: Python :: 3.14
21
22
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
22
23
  Classifier: Topic :: Communications :: Chat
23
24
  Requires-Python: >=3.10
24
25
  Description-Content-Type: text/markdown
25
26
  License-File: LICENSE
26
27
  Requires-Dist: websockets
27
- Requires-Dist: httpx2>=2.13.0
28
+ Requires-Dist: httpx2>=2.7.0
28
29
  Requires-Dist: mashumaro>=3.23
29
30
  Requires-Dist: aiofiles
30
31
  Requires-Dist: magic-filter
@@ -98,12 +99,15 @@ uv add python-trueconf-bot
98
99
 
99
100
  ## 📦 Version Compatibility
100
101
 
101
- | TrueConf Server Version | Required Library Version |
102
- |:------------------------|:-------------------------|
103
- | < 5.5.0 | ❌ Not supported |
104
- | 5.5.0 — 5.5.2 | v1.1.x |
105
- | 5.5.3 — 5.5.5 | v1.2.1-1.4.x |
106
- | >= 5.5.6 | **v1.5.0** (or higher) |
102
+ | TrueConf Server Version | Library Version |
103
+ |:------------------------|:-----------------------------------------|
104
+ | < 5.5.0 | ❌ Not supported |
105
+ | 5.5.0 — 5.5.2 | v1.1.x |
106
+ | 5.5.3 — 5.5.5 | v1.2.1-1.4.x |
107
+ | >= 5.5.6 | v1.4.x — compatible / **v1.5.0+** — full support |
108
+
109
+ > [!NOTE]
110
+ > v1.4.x works with TrueConf Server 5.5.6 for basic messaging (new API fields are simply ignored). **v1.5.0+ is required** to use the new 5.5.6 features: inline buttons, chat activity, voice messages, `message.chat` and `reply_message`. Note that v1.4.x cannot parse voice messages (type 205) — such updates are dropped.
107
111
 
108
112
  ## 📌 Key Features
109
113
 
@@ -7,9 +7,11 @@ context7.json
7
7
  justfile
8
8
  mkdocs.yml
9
9
  pyproject.toml
10
+ uv.lock
10
11
  .github/workflows/docs.yml
11
12
  .github/workflows/release-test.yml
12
13
  .github/workflows/release.yml
14
+ .github/workflows/test.yml
13
15
  assets/head_en.png
14
16
  assets/head_ru.png
15
17
  assets/logo.svg
@@ -98,6 +100,7 @@ tests/test_download_url_logging.py
98
100
  tests/test_event_raw_routing.py
99
101
  tests/test_formatting.py
100
102
  tests/test_fsm.py
103
+ tests/test_httpx2_compat.py
101
104
  tests/test_inline_keyboard.py
102
105
  tests/test_last_message.py
103
106
  tests/test_message_binding.py
@@ -1,5 +1,5 @@
1
1
  websockets
2
- httpx2>=2.13.0
2
+ httpx2>=2.7.0
3
3
  mashumaro>=3.23
4
4
  aiofiles
5
5
  magic-filter
@@ -3,6 +3,7 @@
3
3
  ".github/workflows/docs.yml",
4
4
  ".github/workflows/release-test.yml",
5
5
  ".github/workflows/release.yml",
6
+ ".github/workflows/test.yml",
6
7
  ".gitignore",
7
8
  "LICENSE",
8
9
  "README-PyPI.md",
@@ -93,6 +94,7 @@
93
94
  "tests/test_event_raw_routing.py",
94
95
  "tests/test_formatting.py",
95
96
  "tests/test_fsm.py",
97
+ "tests/test_httpx2_compat.py",
96
98
  "tests/test_inline_keyboard.py",
97
99
  "tests/test_last_message.py",
98
100
  "tests/test_message_binding.py",
@@ -282,6 +284,7 @@
282
284
  "trueconf/utils/formatting/__init__.py",
283
285
  "trueconf/utils/formatting/decorations.py",
284
286
  "trueconf/utils/formatting/text.py",
285
- "trueconf/utils/split_text.py"
287
+ "trueconf/utils/split_text.py",
288
+ "uv.lock"
286
289
  ]
287
290
  }
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "1.5.3",
3
+ "distance": 0,
4
+ "node": "g08c15ffa9bc9da2940bc2781b5dcf5b379643bdd",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-10-06"
8
+ }
@@ -0,0 +1,70 @@
1
+ """Smoke tests for the public httpx2 API surface used by trueconf.
2
+
3
+ The library depends on a specific subset of httpx2's public API. These tests
4
+ import every symbol the package relies on so that a future httpx2 release
5
+ removing or renaming any of them fails fast here instead of breaking user
6
+ code at runtime.
7
+ """
8
+
9
+ import httpx2
10
+
11
+
12
+ def test_httpx2_minimum_version():
13
+ assert tuple(int(part) for part in httpx2.__version__.split(".")[:2]) >= (2, 7)
14
+
15
+
16
+ def test_package_modules_import_httpx2():
17
+ # Every trueconf module that touches httpx2 must import cleanly.
18
+ import importlib
19
+
20
+ for module_name in (
21
+ "trueconf.types.input_file",
22
+ "trueconf.utils._auth._token",
23
+ "trueconf.client.bot",
24
+ ):
25
+ importlib.import_module(module_name)
26
+
27
+
28
+ def test_symbols_used_by_bot_module():
29
+ # trueconf/client/bot.py uses these via `httpx2.<name>`
30
+ for name in ("AsyncClient", "Timeout", "TimeoutException", "RequestError", "HTTPStatusError"):
31
+ assert hasattr(httpx2, name), f"httpx2 is missing {name!r} required by trueconf.client.bot"
32
+
33
+
34
+ def test_symbols_used_by_auth_token():
35
+ # trueconf/utils/_auth/_token.py imports these directly
36
+ from httpx2 import Client, ConnectTimeout, HTTPStatusError # noqa: F401
37
+
38
+
39
+ def test_symbols_used_by_input_file():
40
+ # trueconf/types/input_file.py imports AsyncClient directly
41
+ from httpx2 import AsyncClient # noqa: F401
42
+
43
+
44
+ def test_client_constructor_signature():
45
+ # Keywords used by trueconf when creating clients
46
+ client = httpx2.Client(timeout=1.0, verify=True, headers={"User-Agent": "test"})
47
+ try:
48
+ assert client.timeout.read == 1.0
49
+ finally:
50
+ client.close()
51
+
52
+
53
+ def test_async_client_constructor_signature():
54
+ client = httpx2.AsyncClient(timeout=httpx2.Timeout(5.0), verify=True, headers={"User-Agent": "test"})
55
+ assert client.timeout.read == 5.0
56
+
57
+
58
+ def test_request_and_response_roundtrip():
59
+ request = httpx2.Request("POST", "https://example.com")
60
+ response = httpx2.Response(403, request=request)
61
+ error = httpx2.HTTPStatusError("forbidden", request=request, response=response)
62
+ assert error.response.status_code == 403
63
+ assert isinstance(error, httpx2.RequestError) is False
64
+
65
+
66
+ def test_exception_hierarchy():
67
+ # trueconf catches these exception types separately
68
+ assert issubclass(httpx2.ConnectTimeout, httpx2.TimeoutException)
69
+ assert issubclass(httpx2.TimeoutException, httpx2.RequestError)
70
+ assert issubclass(httpx2.HTTPStatusError, httpx2.HTTPError)
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '1.5.1'
22
- __version_tuple__ = version_tuple = (1, 5, 1)
21
+ __version__ = version = '1.5.3'
22
+ __version_tuple__ = version_tuple = (1, 5, 3)
23
23
 
24
- __commit_id__ = commit_id = 'g491090024'
24
+ __commit_id__ = commit_id = 'g08c15ffa9'
@@ -1857,6 +1857,12 @@ class Bot:
1857
1857
  cancelling = getattr(current_task, "cancelling", None)
1858
1858
  if cancelling is not None and cancelling():
1859
1859
  raise
1860
+ # Python 3.10 fallback: shutdown() sets self._stop before
1861
+ # cancelling the connect task, so an unset flag means the
1862
+ # cancellation came from outside (task.cancel()) and must
1863
+ # propagate to the caller.
1864
+ if self._connect_task is not None and not self._stop:
1865
+ raise
1860
1866
 
1861
1867
  async def send_document(
1862
1868
  self,