soroushthon 0.2.93.dev0__tar.gz → 0.2.95__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 (416) hide show
  1. soroushthon-0.2.95/ADAPTIVE_UPDATES.md +41 -0
  2. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/CAPABILITIES.json +311 -7
  3. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/CAPABILITIES.md +75 -1
  4. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/MANIFEST.in +3 -0
  5. soroushthon-0.2.95/PERFORMANCE_095.md +14 -0
  6. soroushthon-0.2.95/PKG-INFO +101 -0
  7. soroushthon-0.2.95/PLATFORMS.md +43 -0
  8. soroushthon-0.2.95/PUBLISHING.md +30 -0
  9. soroushthon-0.2.95/PYPI_README.md +74 -0
  10. soroushthon-0.2.95/README.md +82 -0
  11. soroushthon-0.2.95/SHORTCUTS.md +49 -0
  12. soroushthon-0.2.95/examples/ping_test.py +15 -0
  13. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/pyproject.toml +5 -2
  14. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/_updates/messagebox.py +5 -1
  15. soroushthon-0.2.95/soroushthon/client/adaptive_updates.py +286 -0
  16. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/client/soroushclient.py +84 -0
  17. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/client/telegrambaseclient.py +25 -2
  18. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/client/updates.py +82 -18
  19. soroushthon-0.2.95/soroushthon/version.py +1 -0
  20. soroushthon-0.2.95/soroushthon.egg-info/PKG-INFO +101 -0
  21. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon.egg-info/SOURCES.txt +7 -0
  22. soroushthon-0.2.95/tests/soroushthon/client/test_adaptive_updates.py +135 -0
  23. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/client/test_shortcuts.py +18 -0
  24. soroushthon-0.2.95/tests/soroushthon/client/test_update_pipeline.py +68 -0
  25. soroushthon-0.2.93.dev0/PKG-INFO +0 -78
  26. soroushthon-0.2.93.dev0/PLATFORMS.md +0 -44
  27. soroushthon-0.2.93.dev0/PUBLISHING.md +0 -48
  28. soroushthon-0.2.93.dev0/PYPI_README.md +0 -52
  29. soroushthon-0.2.93.dev0/README.md +0 -82
  30. soroushthon-0.2.93.dev0/soroushthon/version.py +0 -1
  31. soroushthon-0.2.93.dev0/soroushthon.egg-info/PKG-INFO +0 -78
  32. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/.github/workflows/check.yml +0 -0
  33. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/.gitignore +0 -0
  34. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/APK_POSTCHIN_AUDIT_2026-10-15.md +0 -0
  35. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/APK_REQUEST_IDS_2026-10-15.tsv +0 -0
  36. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/AUDIT.md +0 -0
  37. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/BOUND_CHAT_FIX_090.md +0 -0
  38. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/CALL_RESEARCH.md +0 -0
  39. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/CLIENT_LIBRARY_REVIEW_089.md +0 -0
  40. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/CONFERENCE.md +0 -0
  41. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/CONTACTS.md +0 -0
  42. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/DEV_GUIDE.md +0 -0
  43. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/ECOSYSTEM_REVIEW.md +0 -0
  44. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/FRAMEWORK.md +0 -0
  45. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/FULL_COVERAGE.md +0 -0
  46. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/GITHUB_TERMUX_093.md +0 -0
  47. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/GROUP_CHANNEL_BATCH20.md +0 -0
  48. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/INTERACTIONS.md +0 -0
  49. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/LARGE_CHANNEL_MEMBERSHIP_079.md +0 -0
  50. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/LARGE_CHANNEL_PAGINATION_081.md +0 -0
  51. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/LARGE_CHANNEL_SEARCH_TAIL_080.md +0 -0
  52. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/LARGE_CHANNEL_TARGET_082.md +0 -0
  53. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/LICENSE +0 -0
  54. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/LIVE_READONLY_ACCOUNT_BATCH5_2026-10-15.md +0 -0
  55. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/LIVE_READONLY_BATCH10_2026-10-16.md +0 -0
  56. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/LIVE_READONLY_BATCH11_2026-10-16.md +0 -0
  57. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/LIVE_READONLY_BATCH6_2026-10-15.md +0 -0
  58. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/LIVE_READONLY_BATCH7_2026-10-16.md +0 -0
  59. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/LIVE_READONLY_BATCH8_2026-10-16.md +0 -0
  60. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/LIVE_READONLY_BATCH9_2026-10-16.md +0 -0
  61. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/MEDIA.md +0 -0
  62. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/MEET_IN_KEEP_087.md +0 -0
  63. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/MEET_IN_LEAVE_085.md +0 -0
  64. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/MEET_IN_LEAVE_086.md +0 -0
  65. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/METHOD_COVERAGE.md +0 -0
  66. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/NEW_ACCOUNT_METHODS10.md +0 -0
  67. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/NOTICE.md +0 -0
  68. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/PARITY.md +0 -0
  69. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/PERFORMANCE_0.2.57.md +0 -0
  70. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/PERFORMANCE_API_088.md +0 -0
  71. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/POSTCHIN_CHANNEL_RESEARCH.md +0 -0
  72. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/PROJECT_HISTORY.md +0 -0
  73. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/PROTOCOL.md +0 -0
  74. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/PROTOCOL_LAB.md +0 -0
  75. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/RAW_API_SOURCE_AUDIT_2026-10-14.md +0 -0
  76. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/READONLY_ACCOUNT_BATCH5.md +0 -0
  77. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/READONLY_BATCH10.md +0 -0
  78. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/READONLY_BATCH11.md +0 -0
  79. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/READONLY_BATCH12.md +0 -0
  80. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/READONLY_BATCH5.md +0 -0
  81. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/READONLY_BATCH7.md +0 -0
  82. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/READONLY_BATCH8.md +0 -0
  83. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/READONLY_BATCH9.md +0 -0
  84. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/RELEASE_READINESS_091.md +0 -0
  85. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/RELEASE_READINESS_2026-10-16.md +0 -0
  86. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/RESEARCH_2026-10-08.md +0 -0
  87. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/RPC_422_AUDIT_2026-10-16.md +0 -0
  88. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/RUBIKA_REVIEW.md +0 -0
  89. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/SOROUSHTHON_CHAT_CHANNEL_ACCOUNT_METHOD_MAP_2026-10-15.md +0 -0
  90. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/SPLUSTHON_COMPAT.md +0 -0
  91. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/TELETHON_LICENSE +0 -0
  92. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/TERMUX_TESTING.md +0 -0
  93. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/VOICE_CALL_DISCOVERY_084.md +0 -0
  94. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/VOICE_CALL_LEAVE_083.md +0 -0
  95. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/account_batch15.py +0 -0
  96. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/batch10_account_next.py +0 -0
  97. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/batch10_new_methods.py +0 -0
  98. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/batch30_coverage.py +0 -0
  99. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/batch30_more.py +0 -0
  100. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/bound_chat_readonly_088.py +0 -0
  101. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/channel_post_probe.py +0 -0
  102. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/chat_admin_coverage.py +0 -0
  103. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/chat_read_coverage.py +0 -0
  104. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/cleanup_meet_087.py +0 -0
  105. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/coverage.py +0 -0
  106. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/event_coverage.py +0 -0
  107. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/event_handler_coverage.py +0 -0
  108. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/full_coverage.py +0 -0
  109. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/group_channel_batch16.py +0 -0
  110. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/group_channel_batch18.py +0 -0
  111. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/group_channel_batch19.py +0 -0
  112. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/group_channel_batch20.py +0 -0
  113. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/interactive_coverage.py +0 -0
  114. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/large_channel_bound_membership_089.py +0 -0
  115. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/large_channel_bound_membership_090.py +0 -0
  116. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/large_channel_bound_membership_091.py +0 -0
  117. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/large_channel_membership_079.py +0 -0
  118. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/large_channel_pagination_081.py +0 -0
  119. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/large_channel_search_tail_080.py +0 -0
  120. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/large_channel_target_082.py +0 -0
  121. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/list_accounts_readonly.py +0 -0
  122. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/media_coverage.py +0 -0
  123. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/media_fixtures/audio.mp3 +0 -0
  124. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/media_fixtures/document.txt +0 -0
  125. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/media_fixtures/photo.png +0 -0
  126. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/media_fixtures/video.mp4 +0 -0
  127. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/media_fixtures/voice.ogg +0 -0
  128. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/meet_in_coverage.py +0 -0
  129. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/meet_in_keep_087.py +0 -0
  130. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/meet_in_leave_085.py +0 -0
  131. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/meet_in_leave_086.py +0 -0
  132. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/meet_links_coverage.py +0 -0
  133. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/multipart_coverage.py +0 -0
  134. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/new_account_methods10.py +0 -0
  135. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/other_bio.py +0 -0
  136. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/profile.py +0 -0
  137. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/protocol_probe.py +0 -0
  138. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/readonly_account_batch5.py +0 -0
  139. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/readonly_batch10.py +0 -0
  140. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/readonly_batch11.py +0 -0
  141. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/readonly_batch12.py +0 -0
  142. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/readonly_batch13.py +0 -0
  143. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/readonly_batch14.py +0 -0
  144. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/readonly_batch5.py +0 -0
  145. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/readonly_batch7.py +0 -0
  146. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/readonly_batch8.py +0 -0
  147. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/readonly_batch9.py +0 -0
  148. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/remaining23_summary.py +0 -0
  149. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/remaining23_termux.py +0 -0
  150. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/self_write_coverage.py +0 -0
  151. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/stats_admin_coverage.py +0 -0
  152. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/update_lifecycle_coverage.py +0 -0
  153. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/voice_call_discovery_084.py +0 -0
  154. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/voice_call_probe_083.py +0 -0
  155. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/voice_call_probe_084.py +0 -0
  156. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/examples/whoami.py +0 -0
  157. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/setup.cfg +0 -0
  158. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/setup.py +0 -0
  159. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/__init__.py +0 -0
  160. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/_updates/__init__.py +0 -0
  161. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/_updates/entitycache.py +0 -0
  162. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/_updates/session.py +0 -0
  163. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/bound_chat.py +0 -0
  164. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/client/__init__.py +0 -0
  165. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/client/account.py +0 -0
  166. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/client/auth.py +0 -0
  167. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/client/chats.py +0 -0
  168. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/client/contacts.py +0 -0
  169. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/client/dialogs.py +0 -0
  170. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/client/downloads.py +0 -0
  171. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/client/interactions.py +0 -0
  172. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/client/messageparse.py +0 -0
  173. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/client/messages.py +0 -0
  174. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/client/uploads.py +0 -0
  175. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/client/users.py +0 -0
  176. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/conference.py +0 -0
  177. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/conference_audio.py +0 -0
  178. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/crypto/__init__.py +0 -0
  179. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/crypto/aes.py +0 -0
  180. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/crypto/aesctr.py +0 -0
  181. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/crypto/authkey.py +0 -0
  182. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/crypto/cdndecrypter.py +0 -0
  183. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/crypto/factorization.py +0 -0
  184. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/crypto/libssl.py +0 -0
  185. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/crypto/rsa.py +0 -0
  186. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/custom.py +0 -0
  187. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/errors/__init__.py +0 -0
  188. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/errors/common.py +0 -0
  189. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/errors/rpcbaseerrors.py +0 -0
  190. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/errors/rpcerrorlist.py +0 -0
  191. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/events/__init__.py +0 -0
  192. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/events/album.py +0 -0
  193. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/events/chataction.py +0 -0
  194. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/events/common.py +0 -0
  195. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/events/messagedeleted.py +0 -0
  196. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/events/messageedited.py +0 -0
  197. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/events/messageread.py +0 -0
  198. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/events/newmessage.py +0 -0
  199. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/events/raw.py +0 -0
  200. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/events/userupdate.py +0 -0
  201. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/extensions/__init__.py +0 -0
  202. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/extensions/binaryreader.py +0 -0
  203. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/extensions/html.py +0 -0
  204. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/extensions/markdown.py +0 -0
  205. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/extensions/messagepacker.py +0 -0
  206. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/filters.py +0 -0
  207. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/fsm.py +0 -0
  208. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/functions.py +0 -0
  209. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/helpers.py +0 -0
  210. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/hints.py +0 -0
  211. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/network/__init__.py +0 -0
  212. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/network/authenticator.py +0 -0
  213. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/network/connection/__init__.py +0 -0
  214. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/network/connection/connection.py +0 -0
  215. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/network/connection/http.py +0 -0
  216. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/network/connection/tcpabridged.py +0 -0
  217. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/network/connection/tcpfull.py +0 -0
  218. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/network/connection/tcpintermediate.py +0 -0
  219. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/network/connection/tcpmtproxy.py +0 -0
  220. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/network/connection/tcpobfuscated.py +0 -0
  221. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/network/connection/websocket.py +0 -0
  222. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/network/mtprotoplainsender.py +0 -0
  223. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/network/mtprotosender.py +0 -0
  224. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/network/mtprotostate.py +0 -0
  225. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/network/requeststate.py +0 -0
  226. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/password.py +0 -0
  227. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/requestiter.py +0 -0
  228. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/sessions/__init__.py +0 -0
  229. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/sessions/abstract.py +0 -0
  230. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/sessions/memory.py +0 -0
  231. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/sessions/sqlite.py +0 -0
  232. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/sessions/string.py +0 -0
  233. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/sync.py +0 -0
  234. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/__init__.py +0 -0
  235. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/alltlobjects.py +0 -0
  236. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/core/__init__.py +0 -0
  237. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/core/gzippacked.py +0 -0
  238. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/core/messagecontainer.py +0 -0
  239. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/core/rpcresult.py +0 -0
  240. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/core/tlmessage.py +0 -0
  241. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/custom/__init__.py +0 -0
  242. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/custom/adminlogevent.py +0 -0
  243. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/custom/chatgetter.py +0 -0
  244. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/custom/conversation.py +0 -0
  245. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/custom/dialog.py +0 -0
  246. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/custom/draft.py +0 -0
  247. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/custom/file.py +0 -0
  248. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/custom/forward.py +0 -0
  249. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/custom/inlineresult.py +0 -0
  250. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/custom/inlineresults.py +0 -0
  251. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/custom/inputsizedfile.py +0 -0
  252. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/custom/message.py +0 -0
  253. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/custom/messagebutton.py +0 -0
  254. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/custom/participantpermissions.py +0 -0
  255. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/custom/sendergetter.py +0 -0
  256. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/custom/types.py +0 -0
  257. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/functions/__init__.py +0 -0
  258. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/functions/account.py +0 -0
  259. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/functions/auth.py +0 -0
  260. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/functions/bots.py +0 -0
  261. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/functions/channels.py +0 -0
  262. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/functions/chatlists.py +0 -0
  263. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/functions/conference.py +0 -0
  264. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/functions/contacts.py +0 -0
  265. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/functions/folders.py +0 -0
  266. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/functions/help.py +0 -0
  267. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/functions/langpack.py +0 -0
  268. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/functions/messages.py +0 -0
  269. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/functions/payments.py +0 -0
  270. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/functions/phone.py +0 -0
  271. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/functions/photos.py +0 -0
  272. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/functions/postchin.py +0 -0
  273. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/functions/premium.py +0 -0
  274. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/functions/stats.py +0 -0
  275. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/functions/stories.py +0 -0
  276. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/functions/thirdParty.py +0 -0
  277. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/functions/updates.py +0 -0
  278. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/functions/upload.py +0 -0
  279. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/functions/users.py +0 -0
  280. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/patched/__init__.py +0 -0
  281. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/tlobject.py +0 -0
  282. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/types/__init__.py +0 -0
  283. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/types/account.py +0 -0
  284. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/types/auth.py +0 -0
  285. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/types/bots.py +0 -0
  286. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/types/channels.py +0 -0
  287. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/types/chatlists.py +0 -0
  288. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/types/conference.py +0 -0
  289. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/types/contacts.py +0 -0
  290. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/types/help.py +0 -0
  291. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/types/messages.py +0 -0
  292. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/types/payments.py +0 -0
  293. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/types/phone.py +0 -0
  294. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/types/photos.py +0 -0
  295. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/types/postchin.py +0 -0
  296. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/types/premium.py +0 -0
  297. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/types/stats.py +0 -0
  298. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/types/stickers.py +0 -0
  299. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/types/storage.py +0 -0
  300. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/types/stories.py +0 -0
  301. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/types/thirdParty.py +0 -0
  302. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/types/update.py +0 -0
  303. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/types/updates.py +0 -0
  304. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/types/upload.py +0 -0
  305. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/tl/types/users.py +0 -0
  306. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/types.py +0 -0
  307. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon/utils.py +0 -0
  308. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon.egg-info/dependency_links.txt +0 -0
  309. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon.egg-info/requires.txt +0 -0
  310. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon.egg-info/top_level.txt +0 -0
  311. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon_generator/__init__.py +0 -0
  312. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon_generator/data/api.tl +0 -0
  313. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon_generator/data/errors.csv +0 -0
  314. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon_generator/data/friendly.csv +0 -0
  315. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon_generator/data/html/404.html +0 -0
  316. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon_generator/data/html/core.html +0 -0
  317. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon_generator/data/html/css/docs.dark.css +0 -0
  318. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon_generator/data/html/css/docs.h4x0r.css +0 -0
  319. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon_generator/data/html/css/docs.light.css +0 -0
  320. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon_generator/data/html/img/arrow.svg +0 -0
  321. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon_generator/data/html/js/search.js +0 -0
  322. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon_generator/data/methods.csv +0 -0
  323. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon_generator/data/mtproto.tl +0 -0
  324. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon_generator/docswriter.py +0 -0
  325. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon_generator/generators/__init__.py +0 -0
  326. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon_generator/generators/docs.py +0 -0
  327. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon_generator/generators/errors.py +0 -0
  328. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon_generator/generators/tlobject.py +0 -0
  329. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon_generator/parsers/__init__.py +0 -0
  330. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon_generator/parsers/errors.py +0 -0
  331. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon_generator/parsers/methods.py +0 -0
  332. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon_generator/parsers/tlobject/__init__.py +0 -0
  333. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon_generator/parsers/tlobject/parser.py +0 -0
  334. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon_generator/parsers/tlobject/tlarg.py +0 -0
  335. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon_generator/parsers/tlobject/tlobject.py +0 -0
  336. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon_generator/sourcebuilder.py +0 -0
  337. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon_generator/syncerrors.py +0 -0
  338. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/soroushthon_generator/utils.py +0 -0
  339. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/__init__.py +0 -0
  340. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/__init__.py +0 -0
  341. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/client/__init__.py +0 -0
  342. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/client/test_account_batch15_routes.py +0 -0
  343. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/client/test_account_sessions.py +0 -0
  344. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/client/test_admin_log_routing.py +0 -0
  345. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/client/test_bound_chat.py +0 -0
  346. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/client/test_chat_member_search.py +0 -0
  347. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/client/test_chat_membership_and_pages.py +0 -0
  348. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/client/test_contacts.py +0 -0
  349. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/client/test_delete_messages.py +0 -0
  350. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/client/test_drafts.py +0 -0
  351. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/client/test_entity_cache.py +0 -0
  352. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/client/test_featured_stickers_cache.py +0 -0
  353. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/client/test_get_permissions_fallback.py +0 -0
  354. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/client/test_group_channel_batch16_report.py +0 -0
  355. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/client/test_group_channel_batch16_routes.py +0 -0
  356. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/client/test_group_channel_batch20.py +0 -0
  357. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/client/test_interactions.py +0 -0
  358. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/client/test_media_connection.py +0 -0
  359. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/client/test_message_mapping_privacy.py +0 -0
  360. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/client/test_messages.py +0 -0
  361. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/client/test_new10_routing.py +0 -0
  362. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/client/test_new_account_runner.py +0 -0
  363. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/client/test_postchin_apk_routing.py +0 -0
  364. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/client/test_profiles.py +0 -0
  365. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/client/test_read_acknowledge.py +0 -0
  366. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/client/test_readonly_account_batch5.py +0 -0
  367. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/client/test_readonly_batch13_routes.py +0 -0
  368. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/client/test_readonly_batch5.py +0 -0
  369. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/client/test_readonly_batch7.py +0 -0
  370. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/client/test_rejected_rpcs_preserved.py +0 -0
  371. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/client/test_stats_routing.py +0 -0
  372. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/client/test_unsupported_features.py +0 -0
  373. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/client/test_verified_large_membership.py +0 -0
  374. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/client/test_web_document.py +0 -0
  375. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/crypto/__init__.py +0 -0
  376. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/crypto/test_rsa.py +0 -0
  377. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/events/__init__.py +0 -0
  378. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/events/test_chataction.py +0 -0
  379. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/events/test_dispatch.py +0 -0
  380. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/events/test_registration.py +0 -0
  381. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/extensions/__init__.py +0 -0
  382. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/extensions/test_html.py +0 -0
  383. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/extensions/test_markdown.py +0 -0
  384. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/test_account_scope.py +0 -0
  385. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/test_batch10_account_next.py +0 -0
  386. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/test_batch10_new_methods.py +0 -0
  387. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/test_chat_admin_coverage.py +0 -0
  388. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/test_cleanup_meet_087.py +0 -0
  389. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/test_conference_audio.py +0 -0
  390. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/test_coverage_runner.py +0 -0
  391. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/test_event_coverage_diagnostics.py +0 -0
  392. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/test_event_handler_coverage.py +0 -0
  393. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/test_framework_helpers.py +0 -0
  394. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/test_full_coverage.py +0 -0
  395. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/test_helpers.py +0 -0
  396. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/test_interactive_coverage.py +0 -0
  397. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/test_list_accounts_readonly.py +0 -0
  398. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/test_media_attributes.py +0 -0
  399. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/test_media_coverage.py +0 -0
  400. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/test_meet_in_keep_087.py +0 -0
  401. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/test_multipart_coverage.py +0 -0
  402. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/test_pickle.py +0 -0
  403. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/test_protocol_lab.py +0 -0
  404. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/test_readonly_batch11.py +0 -0
  405. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/test_readonly_batch12.py +0 -0
  406. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/test_sessions.py +0 -0
  407. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/test_update_lifecycle_coverage.py +0 -0
  408. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/test_utils.py +0 -0
  409. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/test_websocket.py +0 -0
  410. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/tl/__init__.py +0 -0
  411. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tests/soroushthon/tl/test_serialization.py +0 -0
  412. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tools/audit_upstreams.py +0 -0
  413. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tools/build_capability_inventory.py +0 -0
  414. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tools/check_release.py +0 -0
  415. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tools/generate.py +0 -0
  416. {soroushthon-0.2.93.dev0 → soroushthon-0.2.95}/tools/protocol_lab.py +0 -0
