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

API 7.3: ChatFullInfo, Readmes #4242

Merged
merged 9 commits into from May 12, 2024
Merged

API 7.3: ChatFullInfo, Readmes #4242

merged 9 commits into from May 12, 2024

Conversation

harshil21
Copy link
Member

@harshil21 harshil21 commented May 8, 2024

Checklist

  • Added .. versionadded:: NEXT.VERSION, .. versionchanged:: NEXT.VERSION or .. deprecated:: NEXT.VERSION to the docstrings for user facing changes (for methods/class descriptions, arguments and attributes)
  • Created new or adapted existing unit tests
  • Documented code changes according to the CSI standard <https://standards.mousepawmedia.com/en/stable/csi.html>__
  • Added myself alphabetically to AUTHORS.rst (optional)
  • Added new classes & modules to the docs and all suitable __all__ s
  • Checked the Stability Policy <https://docs.python-telegram-bot.org/stability_policy.html>_ in case of deprecations or changes to documented behavior

If the PR contains API changes (otherwise, you can ignore this passage)

  • Checked the Bot API specific sections of the Stability Policy

  • New classes:

    • Added self._id_attrs and corresponding documentation
    • __init__ accepts api_kwargs as kw-only
  • Added new shortcuts:

    • In :class:~telegram.Chat & :class:~telegram.User for all methods that accept chat/user_id
    • In :class:~telegram.Message for all methods that accept chat_id and message_id
    • For new :class:~telegram.Message shortcuts: Added do_quote argument if methods accepts reply_to_message_id
    • In :class:~telegram.CallbackQuery for all methods that accept either chat_id and message_id or inline_message_id
  • If relevant:

    • Added new constants at :mod:telegram.constants and shortcuts to them as class variables
    • Link new and existing constants in docstrings instead of hard-coded numbers and strings
    • Add new message types to :attr:telegram.Message.effective_attachment
    • Added new handlers for new update types
    • Add the handlers to the warning loop in the :class:~telegram.ext.ConversationHandler
    • Added new filters for new message (sub)types
    • Added or updated documentation for the changed class(es) and/or method(s)
    • Added the new method(s) to _extbot.py
    • Added or updated bot_methods.rst
    • Updated the Bot API version number in all places: README.rst and README_RAW.rst (including the badge), as well as telegram.constants.BOT_API_VERSION_INFO
    • Added logic for arbitrary callback data in :class:telegram.ext.ExtBot for new methods that either accept a reply_markup in some form or have a return type that is/contains :class:~telegram.Message

@harshil21 harshil21 added the API label May 8, 2024
Copy link

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey! Looks like you edited README.rst or README_RAW.rst. I'm just a friendly reminder to apply relevant changes to both of those files :)

Copy link
Member

@Bibo-Joshi Bibo-Joshi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @harshil21 thanks for getting started. You were in fact a bit too quick for me :D To ensure backward compatibility in accordance to our stability policy, I would like to instead use the following approach:

  • Keep the arguments & attributes in Chat, just deprecate them as we usually do. This ensures backward compatibility for the class.
  • Make ChatFullInfo a subclass of Chat and add only arguments/attributes that ChatFullChatInfo has in addition to Chat. Avoiding to issue deprecation warnings in ChatFullInfo can be done maybe by implementing a helper method Chat._do_warn that ChatFullInfo can override. By subclassing, the return value of get_chat is backward compatible as well and should avoid code duplication for shortcut methods & properties. Document that the Chat base class will be removed in the future.
  • On the next api release, we can introduce a new private _ChatBase class that both Chat and ChatFullInfo inherit from.

@Bibo-Joshi Bibo-Joshi changed the base branch from master to api-7.3-central May 9, 2024 05:32
@Bibo-Joshi Bibo-Joshi changed the title API 7.3 API 7.3: ChatFullInfo, Readmes May 9, 2024
@Bibo-Joshi Bibo-Joshi mentioned this pull request May 9, 2024
12 tasks
@harshil21
Copy link
Member Author

harshil21 commented May 10, 2024

  • Make ChatFullInfo a subclass of Chat and add only arguments/attributes that ChatFullChatInfo has in addition to Chat. Avoiding to issue deprecation warnings in ChatFullInfo can be done maybe by implementing a helper method Chat._do_warn that ChatFullInfo can override.

what do you think about overriding __getattribute__ to raise the warnings? There are too many attributes to do our previous "make it a property" trick on (DRY principle)?

Copy link
Member

@Bibo-Joshi Bibo-Joshi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you very much for the updates! Just two nitpicks

telegram/_chat.py Show resolved Hide resolved
telegram/_chatfullinfo.py Outdated Show resolved Hide resolved
Copy link
Member

@Bibo-Joshi Bibo-Joshi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

basically LGTM, just two questions out of curiosity :)

telegram/_chat.py Outdated Show resolved Hide resolved
telegram/_chat.py Show resolved Hide resolved
@Bibo-Joshi Bibo-Joshi merged commit 484b014 into api-7.3-central May 12, 2024
21 of 23 checks passed
@Bibo-Joshi Bibo-Joshi deleted the api-7.3 branch May 12, 2024 18:37
@github-actions github-actions bot locked and limited conversation to collaborators May 20, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[FEATURE] API 7.3
2 participants