
    Yi                         S r SSKJr  SSKJrJr  SSKJr  SSKJ	r	  SSK
Jr  SSKJr  \(       a  SSKJr   " S	 S
\	5      rg)zOThis module contains an object that represents a Telegram InlineKeyboardMarkup.    )Sequence)TYPE_CHECKINGOptional)InlineKeyboardButton)TelegramObject)check_keyboard_type)JSONDict)Botc            	          ^  \ rS rSrSrSrSS.S\\\      S\\	   4U 4S jjjr
\ SS	\\	   S
\S   S\S    4S jj5       r\S\S\SS 4S j5       r\S\\   S\SS 4S j5       r\S\\   S\SS 4S j5       rSrU =r$ )InlineKeyboardMarkup    a  
This object represents an inline keyboard that appears right next to the message it belongs to.

Objects of this class are comparable in terms of equality. Two objects of this class are
considered equal, if their size of :attr:`inline_keyboard` and all the buttons are equal.

.. figure:: https://core.telegram.org/file/464001863/110f3/I47qTXAD9Z4.120010/e0        ea04f66357b640ec
    :align: center

    An inline keyboard on a message

.. seealso::
    Another kind of keyboard would be the :class:`telegram.ReplyKeyboardMarkup`.

Examples:
    * :any:`Inline Keyboard 1 <examples.inlinekeyboard>`
    * :any:`Inline Keyboard 2 <examples.inlinekeyboard2>`

Args:
    inline_keyboard (Sequence[Sequence[:class:`telegram.InlineKeyboardButton`]]): Sequence of
        button rows, each represented by a sequence of :class:`~telegram.InlineKeyboardButton`
        objects.

        .. versionchanged:: 20.0
            |sequenceclassargs|

Attributes:
    inline_keyboard (tuple[tuple[:class:`telegram.InlineKeyboardButton`]]): Tuple of
        button rows, each represented by a tuple of :class:`~telegram.InlineKeyboardButton`
        objects.

        .. versionchanged:: 20.0
            |tupleclassattrs|

)inline_keyboardN
api_kwargsr   r   c                   > [         TU ]  US9  [        U5      (       d  [        S5      e[	        S U 5       5      U l        U R
                  4U l        U R                  5         g )Nr   zZThe parameter `inline_keyboard` should be a sequence of sequences of InlineKeyboardButtonsc              3   8   #    U  H  n[        U5      v   M     g 7fN)tuple).0rows     P/app/.venv/lib/python3.13/site-packages/telegram/_inline/inlinekeyboardmarkup.py	<genexpr>0InlineKeyboardMarkup.__init__.<locals>.<genexpr>U   s      S
"13E#JJ/s   )super__init__r   
ValueErrorr   r   	_id_attrs_freeze)selfr   r   	__class__s      r   r   InlineKeyboardMarkup.__init__H   sn     	J/"?33( 
 NS S
"1S
 N
 ..0    databotr
   returnc                     U(       d  g/ nUS    HO  n/ nU H3  n[         R                  " Xb5      nU(       d  M"  UR                  U5        M5     UR                  U5        MQ     U " U5      $ )z,See :meth:`telegram.TelegramObject.de_json`.Nr   )r   de_jsonappend)clsr#   r$   keyboardr   tmpcolbtns           r   r'   InlineKeyboardMarkup.de_json]   sh    
 )*CC*223<3JJsO  OOC  + 8}r"   buttonkwargsc                     U " U//40 UD6$ )zShortcut for::

    InlineKeyboardMarkup([[button]], **kwargs)

Return an InlineKeyboardMarkup from a single InlineKeyboardButton

Args:
    button (:class:`telegram.InlineKeyboardButton`): The button to use in the markup

 )r)   r/   r0   s      r   from_button InlineKeyboardMarkup.from_buttonp   s     VH:(((r"   
button_rowc                     U " U/40 UD6$ )a<  Shortcut for::

    InlineKeyboardMarkup([button_row], **kwargs)

Return an InlineKeyboardMarkup from a single row of InlineKeyboardButtons

Args:
    button_row (Sequence[:class:`telegram.InlineKeyboardButton`]): The button to use
        in the markup

        .. versionchanged:: 20.0
            |sequenceargs|

r2   )r)   r5   r0   s      r   from_rowInlineKeyboardMarkup.from_row~   s    $ J<*6**r"   button_columnc                 B    U Vs/ s H  o3/PM     nnU " U40 UD6$ s  snf )a]  Shortcut for::

    InlineKeyboardMarkup([[button] for button in button_column], **kwargs)

Return an InlineKeyboardMarkup from a single column of InlineKeyboardButtons

Args:
    button_column (Sequence[:class:`telegram.InlineKeyboardButton`]): The button to use
        in the markup

         .. versionchanged:: 20.0
            |sequenceargs|

r2   )r)   r9   r0   r/   button_grids        r   from_column InlineKeyboardMarkup.from_column   s-    $ /<<mFxm<;)&)) =s   )r   r   r   )__name__
__module____qualname____firstlineno____doc__	__slots__r   r   r   r	   r   classmethodr'   objectr3   r7   r<   __static_attributes____classcell__)r    s   @r   r   r       s   #J %I *.	!(+?"@A X&	 * >BH%,4UO	(	) $ )!5 ) )Lb ) ) +!"67+CI+	+ +& *$%9:*FL*	* *r"   r   N)rB   collections.abcr   typingr   r   %telegram._inline.inlinekeyboardbuttonr   telegram._telegramobjectr   telegram._utils.markupr   telegram._utils.typesr	   telegramr
   r   r2   r"   r   <module>rO      s1   & V $ * F 3 6 *E*> E*r"   