@@ -0,0 +1,41 @@
1
+ # بازیابی انتخابی رویدادهای دیررس گروه
2
+
3
+ وقتی حساب در گروه‌های زیادی عضو است، پیام‌های بعضی گروه‌ها ممکن است دیرتر از زمان ثبت‌شدهٔ خود پیام به برنامه برسند. قابلیت آزمایشی این نسخه زمان پیام پذیرفته‌شده از اتصال زنده را با ساعت دستگاه مقایسه می‌کند. اگر از یک گروه دو پیام دیررس نزدیک به هم برسد، برای مدت محدودی اختلاف رویدادهای همان گروه را از سرور درخواست می‌کند. این قابلیت همهٔ گروه‌ها را دوره‌ای نمی‌پیماید.
4
+
5
+ ## فعال‌سازی برای آزمایش
6
+
7
+ این قابلیت در سورس انتشار `0.2.95` قرار دارد و به‌صورت پیش‌فرض خاموش است. پس از نصب نسخهٔ جدید، در ساخت کلاینت بنویس:
8
+
9
+ ```python
10
+ from soroushthon import SoroushClient
11
+
12
+ client = SoroushClient.for_account("main", adaptive_update_polling=True)
13
+
14
+
15
+ @client.on_message()
16
+ async def on_message(event):
17
+ print(event.chat_id, event.id)
18
+
19
+
20
+ client.start()
21
+ client.run_until_disconnected()
22
+ ```
23
+
24
+ برای دیدن شمارنده‌ها در برنامهٔ در حال اجرا:
25
+
26
+ ```python
27
+ print(client.adaptive_update_stats())
28
+ ```
29
+
30
+ خروجی شامل `hot_groups`، `polls`، `recovered_updates`، `live_wins`، `busy_skips`، `errors`، `observed_messages` و `lag_p95_seconds` است. مقدار آخر صدک تقریبی تأخیر در حداکثر ۵۱۲ پیام گروهی اخیر است؛ اختلاف ساعت دستگاه و سرور روی آن اثر می‌گذارد. قبل از مقایسه، ساعت دستگاه را با زمان شبکه هماهنگ کن و روی یک حساب یکسان مدتی با گزینهٔ خاموش و روشن آزمایش کن.
31
+
32
+ ## حدود و رفتار
33
+
34
+ - تشخیص پس از ۲۰ ثانیهٔ آغاز اتصال و با آستانهٔ دو ثانیه تأخیر شروع می‌شود. فقط گروه‌هایی که نوعشان در حافظهٔ کلاینت شناخته شده و `pts` معتبر دارند بررسی می‌شوند.
35
+ - بعد از اتصال مجدد، نوع گروه‌های ذخیره‌شده ممکن است موقتاً فقط به‌صورت کانال شناخته شود؛ در این حالت تا دریافت اطلاعات تازهٔ گروه، بازیابی انتخابی آن فعال نمی‌شود.
36
+ - در هر حساب حداکثر ۸ گروهِ فعال هم‌زمان نگه داشته می‌شود. بین درخواست‌های حساب دست‌کم ۲٫۵ ثانیه فاصله است. گروه‌های پررفت‌وآمد موقتاً کنار گذاشته می‌شوند تا بار اضافه تأخیر را بیشتر نکند.
37
+ - پاسخ سرور تنها وقتی به حالت رویدادها اعمال می‌شود که در این فاصله رویداد زنده یا بازیابی معمول جلو نیفتاده باشد. رویدادهای بازیابی‌شده از مسیر عادی هندلرها عبور می‌کنند؛ رویداد تکراری نباید دوباره پردازش شود.
38
+ - اگر سرور پاسخ `ChannelDifferenceTooLong` بدهد، این مسیر از پرش خودکار به انتهای تاریخچه خودداری می‌کند. در آن حالت بازیابیِ کامل رویدادهای قدیمی تضمین نمی‌شود.
39
+ - این قابلیت برای پیام‌های گروهی کانال‌پایه است. برای حساب‌ها یا شبکه‌هایی با وضعیت متفاوت، کاهش تأخیر هنوز باید به‌صورت زنده سنجیده شود. تعداد درخواست‌ها را با `polls` و خطاها را با `errors` کنترل کن.
40
+
41
+ برای خاموش‌کردن، `adaptive_update_polling=True` را از سازنده بردار و برنامه را دوباره اجرا کن.
@@ -1744,10 +1744,18 @@
1744
1744
  "missing_direct_raw_refs": [],
1745
1745
  "status": "not_live_verified"
1746
1746
  },
1747
+ {
1748
+ "name": "UpdateMethods.adaptive_update_stats",
1749
+ "kind": "sync/property",
1750
+ "source": "soroushthon/client/updates.py:42",
1751
+ "direct_raw_refs": [],
1752
+ "missing_direct_raw_refs": [],
1753
+ "status": "not_live_verified"
1754
+ },
1747
1755
  {
1748
1756
  "name": "UpdateMethods.add_event_handler",
1749
1757
  "kind": "sync/property",
1750
- "source": "soroushthon/client/updates.py:145",
1758
+ "source": "soroushthon/client/updates.py:165",
1751
1759
  "direct_raw_refs": [],
1752
1760
  "missing_direct_raw_refs": [],
1753
1761
  "status": "not_live_verified"
@@ -1755,7 +1763,7 @@
1755
1763
  {
1756
1764
  "name": "UpdateMethods.catch_up",
1757
1765
  "kind": "async",
1758
- "source": "soroushthon/client/updates.py:254",
1766
+ "source": "soroushthon/client/updates.py:274",
1759
1767
  "direct_raw_refs": [],
1760
1768
  "missing_direct_raw_refs": [],
1761
1769
  "status": "not_live_verified"
@@ -1763,7 +1771,7 @@
1763
1771
  {
1764
1772
  "name": "UpdateMethods.list_event_handlers",
1765
1773
  "kind": "sync/property",
1766
- "source": "soroushthon/client/updates.py:233",
1774
+ "source": "soroushthon/client/updates.py:253",
1767
1775
  "direct_raw_refs": [],
1768
1776
  "missing_direct_raw_refs": [],
1769
1777
  "status": "not_live_verified"
@@ -1771,7 +1779,7 @@
1771
1779
  {
1772
1780
  "name": "UpdateMethods.on",
1773
1781
  "kind": "sync/property",
1774
- "source": "soroushthon/client/updates.py:118",
1782
+ "source": "soroushthon/client/updates.py:138",
1775
1783
  "direct_raw_refs": [],
1776
1784
  "missing_direct_raw_refs": [],
1777
1785
  "status": "not_live_verified"
@@ -1779,7 +1787,7 @@
1779
1787
  {
1780
1788
  "name": "UpdateMethods.remove_event_handler",
1781
1789
  "kind": "sync/property",
1782
- "source": "soroushthon/client/updates.py:194",
1790
+ "source": "soroushthon/client/updates.py:214",
1783
1791
  "direct_raw_refs": [],
1784
1792
  "missing_direct_raw_refs": [],
1785
1793
  "status": "not_live_verified"
@@ -1787,7 +1795,7 @@
1787
1795
  {
1788
1796
  "name": "UpdateMethods.run_until_disconnected",
1789
1797
  "kind": "sync/property",
1790
- "source": "soroushthon/client/updates.py:71",
1798
+ "source": "soroushthon/client/updates.py:91",
1791
1799
  "direct_raw_refs": [],
1792
1800
  "missing_direct_raw_refs": [],
1793
1801
  "status": "not_live_verified"
@@ -1795,13 +1803,21 @@
1795
1803
  {
1796
1804
  "name": "UpdateMethods.set_receive_updates",
1797
1805
  "kind": "async",
1798
- "source": "soroushthon/client/updates.py:54",
1806
+ "source": "soroushthon/client/updates.py:74",
1799
1807
  "direct_raw_refs": [
1800
1808
  "updates.GetStateRequest"
1801
1809
  ],
1802
1810
  "missing_direct_raw_refs": [],
1803
1811
  "status": "not_live_verified"
1804
1812
  },
1813
+ {
1814
+ "name": "UpdateMethods.update_pipeline_stats",
1815
+ "kind": "sync/property",
1816
+ "source": "soroushthon/client/updates.py:47",
1817
+ "direct_raw_refs": [],
1818
+ "missing_direct_raw_refs": [],
1819
+ "status": "not_live_verified"
1820
+ },
1805
1821
  {
1806
1822
  "name": "UploadMethods.send_audio",
1807
1823
  "kind": "async",
@@ -1958,50 +1974,186 @@
1958
1974
  }
1959
1975
  ],
1960
1976
  "shortcuts": [
1977
+ {
1978
+ "name": "admin_log",
1979
+ "alias_of": "ChatMethods.get_admin_log"
1980
+ },
1981
+ {
1982
+ "name": "audio",
1983
+ "alias_of": "UploadMethods.send_audio"
1984
+ },
1985
+ {
1986
+ "name": "authorizations",
1987
+ "alias_of": "AccountMethods.get_authorizations"
1988
+ },
1989
+ {
1990
+ "name": "authorized",
1991
+ "alias_of": "UserMethods.is_user_authorized"
1992
+ },
1993
+ {
1994
+ "name": "auto_download",
1995
+ "alias_of": "AccountMethods.get_auto_download_settings"
1996
+ },
1961
1997
  {
1962
1998
  "name": "bio",
1963
1999
  "alias_of": "UserMethods.get_user_bio"
1964
2000
  },
2001
+ {
2002
+ "name": "block",
2003
+ "alias_of": "ContactMethods.block_user"
2004
+ },
2005
+ {
2006
+ "name": "blocked",
2007
+ "alias_of": "ContactMethods.get_blocked"
2008
+ },
1965
2009
  {
1966
2010
  "name": "call_info",
1967
2011
  "alias_of": "InteractionMethods.get_group_call"
1968
2012
  },
2013
+ {
2014
+ "name": "call_members",
2015
+ "alias_of": "InteractionMethods.get_group_call_participants"
2016
+ },
2017
+ {
2018
+ "name": "chat_info",
2019
+ "alias_of": "ChatMethods.get_chat_info"
2020
+ },
2021
+ {
2022
+ "name": "common_chats",
2023
+ "alias_of": "MessageMethods.get_common_chats"
2024
+ },
1969
2025
  {
1970
2026
  "name": "contact",
1971
2027
  "alias_of": "InteractionMethods.send_contact"
1972
2028
  },
2029
+ {
2030
+ "name": "contacts",
2031
+ "alias_of": "ContactMethods.get_contacts"
2032
+ },
1973
2033
  {
1974
2034
  "name": "delete",
1975
2035
  "alias_of": "MessageMethods.delete_messages"
1976
2036
  },
2037
+ {
2038
+ "name": "dialog",
2039
+ "alias_of": "DialogMethods.get_peer_dialog"
2040
+ },
2041
+ {
2042
+ "name": "dialog_filters",
2043
+ "alias_of": "DialogMethods.get_dialog_filters"
2044
+ },
1977
2045
  {
1978
2046
  "name": "dialogs",
1979
2047
  "alias_of": "DialogMethods.get_dialogs"
1980
2048
  },
2049
+ {
2050
+ "name": "document",
2051
+ "alias_of": "UploadMethods.send_document"
2052
+ },
1981
2053
  {
1982
2054
  "name": "download",
1983
2055
  "alias_of": "DownloadMethods.download_media"
1984
2056
  },
2057
+ {
2058
+ "name": "drafts",
2059
+ "alias_of": "DialogMethods.get_drafts"
2060
+ },
1985
2061
  {
1986
2062
  "name": "edit",
1987
2063
  "alias_of": "MessageMethods.edit_message"
1988
2064
  },
2065
+ {
2066
+ "name": "end_call",
2067
+ "alias_of": "InteractionMethods.end_group_call"
2068
+ },
2069
+ {
2070
+ "name": "entity",
2071
+ "alias_of": "UserMethods.get_entity"
2072
+ },
1989
2073
  {
1990
2074
  "name": "file",
1991
2075
  "alias_of": "UploadMethods.send_file"
1992
2076
  },
2077
+ {
2078
+ "name": "find_contacts",
2079
+ "alias_of": "ContactMethods.search_contacts"
2080
+ },
2081
+ {
2082
+ "name": "find_members",
2083
+ "alias_of": "ChatMethods.search_chat_members"
2084
+ },
1993
2085
  {
1994
2086
  "name": "forward",
1995
2087
  "alias_of": "MessageMethods.forward_messages"
1996
2088
  },
2089
+ {
2090
+ "name": "full_user",
2091
+ "alias_of": "UserMethods.get_full_user"
2092
+ },
2093
+ {
2094
+ "name": "history",
2095
+ "alias_of": "MessageMethods.iter_messages"
2096
+ },
2097
+ {
2098
+ "name": "history_page",
2099
+ "alias_of": "MessageMethods.get_chat_history_page"
2100
+ },
2101
+ {
2102
+ "name": "input_entity",
2103
+ "alias_of": "UserMethods.get_input_entity"
2104
+ },
2105
+ {
2106
+ "name": "invite",
2107
+ "alias_of": "ChatMethods.invite_chat_members"
2108
+ },
2109
+ {
2110
+ "name": "invite_links",
2111
+ "alias_of": "ChatMethods.get_invite_links"
2112
+ },
2113
+ {
2114
+ "name": "is_member",
2115
+ "alias_of": "ChatMethods.is_chat_member"
2116
+ },
2117
+ {
2118
+ "name": "iter_chats",
2119
+ "alias_of": "DialogMethods.iter_dialogs"
2120
+ },
2121
+ {
2122
+ "name": "iter_members",
2123
+ "alias_of": "ChatMethods.iter_participants"
2124
+ },
2125
+ {
2126
+ "name": "join_invite",
2127
+ "alias_of": "ChatMethods.join_by_invite"
2128
+ },
2129
+ {
2130
+ "name": "join_public",
2131
+ "alias_of": "ChatMethods.join_public_chat"
2132
+ },
2133
+ {
2134
+ "name": "kick",
2135
+ "alias_of": "ChatMethods.kick_participant"
2136
+ },
2137
+ {
2138
+ "name": "leave_call",
2139
+ "alias_of": "InteractionMethods.leave_group_call"
2140
+ },
1997
2141
  {
1998
2142
  "name": "location",
1999
2143
  "alias_of": "InteractionMethods.send_location"
2000
2144
  },
2145
+ {
2146
+ "name": "mark_read",
2147
+ "alias_of": "MessageMethods.send_read_acknowledge"
2148
+ },
2001
2149
  {
2002
2150
  "name": "me",
2003
2151
  "alias_of": "UserMethods.get_me"
2004
2152
  },
2153
+ {
2154
+ "name": "media_page",
2155
+ "alias_of": "MessageMethods.get_chat_media_page"
2156
+ },
2005
2157
  {
2006
2158
  "name": "meet",
2007
2159
  "alias_of": "InteractionMethods.create_meet"
@@ -2014,10 +2166,66 @@
2014
2166
  "name": "meet_links",
2015
2167
  "alias_of": "InteractionMethods.get_chat_meet_links"
2016
2168
  },
2169
+ {
2170
+ "name": "member_status",
2171
+ "alias_of": "ChatMethods.get_chat_member_status"
2172
+ },
2173
+ {
2174
+ "name": "members",
2175
+ "alias_of": "ChatMethods.get_participants"
2176
+ },
2177
+ {
2178
+ "name": "mentions_page",
2179
+ "alias_of": "MessageMethods.get_chat_mentions_page"
2180
+ },
2017
2181
  {
2018
2182
  "name": "messages",
2019
2183
  "alias_of": "MessageMethods.get_messages"
2020
2184
  },
2185
+ {
2186
+ "name": "new_channel",
2187
+ "alias_of": "ChatMethods.create_channel"
2188
+ },
2189
+ {
2190
+ "name": "new_conference",
2191
+ "alias_of": "InteractionMethods.create_conference"
2192
+ },
2193
+ {
2194
+ "name": "new_group",
2195
+ "alias_of": "ChatMethods.create_group"
2196
+ },
2197
+ {
2198
+ "name": "notifications",
2199
+ "alias_of": "AccountMethods.get_chat_notifications"
2200
+ },
2201
+ {
2202
+ "name": "online_count",
2203
+ "alias_of": "ChatMethods.get_group_online_count"
2204
+ },
2205
+ {
2206
+ "name": "peer_id",
2207
+ "alias_of": "UserMethods.get_peer_id"
2208
+ },
2209
+ {
2210
+ "name": "peer_settings",
2211
+ "alias_of": "AccountMethods.get_peer_settings"
2212
+ },
2213
+ {
2214
+ "name": "permissions",
2215
+ "alias_of": "ChatMethods.get_permissions"
2216
+ },
2217
+ {
2218
+ "name": "photo",
2219
+ "alias_of": "UploadMethods.send_photo"
2220
+ },
2221
+ {
2222
+ "name": "pin",
2223
+ "alias_of": "MessageMethods.pin_message"
2224
+ },
2225
+ {
2226
+ "name": "pinned_dialogs",
2227
+ "alias_of": "DialogMethods.get_pinned_dialogs"
2228
+ },
2021
2229
  {
2022
2230
  "name": "poll",
2023
2231
  "alias_of": "InteractionMethods.send_poll"
@@ -2030,6 +2238,18 @@
2030
2238
  "name": "poll_voters",
2031
2239
  "alias_of": "InteractionMethods.get_poll_votes"
2032
2240
  },
2241
+ {
2242
+ "name": "post_views",
2243
+ "alias_of": "ChatMethods.get_channel_post_views"
2244
+ },
2245
+ {
2246
+ "name": "primary_invite",
2247
+ "alias_of": "ChatMethods.get_chat_primary_invite_link"
2248
+ },
2249
+ {
2250
+ "name": "privacy",
2251
+ "alias_of": "AccountMethods.get_global_privacy_settings"
2252
+ },
2033
2253
  {
2034
2254
  "name": "react",
2035
2255
  "alias_of": "InteractionMethods.send_reaction"
@@ -2042,25 +2262,109 @@
2042
2262
  "name": "reactions",
2043
2263
  "alias_of": "InteractionMethods.get_message_reactions"
2044
2264
  },
2265
+ {
2266
+ "name": "readers",
2267
+ "alias_of": "MessageMethods.get_message_read_participants"
2268
+ },
2269
+ {
2270
+ "name": "replies",
2271
+ "alias_of": "MessageMethods.get_chat_replies"
2272
+ },
2273
+ {
2274
+ "name": "scheduled",
2275
+ "alias_of": "MessageMethods.get_scheduled_messages"
2276
+ },
2277
+ {
2278
+ "name": "search_all",
2279
+ "alias_of": "MessageMethods.search_all_messages"
2280
+ },
2281
+ {
2282
+ "name": "search_chat",
2283
+ "alias_of": "MessageMethods.search_chat_messages"
2284
+ },
2045
2285
  {
2046
2286
  "name": "send",
2047
2287
  "alias_of": "MessageMethods.send_message"
2048
2288
  },
2289
+ {
2290
+ "name": "send_as_peers",
2291
+ "alias_of": "ChatMethods.get_send_as_peers"
2292
+ },
2293
+ {
2294
+ "name": "send_scheduled",
2295
+ "alias_of": "MessageMethods.send_scheduled_messages_now"
2296
+ },
2297
+ {
2298
+ "name": "set_auto_download",
2299
+ "alias_of": "AccountMethods.save_auto_download_settings"
2300
+ },
2301
+ {
2302
+ "name": "set_description",
2303
+ "alias_of": "ChatMethods.set_chat_description"
2304
+ },
2305
+ {
2306
+ "name": "set_notifications",
2307
+ "alias_of": "AccountMethods.update_chat_notifications"
2308
+ },
2309
+ {
2310
+ "name": "set_privacy",
2311
+ "alias_of": "AccountMethods.set_global_privacy_settings"
2312
+ },
2313
+ {
2314
+ "name": "set_reactions",
2315
+ "alias_of": "ChatMethods.set_chat_reactions"
2316
+ },
2317
+ {
2318
+ "name": "set_title",
2319
+ "alias_of": "ChatMethods.set_chat_title"
2320
+ },
2321
+ {
2322
+ "name": "set_username",
2323
+ "alias_of": "AccountMethods.update_username"
2324
+ },
2049
2325
  {
2050
2326
  "name": "start_call",
2051
2327
  "alias_of": "InteractionMethods.start_group_call"
2052
2328
  },
2329
+ {
2330
+ "name": "unblock",
2331
+ "alias_of": "ContactMethods.unblock_user"
2332
+ },
2333
+ {
2334
+ "name": "unpin",
2335
+ "alias_of": "MessageMethods.unpin_message"
2336
+ },
2053
2337
  {
2054
2338
  "name": "unreact",
2055
2339
  "alias_of": "InteractionMethods.remove_reaction"
2056
2340
  },
2341
+ {
2342
+ "name": "unread_mentions",
2343
+ "alias_of": "MessageMethods.get_unread_mentions"
2344
+ },
2345
+ {
2346
+ "name": "unread_reactions",
2347
+ "alias_of": "MessageMethods.get_unread_reactions"
2348
+ },
2057
2349
  {
2058
2350
  "name": "upload",
2059
2351
  "alias_of": "UploadMethods.upload_file"
2060
2352
  },
2353
+ {
2354
+ "name": "video",
2355
+ "alias_of": "UploadMethods.send_video"
2356
+ },
2357
+ {
2358
+ "name": "voice",
2359
+ "alias_of": "UploadMethods.send_voice"
2360
+ },
2061
2361
  {
2062
2362
  "name": "vote",
2063
2363
  "alias_of": "InteractionMethods.vote_poll"
2364
+ },
2365
+ {
2366
+ "name": "web_preview",
2367
+ "alias_of": "MessageMethods.get_web_page_preview"
2064
2368
  }
2065
2369
  ],
2066
2370
  "raw_functions": [
@@ -4,7 +4,7 @@
4
4
  پشتیبانی سرور سروش یا نتیجهٔ آزمون زنده را ثابت نمی‌کند. فایل
5
5
  `CAPABILITIES.json` نام و امضای تمام درخواست‌های خام را نیز نگه می‌دارد.
6
6
 
7
- متدهای عمومی mixinهای کلاینت: **203**؛ نام‌های کوتاه همان متدها: **26**؛
7
+ متدهای عمومی mixinهای کلاینت: **205**؛ نام‌های کوتاه همان متدها: **98**؛
8
8
  درخواست‌های خام TL: **368**؛ انواع TL: **1271**.
9
9
  نام کوتاه توانایی جداگانه یا درخواست تازه به سرور اضافه نمی‌کند.
10
10
  این شمارش سه ثبت‌کنندهٔ رویداد `SoroushClient.on_message/on_edited/on_raw` و
@@ -14,32 +14,104 @@
14
14
 
15
15
  | نام کوتاه | همان متد اصلی |
16
16
  | --- | --- |
17
+ | `admin_log` | `ChatMethods.get_admin_log` |
18
+ | `audio` | `UploadMethods.send_audio` |
19
+ | `authorizations` | `AccountMethods.get_authorizations` |
20
+ | `authorized` | `UserMethods.is_user_authorized` |
21
+ | `auto_download` | `AccountMethods.get_auto_download_settings` |
17
22
  | `bio` | `UserMethods.get_user_bio` |
23
+ | `block` | `ContactMethods.block_user` |
24
+ | `blocked` | `ContactMethods.get_blocked` |
18
25
  | `call_info` | `InteractionMethods.get_group_call` |
26
+ | `call_members` | `InteractionMethods.get_group_call_participants` |
27
+ | `chat_info` | `ChatMethods.get_chat_info` |
28
+ | `common_chats` | `MessageMethods.get_common_chats` |
19
29
  | `contact` | `InteractionMethods.send_contact` |
30
+ | `contacts` | `ContactMethods.get_contacts` |
20
31
  | `delete` | `MessageMethods.delete_messages` |
32
+ | `dialog` | `DialogMethods.get_peer_dialog` |
33
+ | `dialog_filters` | `DialogMethods.get_dialog_filters` |
21
34
  | `dialogs` | `DialogMethods.get_dialogs` |
35
+ | `document` | `UploadMethods.send_document` |
22
36
  | `download` | `DownloadMethods.download_media` |
37
+ | `drafts` | `DialogMethods.get_drafts` |
23
38
  | `edit` | `MessageMethods.edit_message` |
39
+ | `end_call` | `InteractionMethods.end_group_call` |
40
+ | `entity` | `UserMethods.get_entity` |
24
41
  | `file` | `UploadMethods.send_file` |
42
+ | `find_contacts` | `ContactMethods.search_contacts` |
43
+ | `find_members` | `ChatMethods.search_chat_members` |
25
44
  | `forward` | `MessageMethods.forward_messages` |
45
+ | `full_user` | `UserMethods.get_full_user` |
46
+ | `history` | `MessageMethods.iter_messages` |
47
+ | `history_page` | `MessageMethods.get_chat_history_page` |
48
+ | `input_entity` | `UserMethods.get_input_entity` |
49
+ | `invite` | `ChatMethods.invite_chat_members` |
50
+ | `invite_links` | `ChatMethods.get_invite_links` |
51
+ | `is_member` | `ChatMethods.is_chat_member` |
52
+ | `iter_chats` | `DialogMethods.iter_dialogs` |
53
+ | `iter_members` | `ChatMethods.iter_participants` |
54
+ | `join_invite` | `ChatMethods.join_by_invite` |
55
+ | `join_public` | `ChatMethods.join_public_chat` |
56
+ | `kick` | `ChatMethods.kick_participant` |
57
+ | `leave_call` | `InteractionMethods.leave_group_call` |
26
58
  | `location` | `InteractionMethods.send_location` |
59
+ | `mark_read` | `MessageMethods.send_read_acknowledge` |
27
60
  | `me` | `UserMethods.get_me` |
61
+ | `media_page` | `MessageMethods.get_chat_media_page` |
28
62
  | `meet` | `InteractionMethods.create_meet` |
29
63
  | `meet_in` | `InteractionMethods.share_meet` |
30
64
  | `meet_links` | `InteractionMethods.get_chat_meet_links` |
65
+ | `member_status` | `ChatMethods.get_chat_member_status` |
66
+ | `members` | `ChatMethods.get_participants` |
67
+ | `mentions_page` | `MessageMethods.get_chat_mentions_page` |
31
68
  | `messages` | `MessageMethods.get_messages` |
69
+ | `new_channel` | `ChatMethods.create_channel` |
70
+ | `new_conference` | `InteractionMethods.create_conference` |
71
+ | `new_group` | `ChatMethods.create_group` |
72
+ | `notifications` | `AccountMethods.get_chat_notifications` |
73
+ | `online_count` | `ChatMethods.get_group_online_count` |
74
+ | `peer_id` | `UserMethods.get_peer_id` |
75
+ | `peer_settings` | `AccountMethods.get_peer_settings` |
76
+ | `permissions` | `ChatMethods.get_permissions` |
77
+ | `photo` | `UploadMethods.send_photo` |
78
+ | `pin` | `MessageMethods.pin_message` |
79
+ | `pinned_dialogs` | `DialogMethods.get_pinned_dialogs` |
32
80
  | `poll` | `InteractionMethods.send_poll` |
33
81
  | `poll_results` | `InteractionMethods.get_poll_results` |
34
82
  | `poll_voters` | `InteractionMethods.get_poll_votes` |
83
+ | `post_views` | `ChatMethods.get_channel_post_views` |
84
+ | `primary_invite` | `ChatMethods.get_chat_primary_invite_link` |
85
+ | `privacy` | `AccountMethods.get_global_privacy_settings` |
35
86
  | `react` | `InteractionMethods.send_reaction` |
36
87
  | `reaction_users` | `InteractionMethods.get_reaction_users` |
37
88
  | `reactions` | `InteractionMethods.get_message_reactions` |
89
+ | `readers` | `MessageMethods.get_message_read_participants` |
90
+ | `replies` | `MessageMethods.get_chat_replies` |
91
+ | `scheduled` | `MessageMethods.get_scheduled_messages` |
92
+ | `search_all` | `MessageMethods.search_all_messages` |
93
+ | `search_chat` | `MessageMethods.search_chat_messages` |
38
94
  | `send` | `MessageMethods.send_message` |
95
+ | `send_as_peers` | `ChatMethods.get_send_as_peers` |
96
+ | `send_scheduled` | `MessageMethods.send_scheduled_messages_now` |
97
+ | `set_auto_download` | `AccountMethods.save_auto_download_settings` |
98
+ | `set_description` | `ChatMethods.set_chat_description` |
99
+ | `set_notifications` | `AccountMethods.update_chat_notifications` |
100
+ | `set_privacy` | `AccountMethods.set_global_privacy_settings` |
101
+ | `set_reactions` | `ChatMethods.set_chat_reactions` |
102
+ | `set_title` | `ChatMethods.set_chat_title` |
103
+ | `set_username` | `AccountMethods.update_username` |
39
104
  | `start_call` | `InteractionMethods.start_group_call` |
105
+ | `unblock` | `ContactMethods.unblock_user` |
106
+ | `unpin` | `MessageMethods.unpin_message` |
40
107
  | `unreact` | `InteractionMethods.remove_reaction` |
108
+ | `unread_mentions` | `MessageMethods.get_unread_mentions` |
109
+ | `unread_reactions` | `MessageMethods.get_unread_reactions` |
41
110
  | `upload` | `UploadMethods.upload_file` |
111
+ | `video` | `UploadMethods.send_video` |
112
+ | `voice` | `UploadMethods.send_voice` |
42
113
  | `vote` | `InteractionMethods.vote_poll` |
114
+ | `web_preview` | `MessageMethods.get_web_page_preview` |
43
115
 
44
116
  ## درخواست‌های خام بر حسب حوزه
45
117
 
@@ -252,6 +324,7 @@
252
324
  | `MessageMethods.send_scheduled_messages_now` | — |
253
325
  | `MessageMethods.unpin_message` | — |
254
326
  | `MessageParseMethods.parse_mode` | — |
327
+ | `UpdateMethods.adaptive_update_stats` | — |
255
328
  | `UpdateMethods.add_event_handler` | — |
256
329
  | `UpdateMethods.catch_up` | — |
257
330
  | `UpdateMethods.list_event_handlers` | — |
@@ -259,6 +332,7 @@
259
332
  | `UpdateMethods.remove_event_handler` | — |
260
333
  | `UpdateMethods.run_until_disconnected` | — |
261
334
  | `UpdateMethods.set_receive_updates` | — |
335
+ | `UpdateMethods.update_pipeline_stats` | — |
262
336
  | `UploadMethods.send_audio` | — |
263
337
  | `UploadMethods.send_document` | — |
264
338
  | `UploadMethods.send_file` | — |
@@ -3,6 +3,9 @@ include .gitignore
3
3
  include PROTOCOL.md AUDIT.md PARITY.md
4
4
  include CAPABILITIES.md CAPABILITIES.json
5
5
  include MEDIA.md
6
+ include ADAPTIVE_UPDATES.md
7
+ include SHORTCUTS.md
8
+ include PERFORMANCE_095.md
6
9
  include INTERACTIONS.md RUBIKA_REVIEW.md
7
10
  include FRAMEWORK.md ECOSYSTEM_REVIEW.md
8
11
  include CONFERENCE.md CALL_RESEARCH.md FULL_COVERAGE.md
@@ -0,0 +1,14 @@
1
+ # پایش سرعت پردازش رویدادها
2
+
3
+ در `0.2.95` بسته‌های رویداد بدون کاربر یا گفتگوی تازه دیگر در صف ذخیرهٔ موجودیت‌ها نگه داشته نمی‌شوند. هنگام قطع اتصال نیز موجودیت‌های معوق قبل از بستن نشست ذخیره می‌شوند. برای فهمیدن گلوگاه واقعی در حساب‌های شلوغ، یک نمای آماری محلی به کلاینت اضافه شده است؛ خواندن آن درخواست شبکه ارسال نمی‌کند.
4
+
5
+ ```python
6
+ print(client.update_pipeline_stats())
7
+ print(client.adaptive_update_stats())
8
+ ```
9
+
10
+ خروجی اول چهار مقدار دارد: `socket_queue` تعداد بسته‌های منتظر پردازش، `running_handlers` شمار وظیفه‌های فعال هندلرها، `deferred_entity_batches` تعداد بسته‌های دارای موجودیت منتظر ذخیره و `tracked_channels` تعداد گفتگوهای کانال‌پایه در وضعیت به‌روزرسانی کلاینت. این اعداد **تصویر همان لحظه** هستند؛ از یک عدد تنها نمی‌شود عملکرد کل سیستم را نتیجه گرفت.
11
+
12
+ برای مقایسهٔ عملی، هنگام ترافیک معمول حساب هر ۱۰ ثانیه چند نمونه بگیر. اگر `socket_queue` پیوسته زیاد می‌شود، مسیر دریافت و پردازش رویداد عقب افتاده است. اگر هم‌زمان `running_handlers` رشد می‌کند، زمان اجرای هندلرهای برنامه را بررسی کن. اگر صف‌ها کوچک هستند ولی `lag_p95_seconds` در آمار بازیابی انتخابی بالاست، تأخیر می‌تواند پیش از رسیدن رویداد به دستگاه رخ داده باشد. ساعت دستگاه را هم با زمان شبکه هماهنگ نگه دار.
13
+
14
+ پس از دیدن اندازه‌گیریِ حساب واقعی، می‌شود سراغ کنترل تعداد وظیفه‌های هم‌زمان، ذخیرهٔ کمترِ وضعیت‌های بدون تغییر در SQLite، یا تنظیم فاصلهٔ بازیابی انتخابی رفت. هیچ‌کدام را بدون سنجش و محافظت از ترتیب/عدم گم‌شدن پیام‌ها به‌عنوان افزایش قطعی سرعت در نظر نگیر.