Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feat adding async session support #4244

Closed
wants to merge 2 commits into from
Closed

Conversation

humbertogontijo
Copy link

This is for those like me that want to use an async Session implementation

@Lonami
Copy link
Member

Lonami commented Nov 9, 2023

Parts of v1 rely on the session being sync. v2 already has async sessions.

@Lonami Lonami closed this Nov 9, 2023
@humbertogontijo
Copy link
Author

First of all, thank you for this amazing repository.

Isn't everything covered in this PR for v1?
v2 does not have an estimated date for being production ready, right?

@Lonami
Copy link
Member

Lonami commented Nov 9, 2023

I appreciate the kind words and apologize if the response was harsh.

This used to use the session:

self._input_sender = self._client._mb_entity_cache.get(
utils.resolve_id(self._sender_id)[0])._as_input_peer()

I guess at some point I changed it.

Isn't everything covered in this PR for v1?

I would need to check. But I have no plans to keep adding features to v1 regardless. v1 is pretty much feature-frozen (and has been for months if not years, perhaps except for a few things that slipped by). It is true this might not have been clear from the repository alone, but it has been my stance for a while.

v2 does not have an estimated date, but it is the way going forward. v1 will continue receiving bug fixes for a while until I eventually get tired of doing so.

Lonami added a commit that referenced this pull request Nov 9, 2023
Should prevent efforts like #4244 going to waste in the future.
@humbertogontijo
Copy link
Author

Seems fair. I'll be watching this repository closely. But since I can't contribute to v1 I'll wait on somewhat stable v2

Thank you once again

@humbertogontijo
Copy link
Author

I've been using this fork for the last 2 weeks and had no issues. We had a significantly performance increase with it

New-dev0 added a commit to TeamUltroid/Telethon that referenced this pull request Dec 11, 2023
* Change bug report template to an issue form

Lifted from Tachiyomi and adapted for Telethon.

See: https://github.com/tachiyomiorg/tachiyomi/blob/master/.github/ISSUE_TEMPLATE/report_issue.yml

* Change feature request template to an issue form

* Add dedicated form for documentation issues

* Update some fields in the GH issue template

