
    ՟f3                         d Z ddlmZ ddlmZmZmZmZmZ ddl	m
Z
 ddlmZmZmZ ddlmZ ddlmZ ddlmZ dd	lmZ erdd
lmZmZ  G d de      Zy)zSThis module contains an object that represents a Telegram EncryptedPassportElement.    )	b64decode)TYPE_CHECKINGOptionalSequenceTupleUnion)decrypt_json)IdDocumentDataPersonalDetailsResidentialAddress)PassportFile)TelegramObject)parse_sequence_arg)JSONDict)BotCredentialsc                   6    e Zd ZdZdZ	 	 	 	 	 	 	 	 	 ddddededeeee	e
f      dee   d	ee   d
eee      dee   dee   dee   deee      ded   dee   f fdZe	 ddee   ded   ded    f fd       Zedee   ded   ddded    f fd       Z xZS )EncryptedPassportElementa  
    Contains information about documents or other Telegram Passport elements shared with the bot
    by the user. The data has been automatically decrypted by python-telegram-bot.

    Objects of this class are comparable in terms of equality. Two objects of this class are
    considered equal, if their :attr:`type`, :attr:`data`, :attr:`phone_number`, :attr:`email`,
    :attr:`files`, :attr:`front_side`, :attr:`reverse_side` and :attr:`selfie` are equal.

    Note:
        This object is decrypted only when originating from
        :attr:`telegram.PassportData.decrypted_data`.

    Args:
        type (:obj:`str`): Element type. One of "personal_details", "passport", "driver_license",
            "identity_card", "internal_passport", "address", "utility_bill", "bank_statement",
            "rental_agreement", "passport_registration", "temporary_registration", "phone_number",
            "email".
        hash (:obj:`str`): Base64-encoded element hash for using in
            :class:`telegram.PassportElementErrorUnspecified`.
        data (:class:`telegram.PersonalDetails` | :class:`telegram.IdDocumentData` |             :class:`telegram.ResidentialAddress` | :obj:`str`, optional):
            Decrypted or encrypted data; available only for "personal_details", "passport",
            "driver_license", "identity_card", "internal_passport" and "address" types.
        phone_number (:obj:`str`, optional): User's verified phone number; available only for
            "phone_number" type.
        email (:obj:`str`, optional): User's verified email address; available only for "email"
            type.
        files (Sequence[:class:`telegram.PassportFile`], optional): Array of encrypted/decrypted
            files with documents provided by the user; available only for "utility_bill",
            "bank_statement", "rental_agreement", "passport_registration" and
            "temporary_registration" types.

            .. versionchanged:: 20.0
                |sequenceclassargs|

        front_side (:class:`telegram.PassportFile`, optional): Encrypted/decrypted file with the
            front side of the document, provided by the user; Available only for "passport",
            "driver_license", "identity_card" and "internal_passport".
        reverse_side (:class:`telegram.PassportFile`, optional): Encrypted/decrypted file with the
            reverse side of the document, provided by the user; Available only for
            "driver_license" and "identity_card".
        selfie (:class:`telegram.PassportFile`, optional): Encrypted/decrypted file with the
            selfie of the user holding a document, provided by the user; available if requested for
            "passport", "driver_license", "identity_card" and "internal_passport".
        translation (Sequence[:class:`telegram.PassportFile`], optional): Array of
            encrypted/decrypted files with translated versions of documents provided by the user;
            available if requested requested for "passport", "driver_license", "identity_card",
            "internal_passport", "utility_bill", "bank_statement", "rental_agreement",
            "passport_registration" and "temporary_registration" types.

            .. versionchanged:: 20.0
                |sequenceclassargs|

    Attributes:
        type (:obj:`str`): Element type. One of "personal_details", "passport", "driver_license",
            "identity_card", "internal_passport", "address", "utility_bill", "bank_statement",
            "rental_agreement", "passport_registration", "temporary_registration", "phone_number",
            "email".
        hash (:obj:`str`): Base64-encoded element hash for using in
            :class:`telegram.PassportElementErrorUnspecified`.
        data (:class:`telegram.PersonalDetails` | :class:`telegram.IdDocumentData` |             :class:`telegram.ResidentialAddress` | :obj:`str`):
            Optional. Decrypted or encrypted data; available only for "personal_details",
            "passport", "driver_license", "identity_card", "internal_passport" and "address" types.
        phone_number (:obj:`str`): Optional. User's verified phone number; available only for
            "phone_number" type.
        email (:obj:`str`): Optional. User's verified email address; available only for "email"
            type.
        files (Tuple[:class:`telegram.PassportFile`]): Optional. Array of encrypted/decrypted
            files with documents provided by the user; available only for "utility_bill",
            "bank_statement", "rental_agreement", "passport_registration" and
            "temporary_registration" types.

            .. versionchanged:: 20.0

                * |tupleclassattrs|
                * |alwaystuple|

        front_side (:class:`telegram.PassportFile`): Optional. Encrypted/decrypted file with the
            front side of the document, provided by the user; available only for "passport",
            "driver_license", "identity_card" and "internal_passport".
        reverse_side (:class:`telegram.PassportFile`): Optional. Encrypted/decrypted file with the
            reverse side of the document, provided by the user; available only for "driver_license"
            and "identity_card".
        selfie (:class:`telegram.PassportFile`): Optional. Encrypted/decrypted file with the
            selfie of the user holding a document, provided by the user; available if requested for
            "passport", "driver_license", "identity_card" and "internal_passport".
        translation (Tuple[:class:`telegram.PassportFile`]): Optional. Array of
            encrypted/decrypted files with translated versions of documents provided by the user;
            available if requested for "passport", "driver_license", "identity_card",
            "internal_passport", "utility_bill", "bank_statement", "rental_agreement",
            "passport_registration" and "temporary_registration" types.

            .. versionchanged:: 20.0

                * |tupleclassattrs|
                * |alwaystuple|

    )
dataemailfiles
front_sidehashphone_numberreverse_sideselfietranslationtypeN
api_kwargsr   r   r   r   r   r   r   r   r   r   credentialsr   r    c                   t         |   |       || _        || _        || _        || _        t        |      | _        || _        || _	        |	| _
        t        |
      | _        || _        | j                  | j                  | j                  | j
                  | j                  | j                  | j                  | j                  f| _        | j                          y )Nr   )super__init__r   r   r   r   r   r   r   r   r   r   r   	_id_attrs_freeze)selfr   r   r   r   r   r   r   r   r   r   r!   r    	__class__s                f/var/www/cvtools/html/venv/lib/python3.12/site-packages/telegram/_passport/encryptedpassportelement.pyr$   z!EncryptedPassportElement.__init__   s    & 	J/ 	Z^	+7$)
/A%/H
2<4@.45G5T	 IIIIJJJJOOKK	
 	    botr   returnc                    | j                  |      }|syt        j                  |j                  d      |      xs d|d<   t        j                  |j                  d      |      |d<   t        j                  |j                  d      |      |d<   t        j                  |j                  d      |      |d<   t        j                  |j                  d      |      xs d|d<   t
        |   ||      S )z,See :meth:`telegram.TelegramObject.de_json`.Nr   r   r   r   r   r   r+   )_parse_datar   de_listgetde_jsonr#   )clsr   r+   r(   s      r)   r2   z EncryptedPassportElement.de_json   s    
 t$$,,TXXg->DLW)11$((<2H#N\+33DHH^4LcR^%--dhhx.@#FX*22488M3JCPXTX]wDc22r*   c                 F   |sy|d   dvrt        |j                  |d         }|j                  t        |d   t              sVt        t        |j                  j                        t        |j                  j                        t        |d               |d<   |d   dk(  rt        j                  |d   |      |d<   nJ|d   dv rt        j                  |d   |      |d<   n%|d   dk(  rt        j                  |d   |      |d<   t        j                  |j                  d	      ||j                         xs d|d	<   t        j"                  |j                  d
      ||j$                        |d
<   t        j"                  |j                  d      ||j&                        |d<   t        j"                  |j                  d      ||j(                        |d<   t        j                  |j                  d      ||j*                        xs d|d<   t,        | )  ||      S )a  Variant of :meth:`telegram.TelegramObject.de_json` that also takes into account
        passport credentials.

        Args:
            data (Dict[:obj:`str`, ...]): The JSON data.
            bot (:class:`telegram.Bot` | :obj:`None`): The bot associated with these object.
                May be :obj:`None`, in which case shortcut methods will not be available.

                .. versionchanged:: 21.4
                   :paramref:`bot` is now optional and defaults to :obj:`None`

                .. deprecated:: 21.4
                   This argument will be converted to an optional argument in future versions.
            credentials (:class:`telegram.FileCredentials`): The credentials

        Returns:
            :class:`telegram.EncryptedPassportElement`:

        Nr   )r   r   r   personal_details)r+   )passportinternal_passportdriver_licenseidentity_cardaddressr   r   r   r   r   r.   )getattrsecure_datar   
isinstancedictr	   r   secretr   r   r2   r
   r   r   de_list_decryptedr1   r   de_json_decryptedr   r   r   r   r#   )r3   r   r+   r!   r<   r(   s        r)   rA   z*EncryptedPassportElement.de_json_decrypted   s   . <88!+"9"94<HK+!$v,5#/!+"2"2"9"9:!+"2"2"7"78!$v,/$DL
 <#55#2#:#:4<S#QDL&\ &  $2#9#9$v,C#PDL&\Y.#5#=#=d6lPS#TDL ..txx/@#{GXGXYa]a M ".!?!?&[-C-C"D $0#A#A(#{/G/G$D  *;;"C););DN ..HH]+S+2I2I  	  wDc22r*   )	NNNNNNNNN)N)__name__
__module____qualname____doc__	__slots__strr   r   r   r
   r   r   r   r   r$   classmethodr2   rA   __classcell__)r(   s   @r)   r   r   "   s   bHI" VZ&*#26-1/3)-8< -" *.#-- - u_n>PPQR	-
 sm- }- ./- \*- |,- &- h|45- 
-" X&#-^ >B3H%3,4UO3	,	-3 3" C3H%C3,4UOC3JWC3	,	-C3 C3r*   r   N)rE   base64r   typingr   r   r   r   r   telegram._passport.credentialsr	   telegram._passport.datar
   r   r   telegram._passport.passportfiler   telegram._telegramobjectr   telegram._utils.argumentparsingr   telegram._utils.typesr   telegramr   r   r    r*   r)   <module>rT      s=   & Z  B B 7 W W 8 3 > *)w3~ w3r*   