
    &j<                         d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZmZmZ ddlmZ erdd	lmZmZ  G d
 de
          ZdS )zRContains information about Telegram Passport data shared with the bot by the user.    )Sequence)TYPE_CHECKING)EncryptedCredentials)EncryptedPassportElement)TelegramObject)de_json_optionalde_list_optionalparse_sequence_arg)JSONDict)BotCredentialsc                        e Zd ZdZdZdddee         dededz  f fdZ	e
dded	d
dd f fd            Zedeedf         fd            Zedd            Z xZS )PassportDataa  Contains information about Telegram Passport data shared with the bot by the user.

    Note:
        To be able to decrypt this object, you must pass your ``private_key`` to either
        :class:`telegram.ext.Updater` or :class:`telegram.Bot`. Decrypted data is then found in
        :attr:`decrypted_data` and the payload can be found in :attr:`decrypted_credentials`'s
        attribute :attr:`telegram.Credentials.nonce`.

    Args:
        data (Sequence[:class:`telegram.EncryptedPassportElement`]): Array with encrypted
            information about documents and other Telegram Passport elements that was shared with
            the bot.

            .. versionchanged:: 20.0
                |sequenceclassargs|

        credentials (:class:`telegram.EncryptedCredentials`)): Encrypted credentials.

    Attributes:
        data (tuple[:class:`telegram.EncryptedPassportElement`]): Array with encrypted
            information about documents and other Telegram Passport elements that was shared with
            the bot.

            .. versionchanged:: 20.0
                |tupleclassattrs|

        credentials (:class:`telegram.EncryptedCredentials`): Encrypted credentials.


    )_decrypted_datacredentialsdataN
api_kwargsr   r   r   c                   t                                          |           t          |          | _        || _        d | _        t          d |D             |j        gz             | _        | 	                                 d S )Nr   c                     g | ]	}|j         
S  )type).0xs     `/usr/local/lib/hermes-agent/venv/lib/python3.11/site-packages/telegram/_passport/passportdata.py
<listcomp>z)PassportData.__init__.<locals>.<listcomp>Q   s    5551555    )
super__init__r
   r   r   r   tuplehash	_id_attrs_freeze)selfr   r   r   	__class__s       r   r   zPassportData.__init__D   sy     	J///:LT:R:R	1<GK555559I8JJKKr   botz
Bot | Nonereturnc                 $   |                      |          }t          |                    d          t          |          |d<   t	          |                    d          t
          |          |d<   t                                          ||          S )z,See :meth:`telegram.TelegramObject.de_json`.r   r   )r   r&   )_parse_datar	   getr   r   r   r   de_json)clsr   r&   r%   s      r   r+   zPassportData.de_jsonU   sw     t$$'(8(8:RTWXXV.txx/F/FH\^abb]wwDc222r   .c                 j      j         %t           fd j        D                        _          j         S )a  
        tuple[:class:`telegram.EncryptedPassportElement`]: Lazily decrypt and return information
            about documents and other Telegram Passport elements which were shared with the bot.

        .. versionchanged:: 20.0
            Returns a tuple instead of a list.

        Raises:
            telegram.error.PassportDecryptionError: Decryption failed. Usually due to bad
                private/public key but can also suggest malformed/tampered data.
        Nc              3      K   | ]C}t          j        |                                                                j                  V  Dd S N)r   de_json_decryptedto_dictget_botdecrypted_credentials)r   elementr$   s     r   	<genexpr>z.PassportData.decrypted_data.<locals>.<genexpr>m   sb       ) )  ):OO%%t||~~t7Q ) ) ) ) ) )r   )r   r    r   r$   s   `r   decrypted_datazPassportData.decrypted_data_   sU     '#( ) ) ) )  $y	) ) ) $ $D  ##r   r   c                     | j         j        S )a  
        :class:`telegram.Credentials`: Lazily decrypt and return credentials that were used
            to decrypt the data. This object also contains the user specified payload as
            `decrypted_data.payload`.

        Raises:
            telegram.error.PassportDecryptionError: Decryption failed. Usually due to bad
                private/public key but can also suggest malformed/tampered data.
        )r   r7   r6   s    r   r3   z"PassportData.decrypted_credentialsu   s     ..r   r/   )r'   r   )__name__
__module____qualname____doc__	__slots__r   r   r   r   r   classmethodr+   propertyr    r7   r3   __classcell__)r%   s   @r   r   r   "   s        > ;I '+  /0 *
 tO     " 3 38 3, 3. 3 3 3 3 3 [3 $&>&C D $ $ $ X$* 
/ 
/ 
/ X
/ 
/ 
/ 
/ 
/r   r   N)r<   collections.abcr   typingr   telegram._passport.credentialsr   +telegram._passport.encryptedpassportelementr   telegram._telegramobjectr   telegram._utils.argumentparsingr   r	   r
   telegram._utils.typesr   telegramr   r   r   r   r   r   <module>rI      s   & Y X $ $ $ $ $ $             ? ? ? ? ? ? P P P P P P 3 3 3 3 3 3 b b b b b b b b b b * * * * * * *))))))))^/ ^/ ^/ ^/ ^/> ^/ ^/ ^/ ^/ ^/r   