* Fix comment_to for a group of messages (LonamiWebs#4120)

* Clarify OS field in bug report template

* Handle CancelledError inside mtprotosender recv loop

* Add missing formatting arg in logging call

Noticed in LonamiWebs#4123.

* Document more RPC errors (LonamiWebs#4127)

* Support most usernames in VALID_USERNAME_RE

See LonamiWebs#4128.

* Fix lack of support for anon channel restrictions (LonamiWebs#4130)

* Improve error message when trying to delete inline messages

Closes LonamiWebs#4129.

* Change html.unparse logic to mimic markdown's

It was overcomplicated and had some subtle bugs.
Closes LonamiWebs#4133.

* Update to layer 160

* Fix reply_to can be optional

* Fix _get_thumb failed when document had no thumbs

* Remove client-side checks when editing permissions

The server should instead fail with proper RPC errors,
as the rules could change any time (and the local checks
get out of date).

* Handle sqlite3.OperationalError in update loop

* Handle FloodWaitError in update loop

Likely temporary server issues, since getDifference should
realistically not fail with flood waits. In any case,
stopping early until the problem is resolved is the correct
approach.

* Don't attempt thumb download if there is no thumb

* Disable blank issues in GitHub (LonamiWebs#4157)

* Bump to v1.29.0

* Fix handling of UpdateShortSentMessage

* Improve image compression heuristics and algorithm used (LonamiWebs#4158)

* Fix reply_to when sending albums

* Sort tlobjects before generating their listing (LonamiWebs#4163)

* Don't treat asyncio.IncompleteReadError as unhandled

The library will behave the same, but the log severity is lowered.

* Except all types of timeout error

Closes LonamiWebs#4172.

* Return marked ID from MemorySession.get_entity_rows_by_id (LonamiWebs#4177)

Otherwise the unpacking done later won't work.

* Fix `is_inline` check for `KeyboardButtonWebView` (LonamiWebs#4183)

* Make MessageBox trace logs more useful

* Fix getting_diff_for with empty set was being spammed

Because the above check used >= but the inner check >.

* Further improve MessageBox trace logging

* Only update seq if pts changed

This solves UpdateChatParticipant being missed after UpdateChat,
which seems to reliable occur when a bot is in a Chat that gets
deleted.

* Change apply_deadlines_reset micro-optimization

No need for buffer reuse in Python. It simply complicates the code.
And even then it was not as optimal as it could.

* Update to layer 161

Closes LonamiWebs#4184.

* Fix incorrect param type in apply_channel_difference (LonamiWebs#4185)

* Fix date empty (LonamiWebs#4191)

* Remove client-side check in message.edit (LonamiWebs#4195)

Fixes LonamiWebs#4193.

* Update to layer 162

* Bump to v1.30

* Fix generator for pypy (LonamiWebs#4198)

* Fix invalid date type in UpdateShort

* Fix date empty when getting difference

* Fixed sorting of markup entities with the same offsets (LonamiWebs#4201)

* Remove uses of imghdr

It's deprecated. Closes LonamiWebs#4207.

* Update to layer 164

* Update to layer 165

* Update to v1.31

* Fix file name could be lost when uploading files

Leading to invalid extension when sending photos.

* Update to layer 166

* Fix init of custom Draft after layer update

* Bump to v1.32

* Add PR template mentioning v1 is feature-frozen

Should prevent efforts like LonamiWebs#4244 going to waste in the future.

* Force filename with JPG extension after resizing

Old name does not matter, since we just encoded it as JPEG

* Retry on TimedOutError (LonamiWebs#4255)

* Conditional webbrowser import (LonamiWebs#4261)

* Update to layer 167

* Bump to v1.33

* Prioritise closing tags when sorting tags

* Fix ordering of nested entities

* Bump to v1.33.1

* 'Refactored by Sourcery'

---------

Co-authored-by: novenary <streetwalkermc@gmail.com>
Co-authored-by: Lonami <totufals@hotmail.com>
Co-authored-by: iamilya <greznev@me.com>
Co-authored-by: Devesh Pal <newdev0@outlook.com>
Co-authored-by: rozha <il.novikov@gmail.com>
Co-authored-by: novenary <1155030+9ary@users.noreply.github.com>
Co-authored-by: Nick80835 <nick80835@gmail.com>
Co-authored-by: Bernhard M. Wiedemann <githubbmwprimary@lsmod.de>
Co-authored-by: Kacnep89 <76146578+Kacnep89@users.noreply.github.com>
Co-authored-by: misuzu <neironyan@gmail.com>
Co-authored-by: Shubham Kumar <kshubham506@gmail.com>
Co-authored-by: Non <thenonproton@protonmail.com>
Co-authored-by: Dingyuan Wang <abcdoyle888@gmail.com>
Co-authored-by: Alexander Goryushkin <43167451+alexgoryushkin@users.noreply.github.com>
Co-authored-by: mario-ttide <109175699+mario-ttide@users.noreply.github.com>
Co-authored-by: Balázs Triszka <info@balika011.hu>
Co-authored-by: udf <tabhooked@gmail.com>
Co-authored-by: Sourcery AI <>
New-dev0 added a commit to TeamUltroid/Telethon that referenced this pull request Dec 12, 2023
* Change bug report template to an issue form

Lifted from Tachiyomi and adapted for Telethon.

See: https://github.com/tachiyomiorg/tachiyomi/blob/master/.github/ISSUE_TEMPLATE/report_issue.yml

* Change feature request template to an issue form

* Add dedicated form for documentation issues

* Update some fields in the GH issue template

* Fix comment_to for a group of messages (LonamiWebs#4120)

* Clarify OS field in bug report template

* Handle CancelledError inside mtprotosender recv loop

* Add missing formatting arg in logging call

Noticed in LonamiWebs#4123.

* Document more RPC errors (LonamiWebs#4127)

* Support most usernames in VALID_USERNAME_RE

See LonamiWebs#4128.

* Fix lack of support for anon channel restrictions (LonamiWebs#4130)

* Improve error message when trying to delete inline messages

Closes LonamiWebs#4129.

* Change html.unparse logic to mimic markdown's

It was overcomplicated and had some subtle bugs.
Closes LonamiWebs#4133.

* Update to layer 160

* Fix reply_to can be optional

* Fix _get_thumb failed when document had no thumbs

* Remove client-side checks when editing permissions

The server should instead fail with proper RPC errors,
as the rules could change any time (and the local checks
get out of date).

* Handle sqlite3.OperationalError in update loop

* Handle FloodWaitError in update loop

Likely temporary server issues, since getDifference should
realistically not fail with flood waits. In any case,
stopping early until the problem is resolved is the correct
approach.

* Don't attempt thumb download if there is no thumb

* Disable blank issues in GitHub (LonamiWebs#4157)

* Bump to v1.29.0

* Fix handling of UpdateShortSentMessage

* Improve image compression heuristics and algorithm used (LonamiWebs#4158)

* Fix reply_to when sending albums

* Sort tlobjects before generating their listing (LonamiWebs#4163)

* Don't treat asyncio.IncompleteReadError as unhandled

The library will behave the same, but the log severity is lowered.

* Except all types of timeout error

Closes LonamiWebs#4172.

* Return marked ID from MemorySession.get_entity_rows_by_id (LonamiWebs#4177)

Otherwise the unpacking done later won't work.

* Fix `is_inline` check for `KeyboardButtonWebView` (LonamiWebs#4183)

* Make MessageBox trace logs more useful

* Fix getting_diff_for with empty set was being spammed

Because the above check used >= but the inner check >.

* Further improve MessageBox trace logging

* Only update seq if pts changed

This solves UpdateChatParticipant being missed after UpdateChat,
which seems to reliable occur when a bot is in a Chat that gets
deleted.

* Change apply_deadlines_reset micro-optimization

No need for buffer reuse in Python. It simply complicates the code.
And even then it was not as optimal as it could.

* Update to layer 161

Closes LonamiWebs#4184.

* Fix incorrect param type in apply_channel_difference (LonamiWebs#4185)

* Fix date empty (LonamiWebs#4191)

* Remove client-side check in message.edit (LonamiWebs#4195)

Fixes LonamiWebs#4193.

* Update to layer 162

* Bump to v1.30

* Fix generator for pypy (LonamiWebs#4198)

* Fix invalid date type in UpdateShort

* Fix date empty when getting difference

* Fixed sorting of markup entities with the same offsets (LonamiWebs#4201)

* Remove uses of imghdr

It's deprecated. Closes LonamiWebs#4207.

* Update to layer 164

* Update to layer 165

* Update to v1.31

* Fix file name could be lost when uploading files

Leading to invalid extension when sending photos.

* Update to layer 166

* Fix init of custom Draft after layer update

* Bump to v1.32

* Add PR template mentioning v1 is feature-frozen

Should prevent efforts like LonamiWebs#4244 going to waste in the future.

* Force filename with JPG extension after resizing

Old name does not matter, since we just encoded it as JPEG

* Retry on TimedOutError (LonamiWebs#4255)

* Conditional webbrowser import (LonamiWebs#4261)

* Update to layer 167

* Bump to v1.33

* Prioritise closing tags when sorting tags

* Fix ordering of nested entities

* Bump to v1.33.1

* 'Refactored by Sourcery'

---------

Co-authored-by: novenary <streetwalkermc@gmail.com>
Co-authored-by: Lonami <totufals@hotmail.com>
Co-authored-by: iamilya <greznev@me.com>
Co-authored-by: Devesh Pal <newdev0@outlook.com>
Co-authored-by: rozha <il.novikov@gmail.com>
Co-authored-by: novenary <1155030+9ary@users.noreply.github.com>
Co-authored-by: Nick80835 <nick80835@gmail.com>
Co-authored-by: Bernhard M. Wiedemann <githubbmwprimary@lsmod.de>
Co-authored-by: Kacnep89 <76146578+Kacnep89@users.noreply.github.com>
Co-authored-by: misuzu <neironyan@gmail.com>
Co-authored-by: Shubham Kumar <kshubham506@gmail.com>
Co-authored-by: Non <thenonproton@protonmail.com>
Co-authored-by: Dingyuan Wang <abcdoyle888@gmail.com>
Co-authored-by: Alexander Goryushkin <43167451+alexgoryushkin@users.noreply.github.com>
Co-authored-by: mario-ttide <109175699+mario-ttide@users.noreply.github.com>
Co-authored-by: Balázs Triszka <info@balika011.hu>
Co-authored-by: udf <tabhooked@gmail.com>
Co-authored-by: Sourcery AI <>
New-dev0 added a commit to TeamUltroid/Telethon that referenced this pull request May 13, 2024
* Change bug report template to an issue form

Lifted from Tachiyomi and adapted for Telethon.

See: https://github.com/tachiyomiorg/tachiyomi/blob/master/.github/ISSUE_TEMPLATE/report_issue.yml

* Change feature request template to an issue form

* Add dedicated form for documentation issues

* Update some fields in the GH issue template

* Fix comment_to for a group of messages (LonamiWebs#4120)

* Clarify OS field in bug report template

* Handle CancelledError inside mtprotosender recv loop

* Add missing formatting arg in logging call

Noticed in LonamiWebs#4123.

* Document more RPC errors (LonamiWebs#4127)

* Support most usernames in VALID_USERNAME_RE

See LonamiWebs#4128.

* Fix lack of support for anon channel restrictions (LonamiWebs#4130)

* Improve error message when trying to delete inline messages

Closes LonamiWebs#4129.

* Change html.unparse logic to mimic markdown's

It was overcomplicated and had some subtle bugs.
Closes LonamiWebs#4133.

* Update to layer 160

* Fix reply_to can be optional

* Fix _get_thumb failed when document had no thumbs

* Remove client-side checks when editing permissions

The server should instead fail with proper RPC errors,
as the rules could change any time (and the local checks
get out of date).

* Handle sqlite3.OperationalError in update loop

* Handle FloodWaitError in update loop

Likely temporary server issues, since getDifference should
realistically not fail with flood waits. In any case,
stopping early until the problem is resolved is the correct
approach.

* Don't attempt thumb download if there is no thumb

* Disable blank issues in GitHub (LonamiWebs#4157)

* Bump to v1.29.0

* Fix handling of UpdateShortSentMessage

* Improve image compression heuristics and algorithm used (LonamiWebs#4158)

* Fix reply_to when sending albums

* Sort tlobjects before generating their listing (LonamiWebs#4163)

* Don't treat asyncio.IncompleteReadError as unhandled

The library will behave the same, but the log severity is lowered.

* Except all types of timeout error

Closes LonamiWebs#4172.

* Return marked ID from MemorySession.get_entity_rows_by_id (LonamiWebs#4177)

Otherwise the unpacking done later won't work.

* Fix `is_inline` check for `KeyboardButtonWebView` (LonamiWebs#4183)

* Make MessageBox trace logs more useful

* Fix getting_diff_for with empty set was being spammed

Because the above check used >= but the inner check >.

* Further improve MessageBox trace logging

* Only update seq if pts changed

This solves UpdateChatParticipant being missed after UpdateChat,
which seems to reliable occur when a bot is in a Chat that gets
deleted.

* Change apply_deadlines_reset micro-optimization

No need for buffer reuse in Python. It simply complicates the code.
And even then it was not as optimal as it could.

* Update to layer 161

Closes LonamiWebs#4184.

* Fix incorrect param type in apply_channel_difference (LonamiWebs#4185)

* Fix date empty (LonamiWebs#4191)

* Remove client-side check in message.edit (LonamiWebs#4195)

Fixes LonamiWebs#4193.

* Update to layer 162

* Bump to v1.30

* Fix generator for pypy (LonamiWebs#4198)

* Fix invalid date type in UpdateShort

* Fix date empty when getting difference

* Fixed sorting of markup entities with the same offsets (LonamiWebs#4201)

* Remove uses of imghdr

It's deprecated. Closes LonamiWebs#4207.

* Update to layer 164

* Update to layer 165

* Update to v1.31

* Fix file name could be lost when uploading files

Leading to invalid extension when sending photos.

* Update to layer 166

* Fix init of custom Draft after layer update

* Bump to v1.32

* Add PR template mentioning v1 is feature-frozen

Should prevent efforts like LonamiWebs#4244 going to waste in the future.

* Force filename with JPG extension after resizing

Old name does not matter, since we just encoded it as JPEG

* Retry on TimedOutError (LonamiWebs#4255)

* Conditional webbrowser import (LonamiWebs#4261)

* Update to layer 167

* Bump to v1.33

* Prioritise closing tags when sorting tags

* Fix ordering of nested entities

* Bump to v1.33.1

* Fix typo in documentation example (LonamiWebs#4277)

* Fix restriction_reason type hint (LonamiWebs#4282)

* Update to layer 169

* Update to layer 170

* Add missing saved_peer_id parameter to Message

* Add new config file for readthedocs

* Update to layer 171

* Add reply_to_chat and reply_to_sender in Message (LonamiWebs#4300)

* Update to layer 172

* 'Refactored by Sourcery'

---------

Co-authored-by: novenary <streetwalkermc@gmail.com>
Co-authored-by: Lonami <totufals@hotmail.com>
Co-authored-by: iamilya <greznev@me.com>
Co-authored-by: Devesh Pal <newdev0@outlook.com>
Co-authored-by: rozha <il.novikov@gmail.com>
Co-authored-by: novenary <1155030+9ary@users.noreply.github.com>
Co-authored-by: Nick80835 <nick80835@gmail.com>
Co-authored-by: Bernhard M. Wiedemann <githubbmwprimary@lsmod.de>
Co-authored-by: Kacnep89 <76146578+Kacnep89@users.noreply.github.com>
Co-authored-by: misuzu <neironyan@gmail.com>
Co-authored-by: Shubham Kumar <kshubham506@gmail.com>
Co-authored-by: Non <thenonproton@protonmail.com>
Co-authored-by: Dingyuan Wang <abcdoyle888@gmail.com>
Co-authored-by: Alexander Goryushkin <43167451+alexgoryushkin@users.noreply.github.com>
Co-authored-by: mario-ttide <109175699+mario-ttide@users.noreply.github.com>
Co-authored-by: Balázs Triszka <info@balika011.hu>
Co-authored-by: udf <tabhooked@gmail.com>
Co-authored-by: Allen Calderwood <6539032+calderwoodra@users.noreply.github.com>
Co-authored-by: Jahongir Qurbonov <109198731+Jahongir-Qurbonov@users.noreply.github.com>
Co-authored-by: exovoq <134891828+exovoq@users.noreply.github.com>
Co-authored-by: Sourcery AI <>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants