spluspy 2.2.0__tar.gz → 2.2.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (305) hide show
  1. {spluspy-2.2.0 → spluspy-2.2.1}/PKG-INFO +3 -2
  2. {spluspy-2.2.0 → spluspy-2.2.1}/pyproject.toml +2 -2
  3. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/__init__.py +2 -0
  4. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/__version__.py +1 -1
  5. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/crypto/libssl.py +11 -0
  6. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/version.py +1 -1
  7. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/client/client.py +9 -1
  8. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/utils/logger.py +115 -1
  9. {spluspy-2.2.0 → spluspy-2.2.1}/.gitignore +0 -0
  10. {spluspy-2.2.0 → spluspy-2.2.1}/CHANGELOG.md +0 -0
  11. {spluspy-2.2.0 → spluspy-2.2.1}/CONTRIBUTING.md +0 -0
  12. {spluspy-2.2.0 → spluspy-2.2.1}/Dockerfile +0 -0
  13. {spluspy-2.2.0 → spluspy-2.2.1}/LICENSE +0 -0
  14. {spluspy-2.2.0 → spluspy-2.2.1}/MANIFEST.in +0 -0
  15. {spluspy-2.2.0 → spluspy-2.2.1}/README.md +0 -0
  16. {spluspy-2.2.0 → spluspy-2.2.1}/README.rst +0 -0
  17. {spluspy-2.2.0 → spluspy-2.2.1}/examples/01_hello_bot.py +0 -0
  18. {spluspy-2.2.0 → spluspy-2.2.1}/examples/02_echo_bot.py +0 -0
  19. {spluspy-2.2.0 → spluspy-2.2.1}/examples/03_command_bot.py +0 -0
  20. {spluspy-2.2.0 → spluspy-2.2.1}/examples/04_private_only.py +0 -0
  21. {spluspy-2.2.0 → spluspy-2.2.1}/examples/05_group_only.py +0 -0
  22. {spluspy-2.2.0 → spluspy-2.2.1}/examples/06_regex_bot.py +0 -0
  23. {spluspy-2.2.0 → spluspy-2.2.1}/examples/07_user_filter.py +0 -0
  24. {spluspy-2.2.0 → spluspy-2.2.1}/examples/08_combined_filters.py +0 -0
  25. {spluspy-2.2.0 → spluspy-2.2.1}/examples/09_inline_keyboard.py +0 -0
  26. {spluspy-2.2.0 → spluspy-2.2.1}/examples/10_reply_keyboard.py +0 -0
  27. {spluspy-2.2.0 → spluspy-2.2.1}/examples/11_message_actions.py +0 -0
  28. {spluspy-2.2.0 → spluspy-2.2.1}/examples/12_media_bot.py +0 -0
  29. {spluspy-2.2.0 → spluspy-2.2.1}/examples/13_fsm_bot.py +0 -0
  30. {spluspy-2.2.0 → spluspy-2.2.1}/examples/14_plugin_bot.py +0 -0
  31. {spluspy-2.2.0 → spluspy-2.2.1}/examples/15_middleware_bot.py +0 -0
  32. {spluspy-2.2.0 → spluspy-2.2.1}/examples/16_scheduler_bot.py +0 -0
  33. {spluspy-2.2.0 → spluspy-2.2.1}/examples/17_conversation.py +0 -0
  34. {spluspy-2.2.0 → spluspy-2.2.1}/examples/18_chat_management.py +0 -0
  35. {spluspy-2.2.0 → spluspy-2.2.1}/examples/19_event_types.py +0 -0
  36. {spluspy-2.2.0 → spluspy-2.2.1}/examples/20_sync_bot.py +0 -0
  37. {spluspy-2.2.0 → spluspy-2.2.1}/examples/21_album_handler.py +0 -0
  38. {spluspy-2.2.0 → spluspy-2.2.1}/examples/22_download_bot.py +0 -0
  39. {spluspy-2.2.0 → spluspy-2.2.1}/examples/23_url_button.py +0 -0
  40. {spluspy-2.2.0 → spluspy-2.2.1}/examples/24_string_session.py +0 -0
  41. {spluspy-2.2.0 → spluspy-2.2.1}/examples/25_error_handling.py +0 -0
  42. {spluspy-2.2.0 → spluspy-2.2.1}/examples/25_working_bot.py +0 -0
  43. {spluspy-2.2.0 → spluspy-2.2.1}/examples/26_message_entities.py +0 -0
  44. {spluspy-2.2.0 → spluspy-2.2.1}/examples/27_search_messages.py +0 -0
  45. {spluspy-2.2.0 → spluspy-2.2.1}/examples/28_poll_bot.py +0 -0
  46. {spluspy-2.2.0 → spluspy-2.2.1}/examples/29_dice_bot.py +0 -0
  47. {spluspy-2.2.0 → spluspy-2.2.1}/examples/30_cache_bot.py +0 -0
  48. {spluspy-2.2.0 → spluspy-2.2.1}/examples/31_reaction_bot.py +0 -0
  49. {spluspy-2.2.0 → spluspy-2.2.1}/examples/32_mark_read_bot.py +0 -0
  50. {spluspy-2.2.0 → spluspy-2.2.1}/examples/33_context_manager.py +0 -0
  51. {spluspy-2.2.0 → spluspy-2.2.1}/examples/34_user_info.py +0 -0
  52. {spluspy-2.2.0 → spluspy-2.2.1}/examples/35_chat_info.py +0 -0
  53. {spluspy-2.2.0 → spluspy-2.2.1}/examples/36_forward_copy.py +0 -0
  54. {spluspy-2.2.0 → spluspy-2.2.1}/examples/37_admin_bot.py +0 -0
  55. {spluspy-2.2.0 → spluspy-2.2.1}/examples/38_media_filters.py +0 -0
  56. {spluspy-2.2.0 → spluspy-2.2.1}/examples/39_status_bot.py +0 -0
  57. {spluspy-2.2.0 → spluspy-2.2.1}/examples/40_delete_detection.py +0 -0
  58. {spluspy-2.2.0 → spluspy-2.2.1}/examples/41_read_detection.py +0 -0
  59. {spluspy-2.2.0 → spluspy-2.2.1}/examples/42_raw_events.py +0 -0
  60. {spluspy-2.2.0 → spluspy-2.2.1}/examples/43_poll_handler.py +0 -0
  61. {spluspy-2.2.0 → spluspy-2.2.1}/examples/44_reaction_handler.py +0 -0
  62. {spluspy-2.2.0 → spluspy-2.2.1}/examples/45_typing_handler.py +0 -0
  63. {spluspy-2.2.0 → spluspy-2.2.1}/examples/46_get_messages.py +0 -0
  64. {spluspy-2.2.0 → spluspy-2.2.1}/examples/47_iter_messages.py +0 -0
  65. {spluspy-2.2.0 → spluspy-2.2.1}/examples/48_get_members.py +0 -0
  66. {spluspy-2.2.0 → spluspy-2.2.1}/examples/49_resolve_username.py +0 -0
  67. {spluspy-2.2.0 → spluspy-2.2.1}/examples/50_invoke.py +0 -0
  68. {spluspy-2.2.0 → spluspy-2.2.1}/setup.py +0 -0
  69. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/__init__.py +0 -0
  70. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/_updates/__init__.py +0 -0
  71. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/_updates/entitycache.py +0 -0
  72. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/_updates/messagebox.py +0 -0
  73. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/_updates/session.py +0 -0
  74. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/client/__init__.py +0 -0
  75. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/client/account.py +0 -0
  76. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/client/auth.py +0 -0
  77. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/client/bots.py +0 -0
  78. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/client/buttons.py +0 -0
  79. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/client/chats.py +0 -0
  80. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/client/dialogs.py +0 -0
  81. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/client/downloads.py +0 -0
  82. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/client/messageparse.py +0 -0
  83. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/client/messages.py +0 -0
  84. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/client/soroushclient.py +0 -0
  85. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/client/telegrambaseclient.py +0 -0
  86. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/client/updates.py +0 -0
  87. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/client/uploads.py +0 -0
  88. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/client/users.py +0 -0
  89. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/crypto/__init__.py +0 -0
  90. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/crypto/aes.py +0 -0
  91. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/crypto/aesctr.py +0 -0
  92. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/crypto/authkey.py +0 -0
  93. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/crypto/cdndecrypter.py +0 -0
  94. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/crypto/factorization.py +0 -0
  95. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/crypto/rsa.py +0 -0
  96. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/custom.py +0 -0
  97. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/errors/__init__.py +0 -0
  98. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/errors/common.py +0 -0
  99. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/errors/rpcbaseerrors.py +0 -0
  100. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/errors/rpcerrorlist.py +0 -0
  101. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/events/__init__.py +0 -0
  102. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/events/album.py +0 -0
  103. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/events/callbackquery.py +0 -0
  104. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/events/chataction.py +0 -0
  105. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/events/common.py +0 -0
  106. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/events/inlinequery.py +0 -0
  107. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/events/messagedeleted.py +0 -0
  108. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/events/messageedited.py +0 -0
  109. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/events/messageread.py +0 -0
  110. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/events/newmessage.py +0 -0
  111. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/events/raw.py +0 -0
  112. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/events/userupdate.py +0 -0
  113. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/extensions/__init__.py +0 -0
  114. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/extensions/binaryreader.py +0 -0
  115. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/extensions/html.py +0 -0
  116. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/extensions/markdown.py +0 -0
  117. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/extensions/messagepacker.py +0 -0
  118. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/functions.py +0 -0
  119. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/helpers.py +0 -0
  120. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/hints.py +0 -0
  121. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/network/__init__.py +0 -0
  122. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/network/authenticator.py +0 -0
  123. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/network/connection/__init__.py +0 -0
  124. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/network/connection/connection.py +0 -0
  125. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/network/connection/http.py +0 -0
  126. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/network/connection/tcpabridged.py +0 -0
  127. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/network/connection/tcpfull.py +0 -0
  128. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/network/connection/tcpintermediate.py +0 -0
  129. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/network/connection/tcpmtproxy.py +0 -0
  130. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/network/connection/tcpobfuscated.py +0 -0
  131. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/network/connection/websocket.py +0 -0
  132. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/network/mtprotoplainsender.py +0 -0
  133. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/network/mtprotosender.py +0 -0
  134. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/network/mtprotostate.py +0 -0
  135. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/network/requeststate.py +0 -0
  136. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/password.py +0 -0
  137. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/requestiter.py +0 -0
  138. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/sessions/__init__.py +0 -0
  139. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/sessions/abstract.py +0 -0
  140. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/sessions/memory.py +0 -0
  141. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/sessions/sqlite.py +0 -0
  142. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/sessions/string.py +0 -0
  143. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/sync.py +0 -0
  144. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/__init__.py +0 -0
  145. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/alltlobjects.py +0 -0
  146. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/core/__init__.py +0 -0
  147. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/core/gzippacked.py +0 -0
  148. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/core/messagecontainer.py +0 -0
  149. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/core/rpcresult.py +0 -0
  150. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/core/tlmessage.py +0 -0
  151. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/custom/__init__.py +0 -0
  152. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/custom/adminlogevent.py +0 -0
  153. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/custom/button.py +0 -0
  154. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/custom/chatgetter.py +0 -0
  155. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/custom/conversation.py +0 -0
  156. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/custom/dialog.py +0 -0
  157. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/custom/draft.py +0 -0
  158. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/custom/file.py +0 -0
  159. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/custom/forward.py +0 -0
  160. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/custom/inlinebuilder.py +0 -0
  161. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/custom/inlineresult.py +0 -0
  162. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/custom/inlineresults.py +0 -0
  163. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/custom/inputsizedfile.py +0 -0
  164. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/custom/message.py +0 -0
  165. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/custom/messagebutton.py +0 -0
  166. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/custom/participantpermissions.py +0 -0
  167. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/custom/qrlogin.py +0 -0
  168. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/custom/sendergetter.py +0 -0
  169. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/custom/types.py +0 -0
  170. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/functions/__init__.py +0 -0
  171. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/functions/account.py +0 -0
  172. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/functions/auth.py +0 -0
  173. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/functions/bots.py +0 -0
  174. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/functions/channels.py +0 -0
  175. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/functions/chatlists.py +0 -0
  176. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/functions/conference.py +0 -0
  177. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/functions/contacts.py +0 -0
  178. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/functions/folders.py +0 -0
  179. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/functions/help.py +0 -0
  180. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/functions/langpack.py +0 -0
  181. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/functions/messages.py +0 -0
  182. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/functions/payments.py +0 -0
  183. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/functions/phone.py +0 -0
  184. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/functions/photos.py +0 -0
  185. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/functions/premium.py +0 -0
  186. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/functions/stats.py +0 -0
  187. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/functions/stories.py +0 -0
  188. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/functions/thirdParty.py +0 -0
  189. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/functions/updates.py +0 -0
  190. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/functions/upload.py +0 -0
  191. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/functions/users.py +0 -0
  192. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/patched/__init__.py +0 -0
  193. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/tlobject.py +0 -0
  194. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/types/__init__.py +0 -0
  195. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/types/account.py +0 -0
  196. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/types/auth.py +0 -0
  197. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/types/bots.py +0 -0
  198. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/types/channels.py +0 -0
  199. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/types/chatlists.py +0 -0
  200. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/types/conference.py +0 -0
  201. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/types/contacts.py +0 -0
  202. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/types/help.py +0 -0
  203. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/types/messages.py +0 -0
  204. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/types/payments.py +0 -0
  205. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/types/phone.py +0 -0
  206. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/types/photos.py +0 -0
  207. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/types/premium.py +0 -0
  208. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/types/stats.py +0 -0
  209. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/types/stickers.py +0 -0
  210. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/types/storage.py +0 -0
  211. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/types/stories.py +0 -0
  212. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/types/thirdParty.py +0 -0
  213. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/types/update.py +0 -0
  214. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/types/updates.py +0 -0
  215. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/types/upload.py +0 -0
  216. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/tl/types/users.py +0 -0
  217. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/types.py +0 -0
  218. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/_engine/utils.py +0 -0
  219. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/admin.py +0 -0
  220. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/afk.py +0 -0
  221. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/cli.py +0 -0
  222. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/client/__init__.py +0 -0
  223. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/client/chat_mixin.py +0 -0
  224. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/client/conversation.py +0 -0
  225. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/client/media_mixin.py +0 -0
  226. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/compat.py +0 -0
  227. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/config.py +0 -0
  228. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/errors/__init__.py +0 -0
  229. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/errors/exceptions.py +0 -0
  230. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/events/__init__.py +0 -0
  231. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/events/album.py +0 -0
  232. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/events/base.py +0 -0
  233. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/events/callback.py +0 -0
  234. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/events/chat_action.py +0 -0
  235. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/events/edited.py +0 -0
  236. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/events/inline.py +0 -0
  237. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/events/message.py +0 -0
  238. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/events/message_deleted.py +0 -0
  239. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/events/message_read.py +0 -0
  240. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/events/user_update.py +0 -0
  241. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/filters/__init__.py +0 -0
  242. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/filters/filters.py +0 -0
  243. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/fsm/__init__.py +0 -0
  244. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/fsm/state.py +0 -0
  245. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/middleware/__init__.py +0 -0
  246. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/middleware/base.py +0 -0
  247. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/middleware/rate_limit.py +0 -0
  248. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/mirror.py +0 -0
  249. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/models/__init__.py +0 -0
  250. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/models/bot.py +0 -0
  251. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/models/chat.py +0 -0
  252. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/models/enums.py +0 -0
  253. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/models/media.py +0 -0
  254. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/models/message.py +0 -0
  255. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/models/objects.py +0 -0
  256. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/models/user.py +0 -0
  257. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/network/__init__.py +0 -0
  258. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/network/client.py +0 -0
  259. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/network/connection.py +0 -0
  260. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/network/http_client.py +0 -0
  261. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/network/mtproto.py +0 -0
  262. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/network/protocols.py +0 -0
  263. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/network/spluspy_adapter.py +0 -0
  264. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/network/transport.py +0 -0
  265. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/plugins/__init__.py +0 -0
  266. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/plugins/loader.py +0 -0
  267. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/py.typed +0 -0
  268. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/scheduler/__init__.py +0 -0
  269. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/scheduler/scheduler.py +0 -0
  270. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/session/__init__.py +0 -0
  271. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/session/base.py +0 -0
  272. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/session/memory.py +0 -0
  273. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/session/sqlite.py +0 -0
  274. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/session/string.py +0 -0
  275. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/storage/__init__.py +0 -0
  276. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/storage/base.py +0 -0
  277. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/storage/entity_cache.py +0 -0
  278. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/storage/memory.py +0 -0
  279. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/storage/postgres.py +0 -0
  280. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/storage/redis.py +0 -0
  281. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/storage/sqlite.py +0 -0
  282. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/sync/__init__.py +0 -0
  283. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/sync/client.py +0 -0
  284. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/utils/__init__.py +0 -0
  285. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/utils/batch.py +0 -0
  286. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/utils/cache.py +0 -0
  287. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/utils/chat_lock.py +0 -0
  288. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/utils/file_transfer.py +0 -0
  289. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/utils/helpers.py +0 -0
  290. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/utils/rate_limiter.py +0 -0
  291. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/utils/resolver.py +0 -0
  292. {spluspy-2.2.0 → spluspy-2.2.1}/spluspy/utils/version_check.py +0 -0
  293. {spluspy-2.2.0 → spluspy-2.2.1}/tests/__init__.py +0 -0
  294. {spluspy-2.2.0 → spluspy-2.2.1}/tests/test_client.py +0 -0
  295. {spluspy-2.2.0 → spluspy-2.2.1}/tests/test_filters.py +0 -0
  296. {spluspy-2.2.0 → spluspy-2.2.1}/tests/test_fsm.py +0 -0
  297. {spluspy-2.2.0 → spluspy-2.2.1}/tests/test_fsm_enhanced.py +0 -0
  298. {spluspy-2.2.0 → spluspy-2.2.1}/tests/test_middleware.py +0 -0
  299. {spluspy-2.2.0 → spluspy-2.2.1}/tests/test_rate_limiter.py +0 -0
  300. {spluspy-2.2.0 → spluspy-2.2.1}/tests/test_resolver.py +0 -0
  301. {spluspy-2.2.0 → spluspy-2.2.1}/tests/test_scheduler.py +0 -0
  302. {spluspy-2.2.0 → spluspy-2.2.1}/tests/test_session.py +0 -0
  303. {spluspy-2.2.0 → spluspy-2.2.1}/tests/test_storage.py +0 -0
  304. {spluspy-2.2.0 → spluspy-2.2.1}/tests/test_types.py +0 -0
  305. {spluspy-2.2.0 → spluspy-2.2.1}/tests/test_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: spluspy
3
- Version: 2.2.0
3
+ Version: 2.2.1
4
4
  Summary: A modern async Python library for interacting with Soroush Plus
5
5
  Project-URL: Homepage, https://github.com/Itskillmaster/spluspy
6
6
  Project-URL: Documentation, https://github.com/Itskillmaster/spluspy#readme
@@ -25,12 +25,12 @@ Classifier: Typing :: Typed
25
25
  Requires-Python: >=3.10
26
26
  Requires-Dist: aiohttp>=3.9.0
27
27
  Requires-Dist: aiosqlite>=0.19.0
28
- Requires-Dist: cryptg
29
28
  Requires-Dist: pyaes>=1.6
30
29
  Requires-Dist: rsa>=4.7
31
30
  Provides-Extra: all
32
31
  Requires-Dist: asyncpg>=0.27.0; extra == 'all'
33
32
  Requires-Dist: black>=23.0; extra == 'all'
33
+ Requires-Dist: cryptg; extra == 'all'
34
34
  Requires-Dist: mypy>=1.0; extra == 'all'
35
35
  Requires-Dist: orjson>=3.9.0; extra == 'all'
36
36
  Requires-Dist: pytest-asyncio>=0.21; extra == 'all'
@@ -51,6 +51,7 @@ Requires-Dist: asyncpg>=0.27.0; extra == 'postgres'
51
51
  Provides-Extra: redis
52
52
  Requires-Dist: redis>=4.0; extra == 'redis'
53
53
  Provides-Extra: speed
54
+ Requires-Dist: cryptg; extra == 'speed'
54
55
  Requires-Dist: orjson>=3.9.0; extra == 'speed'
55
56
  Requires-Dist: uvloop>=0.19.0; (sys_platform != 'win32') and extra == 'speed'
56
57
  Description-Content-Type: text/markdown
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "spluspy"
7
- version = "2.2.0"
7
+ version = "2.2.1"
8
8
  description = "A modern async Python library for interacting with Soroush Plus"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -39,11 +39,11 @@ dependencies = [
39
39
  "aiohttp>=3.9.0",
40
40
  "pyaes>=1.6",
41
41
  "rsa>=4.7",
42
- "cryptg",
43
42
  ]
44
43
 
45
44
  [project.optional-dependencies]
46
45
  speed = [
46
+ "cryptg",
47
47
  "orjson>=3.9.0",
48
48
  "uvloop>=0.19.0; sys_platform != 'win32'",
49
49
  ]
@@ -71,6 +71,7 @@ from spluspy.network.protocols import IAdapter, ITransport, IStorage, IEventDisp
71
71
  from spluspy.network.spluspy_adapter import BaseAdapter, SpluspyAdapter, TelethonAdapter, create_adapter
72
72
  from spluspy.utils.logger import (
73
73
  setup_logging,
74
+ setup_errors_only_logging,
74
75
  get_logger,
75
76
  set_level,
76
77
  log,
@@ -157,6 +158,7 @@ __all__ = [
157
158
  "MessageMirror",
158
159
  "MessageScheduler",
159
160
  "setup_logging",
161
+ "setup_errors_only_logging",
160
162
  "get_logger",
161
163
  "set_level",
162
164
  "log",
@@ -1,6 +1,6 @@
1
1
  """SplusPy version information."""
2
2
 
3
- __version__ = "2.2.0"
3
+ __version__ = "2.2.1"
4
4
  __author__ = "Ali Mirshekari"
5
5
  __license__ = "MIT"
6
6
  __url__ = "https://github.com/Itskillmaster/spluspy"
@@ -147,6 +147,17 @@ try:
147
147
  except OSError:
148
148
  _libssl = None
149
149
 
150
+ # Check if required functions exist in the loaded library
151
+ _has_aes_functions = False
152
+ if _libssl:
153
+ try:
154
+ _libssl.AES_set_encrypt_key
155
+ _libssl.AES_set_decrypt_key
156
+ _libssl.AES_ige_encrypt
157
+ _has_aes_functions = True
158
+ except AttributeError:
159
+ _libssl = None
160
+
150
161
  if not _libssl:
151
162
  decrypt_ige = None
152
163
  encrypt_ige = None
@@ -1,3 +1,3 @@
1
1
  # Versions should comply with PEP440.
2
2
  # This line is parsed in setup.py:
3
- __version__ = '2.2.0'
3
+ __version__ = '2.2.1'
@@ -390,6 +390,8 @@ class Client(MediaMixin, ChatManagementMixin):
390
390
  log_level: Python logging level (default ``CRITICAL`` = silent).
391
391
  log_file: Optional log file path; ``None`` for console-only.
392
392
  log_dir: Directory for log file storage.
393
+ errors_only: If ``True``, only show ERROR/CRITICAL logs on console,
394
+ suppressing noisy warnings (WebSocket, reconnect, etc.).
393
395
 
394
396
  Attributes:
395
397
  middleware: :class:`MiddlewareManager` for adding middleware.
@@ -422,13 +424,19 @@ class Client(MediaMixin, ChatManagementMixin):
422
424
  log_level: int = logging.CRITICAL,
423
425
  log_file: Optional[str] = None,
424
426
  log_dir: str = "logs",
427
+ errors_only: bool = False,
425
428
  ) -> None:
426
429
  # session_string takes highest precedence
427
430
  if session_string is not None:
428
431
  session = session_string
429
432
  elif session_name is not None:
430
433
  session = session_name
431
- setup_logging(level=log_level, log_file=log_file, log_dir=log_dir)
434
+ setup_logging(
435
+ level=log_level,
436
+ log_file=log_file,
437
+ log_dir=log_dir,
438
+ errors_only=errors_only,
439
+ )
432
440
  self.session = self._resolve_session(session)
433
441
  self.api_id = api_id
434
442
  self.api_hash = api_hash
@@ -78,6 +78,67 @@ class FileFormatter(logging.Formatter):
78
78
  )
79
79
 
80
80
 
81
+ # ============================================================
82
+ # Log filters
83
+ # ============================================================
84
+
85
+ # Keywords that indicate noisy/reconnect-related messages
86
+ _NOISY_KEYWORDS = (
87
+ "reconnect",
88
+ "disconnect",
89
+ "connection lost",
90
+ "connection restored",
91
+ "connection monitor",
92
+ "stale auth",
93
+ "auth key",
94
+ "closing current connection",
95
+ "keeping alive",
96
+ "keepalive",
97
+ "transport returned None",
98
+ "update loop crashed",
99
+ "update loop exited",
100
+ "resuming event loop",
101
+ "resetting webSocket",
102
+ "websocket reconnect",
103
+ "connected to",
104
+ "connected via",
105
+ "disconnected",
106
+ "attempt %d at connecting",
107
+ "automatic reconnection",
108
+ "max reconnection",
109
+ "reconnecting in",
110
+ "reconnected successfully",
111
+ "re-synced event handlers",
112
+ "server closed the connection",
113
+ "websocket closed while reading",
114
+ "connection closed while receiving data",
115
+ "asking for the current state",
116
+ "successfully fetched missed updates",
117
+ )
118
+
119
+
120
+ class ReconnectFilter(logging.Filter):
121
+ """Filter that only passes reconnect-related log messages."""
122
+
123
+ def filter(self, record: logging.LogRecord) -> bool:
124
+ msg = record.getMessage().lower()
125
+ return any(kw in msg for kw in _NOISY_KEYWORDS)
126
+
127
+
128
+ class ErrorsOnlyFilter(logging.Filter):
129
+ """Filter that passes only ERROR and CRITICAL logs, suppressing noisy warnings/info."""
130
+
131
+ def filter(self, record: logging.LogRecord) -> bool:
132
+ # Always pass ERROR and CRITICAL
133
+ if record.levelno >= logging.ERROR:
134
+ return True
135
+ # For WARNING/INFO, check if it's a noisy message
136
+ msg = record.getMessage().lower()
137
+ if any(kw in msg for kw in _NOISY_KEYWORDS):
138
+ return False
139
+ return True
140
+
141
+
81
142
  # ============================================================
