
    (phC                         S r SSKrSSKrSSKJr  S r " S S5      r " S S5      r " S	 S
5      r " S S5      r	 " S S5      r
g)z Firebase user import sub module.    N)_auth_utilsc                 J    [         R                  " U 5      R                  5       $ N)base64urlsafe_b64encodedecode)bytes_values    N/var/www/html/venv/lib/python3.13/site-packages/firebase_admin/_user_import.py
b64_encoder      s    ##K07799    c                   ,   \ rS rSrSrSS jr\S 5       r\R                  S 5       r\S 5       r	\	R                  S 5       r	\S	 5       r
\
R                  S
 5       r
\S 5       r\R                  S 5       r\S 5       r\R                  S 5       rS rSrg)UserProvider   a  Represents a user identity provider that can be associated with a Firebase user.

One or more providers can be specified in an ``ImportUserRecord`` when importing users via
``auth.import_users()``.

Args:
    uid: User's unique ID assigned by the identity provider.
    provider_id: ID of the identity provider. This can be a short domain name or the identifier
        of an OpenID identity provider.
    email: User's email address (optional).
    display_name: User's display name (optional).
    photo_url: User's photo URL (optional).
Nc                 @    Xl         X l        X0l        X@l        XPl        g r   )uidprovider_idemaildisplay_name	photo_url)selfr   r   r   r   r   s         r
   __init__UserProvider.__init__*   s    &
("r   c                     U R                   $ r   _uidr   s    r
   r   UserProvider.uid1       yyr   c                 8    [         R                  " USS9U l        g NTrequiredr   validate_uidr   r   r   s     r
   r   r   5       ,,S4@	r   c                     U R                   $ r   )_provider_idr   s    r
   r   UserProvider.provider_id9   s       r   c                 8    [         R                  " USS9U l        g r    )r   validate_provider_idr(   )r   r   s     r
   r   r)   =   s    '<<[SWXr   c                     U R                   $ r   _emailr   s    r
   r   UserProvider.emailA       {{r   c                 :    [         R                  " U5      U l        g r   r   validate_emailr.   r   r   s     r
   r   r/   E       !007r   c                     U R                   $ r   _display_namer   s    r
   r   UserProvider.display_nameI       !!!r   c                 :    [         R                  " U5      U l        g r   r   validate_display_namer8   r   r   s     r
   r   r9   M       (>>|Lr   c                     U R                   $ r   
_photo_urlr   s    r
   r   UserProvider.photo_urlQ       r   c                 :    [         R                  " U5      U l        g r   r   validate_photo_urlrB   r   r   s     r
   r   rC   U       %88Cr   c                     U R                   U R                  U R                  U R                  U R                  S.nUR                  5        VVs0 s H  u  p#Uc  M
  X#_M     snn$ s  snnf )N)rawId
providerIddisplayNamer   photoUrl)r   r   r   r   r   items)r   payloadkvs       r
   to_dictUserProvider.to_dictY   sX    XX**,,ZZ
 ")BABBBs   	A%A%)
r8   r.   rB   r(   r   r   r   r   r   r   )NNN)__name__
__module____qualname____firstlineno____doc__r   propertyr   setterr   r   r   r   rS   __static_attributes__ r   r
   r   r      s    #   	ZZA A ! ! Y Y   \\8 8 " " M M   D DCr   r   c                   6   \ rS rSrSr   SS jr\S 5       r\R                  S 5       r\S 5       r	\	R                  S 5       r	\S	 5       r
\
R                  S
 5       r
\S 5       r\R                  S 5       r\S 5       r\R                  S 5       r\S 5       r\R                  S 5       r\S 5       r\R                  S 5       r\S 5       r\R                  S 5       r\S 5       r\R                  S 5       r\S 5       r\R                  S 5       rS rSrg)ImportUserRecordd   a"  Represents a user account to be imported to Firebase Auth.

Must specify the ``uid`` field at a minimum. A sequence of ``ImportUserRecord`` objects can be
passed to the ``auth.import_users()`` function, in order to import those users into Firebase
Auth in bulk. If the ``password_hash`` is set on a user, a hash configuration must be
specified when calling ``import_users()``.

Args:
    uid: User's unique ID. Must be a non-empty string not longer than 128 characters.
    email: User's email address (optional).
    email_verified: A boolean indicating whether the user's email has been verified (optional).
    display_name: User's display name (optional).
    phone_number: User's phone number (optional).
    photo_url: User's photo URL (optional).
    disabled: A boolean indicating whether this user account has been disabled (optional).
    user_metadata: An ``auth.UserMetadata`` instance with additional user metadata (optional).
    provider_data: A list of ``auth.UserProvider`` instances (optional).
    custom_claims: A ``dict`` of custom claims to be set on the user account (optional).
    password_hash: User's password hash as a ``bytes`` sequence (optional).
    password_salt: User's password salt as a ``bytes`` sequence (optional).

Raises:
    ValueError: If provided arguments are invalid.
Nc                     Xl         X l        X@l        XPl        X`l        Xl        Xl        X0l        Xpl        Xl	        Xl
        Xl        g r   )r   r   r   phone_numberr   password_hashpassword_saltemail_verifieddisableduser_metadataprovider_datacustom_claims)r   r   r   re   r   rb   r   rf   rg   rh   ri   rc   rd   s                r
   r   ImportUserRecord.__init__~   sH     
(("**, ***r   c                     U R                   $ r   r   r   s    r
   r   ImportUserRecord.uid   r   r   c                 8    [         R                  " USS9U l        g r    r#   r%   s     r
   r   rl      r&   r   c                     U R                   $ r   r-   r   s    r
   r   ImportUserRecord.email   r0   r   c                 :    [         R                  " U5      U l        g r   r2   r4   s     r
   r   ro      r5   r   c                     U R                   $ r   r7   r   s    r
   r   ImportUserRecord.display_name   r:   r   c                 :    [         R                  " U5      U l        g r   r<   r>   s     r
   r   rr      r?   r   c                     U R                   $ r   )_phone_numberr   s    r
   rb   ImportUserRecord.phone_number   r:   r   c                 :    [         R                  " U5      U l        g r   )r   validate_phoneru   )r   rb   s     r
   rb   rv      s    (77Er   c                     U R                   $ r   rA   r   s    r
   r   ImportUserRecord.photo_url   rD   r   c                 :    [         R                  " U5      U l        g r   rF   rH   s     r
   r   rz      rI   r   c                     U R                   $ r   )_password_hashr   s    r
   rc   ImportUserRecord.password_hash       """r   c                 <    [         R                  " US5      U l        g )Nrc   )r   validate_bytesr}   )r   rc   s     r
   rc   r~          )88Xr   c                     U R                   $ r   )_password_saltr   s    r
   rd   ImportUserRecord.password_salt   r   r   c                 <    [         R                  " US5      U l        g )Nrd   )r   r   r   )r   rd   s     r
   rd   r      r   r   c                     U R                   $ r   )_user_metadatar   s    r
   rg   ImportUserRecord.user_metadata   r   r   c                     Ub  UR                   OS nUb  UR                  OS n[        R                  " US5      U l        [        R                  " US5      U l        Xl        g )Ncreation_timestamplast_sign_in_timestamp)r   r   r   validate_timestamp_created_at_last_login_atr   )r   rg   
created_atlast_login_ats       r
   rg   r      s]    9F9R]55X\
@M@Y<<_c&99*FZ[)<<35+r   c                     U R                   $ r   )_provider_datar   s    r
   rh   ImportUserRecord.provider_data   r   r   c           	          UbA   [        U Vs/ s H  n[        U[        5      (       + PM     sn5      (       a  [        S5      e Xl        g s  snf ! [         a    [        S5      ef = f)Nz0One or more provider data instances are invalid.zprovider_data must be iterable.)any
isinstancer   
ValueError	TypeErrorr   )r   rh   ps      r
   rh   r      so    $DOAJq,77OPP$%WXX Q ,	 P D !BCCDs   	A AA A A'c                     U R                   $ r   )_custom_claimsr   s    r
   ri   ImportUserRecord.custom_claims   r   r   c                     [        U[        5      (       a  [        R                  " U5      OUn[        R
                  " U5      U l        Xl        g r   )r   dictjsondumpsr   validate_custom_claims_custom_claims_strr   )r   ri   json_claimss      r
   ri   r      s@    3=44! 4!djj/&3 	"-"D"D["Q+r   c                    U R                   U R                  U R                  U R                  U R                  U R
                  b  [        U R
                  5      OSU R                  b  [        U R                  5      OSU R                  U R                  U R                  U R                  (       a  [        U R                  5      OSU R                  (       a  [        U R                  5      OSS.nU R                  (       a-  U R                   Vs/ s H  o"R                  5       PM     snUS'   UR!                  5        VVs0 s H  u  p4Uc  M
  X4_M     snn$ s  snf s  snnf )zAReturns a dict representation of the user. For internal use only.N)localIdr   rM   phoneNumberrN   emailVerifiedrf   customAttributes	createdAtlastLoginAtpasswordHashsaltproviderUserInfo)r   r   r   rb   r   re   boolrf   r   r   r   rc   r   rd   rh   rS   rO   )r   rP   r   rQ   rR   s        r
   rS   ImportUserRecord.to_dict   s    xxZZ,,,,!%!4!4!@ #4#6#67FJ/3}}/HT]]+d $ 7 7))..>B>P>PJt'9'9:VZ6:6H6HJt112d
 @D@R@R*S@R199;@R*SG&'!(BABB +TBs   E	EE)r   r   r   r8   r.   r   r}   r   ru   rB   r   r   r   ri   rf   r   r   re   rc   rd   rb   r   rh   r   rg   )NNNNNNNNNNN)rU   rV   rW   rX   rY   r   rZ   r   r[   r   r   rb   r   rc   rd   rg   rh   ri   rS   r\   r]   r   r
   r_   r_   d   s   2 ^bRVGK+    	ZZA A   \\8 8 " " M M " " F F   D D # # Y Y # # Y Y # # , , # # , , # # , ,Cr   r_   c                      \ rS rSrSrSS jrS r\S 5       r\S 5       r	\S 5       r
\S	 5       r\S
 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\SS j5       r\S 5       r\S 5       rSrg)UserImportHashi  au  Represents a hash algorithm used to hash user passwords.

An instance of this class must be specified when importing users with passwords via the
``auth.import_users()`` API. Use one of the provided class methods to obtain new
instances when required. Refer to `documentation`_ for more details.

.. _documentation: https://firebase.google.com/docs/auth/admin/import-users
Nc                     Xl         X l        g r   )_name_data)r   namedatas      r
   r   UserImportHash.__init__  s    

r   c                 z    SU R                   0nU R                  (       a  UR                  U R                  5        U$ )NhashAlgorithm)r   r   update)r   rP   s     r
   rS   UserImportHash.to_dict  s,    "DJJ/::NN4::&r   c           	      Z    S[        [        R                  " USSS95      0n[        X5      $ )N	signerKeykeyTr!   )r   r   r   r   )clsr   r   r   s       r
   _hmacUserImportHash._hmac  s2     K$>$>sETX$YZ
 d))r   c                 &    U R                  SU5      $ )zCreates a new HMAC SHA512 algorithm instance.

Args:
    key: Signer key as a byte sequence.

Returns:
    UserImportHash: A new ``UserImportHash``.
HMAC_SHA512r   r   r   s     r
   hmac_sha512UserImportHash.hmac_sha512       yy,,r   c                 &    U R                  SU5      $ )zCreates a new HMAC SHA256 algorithm instance.

Args:
    key: Signer key as a byte sequence.

Returns:
    UserImportHash: A new ``UserImportHash``.
HMAC_SHA256r   r   s     r
   hmac_sha256UserImportHash.hmac_sha256)  r   r   c                 &    U R                  SU5      $ )zCreates a new HMAC SHA1 algorithm instance.

Args:
    key: Signer key as a byte sequence.

Returns:
    UserImportHash: A new ``UserImportHash``.
	HMAC_SHA1r   r   s     r
   	hmac_sha1UserImportHash.hmac_sha15  s     yyc**r   c                 &    U R                  SU5      $ )zCreates a new HMAC MD5 algorithm instance.

Args:
    key: Signer key as a byte sequence.

Returns:
    UserImportHash: A new ``UserImportHash``.
HMAC_MD5r   r   s     r
   hmac_md5UserImportHash.hmac_md5A  s     yyS))r   c           
      L    [        SS[        R                  " USSS5      05      $ )zCreates a new MD5 algorithm instance.

Args:
    rounds: Number of rounds. Must be an integer between 0 and 8192.

Returns:
    UserImportHash: A new ``UserImportHash``.
MD5roundsr       r   r   validate_intr   r   s     r
   md5UserImportHash.md5M  s/     {//!TJKM 	Mr   c           
      L    [        SS[        R                  " USSS5      05      $ )zCreates a new SHA1 algorithm instance.

Args:
    rounds: Number of rounds. Must be an integer between 1 and 8192.

Returns:
    UserImportHash: A new ``UserImportHash``.
SHA1r      r   r   r   s     r
   sha1UserImportHash.sha1[  s/     {//!TJKM 	Mr   c           
      L    [        SS[        R                  " USSS5      05      $ )zCreates a new SHA256 algorithm instance.

Args:
    rounds: Number of rounds. Must be an integer between 1 and 8192.

Returns:
    UserImportHash: A new ``UserImportHash``.
SHA256r   r   r   r   r   s     r
   sha256UserImportHash.sha256i  /     {//!TJKM 	Mr   c           
      L    [        SS[        R                  " USSS5      05      $ )zCreates a new SHA512 algorithm instance.

Args:
    rounds: Number of rounds. Must be an integer between 1 and 8192.

Returns:
    UserImportHash: A new ``UserImportHash``.
SHA512r   r   r   r   r   s     r
   sha512UserImportHash.sha512w  r   r   c           
      L    [        SS[        R                  " USSS5      05      $ )zCreates a new PBKDF SHA1 algorithm instance.

Args:
    rounds: Number of rounds. Must be an integer between 0 and 120000.

Returns:
    UserImportHash: A new ``UserImportHash``.

PBKDF_SHA1r   r    r   r   s     r
   
pbkdf_sha1UserImportHash.pbkdf_sha1  s/     {//!VLMO 	Or   c           
      L    [        SS[        R                  " USSS5      05      $ )zCreates a new PBKDF2 SHA256 algorithm instance.

Args:
    rounds: Number of rounds. Must be an integer between 0 and 120000.

Returns:
    UserImportHash: A new ``UserImportHash``.
PBKDF2_SHA256r   r   r   r   r   s     r
   pbkdf2_sha256UserImportHash.pbkdf2_sha256  s/     {//!VLMO 	Or   c                    [        [        R                  " USSS95      [        R                  " USSS5      [        R                  " USSS5      S	.nU(       a#  [        [        R                  " US
5      5      US'   [	        SU5      $ )a  Creates a new Scrypt algorithm instance.

This is the modified Scrypt algorithm used by Firebase Auth. See ``standard_scrypt()``
function for the standard Scrypt algorith,

Args:
    key: Signer key as a byte sequence.
    rounds: Number of rounds. Must be an integer between 1 and 8.
    memory_cost: Memory cost as an integer between 1 and 14.
    salt_separator: Salt separator as a byte sequence (optional).

Returns:
    UserImportHash: A new ``UserImportHash``.
r   Tr!   r   r      memory_cost   )r   r   
memoryCostsalt_separatorsaltSeparatorSCRYPT)r   r   r   r   r   )r   r   r   r   r   r   s         r
   scryptUserImportHash.scrypt  s    " $K$>$>sETX$YZ!..vxAF%22;qRTU

 $.{/I/I 002 %3D!h--r   c                     [        S5      $ )zaCreates a new Bcrypt algorithm instance.

Returns:
    UserImportHash: A new ``UserImportHash``.
BCRYPT)r   )r   s    r
   bcryptUserImportHash.bcrypt  s     h''r   c           	          [         R                  " USSS9[         R                  " USSS9[         R                  " USSS9[         R                  " USSS9S.n[        SU5      $ )	ai  Creates a new standard Scrypt algorithm instance.

Args:
    memory_cost: CPU Memory cost as a non-negative integer.
    parallelization: Parallelization as a non-negative integer.
    block_size: Block size as a non-negative integer.
    derived_key_length: Derived key length as a non-negative integer.

Returns:
    UserImportHash: A new ``UserImportHash``.
r   r   )lowparallelization
block_sizederived_key_length)
cpuMemCostr  	blockSizedkLenSTANDARD_SCRYPT)r   r   r   )r   r   r  r  r  r   s         r
   standard_scryptUserImportHash.standard_scrypt  sj     &22;STU*77IZ`ab$11*lPQR --.@BV\]^	
 /66r   )r   r   r   )rU   rV   rW   rX   rY   r   rS   classmethodr   r   r   r   r   r   r   r   r   r   r   r   r  r  r\   r]   r   r
   r   r     s5    * * 	- 	- 	- 	- 	+ 	+ 	* 	* M M M M M M M M O O O O . .2 ( ( 7 7r   r   c                   >    \ rS rSrSrS r\S 5       r\S 5       rSr	g)	ErrorInfoi  zRepresents an error encountered while performing a batch operation such
as importing users or deleting multiple user accounts.
c                 ,    US   U l         US   U l        g )Nindexmessage_index_reason)r   errors     r
   r   ErrorInfo.__init__  s    GnY'r   c                     U R                   $ r   )r  r   s    r
   r  ErrorInfo.index  r0   r   c                     U R                   $ r   )r  r   s    r
   reasonErrorInfo.reason  s    ||r   r  N)
rU   rV   rW   rX   rY   r   rZ   r  r  r\   r]   r   r
   r  r    s4    (    r   r  c                   N    \ rS rSrSrS r\S 5       r\S 5       r\S 5       r	Sr
g)	UserImportResulti  zjRepresents the result of a bulk user import operation.

See ``auth.import_users()`` API for more details.
c                     UR                  S/ 5      nU[        U5      -
  U l        [        U5      U l        U Vs/ s H  n[	        U5      PM     snU l        g s  snf )Nr  )getlen_success_count_failure_countr  _errors)r   resulttotalerrorserrs        r
   r   UserImportResult.__init__  sL    GR(#c&k1!&k289&3	#&99s   Ac                     U R                   $ )z2Returns the number of users successfully imported.)r$  r   s    r
   success_countUserImportResult.success_count       """r   c                     U R                   $ )z7Returns the number of users that failed to be imported.)r%  r   s    r
   failure_countUserImportResult.failure_count   r/  r   c                     U R                   $ )zQReturns a list of ``auth.ErrorInfo`` instances describing the errors encountered.)r&  r   s    r
   r)  UserImportResult.errors  s     ||r   )r&  r%  r$  N)rU   rV   rW   rX   rY   r   rZ   r-  r1  r)  r\   r]   r   r
   r   r     sH    
: # # # #  r   r   )rY   r   r   firebase_adminr   r   r   r_   r   r  r   r]   r   r
   <module>r6     sW    '   &:FC FCR[C [C|U7 U7p * r   