
    Yi3                         S r SSKJr  SSKJr  SSKJrJrJr  SSK	J
r
  SSKJr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Jr   " S S\5      rg)zSThis module contains an object that represents a Telegram EncryptedPassportElement.    )	b64decode)Sequence)TYPE_CHECKINGOptionalUnion)decrypt_json)IdDocumentDataPersonalDetailsResidentialAddress)PassportFile)TelegramObject)parse_sequence_arg)JSONDict)BotCredentialsc                   P  ^  \ rS rSrSrSr         SSS.S\S\S\\\	\
\4      S	\\   S
\\   S\\\      S\\   S\\   S\\   S\\\      S\S   S\\   4U 4S jjjjr\ SS\\   S\S   S\S    4U 4S jjj5       r\S\\   S\S   SSS\S    4U 4S jj5       rSrU =r$ )EncryptedPassportElement#   aO  
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U ]  US9  Xl        X0l        X@l        XPl        [        U5      U l        Xpl        Xl	        Xl
        [        U
5      U l        X l        U R                  U R                  U R                  U R
                  U R                  U R                  U R                  U R                  4U l        U R                  5         g )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                V/app/.venv/lib/python3.13/site-packages/telegram/_passport/encryptedpassportelement.pyr$   !EncryptedPassportElement.__init__   s    & 	J/ 	Z^	+7$)
/A%/H
2<4@.45G5T	 IIIIJJJJOOKK	
 	    botr   returnc                   > U R                  U5      nU(       d  g[        R                  " UR                  S5      U5      =(       d    SUS'   [        R                  " UR                  S5      U5      US'   [        R                  " UR                  S5      U5      US'   [        R                  " UR                  S5      U5      US'   [        R                  " UR                  S5      U5      =(       d    SUS'   [
        TU ]  XS9$ )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)   r3    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D22r+   c                 h  > U(       d  gUS   S;  Ga  [        UR                  US   5      nUR                  b  [        US   [        5      (       dV  [        [        UR                  R                  5      [        UR                  R                  5      [        US   5      5      US'   US   S:X  a  [        R                  " US   US9US'   OIUS   S;   a  [        R                  " US   US9US'   O$US   S:X  a  [        R                  " US   US9US'   [        R                  " UR                  S	5      X$R                   5      =(       d    SUS	'   [        R"                  " UR                  S
5      X$R$                  5      US
'   [        R"                  " UR                  S5      X$R&                  5      US'   [        R"                  " UR                  S5      X$R(                  5      US'   [        R                  " UR                  S5      X$R*                  5      =(       d    SUS'   [,        TU ])  XS9$ )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
   r3   r	   r   r   de_list_decryptedr2   r   de_json_decryptedr   r   r   r   r#   )r4   r   r,   r!   r>   r(   s        r)   rC   *EncryptedPassportElement.de_json_decrypted   s   . <88!+"9"94<HK+!$v,5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]+S2I2I  	  wD22r+   )r%   r   r   r   r   r   r   r   r   r   r   )	NNNNNNNNN)N)__name__
__module____qualname____firstlineno____doc__	__slots__strr   r   r
   r	   r   r   r   r   r$   classmethodr3   rC   __static_attributes____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)rI   base64r   collections.abcr   typingr   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>rZ      s@   & Z  $ 1 1 7 W W 8 3 > *)w3~ w3r+   