82
143
  # Logging configuration
83
144
  # ============================================================
@@ -95,6 +156,8 @@ def setup_logging(
95
156
  backup_count: int = 5,
96
157
  use_color: bool = True,
97
158
  console_output: bool = True,
159
+ reconnect_only: bool = False,
160
+ errors_only: bool = False,
98
161
  ) -> None:
99
162
  """Set up the SplusPy logging system.
100
163
 
@@ -106,6 +169,8 @@ def setup_logging(
106
169
  backup_count: Number of backup files.
107
170
  use_color: Use colors in terminal output.
108
171
  console_output: Show logs in console.
172
+ reconnect_only: If True, only show reconnect-related logs on console.
173
+ errors_only: If True, only show ERROR/CRITICAL logs, suppress noisy warnings.
109
174
  """
110
175
  global _CONFIGURED, _LOG_FILE # noqa: PLW0603
111
176
 
@@ -127,7 +192,14 @@ def setup_logging(
127
192
  # Console handler
128
193
  if console_output:
129
194
  console_handler = logging.StreamHandler(sys.stderr)
130
- console_handler.setLevel(level)
195
+ if errors_only:
196
+ console_handler.setLevel(TRACE) # Capture all, filter by content
197
+ console_handler.addFilter(ErrorsOnlyFilter())
198
+ elif reconnect_only:
199
+ console_handler.setLevel(TRACE) # Capture all, filter by content
200
+ console_handler.addFilter(ReconnectFilter())
201
+ else:
202
+ console_handler.setLevel(level)
131
203
  console_handler.setFormatter(ColorFormatter(use_color=use_color))
132
204
  root.addHandler(console_handler)
133
205
 
@@ -280,3 +352,45 @@ def log() -> logging.Logger:
280
352
  if _default_logger is None:
281
353
  _default_logger = get_logger()
282
354
  return _default_logger
355
+
356
+
357
+ def setup_reconnect_logging(
358
+ log_file: Optional[str] = None,
359
+ use_color: bool = True,
360
+ ) -> None:
361
+ """Convenience function: only show reconnect-related logs on console.
362
+
363
+ All logs still go to the file (if log_file is set), but console only
364
+ shows connection/disconnection/reconnect messages.
365
+
366
+ Example:
367
+ >>> from spluspy.utils.logger import setup_reconnect_logging
368
+ >>> setup_reconnect_logging(log_file="bot.log")
369
+ """
370
+ setup_logging(
371
+ level="WARNING", # doesn't matter, ReconnectFilter controls output
372
+ log_file=log_file,
373
+ use_color=use_color,
374
+ reconnect_only=True,
375
+ )
376
+
377
+
378
+ def setup_errors_only_logging(
379
+ log_file: Optional[str] = None,
380
+ use_color: bool = True,
381
+ ) -> None:
382
+ """Convenience function: only show ERROR/CRITICAL logs on console.
383
+
384
+ Suppresses all noisy warnings (WebSocket, reconnect, etc.) while still
385
+ showing actual errors. All logs still go to file if log_file is set.
386
+
387
+ Example:
388
+ >>> from spluspy.utils.logger import setup_errors_only_logging
389
+ >>> setup_errors_only_logging(log_file="bot.log")
390
+ """
391
+ setup_logging(
392
+ level="TRACE",
393
+ log_file=log_file,
394
+ use_color=use_color,
395
+ errors_only=True,
396
+ )
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes