soroushthon 0.2.93.dev0__tar.gz → 0.2.94__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 (409) hide show
  1. soroushthon-0.2.94/PKG-INFO +113 -0
  2. soroushthon-0.2.94/PLATFORMS.md +43 -0
  3. soroushthon-0.2.94/PUBLISHING.md +41 -0
  4. soroushthon-0.2.94/PYPI_README.md +86 -0
  5. soroushthon-0.2.94/README.md +92 -0
  6. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/pyproject.toml +5 -2
  7. soroushthon-0.2.94/soroushthon/version.py +1 -0
  8. soroushthon-0.2.94/soroushthon.egg-info/PKG-INFO +113 -0
  9. soroushthon-0.2.93.dev0/PKG-INFO +0 -78
  10. soroushthon-0.2.93.dev0/PLATFORMS.md +0 -44
  11. soroushthon-0.2.93.dev0/PUBLISHING.md +0 -48
  12. soroushthon-0.2.93.dev0/PYPI_README.md +0 -52
  13. soroushthon-0.2.93.dev0/README.md +0 -82
  14. soroushthon-0.2.93.dev0/soroushthon/version.py +0 -1
  15. soroushthon-0.2.93.dev0/soroushthon.egg-info/PKG-INFO +0 -78
  16. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/.github/workflows/check.yml +0 -0
  17. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/.gitignore +0 -0
  18. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/APK_POSTCHIN_AUDIT_2026-10-15.md +0 -0
  19. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/APK_REQUEST_IDS_2026-10-15.tsv +0 -0
  20. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/AUDIT.md +0 -0
  21. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/BOUND_CHAT_FIX_090.md +0 -0
  22. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/CALL_RESEARCH.md +0 -0
  23. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/CAPABILITIES.json +0 -0
  24. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/CAPABILITIES.md +0 -0
  25. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/CLIENT_LIBRARY_REVIEW_089.md +0 -0
  26. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/CONFERENCE.md +0 -0
  27. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/CONTACTS.md +0 -0
  28. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/DEV_GUIDE.md +0 -0
  29. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/ECOSYSTEM_REVIEW.md +0 -0
  30. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/FRAMEWORK.md +0 -0
  31. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/FULL_COVERAGE.md +0 -0
  32. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/GITHUB_TERMUX_093.md +0 -0
  33. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/GROUP_CHANNEL_BATCH20.md +0 -0
  34. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/INTERACTIONS.md +0 -0
  35. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/LARGE_CHANNEL_MEMBERSHIP_079.md +0 -0
  36. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/LARGE_CHANNEL_PAGINATION_081.md +0 -0
  37. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/LARGE_CHANNEL_SEARCH_TAIL_080.md +0 -0
  38. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/LARGE_CHANNEL_TARGET_082.md +0 -0
  39. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/LICENSE +0 -0
  40. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/LIVE_READONLY_ACCOUNT_BATCH5_2026-10-15.md +0 -0
  41. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/LIVE_READONLY_BATCH10_2026-10-16.md +0 -0
  42. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/LIVE_READONLY_BATCH11_2026-10-16.md +0 -0
  43. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/LIVE_READONLY_BATCH6_2026-10-15.md +0 -0
  44. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/LIVE_READONLY_BATCH7_2026-10-16.md +0 -0
  45. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/LIVE_READONLY_BATCH8_2026-10-16.md +0 -0
  46. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/LIVE_READONLY_BATCH9_2026-10-16.md +0 -0
  47. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/MANIFEST.in +0 -0
  48. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/MEDIA.md +0 -0
  49. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/MEET_IN_KEEP_087.md +0 -0
  50. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/MEET_IN_LEAVE_085.md +0 -0
  51. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/MEET_IN_LEAVE_086.md +0 -0
  52. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/METHOD_COVERAGE.md +0 -0
  53. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/NEW_ACCOUNT_METHODS10.md +0 -0
  54. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/NOTICE.md +0 -0
  55. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/PARITY.md +0 -0
  56. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/PERFORMANCE_0.2.57.md +0 -0
  57. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/PERFORMANCE_API_088.md +0 -0
  58. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/POSTCHIN_CHANNEL_RESEARCH.md +0 -0
  59. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/PROJECT_HISTORY.md +0 -0
  60. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/PROTOCOL.md +0 -0
  61. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/PROTOCOL_LAB.md +0 -0
  62. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/RAW_API_SOURCE_AUDIT_2026-10-14.md +0 -0
  63. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/READONLY_ACCOUNT_BATCH5.md +0 -0
  64. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/READONLY_BATCH10.md +0 -0
  65. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/READONLY_BATCH11.md +0 -0
  66. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/READONLY_BATCH12.md +0 -0
  67. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/READONLY_BATCH5.md +0 -0
  68. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/READONLY_BATCH7.md +0 -0
  69. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/READONLY_BATCH8.md +0 -0
  70. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/READONLY_BATCH9.md +0 -0
  71. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/RELEASE_READINESS_091.md +0 -0
  72. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/RELEASE_READINESS_2026-10-16.md +0 -0
  73. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/RESEARCH_2026-10-08.md +0 -0
  74. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/RPC_422_AUDIT_2026-10-16.md +0 -0
  75. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/RUBIKA_REVIEW.md +0 -0
  76. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/SOROUSHTHON_CHAT_CHANNEL_ACCOUNT_METHOD_MAP_2026-10-15.md +0 -0
  77. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/SPLUSTHON_COMPAT.md +0 -0
  78. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/TELETHON_LICENSE +0 -0
  79. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/TERMUX_TESTING.md +0 -0
  80. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/VOICE_CALL_DISCOVERY_084.md +0 -0
  81. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/VOICE_CALL_LEAVE_083.md +0 -0
  82. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/account_batch15.py +0 -0
  83. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/batch10_account_next.py +0 -0
  84. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/batch10_new_methods.py +0 -0
  85. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/batch30_coverage.py +0 -0
  86. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/batch30_more.py +0 -0
  87. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/bound_chat_readonly_088.py +0 -0
  88. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/channel_post_probe.py +0 -0
  89. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/chat_admin_coverage.py +0 -0
  90. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/chat_read_coverage.py +0 -0
  91. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/cleanup_meet_087.py +0 -0
  92. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/coverage.py +0 -0
  93. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/event_coverage.py +0 -0
  94. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/event_handler_coverage.py +0 -0
  95. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/full_coverage.py +0 -0
  96. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/group_channel_batch16.py +0 -0
  97. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/group_channel_batch18.py +0 -0
  98. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/group_channel_batch19.py +0 -0
  99. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/group_channel_batch20.py +0 -0
  100. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/interactive_coverage.py +0 -0
  101. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/large_channel_bound_membership_089.py +0 -0
  102. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/large_channel_bound_membership_090.py +0 -0
  103. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/large_channel_bound_membership_091.py +0 -0
  104. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/large_channel_membership_079.py +0 -0
  105. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/large_channel_pagination_081.py +0 -0
  106. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/large_channel_search_tail_080.py +0 -0
  107. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/large_channel_target_082.py +0 -0
  108. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/list_accounts_readonly.py +0 -0
  109. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/media_coverage.py +0 -0
  110. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/media_fixtures/audio.mp3 +0 -0
  111. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/media_fixtures/document.txt +0 -0
  112. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/media_fixtures/photo.png +0 -0
  113. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/media_fixtures/video.mp4 +0 -0
  114. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/media_fixtures/voice.ogg +0 -0
  115. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/meet_in_coverage.py +0 -0
  116. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/meet_in_keep_087.py +0 -0
  117. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/meet_in_leave_085.py +0 -0
  118. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/meet_in_leave_086.py +0 -0
  119. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/meet_links_coverage.py +0 -0
  120. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/multipart_coverage.py +0 -0
  121. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/new_account_methods10.py +0 -0
  122. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/other_bio.py +0 -0
  123. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/profile.py +0 -0
  124. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/protocol_probe.py +0 -0
  125. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/readonly_account_batch5.py +0 -0
  126. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/readonly_batch10.py +0 -0
  127. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/readonly_batch11.py +0 -0
  128. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/readonly_batch12.py +0 -0
  129. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/readonly_batch13.py +0 -0
  130. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/readonly_batch14.py +0 -0
  131. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/readonly_batch5.py +0 -0
  132. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/readonly_batch7.py +0 -0
  133. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/readonly_batch8.py +0 -0
  134. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/readonly_batch9.py +0 -0
  135. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/remaining23_summary.py +0 -0
  136. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/remaining23_termux.py +0 -0
  137. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/self_write_coverage.py +0 -0
  138. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/stats_admin_coverage.py +0 -0
  139. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/update_lifecycle_coverage.py +0 -0
  140. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/voice_call_discovery_084.py +0 -0
  141. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/voice_call_probe_083.py +0 -0
  142. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/voice_call_probe_084.py +0 -0
  143. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/examples/whoami.py +0 -0
  144. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/setup.cfg +0 -0
  145. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/setup.py +0 -0
  146. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/__init__.py +0 -0
  147. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/_updates/__init__.py +0 -0
  148. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/_updates/entitycache.py +0 -0
  149. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/_updates/messagebox.py +0 -0
  150. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/_updates/session.py +0 -0
  151. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/bound_chat.py +0 -0
  152. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/client/__init__.py +0 -0
  153. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/client/account.py +0 -0
  154. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/client/auth.py +0 -0
  155. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/client/chats.py +0 -0
  156. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/client/contacts.py +0 -0
  157. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/client/dialogs.py +0 -0
  158. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/client/downloads.py +0 -0
  159. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/client/interactions.py +0 -0
  160. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/client/messageparse.py +0 -0
  161. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/client/messages.py +0 -0
  162. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/client/soroushclient.py +0 -0
  163. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/client/telegrambaseclient.py +0 -0
  164. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/client/updates.py +0 -0
  165. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/client/uploads.py +0 -0
  166. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/client/users.py +0 -0
  167. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/conference.py +0 -0
  168. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/conference_audio.py +0 -0
  169. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/crypto/__init__.py +0 -0
  170. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/crypto/aes.py +0 -0
  171. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/crypto/aesctr.py +0 -0
  172. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/crypto/authkey.py +0 -0
  173. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/crypto/cdndecrypter.py +0 -0
  174. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/crypto/factorization.py +0 -0
  175. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/crypto/libssl.py +0 -0
  176. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/crypto/rsa.py +0 -0
  177. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/custom.py +0 -0
  178. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/errors/__init__.py +0 -0
  179. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/errors/common.py +0 -0
  180. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/errors/rpcbaseerrors.py +0 -0
  181. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/errors/rpcerrorlist.py +0 -0
  182. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/events/__init__.py +0 -0
  183. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/events/album.py +0 -0
  184. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/events/chataction.py +0 -0
  185. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/events/common.py +0 -0
  186. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/events/messagedeleted.py +0 -0
  187. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/events/messageedited.py +0 -0
  188. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/events/messageread.py +0 -0
  189. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/events/newmessage.py +0 -0
  190. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/events/raw.py +0 -0
  191. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/events/userupdate.py +0 -0
  192. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/extensions/__init__.py +0 -0
  193. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/extensions/binaryreader.py +0 -0
  194. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/extensions/html.py +0 -0
  195. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/extensions/markdown.py +0 -0
  196. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/extensions/messagepacker.py +0 -0
  197. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/filters.py +0 -0
  198. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/fsm.py +0 -0
  199. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/functions.py +0 -0
  200. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/helpers.py +0 -0
  201. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/hints.py +0 -0
  202. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/network/__init__.py +0 -0
  203. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/network/authenticator.py +0 -0
  204. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/network/connection/__init__.py +0 -0
  205. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/network/connection/connection.py +0 -0
  206. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/network/connection/http.py +0 -0
  207. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/network/connection/tcpabridged.py +0 -0
  208. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/network/connection/tcpfull.py +0 -0
  209. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/network/connection/tcpintermediate.py +0 -0
  210. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/network/connection/tcpmtproxy.py +0 -0
  211. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/network/connection/tcpobfuscated.py +0 -0
  212. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/network/connection/websocket.py +0 -0
  213. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/network/mtprotoplainsender.py +0 -0
  214. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/network/mtprotosender.py +0 -0
  215. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/network/mtprotostate.py +0 -0
  216. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/network/requeststate.py +0 -0
  217. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/password.py +0 -0
  218. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/requestiter.py +0 -0
  219. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/sessions/__init__.py +0 -0
  220. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/sessions/abstract.py +0 -0
  221. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/sessions/memory.py +0 -0
  222. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/sessions/sqlite.py +0 -0
  223. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/sessions/string.py +0 -0
  224. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/sync.py +0 -0
  225. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/__init__.py +0 -0
  226. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/alltlobjects.py +0 -0
  227. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/core/__init__.py +0 -0
  228. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/core/gzippacked.py +0 -0
  229. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/core/messagecontainer.py +0 -0
  230. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/core/rpcresult.py +0 -0
  231. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/core/tlmessage.py +0 -0
  232. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/custom/__init__.py +0 -0
  233. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/custom/adminlogevent.py +0 -0
  234. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/custom/chatgetter.py +0 -0
  235. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/custom/conversation.py +0 -0
  236. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/custom/dialog.py +0 -0
  237. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/custom/draft.py +0 -0
  238. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/custom/file.py +0 -0
  239. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/custom/forward.py +0 -0
  240. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/custom/inlineresult.py +0 -0
  241. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/custom/inlineresults.py +0 -0
  242. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/custom/inputsizedfile.py +0 -0
  243. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/custom/message.py +0 -0
  244. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/custom/messagebutton.py +0 -0
  245. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/custom/participantpermissions.py +0 -0
  246. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/custom/sendergetter.py +0 -0
  247. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/custom/types.py +0 -0
  248. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/functions/__init__.py +0 -0
  249. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/functions/account.py +0 -0
  250. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/functions/auth.py +0 -0
  251. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/functions/bots.py +0 -0
  252. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/functions/channels.py +0 -0
  253. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/functions/chatlists.py +0 -0
  254. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/functions/conference.py +0 -0
  255. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/functions/contacts.py +0 -0
  256. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/functions/folders.py +0 -0
  257. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/functions/help.py +0 -0
  258. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/functions/langpack.py +0 -0
  259. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/functions/messages.py +0 -0
  260. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/functions/payments.py +0 -0
  261. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/functions/phone.py +0 -0
  262. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/functions/photos.py +0 -0
  263. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/functions/postchin.py +0 -0
  264. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/functions/premium.py +0 -0
  265. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/functions/stats.py +0 -0
  266. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/functions/stories.py +0 -0
  267. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/functions/thirdParty.py +0 -0
  268. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/functions/updates.py +0 -0
  269. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/functions/upload.py +0 -0
  270. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/functions/users.py +0 -0
  271. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/patched/__init__.py +0 -0
  272. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/tlobject.py +0 -0
  273. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/types/__init__.py +0 -0
  274. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/types/account.py +0 -0
  275. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/types/auth.py +0 -0
  276. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/types/bots.py +0 -0
  277. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/types/channels.py +0 -0
  278. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/types/chatlists.py +0 -0
  279. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/types/conference.py +0 -0
  280. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/types/contacts.py +0 -0
  281. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/types/help.py +0 -0
  282. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/types/messages.py +0 -0
  283. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/types/payments.py +0 -0
  284. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/types/phone.py +0 -0
  285. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/types/photos.py +0 -0
  286. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/types/postchin.py +0 -0
  287. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/types/premium.py +0 -0
  288. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/types/stats.py +0 -0
  289. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/types/stickers.py +0 -0
  290. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/types/storage.py +0 -0
  291. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/types/stories.py +0 -0
  292. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/types/thirdParty.py +0 -0
  293. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/types/update.py +0 -0
  294. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/types/updates.py +0 -0
  295. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/types/upload.py +0 -0
  296. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/tl/types/users.py +0 -0
  297. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/types.py +0 -0
  298. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon/utils.py +0 -0
  299. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon.egg-info/SOURCES.txt +0 -0
  300. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon.egg-info/dependency_links.txt +0 -0
  301. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon.egg-info/requires.txt +0 -0
  302. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon.egg-info/top_level.txt +0 -0
  303. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon_generator/__init__.py +0 -0
  304. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon_generator/data/api.tl +0 -0
  305. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon_generator/data/errors.csv +0 -0
  306. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon_generator/data/friendly.csv +0 -0
  307. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon_generator/data/html/404.html +0 -0
  308. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon_generator/data/html/core.html +0 -0
  309. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon_generator/data/html/css/docs.dark.css +0 -0
  310. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon_generator/data/html/css/docs.h4x0r.css +0 -0
  311. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon_generator/data/html/css/docs.light.css +0 -0
  312. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon_generator/data/html/img/arrow.svg +0 -0
  313. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon_generator/data/html/js/search.js +0 -0
  314. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon_generator/data/methods.csv +0 -0
  315. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon_generator/data/mtproto.tl +0 -0
  316. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon_generator/docswriter.py +0 -0
  317. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon_generator/generators/__init__.py +0 -0
  318. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon_generator/generators/docs.py +0 -0
  319. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon_generator/generators/errors.py +0 -0
  320. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon_generator/generators/tlobject.py +0 -0
  321. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon_generator/parsers/__init__.py +0 -0
  322. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon_generator/parsers/errors.py +0 -0
  323. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon_generator/parsers/methods.py +0 -0
  324. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon_generator/parsers/tlobject/__init__.py +0 -0
  325. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon_generator/parsers/tlobject/parser.py +0 -0
  326. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon_generator/parsers/tlobject/tlarg.py +0 -0
  327. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon_generator/parsers/tlobject/tlobject.py +0 -0
  328. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon_generator/sourcebuilder.py +0 -0
  329. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon_generator/syncerrors.py +0 -0
  330. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/soroushthon_generator/utils.py +0 -0
  331. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/__init__.py +0 -0
  332. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/__init__.py +0 -0
  333. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/client/__init__.py +0 -0
  334. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/client/test_account_batch15_routes.py +0 -0
  335. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/client/test_account_sessions.py +0 -0
  336. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/client/test_admin_log_routing.py +0 -0
  337. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/client/test_bound_chat.py +0 -0
  338. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/client/test_chat_member_search.py +0 -0
  339. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/client/test_chat_membership_and_pages.py +0 -0
  340. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/client/test_contacts.py +0 -0
  341. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/client/test_delete_messages.py +0 -0
  342. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/client/test_drafts.py +0 -0
  343. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/client/test_entity_cache.py +0 -0
  344. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/client/test_featured_stickers_cache.py +0 -0
  345. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/client/test_get_permissions_fallback.py +0 -0
  346. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/client/test_group_channel_batch16_report.py +0 -0
  347. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/client/test_group_channel_batch16_routes.py +0 -0
  348. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/client/test_group_channel_batch20.py +0 -0
  349. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/client/test_interactions.py +0 -0
  350. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/client/test_media_connection.py +0 -0
  351. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/client/test_message_mapping_privacy.py +0 -0
  352. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/client/test_messages.py +0 -0
  353. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/client/test_new10_routing.py +0 -0
  354. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/client/test_new_account_runner.py +0 -0
  355. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/client/test_postchin_apk_routing.py +0 -0
  356. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/client/test_profiles.py +0 -0
  357. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/client/test_read_acknowledge.py +0 -0
  358. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/client/test_readonly_account_batch5.py +0 -0
  359. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/client/test_readonly_batch13_routes.py +0 -0
  360. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/client/test_readonly_batch5.py +0 -0
  361. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/client/test_readonly_batch7.py +0 -0
  362. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/client/test_rejected_rpcs_preserved.py +0 -0
  363. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/client/test_shortcuts.py +0 -0
  364. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/client/test_stats_routing.py +0 -0
  365. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/client/test_unsupported_features.py +0 -0
  366. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/client/test_verified_large_membership.py +0 -0
  367. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/client/test_web_document.py +0 -0
  368. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/crypto/__init__.py +0 -0
  369. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/crypto/test_rsa.py +0 -0
  370. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/events/__init__.py +0 -0
  371. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/events/test_chataction.py +0 -0
  372. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/events/test_dispatch.py +0 -0
  373. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/events/test_registration.py +0 -0
  374. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/extensions/__init__.py +0 -0
  375. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/extensions/test_html.py +0 -0
  376. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/extensions/test_markdown.py +0 -0
  377. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/test_account_scope.py +0 -0
  378. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/test_batch10_account_next.py +0 -0
  379. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/test_batch10_new_methods.py +0 -0
  380. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/test_chat_admin_coverage.py +0 -0
  381. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/test_cleanup_meet_087.py +0 -0
  382. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/test_conference_audio.py +0 -0
  383. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/test_coverage_runner.py +0 -0
  384. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/test_event_coverage_diagnostics.py +0 -0
  385. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/test_event_handler_coverage.py +0 -0
  386. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/test_framework_helpers.py +0 -0
  387. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/test_full_coverage.py +0 -0
  388. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/test_helpers.py +0 -0
  389. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/test_interactive_coverage.py +0 -0
  390. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/test_list_accounts_readonly.py +0 -0
  391. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/test_media_attributes.py +0 -0
  392. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/test_media_coverage.py +0 -0
  393. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/test_meet_in_keep_087.py +0 -0
  394. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/test_multipart_coverage.py +0 -0
  395. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/test_pickle.py +0 -0
  396. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/test_protocol_lab.py +0 -0
  397. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/test_readonly_batch11.py +0 -0
  398. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/test_readonly_batch12.py +0 -0
  399. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/test_sessions.py +0 -0
  400. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/test_update_lifecycle_coverage.py +0 -0
  401. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/test_utils.py +0 -0
  402. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/test_websocket.py +0 -0
  403. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/tl/__init__.py +0 -0
  404. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tests/soroushthon/tl/test_serialization.py +0 -0
  405. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tools/audit_upstreams.py +0 -0
  406. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tools/build_capability_inventory.py +0 -0
  407. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tools/check_release.py +0 -0
  408. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tools/generate.py +0 -0
  409. {soroushthon-0.2.93.dev0 → soroushthon-0.2.94}/tools/protocol_lab.py +0 -0
@@ -0,0 +1,113 @@
1
+ Metadata-Version: 2.4
2
+ Name: soroushthon
3
+ Version: 0.2.94
4
+ Summary: کلاینت ناهمگام پایتون برای ساخت ابزارهای حساب کاربری سروش‌پلاس
5
+ License-Expression: GPL-3.0-only
6
+ Project-URL: Community, https://splus.ir/soroushthon
7
+ Keywords: soroush plus,asyncio,messaging,user client
8
+ Classifier: Programming Language :: Python :: 3
9
+ Classifier: Operating System :: OS Independent
10
+ Classifier: Topic :: Communications :: Chat
11
+ Requires-Python: >=3.9
12
+ Description-Content-Type: text/markdown
13
+ License-File: LICENSE
14
+ License-File: TELETHON_LICENSE
15
+ License-File: NOTICE.md
16
+ Requires-Dist: aiohttp>=3.8
17
+ Requires-Dist: pyaes>=1.6
18
+ Requires-Dist: rsa>=4
19
+ Provides-Extra: test
20
+ Requires-Dist: pytest>=7; extra == "test"
21
+ Requires-Dist: pytest-asyncio>=0.23; extra == "test"
22
+ Provides-Extra: media
23
+ Requires-Dist: hachoir>=3.3; extra == "media"
24
+ Provides-Extra: audio
25
+ Requires-Dist: livekit; extra == "audio"
26
+ Dynamic: license-file
27
+
28
+ # سروش‌تون | Soroushthon
29
+
30
+ ### سروش‌پلاس را با پایتون به ایده‌هایت وصل کن
31
+
32
+ یک پیام تازه می‌رسد؛ برنامه‌ات آن را می‌بیند، تصمیم می‌گیرد و پاسخ می‌دهد. **Soroushthon** ابزار پایتونی ناهمگام برای ساخت چنین برنامه‌هایی با **حساب کاربری سروش‌پلاس** است: از یک پاسخ ساده به پیام تا کار با گفتگوها، رسانه‌ها، نظرسنجی‌ها و رویدادها.
33
+
34
+ کد روزمره را با متدهای آشنا بنویس و وقتی به جزئیات بیشتری نیاز داری، به درخواست‌های خام کتابخانه دسترسی داشته باش. برای هر حساب هم می‌توانی نشست جداگانه نگه داری.
35
+
36
+ ## در چند خط، اولین واکنش را بساز
37
+
38
+ این نمونه پیام `ping` را که **خودت با همان حساب** می‌فرستی می‌بیند و روی همان پیام پاسخ می‌دهد:
39
+
40
+ ```python
41
+ from soroushthon import SoroushClient
42
+
43
+ client = SoroushClient.for_account("main")
44
+
45
+
46
+ @client.on_message(outgoing=True, pattern=r"(?i)\Aping\Z")
47
+ async def reply_to_ping(event):
48
+ await client.send_message(
49
+ await event.get_input_chat(),
50
+ "pong",
51
+ reply_to=event.id,
52
+ )
53
+
54
+
55
+ client.start()
56
+ client.run_until_disconnected()
57
+ ```
58
+
59
+ اولین اجرا اطلاعات ورود را درخواست می‌کند. نشست حساب روی دستگاه ذخیره می‌شود؛ فایل‌های `.session` را در اختیار دیگران قرار نده.
60
+
61
+ ## چه چیزهایی می‌توانی بسازی؟
62
+
63
+ | زمینه | ابزارهای کتابخانه |
64
+ | --- | --- |
65
+ | پیام‌ها | خواندن، جست‌وجو، ارسال، ویرایش، حذف و پاسخ‌دادن به پیام |
66
+ | فایل و رسانه | ارسال و دریافت عکس، ویدئو، صوت و سند |
67
+ | برنامه‌های واکنشی | ثبت تابع برای پیام تازه و دیگر رویدادهای پشتیبانی‌شده |
68
+ | گفتگو و کانال | فهرست گفتگوها، اطلاعات گفتگو، اعضا و نقش‌ها |
69
+ | تعامل | نظرسنجی، رأی و واکنش به پیام |
70
+ | چند حساب | نشست مستقل با `SoroushClient.for_account(...)` |
71
+ | امکانات پیشرفته | دسترسی به درخواست‌های خام برای توسعه و بررسی پروتکل |
72
+
73
+ متدهای کوتاهی مانند `send`، `messages`، `file`، `poll` و `react` در کنار نام‌های کامل آن‌ها قرار دارند. این نام‌ها برای ساده‌تر نوشتن کدند؛ هر درخواست خامِ موجود در بسته الزاماً روی سرور در همهٔ شرایط آزموده نشده است.
74
+
75
+ ## نصب؛ یک دستور قابل کپی
76
+
77
+ به Python 3.9 یا جدیدتر نیاز داری. دستورهای زیر فقط از نویسه‌های انگلیسی استفاده می‌کنند:
78
+
79
+ **Pydroid 3 و Termux** — در ترمینال همان برنامه:
80
+
81
+ ```sh
82
+ python -m pip install --upgrade soroushthon
83
+ ```
84
+
85
+ **VS Code روی Linux یا macOS** — در ترمینال پروژه:
86
+
87
+ ```sh
88
+ python -m pip install --upgrade soroushthon
89
+ ```
90
+
91
+ **VS Code روی Windows** — در ترمینال پروژه:
92
+
93
+ ```powershell
94
+ py -m pip install --upgrade soroushthon
95
+ ```
96
+
97
+ در VS Code مفسر Python همان محیطی را انتخاب کن که دستور نصب را در آن اجرا کردی. روی Android، نصب `aiohttp` و وابستگی‌های آن به سازگاری بسته‌ها با نسخهٔ Python محیطت بستگی دارد؛ در محیطی که این وابستگی‌ها نصب باشند، خود Soroushthon به‌صورت wheel مستقل از معماری ارائه می‌شود.
98
+
99
+ برای دیدن نسخهٔ نصب‌شده:
100
+
101
+ ```sh
102
+ python -c "import soroushthon; print(soroushthon.__version__)"
103
+ ```
104
+
105
+ در Windows، اگر با `py` نصب کردی، در دستور بررسی هم `python` را با `py` جایگزین کن.
106
+
107
+ ## از اینجا ادامه بده
108
+
109
+ برای هر حساب یک نام انتخاب کن: `main` برای حساب اصلی یا نام‌هایی مثل `work` برای نشست جدا. برای برنامهٔ ناهمگام موجود هم می‌توانی از `await client.start()` و `await client.disconnect()` استفاده کنی. نصب وابستگی‌های اصلی `aiohttp`، `pyaes` و `rsa` را `pip` انجام می‌دهد؛ بعضی امکانات رسانه‌ای وابستگی اختیاری دارند.
110
+
111
+ Soroushthon یک پروژهٔ **غیررسمی** است و به برنامهٔ رسمی سروش‌پلاس وابسته نیست. وضعیت اجرای امکانات پیشرفته می‌تواند به پاسخ سرور و نوع گفتگو بستگی داشته باشد. سورس با مجوز **GPL-3.0-only** منتشر می‌شود؛ اطلاعات منشأ کدهای اقتباس‌شده در `NOTICE.md` و `TELETHON_LICENSE` همراه بسته آمده است.
112
+
113
+ برای گفتگو دربارهٔ پروژه و دیدن نمونه‌های بیشتر: [@soroushthon در سروش‌پلاس](https://splus.ir/soroushthon).
@@ -0,0 +1,43 @@
1
+ # نصب روی محیط‌های مختلف
2
+
3
+ نسخهٔ انتشار `0.2.94` برای Python 3.9 یا جدیدتر بسته‌بندی شده است. بستهٔ اصلی `aiohttp`، `pyaes` و `rsa` را از طریق pip دریافت می‌کند. تمام فرمان‌ها در این صفحه انگلیسی و قابل کپی هستند.
4
+
5
+ ## Pydroid 3
6
+
7
+ در ترمینال Pydroid اجرا کن:
8
+
9
+ ```sh
10
+ python -m pip install --upgrade soroushthon
11
+ python -c "import soroushthon; print(soroushthon.__version__)"
12
+ ```
13
+
14
+ نسخهٔ `aiohttp` و وابستگی‌هایش باید در Python همین برنامه قابل نصب باشند. خرابی داخلی pip را با نصب دوبارهٔ خود pip بررسی کن؛ خطای import در pip نشانهٔ اشکال در بستهٔ Soroushthon نیست.
15
+
16
+ ## Termux
17
+
18
+ ```sh
19
+ python -m pip install --upgrade soroushthon
20
+ python -c "import soroushthon; print(soroushthon.__version__)"
21
+ ```
22
+
23
+ نسخهٔ Python و وابستگی‌های موجود در Termux می‌توانند با Pydroid متفاوت باشند. برای هر محیط باید نصب را در ترمینال خودش انجام دهی.
24
+
25
+ ## VS Code روی Linux یا macOS
26
+
27
+ ```sh
28
+ python -m venv .venv
29
+ .venv/bin/python -m pip install --upgrade soroushthon
30
+ .venv/bin/python -c "import soroushthon; print(soroushthon.__version__)"
31
+ ```
32
+
33
+ در VS Code مفسر `.venv` همین پروژه را انتخاب کن.
34
+
35
+ ## VS Code روی Windows
36
+
37
+ ```powershell
38
+ py -m venv .venv
39
+ .venv\Scripts\python.exe -m pip install --upgrade soroushthon
40
+ .venv\Scripts\python.exe -c "import soroushthon; print(soroushthon.__version__)"
41
+ ```
42
+
43
+ موفقیت نصب روی یک سیستم، اجرای همهٔ قابلیت‌های وابسته به پاسخ سرور را در سیستم‌های دیگر اثبات نمی‌کند. فایل نشست حساب را عمومی منتشر نکن.
@@ -0,0 +1,41 @@
1
+ # انتشار نسخهٔ 0.2.94
2
+
3
+ این پوشه سورس نسخهٔ نهایی `0.2.94` است. متن `PYPI_README.md` توضیح صفحهٔ PyPI است. نام و نسخهٔ بستهٔ منتشرشده را نمی‌توان با همان نام فایل دوباره جایگزین کرد.
4
+
5
+ ## کنترل پیش از ارسال
6
+
7
+ ```sh
8
+ python -m pip install build twine
9
+ python -m pytest -q
10
+ python -m build
11
+ python -m twine check dist/*
12
+ python tools/check_release.py dist
13
+ ```
14
+
15
+ پس از ساخت، نصب و import بسته را در محیطی جدا از پوشهٔ سورس امتحان کن. روی یک حساب آزمایشی مسیر ورود، دریافت و ارسال پیام، رویداد، رسانه و اتصال مجدد را اجرا و نتیجه را بررسی کن. فایل نشست یا دادهٔ حساب نباید در بسته باشد. آزمون محلی جای بررسی زنده را نمی‌گیرد.
16
+
17
+ ## ارسال از Termux به PyPI
18
+
19
+ ZIP انتشار را در پوشهٔ Downloads گوشی ذخیره کن. اگر دسترسی Termux به حافظه را قبلاً فعال نکرده‌ای، یک‌بار `termux-setup-storage` را اجرا کن و اجازهٔ Android را بده. سپس این فرمان‌ها را در Termux اجرا کن:
20
+
21
+ ```sh
22
+ mkdir -p ~/soroushthon-upload-0.2.94
23
+ cd ~/soroushthon-upload-0.2.94
24
+ cp ~/storage/downloads/soroushthon-0.2.94-release.zip .
25
+ python -m zipfile -e soroushthon-0.2.94-release.zip .
26
+ sha256sum -c SHA256SUMS.txt
27
+ python -m pip install twine
28
+ python -m twine check --strict dist/soroushthon-0.2.94.tar.gz dist/soroushthon-0.2.94-py3-none-any.whl
29
+ python -m twine upload --repository pypi --username __token__ dist/soroushthon-0.2.94.tar.gz dist/soroushthon-0.2.94-py3-none-any.whl
30
+ ```
31
+
32
+ در درخواست `Password:`، توکن API پروژهٔ `soroushthon` را وارد کن. هنگام تایپ توکن چیزی روی صفحه نشان داده نمی‌شود. توکن را داخل فرمان، فایل یا پیام قرار نده.
33
+
34
+ پس از انتشار، در Python محیط مقصد این دو دستور را اجرا و شمارهٔ نسخه را بررسی کن:
35
+
36
+ ```sh
37
+ python -m pip install --upgrade --no-cache-dir soroushthon
38
+ python -c "import soroushthon; print(soroushthon.__version__)"
39
+ ```
40
+
41
+ نسخهٔ توسعه‌ای `0.2.93.dev0` و نسخهٔ پایدار قبلی `0.2.21` را برای تغییر صفحهٔ اصلی PyPI لازم نیست پاک کنی؛ نسخهٔ نهایی تازه با نصب معمولی انتخاب می‌شود. حذف نسخهٔ قدیمی نصب کاربرانی را که آن را پین کرده‌اند خراب می‌کند.
@@ -0,0 +1,86 @@
1
+ # سروش‌تون | Soroushthon
2
+
3
+ ### سروش‌پلاس را با پایتون به ایده‌هایت وصل کن
4
+
5
+ یک پیام تازه می‌رسد؛ برنامه‌ات آن را می‌بیند، تصمیم می‌گیرد و پاسخ می‌دهد. **Soroushthon** ابزار پایتونی ناهمگام برای ساخت چنین برنامه‌هایی با **حساب کاربری سروش‌پلاس** است: از یک پاسخ ساده به پیام تا کار با گفتگوها، رسانه‌ها، نظرسنجی‌ها و رویدادها.
6
+
7
+ کد روزمره را با متدهای آشنا بنویس و وقتی به جزئیات بیشتری نیاز داری، به درخواست‌های خام کتابخانه دسترسی داشته باش. برای هر حساب هم می‌توانی نشست جداگانه نگه داری.
8
+
9
+ ## در چند خط، اولین واکنش را بساز
10
+
11
+ این نمونه پیام `ping` را که **خودت با همان حساب** می‌فرستی می‌بیند و روی همان پیام پاسخ می‌دهد:
12
+
13
+ ```python
14
+ from soroushthon import SoroushClient
15
+
16
+ client = SoroushClient.for_account("main")
17
+
18
+
19
+ @client.on_message(outgoing=True, pattern=r"(?i)\Aping\Z")
20
+ async def reply_to_ping(event):
21
+ await client.send_message(
22
+ await event.get_input_chat(),
23
+ "pong",
24
+ reply_to=event.id,
25
+ )
26
+
27
+
28
+ client.start()
29
+ client.run_until_disconnected()
30
+ ```
31
+
32
+ اولین اجرا اطلاعات ورود را درخواست می‌کند. نشست حساب روی دستگاه ذخیره می‌شود؛ فایل‌های `.session` را در اختیار دیگران قرار نده.
33
+
34
+ ## چه چیزهایی می‌توانی بسازی؟
35
+
36
+ | زمینه | ابزارهای کتابخانه |
37
+ | --- | --- |
38
+ | پیام‌ها | خواندن، جست‌وجو، ارسال، ویرایش، حذف و پاسخ‌دادن به پیام |
39
+ | فایل و رسانه | ارسال و دریافت عکس، ویدئو، صوت و سند |
40
+ | برنامه‌های واکنشی | ثبت تابع برای پیام تازه و دیگر رویدادهای پشتیبانی‌شده |
41
+ | گفتگو و کانال | فهرست گفتگوها، اطلاعات گفتگو، اعضا و نقش‌ها |
42
+ | تعامل | نظرسنجی، رأی و واکنش به پیام |
43
+ | چند حساب | نشست مستقل با `SoroushClient.for_account(...)` |
44
+ | امکانات پیشرفته | دسترسی به درخواست‌های خام برای توسعه و بررسی پروتکل |
45
+
46
+ متدهای کوتاهی مانند `send`، `messages`، `file`، `poll` و `react` در کنار نام‌های کامل آن‌ها قرار دارند. این نام‌ها برای ساده‌تر نوشتن کدند؛ هر درخواست خامِ موجود در بسته الزاماً روی سرور در همهٔ شرایط آزموده نشده است.
47
+
48
+ ## نصب؛ یک دستور قابل کپی
49
+
50
+ به Python 3.9 یا جدیدتر نیاز داری. دستورهای زیر فقط از نویسه‌های انگلیسی استفاده می‌کنند:
51
+
52
+ **Pydroid 3 و Termux** — در ترمینال همان برنامه:
53
+
54
+ ```sh
55
+ python -m pip install --upgrade soroushthon
56
+ ```
57
+
58
+ **VS Code روی Linux یا macOS** — در ترمینال پروژه:
59
+
60
+ ```sh
61
+ python -m pip install --upgrade soroushthon
62
+ ```
63
+
64
+ **VS Code روی Windows** — در ترمینال پروژه:
65
+
66
+ ```powershell
67
+ py -m pip install --upgrade soroushthon
68
+ ```
69
+
70
+ در VS Code مفسر Python همان محیطی را انتخاب کن که دستور نصب را در آن اجرا کردی. روی Android، نصب `aiohttp` و وابستگی‌های آن به سازگاری بسته‌ها با نسخهٔ Python محیطت بستگی دارد؛ در محیطی که این وابستگی‌ها نصب باشند، خود Soroushthon به‌صورت wheel مستقل از معماری ارائه می‌شود.
71
+
72
+ برای دیدن نسخهٔ نصب‌شده:
73
+
74
+ ```sh
75
+ python -c "import soroushthon; print(soroushthon.__version__)"
76
+ ```
77
+
78
+ در Windows، اگر با `py` نصب کردی، در دستور بررسی هم `python` را با `py` جایگزین کن.
79
+
80
+ ## از اینجا ادامه بده
81
+
82
+ برای هر حساب یک نام انتخاب کن: `main` برای حساب اصلی یا نام‌هایی مثل `work` برای نشست جدا. برای برنامهٔ ناهمگام موجود هم می‌توانی از `await client.start()` و `await client.disconnect()` استفاده کنی. نصب وابستگی‌های اصلی `aiohttp`، `pyaes` و `rsa` را `pip` انجام می‌دهد؛ بعضی امکانات رسانه‌ای وابستگی اختیاری دارند.
83
+
84
+ Soroushthon یک پروژهٔ **غیررسمی** است و به برنامهٔ رسمی سروش‌پلاس وابسته نیست. وضعیت اجرای امکانات پیشرفته می‌تواند به پاسخ سرور و نوع گفتگو بستگی داشته باشد. سورس با مجوز **GPL-3.0-only** منتشر می‌شود؛ اطلاعات منشأ کدهای اقتباس‌شده در `NOTICE.md` و `TELETHON_LICENSE` همراه بسته آمده است.
85
+
86
+ برای گفتگو دربارهٔ پروژه و دیدن نمونه‌های بیشتر: [@soroushthon در سروش‌پلاس](https://splus.ir/soroushthon).
@@ -0,0 +1,92 @@
1
+ # سروش‌تون | Soroushthon
2
+
3
+ ### سروش‌پلاس را با پایتون به ایده‌هایت وصل کن
4
+
5
+ یک پیام تازه می‌رسد؛ برنامه‌ات آن را می‌بیند، تصمیم می‌گیرد و پاسخ می‌دهد. **Soroushthon** ابزار پایتونی ناهمگام برای ساخت چنین برنامه‌هایی با **حساب کاربری سروش‌پلاس** است: از یک پاسخ ساده به پیام تا کار با گفتگوها، رسانه‌ها، نظرسنجی‌ها و رویدادها.
6
+
7
+ کد روزمره را با متدهای آشنا بنویس و وقتی به جزئیات بیشتری نیاز داری، به درخواست‌های خام کتابخانه دسترسی داشته باش. برای هر حساب هم می‌توانی نشست جداگانه نگه داری.
8
+
9
+ ## در چند خط، اولین واکنش را بساز
10
+
11
+ این نمونه پیام `ping` را که **خودت با همان حساب** می‌فرستی می‌بیند و روی همان پیام پاسخ می‌دهد:
12
+
13
+ ```python
14
+ from soroushthon import SoroushClient
15
+
16
+ client = SoroushClient.for_account("main")
17
+
18
+
19
+ @client.on_message(outgoing=True, pattern=r"(?i)\Aping\Z")
20
+ async def reply_to_ping(event):
21
+ await client.send_message(
22
+ await event.get_input_chat(),
23
+ "pong",
24
+ reply_to=event.id,
25
+ )
26
+
27
+
28
+ client.start()
29
+ client.run_until_disconnected()
30
+ ```
31
+
32
+ اولین اجرا اطلاعات ورود را درخواست می‌کند. نشست حساب روی دستگاه ذخیره می‌شود؛ فایل‌های `.session` را در اختیار دیگران قرار نده.
33
+
34
+ ## چه چیزهایی می‌توانی بسازی؟
35
+
36
+ | زمینه | ابزارهای کتابخانه |
37
+ | --- | --- |
38
+ | پیام‌ها | خواندن، جست‌وجو، ارسال، ویرایش، حذف و پاسخ‌دادن به پیام |
39
+ | فایل و رسانه | ارسال و دریافت عکس، ویدئو، صوت و سند |
40
+ | برنامه‌های واکنشی | ثبت تابع برای پیام تازه و دیگر رویدادهای پشتیبانی‌شده |
41
+ | گفتگو و کانال | فهرست گفتگوها، اطلاعات گفتگو، اعضا و نقش‌ها |
42
+ | تعامل | نظرسنجی، رأی و واکنش به پیام |
43
+ | چند حساب | نشست مستقل با `SoroushClient.for_account(...)` |
44
+ | امکانات پیشرفته | دسترسی به درخواست‌های خام برای توسعه و بررسی پروتکل |
45
+
46
+ متدهای کوتاهی مانند `send`، `messages`، `file`، `poll` و `react` در کنار نام‌های کامل آن‌ها قرار دارند. این نام‌ها برای ساده‌تر نوشتن کدند؛ هر درخواست خامِ موجود در بسته الزاماً روی سرور در همهٔ شرایط آزموده نشده است.
47
+
48
+ ## نصب؛ یک دستور قابل کپی
49
+
50
+ به Python 3.9 یا جدیدتر نیاز داری. دستورهای زیر فقط از نویسه‌های انگلیسی استفاده می‌کنند:
51
+
52
+ **Pydroid 3 و Termux** — در ترمینال همان برنامه:
53
+
54
+ ```sh
55
+ python -m pip install --upgrade soroushthon
56
+ ```
57
+
58
+ **VS Code روی Linux یا macOS** — در ترمینال پروژه:
59
+
60
+ ```sh
61
+ python -m pip install --upgrade soroushthon
62
+ ```
63
+
64
+ **VS Code روی Windows** — در ترمینال پروژه:
65
+
66
+ ```powershell
67
+ py -m pip install --upgrade soroushthon
68
+ ```
69
+
70
+ در VS Code مفسر Python همان محیطی را انتخاب کن که دستور نصب را در آن اجرا کردی. روی Android، نصب `aiohttp` و وابستگی‌های آن به سازگاری بسته‌ها با نسخهٔ Python محیطت بستگی دارد؛ در محیطی که این وابستگی‌ها نصب باشند، خود Soroushthon به‌صورت wheel مستقل از معماری ارائه می‌شود.
71
+
72
+ برای دیدن نسخهٔ نصب‌شده:
73
+
74
+ ```sh
75
+ python -c "import soroushthon; print(soroushthon.__version__)"
76
+ ```
77
+
78
+ در Windows، اگر با `py` نصب کردی، در دستور بررسی هم `python` را با `py` جایگزین کن.
79
+
80
+ ## از اینجا ادامه بده
81
+
82
+ برای هر حساب یک نام انتخاب کن: `main` برای حساب اصلی یا نام‌هایی مثل `work` برای نشست جدا. برای برنامهٔ ناهمگام موجود هم می‌توانی از `await client.start()` و `await client.disconnect()` استفاده کنی. نصب وابستگی‌های اصلی `aiohttp`، `pyaes` و `rsa` را `pip` انجام می‌دهد؛ بعضی امکانات رسانه‌ای وابستگی اختیاری دارند.
83
+
84
+ Soroushthon یک پروژهٔ **غیررسمی** است و به برنامهٔ رسمی سروش‌پلاس وابسته نیست. وضعیت اجرای امکانات پیشرفته می‌تواند به پاسخ سرور و نوع گفتگو بستگی داشته باشد. سورس با مجوز **GPL-3.0-only** منتشر می‌شود؛ اطلاعات منشأ کدهای اقتباس‌شده در `NOTICE.md` و `TELETHON_LICENSE` همراه بسته آمده است.
85
+
86
+ برای گفتگو دربارهٔ پروژه و دیدن نمونه‌های بیشتر: [@soroushthon در سروش‌پلاس](https://splus.ir/soroushthon).
87
+
88
+ ## راهنماهای بیشتر در سورس
89
+
90
+ - [نمونه‌های برنامه](examples/) و [فهرست امکانات](CAPABILITIES.md)
91
+ - [پیام و رسانه](MEDIA.md)، [نظرسنجی و واکنش](INTERACTIONS.md) و [راهنمای Termux](TERMUX_TESTING.md)
92
+ - [منشأ کدها و مجوزها](NOTICE.md)
@@ -4,8 +4,8 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "soroushthon"
7
- version = "0.2.93.dev0"
8
- description = "کتابخانهٔ ناهمگام پایتون برای حساب کاربری سروش‌پلاس"
7
+ version = "0.2.94"
8
+ description = "کلاینت ناهمگام پایتون برای ساخت ابزارهای حساب کاربری سروش‌پلاس"
9
9
  readme = "PYPI_README.md"
10
10
  requires-python = ">=3.9"
11
11
  license = "GPL-3.0-only"
@@ -18,6 +18,9 @@ classifiers = [
18
18
  "Topic :: Communications :: Chat",
19
19
  ]
20
20
 
21
+ [project.urls]
22
+ Community = "https://splus.ir/soroushthon"
23
+
21
24
  [project.optional-dependencies]
22
25
  test = ["pytest>=7", "pytest-asyncio>=0.23"]
23
26
  media = ["hachoir>=3.3"]
@@ -0,0 +1 @@
1
+ __version__ = '0.2.94'
@@ -0,0 +1,113 @@
1
+ Metadata-Version: 2.4
2
+ Name: soroushthon
3
+ Version: 0.2.94
4
+ Summary: کلاینت ناهمگام پایتون برای ساخت ابزارهای حساب کاربری سروش‌پلاس
5
+ License-Expression: GPL-3.0-only
6
+ Project-URL: Community, https://splus.ir/soroushthon
7
+ Keywords: soroush plus,asyncio,messaging,user client
8
+ Classifier: Programming Language :: Python :: 3
9
+ Classifier: Operating System :: OS Independent
10
+ Classifier: Topic :: Communications :: Chat
11
+ Requires-Python: >=3.9
12
+ Description-Content-Type: text/markdown
13
+ License-File: LICENSE
14
+ License-File: TELETHON_LICENSE
15
+ License-File: NOTICE.md
16
+ Requires-Dist: aiohttp>=3.8
17
+ Requires-Dist: pyaes>=1.6
18
+ Requires-Dist: rsa>=4
19
+ Provides-Extra: test
20
+ Requires-Dist: pytest>=7; extra == "test"
21
+ Requires-Dist: pytest-asyncio>=0.23; extra == "test"
22
+ Provides-Extra: media
23
+ Requires-Dist: hachoir>=3.3; extra == "media"
24
+ Provides-Extra: audio
25
+ Requires-Dist: livekit; extra == "audio"
26
+ Dynamic: license-file
27
+
28
+ # سروش‌تون | Soroushthon
29
+
30
+ ### سروش‌پلاس را با پایتون به ایده‌هایت وصل کن
31
+
32
+ یک پیام تازه می‌رسد؛ برنامه‌ات آن را می‌بیند، تصمیم می‌گیرد و پاسخ می‌دهد. **Soroushthon** ابزار پایتونی ناهمگام برای ساخت چنین برنامه‌هایی با **حساب کاربری سروش‌پلاس** است: از یک پاسخ ساده به پیام تا کار با گفتگوها، رسانه‌ها، نظرسنجی‌ها و رویدادها.
33
+
34
+ کد روزمره را با متدهای آشنا بنویس و وقتی به جزئیات بیشتری نیاز داری، به درخواست‌های خام کتابخانه دسترسی داشته باش. برای هر حساب هم می‌توانی نشست جداگانه نگه داری.
35
+
36
+ ## در چند خط، اولین واکنش را بساز
37
+
38
+ این نمونه پیام `ping` را که **خودت با همان حساب** می‌فرستی می‌بیند و روی همان پیام پاسخ می‌دهد:
39
+
40
+ ```python
41
+ from soroushthon import SoroushClient
42
+
43
+ client = SoroushClient.for_account("main")
44
+
45
+
46
+ @client.on_message(outgoing=True, pattern=r"(?i)\Aping\Z")
47
+ async def reply_to_ping(event):
48
+ await client.send_message(
49
+ await event.get_input_chat(),
50
+ "pong",
51
+ reply_to=event.id,
52
+ )
53
+
54
+
55
+ client.start()
56
+ client.run_until_disconnected()
57
+ ```
58
+
59
+ اولین اجرا اطلاعات ورود را درخواست می‌کند. نشست حساب روی دستگاه ذخیره می‌شود؛ فایل‌های `.session` را در اختیار دیگران قرار نده.
60
+
61
+ ## چه چیزهایی می‌توانی بسازی؟
62
+
63
+ | زمینه | ابزارهای کتابخانه |
64
+ | --- | --- |
65
+ | پیام‌ها | خواندن، جست‌وجو، ارسال، ویرایش، حذف و پاسخ‌دادن به پیام |
66
+ | فایل و رسانه | ارسال و دریافت عکس، ویدئو، صوت و سند |
67
+ | برنامه‌های واکنشی | ثبت تابع برای پیام تازه و دیگر رویدادهای پشتیبانی‌شده |
68
+ | گفتگو و کانال | فهرست گفتگوها، اطلاعات گفتگو، اعضا و نقش‌ها |
69
+ | تعامل | نظرسنجی، رأی و واکنش به پیام |
70
+ | چند حساب | نشست مستقل با `SoroushClient.for_account(...)` |
71
+ | امکانات پیشرفته | دسترسی به درخواست‌های خام برای توسعه و بررسی پروتکل |
72
+
73
+ متدهای کوتاهی مانند `send`، `messages`، `file`، `poll` و `react` در کنار نام‌های کامل آن‌ها قرار دارند. این نام‌ها برای ساده‌تر نوشتن کدند؛ هر درخواست خامِ موجود در بسته الزاماً روی سرور در همهٔ شرایط آزموده نشده است.
74
+
75
+ ## نصب؛ یک دستور قابل کپی
76
+
77
+ به Python 3.9 یا جدیدتر نیاز داری. دستورهای زیر فقط از نویسه‌های انگلیسی استفاده می‌کنند:
78
+
79
+ **Pydroid 3 و Termux** — در ترمینال همان برنامه:
80
+
81
+ ```sh
82
+ python -m pip install --upgrade soroushthon
83
+ ```
84
+
85
+ **VS Code روی Linux یا macOS** — در ترمینال پروژه:
86
+
87
+ ```sh
88
+ python -m pip install --upgrade soroushthon
89
+ ```
90
+
91
+ **VS Code روی Windows** — در ترمینال پروژه:
92
+
93
+ ```powershell
94
+ py -m pip install --upgrade soroushthon
95
+ ```
96
+
97
+ در VS Code مفسر Python همان محیطی را انتخاب کن که دستور نصب را در آن اجرا کردی. روی Android، نصب `aiohttp` و وابستگی‌های آن به سازگاری بسته‌ها با نسخهٔ Python محیطت بستگی دارد؛ در محیطی که این وابستگی‌ها نصب باشند، خود Soroushthon به‌صورت wheel مستقل از معماری ارائه می‌شود.
98
+
99
+ برای دیدن نسخهٔ نصب‌شده:
100
+
101
+ ```sh
102
+ python -c "import soroushthon; print(soroushthon.__version__)"
103
+ ```
104
+
105
+ در Windows، اگر با `py` نصب کردی، در دستور بررسی هم `python` را با `py` جایگزین کن.
106
+
107
+ ## از اینجا ادامه بده
108
+
109
+ برای هر حساب یک نام انتخاب کن: `main` برای حساب اصلی یا نام‌هایی مثل `work` برای نشست جدا. برای برنامهٔ ناهمگام موجود هم می‌توانی از `await client.start()` و `await client.disconnect()` استفاده کنی. نصب وابستگی‌های اصلی `aiohttp`، `pyaes` و `rsa` را `pip` انجام می‌دهد؛ بعضی امکانات رسانه‌ای وابستگی اختیاری دارند.
110
+
111
+ Soroushthon یک پروژهٔ **غیررسمی** است و به برنامهٔ رسمی سروش‌پلاس وابسته نیست. وضعیت اجرای امکانات پیشرفته می‌تواند به پاسخ سرور و نوع گفتگو بستگی داشته باشد. سورس با مجوز **GPL-3.0-only** منتشر می‌شود؛ اطلاعات منشأ کدهای اقتباس‌شده در `NOTICE.md` و `TELETHON_LICENSE` همراه بسته آمده است.
112
+
113
+ برای گفتگو دربارهٔ پروژه و دیدن نمونه‌های بیشتر: [@soroushthon در سروش‌پلاس](https://splus.ir/soroushthon).
@@ -1,78 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: soroushthon
3
- Version: 0.2.93.dev0
4
- Summary: کتابخانهٔ ناهمگام پایتون برای حساب کاربری سروش‌پلاس
5
- License-Expression: GPL-3.0-only
6
- Keywords: soroush plus,asyncio,messaging,user client
7
- Classifier: Programming Language :: Python :: 3
8
- Classifier: Operating System :: OS Independent
9
- Classifier: Topic :: Communications :: Chat
10
- Requires-Python: >=3.9
11
- Description-Content-Type: text/markdown
12
- License-File: LICENSE
13
- License-File: TELETHON_LICENSE
14
- License-File: NOTICE.md
15
- Requires-Dist: aiohttp>=3.8
16
- Requires-Dist: pyaes>=1.6
17
- Requires-Dist: rsa>=4
18
- Provides-Extra: test
19
- Requires-Dist: pytest>=7; extra == "test"
20
- Requires-Dist: pytest-asyncio>=0.23; extra == "test"
21
- Provides-Extra: media
22
- Requires-Dist: hachoir>=3.3; extra == "media"
23
- Provides-Extra: audio
24
- Requires-Dist: livekit; extra == "audio"
25
- Dynamic: license-file
26
-
27
- # سروش‌تون | Soroushthon
28
-
29
- ### پایتون و حساب سروش‌پلاس؛ بقیه‌اش با ایدهٔ خودت
30
-
31
- سروش‌تون را ساخته‌ام تا برای کارهای تکراریِ سروش‌پلاس لازم نباشد هر بار از اول با جزئیات پروتکل درگیر شوم. وقتی می‌خواهم پیام‌ها را بخوانم، فایلی بفرستم، برای یک گروه برنامه بنویسم یا به رویدادهای تازه واکنش نشان بدهم، ترجیح می‌دهم کد برنامه‌ام را ببینم، نه انبوهی از درخواست‌های ریز را.
32
-
33
- برای همین متدهای روزمره را کوتاه و سرراست نگه داشته‌ام و راهِ استفاده از درخواست‌های خام را هم باز گذاشته‌ام. کتابخانه با **حساب کاربری سروش‌پلاس** و `asyncio` کار می‌کند؛ می‌توانی برای هر حساب نشست خودش را داشته باشی.
34
-
35
- چند کاری که می‌شود باهاش انجام داد:
36
-
37
- - خواندن، جست‌وجو، فرستادن، ویرایش و حذف پیام در گفتگوی خصوصی، گروه و کانال
38
- - فرستادن و دریافت عکس، ویدئو، صوت، پیام صوتی و فایل
39
- - نوشتن برنامه‌هایی که به پیام و رویداد تازه واکنش نشان می‌دهند
40
- - کار با نظرسنجی، رأی و واکنش
41
- - خواندن اطلاعات گروه و کانال، اعضا و نقش‌ها، و بررسی عضویت کاربر مشخص
42
- - ساخت و فرستادن لینک نشست کنفرانس در گفتگو
43
-
44
- ## یک شروع کوتاه
45
-
46
- ```bash
47
- python -m pip install soroushthon
48
- ```
49
-
50
- ```python
51
- import asyncio
52
- from soroushthon import SoroushClient
53
-
54
-
55
- async def main():
56
- client = SoroushClient.for_account('main')
57
- await client.start()
58
- try:
59
- me = await client.me()
60
- print('شناسهٔ حساب:', me.id)
61
-
62
- await client.send('me', 'سلام از سروش‌تون!')
63
-
64
- chat = await client.bind_chat('@my_channel')
65
- for message in await chat.messages(limit=5):
66
- print(message)
67
- finally:
68
- await client.disconnect()
69
-
70
-
71
- asyncio.run(main())
72
- ```
73
-
74
- پایتون ۳٫۹ یا جدیدتر کافی است. برای حساب دوم هم می‌توانی به‌جای `main` یک نام دیگر مثل `work` بگذاری؛ نشست‌ها جدا نگه داشته می‌شوند.
75
-
76
- اگر داری با سروش‌تون برنامه می‌سازی، خبرهای نسخه‌های تازه را می‌خواهی یا جایی از کار سؤال داری، به [گپ/کانال `@soroushthon` در سروش‌پلاس](https://splus.ir/soroushthon) بیا. سورس، نمونه‌ها و راهنماهای بیشتر هم در مخزن پروژه قرار دارند.
77
-
78
- این پروژه با مجوز **GPLv3** منتشر می‌شود؛ اطلاعات منشأ کدهای اقتباس‌شده همراه سورس آمده است.
@@ -1,44 +0,0 @@
1
- # اجرای کتابخانه در محیط‌های مختلف
2
-
3
- VS Code ویرایشگر است؛ اجرای برنامه به Python انتخاب‌شده در آن بستگی دارد. برای توسعه، رباتِ روی هاست و Termux از همان API `SoroushClient` استفاده کن. هستهٔ پیام، فایل، نظرسنجی، رویداد و ساخت لینک کنفرانس به `livekit` و `ffmpeg` وابسته نیست. اتصال به اتاق صوتی یا پخش فایل صوتی در تماس اختیاری و جداست.
4
-
5
- این سورس توسعه هنوز منتشر نشده است؛ `pip install soroushthon` از PyPI نسخهٔ قبلی را می‌گیرد. پوشهٔ سورس را روی محیط مقصد منتقل و از داخل آن نصب کن. بستهٔ جاری `aiohttp`، `pyaes` و `rsa` را به‌عنوان وابستگی پایه تعریف می‌کند.
6
-
7
- ## لینوکس، macOS و هاست لینوکسی
8
-
9
- ```sh
10
- cd soroushthon-0.2.35-dev
11
- python3 -m venv .venv
12
- .venv/bin/python -m pip install -e .
13
- .venv/bin/python -c "import soroushthon; print(soroushthon.__version__)"
14
- ```
15
-
16
- روی هاست، فرآیند ربات باید در حال اجرا بماند و شبکهٔ خروجی و فضای پایدار برای فایل نشست داشته باشد. نخستین ورود معمولاً کد تأیید می‌خواهد؛ فایل نشست را عمومی یا داخل مخزن منتشر نکن. `for_account('test')` در خانهٔ کاربر اجراکننده یک نشست جدا می‌سازد. فایل نشستِ ایجادشده را بدون نیاز یا مجوز به محیط دیگری منتقل نکن.
17
-
18
- ## Windows و VS Code
19
-
20
- در PowerShell داخل پوشهٔ سورس:
21
-
22
- ```powershell
23
- py -m venv .venv
24
- .venv\Scripts\python.exe -m pip install -e .
25
- .venv\Scripts\python.exe -c "import soroushthon; print(soroushthon.__version__)"
26
- ```
27
-
28
- در VS Code دستور **Python: Select Interpreter** را اجرا و Python داخل همین `.venv` را انتخاب کن. اجرای برنامه روی VS Code، PowerShell یا یک هاست باید همان نسخهٔ کتابخانه را از همان محیط Python import کند.
29
-
30
- ## Termux
31
-
32
- پس از استخراج ZIP در خانهٔ Termux، اگر وابستگی‌های پایهٔ نسخهٔ قبلی را نصب کرده‌ای:
33
-
34
- ```sh
35
- cd ~/soroushthon-0.2.35-dev
36
- python -c "import soroushthon; print(soroushthon.__version__)"
37
- python examples/full_coverage.py --account test --only-conference --create-meet
38
- ```
39
-
40
- برای استفاده از کتابخانه در یک پروژهٔ دیگر، آن را در محیط Python همان پروژه نصب کن. اگر محیط مجازی جدا ساخته‌ای، دستور نصب را از Python همان محیط اجرا کن. ساخت کنفرانس مستقل هیچ وابستگی صوتی ندارد. گوشی آزمایشی `armv7l` است و در آن `livekit` و `ffmpeg` نصب نبودند؛ از این نتیجه نمی‌توان دربارهٔ نصب یا اجرای رسانه روی سرور لینوکسی یا رایانه نتیجه گرفت.
41
-
42
- ## مرز تأیید
43
-
44
- آزمون‌های محلی در Linux اجرا شده‌اند؛ حساب آزمایشی از Termux ساخت، ورود، خروج و پایان کنفرانس مستقل را تأیید کرد. فایل `.github/workflows/check.yml` ماتریس Python 3.12 و 3.13 روی Linux، Windows و macOS را تعریف می‌کند؛ این ماتریس بعد از قرارگرفتن پروژه در مخزن GitHub اجرا می‌شود و در حال حاضر نتیجه‌ای برای Windows/macOS نداریم. رفتار شبکه و قابلیت‌های خاص سرور نیز جدا از موفقیت آزمون‌های محلی است.