
    i4)                        S SK r S SKrS SKJr  S SKJr  S SKJr  S SKJr  S SKJ	r	  S SKJ
r
  S SKJr  S S	KJr  S S
KJr  S SKrS SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJ r   S SK!J"r"  S SK#J$r$   S SK%J&r&  S\S\S\S\4S jr* " S S\5      r+ " S  S!\RX                  5      r-S"\.S\
\&   4S# jr/ S'S$\
\.   S%\
\.   S\-4S& jjr0g! \' a	    S SK(J)r&   N\f = f)(    N)cached_property)md5)Any)Dict)MutableMapping)Optional)Union)cast)urljoin)PreparedRequest)Response)AuthBase)__version__)HTTPAdapter)AnacondaAuthConfig)AnacondaAuthSite)TokenExpiredError)TokenNotFoundError)	TokenInfo)get_hostname)AnacondaConfigValidationError)Version)VersionInforesponseargskwargsreturnc                 F   U R                   R                  R                  SS5      nU R                  S;   aN   U R	                  5       R                  S0 5      R                  SS5      nUS:X  a  U(       a	  SU l        U $ S	U l        U $ ! [
        R                   a    Sn N7f = f)
NAuthorizationF)i  i  errorcode auth_requiredz'Your API key or login token is invalid.zSYou must login before using this API endpoint or provide an api_key to your client.)requestheadersgetstatus_codejsonrequestsJSONDecodeErrorreason)r   r   r   has_auth_header
error_codes        4lib/python3.13/site-packages/anaconda_auth/client.pylogin_requiredr/   $   s    &&..22?EJOz)	!,,Wb9==fbIJ ("K O	= 
 O '' 	J	s   0B B B c                   N    \ rS rSr S
S\\   S\\   SS4S jjrS\S\4S jrS	r	g)
BearerAuth9   Ndomainapi_keyr   c                 Z    X l         Uc  [        5       R                  n[        US9U l        g )N)r3   )r4   r   r3   r   _token_info)selfr3   r4   s      r.   __init__BearerAuth.__init__:   s)     >')00F$F3    rc                     U R                   (       d-   SU R                  R                  5        3UR                  S'   U$ SU R                    3UR                  S'   U$ ! [        [
        4 a     U$ f = f)NzBearer r   )r4   r6   get_access_tokenr%   r   r   )r7   r;   s     r.   __call__BearerAuth.__call__C   s~    ||d..??ABC 		/*  ,34<<.)AAIIo&	 '(9:  	s   *A A10A1)r6   r4   )NN)
__name__
__module____qualname____firstlineno__r   strr8   r   r>   __static_attributes__ r:   r.   r1   r1   9   s=    EI4sm45=c]4	4
/ 
o 
r:   r1   c                      ^  \ rS rSr% S\ 3r\\S'   Sr\	\   \S'                S%S\	\
\\4      S\	\   S\	\   S	\	\   S
\	\   S\	\   S\	\   S\	\
\\4      S\	\
\\4      S\	\   S\	\\\4      S\	\   S\	\   4U 4S jjjrS&S jrS\S\4S jrS\R&                  S\4U 4S jjrS\
\\4   S\
\\4   S\S\S\4
U 4S jjr\S\4S j5       r\S\4S j5       r\S\4S  j5       r\S\
\S4   4S! j5       rS"\	\   SS4S# jr S$r!U =r"$ )'
BaseClientP   zanaconda-auth/_user_agentN_api_versionsitebase_urir3   auth_domain_overrider4   
user_agentapi_version
ssl_verifyextra_headershash_hostnameproxy_serversclient_certclient_cert_keyc                 |  > [         TU ]  5         [        U[        5      (       a  UnOU(       a
  [	        US9nO
[	        5       nU(       a  U(       a  [        S5      e0 nUb  X?S'   Ub  XOS'   Ub  X_S'   Ub  XS'   U	b  XS'   U
b  XS'   Ub  XS	'   Ub  XS
'   XS'   Ub  XS
'   UR                  USS9U l        U R                  R                  =(       d    0 U l	        U R                  5         U=(       d    SU R                  R                   3U l        U=(       d    U R                  U R                  S'   [        U R                  R                   S9U R                  S'   U=(       d    U R"                  U l        U R$                  (       a  U R$                  U R                  S'   U R                  R&                  b  [        U R                  R&                  [(        5      (       aH   [+        [,        [.        R0                  " U R                  R&                  5      5      U R                  l        U R                  R&                  R9                  5       U R                  R9                  5       -
  nU H)  nU R                  R&                  U   U R                  U'   M+     [;        U R                  R                  U R                  R<                  S9U l        U R@                  S   RC                  [D        5        g ! [.        R2                  R4                   a,    [        [7        U R                  R&                  5       S35      ef = f)N)rL   z7Can only specify one of `domain` or `base_uri` argumentr3   rN   r4   rQ   rR   rS   rT   rU   rV   T)updatedeephttps://z
User-Agent)hashzX-Client-HostnamezApi-Versionz is not valid JSON.)r3   r4   r   )#superr8   
isinstancer   r   
ValueError
model_copyconfigrT   proxiesconfigure_sslr3   	_base_urirJ   r%   r   rS   rK   rP   rR   rD   r
   dictr(   loadsdecoderr*   reprkeysr1   r4   authhooksappendr/   )r7   rL   rM   r3   rN   r4   rO   rP   rQ   rR   rS   rT   rU   rV   r`   r   keys_to_addk	__class__s                     r.   r8   BaseClient.__init__T   s     	 d,--F'T2F')F VWW!#%8+-A)* '9!#-< $&3?#$&3?#$&3?#&$/=!(7$%"$/=!''vD'A{{006B "Dx0B0B/C%D%/%C43C3C\",8dkk>W>W,X()&;$*;*;*.*:*:DLL';;$$0$++33S9904djj)B)BC1DKK- ++3388:T\\=N=N=PPK "&++";";A">Q ! dkk&8&8$++BUBUV	

:%%n5 ||33 $ 9 9:;;NO s   "AK1 1A
L;r   c                    S nU R                   R                  S:X  a,   SS KnSS KnUR	                  UR
                  5      nSU l        OU R                   R                  U l        [        US9nXl
        U R                  SU5        U R                  SU5        U R                   R                  (       aM  U R                   R                  (       a2  U R                   R                  U R                   R                  4U l        g U R                   R                  (       a  U R                   R                  U l        g g ! [         a    [        S5      ef = f)N
truststorer   zOThe `ssl_verify: truststore` setting is only supported on Python 3.10 or later.T)ssl_contextzhttp://rZ   )r`   rQ   sslrq   
SSLContextPROTOCOL_TLS_CLIENTImportErrorr   verifyr   _sslmountrV   rU   cert)r7   rr   rs   rq   http_adapters        r.   rb   BaseClient.configure_ssl   s    ;;!!\1
!(33C4K4KL DK++00DK"{;	

9l+

:|,;;&&4;;+B+B00$++2M2MNDI[[$$//DI %!  3e s   #D7 7Eurlc                 .    [        U R                  U5      $ N)r   rc   )r7   r}   s     r.   r   BaseClient.urljoin   s    t~~s++r:   r$   c                 t   > U R                  [        UR                  5      5      Ul        [        TU ]  U5      $ r   )r   rD   r}   r\   prepare_request)r7   r$   rn   s     r.   r   BaseClient.prepare_request   s,    ll3w{{#34w&w//r:   methodr   r   c                   > U R                  [        U5      5      nUR                  SU R                  R                  5        [
        TU ]  " X/UQ70 UD6nUR                  R                  S5      nU R                  U5        U$ )Nrw   zMin-Api-Version)
r   rD   
setdefaultr`   rQ   r\   r$   r%   r&   _validate_api_version)	r7   r   r}   r   r   
joined_urlr   min_api_version_stringrn   s	           r.   r$   BaseClient.request   sw     \\#c(+
 	(DKK$:$:;7?6GGG!)!1!1!5!56G!H""#9:r:   c                 h    U R                  S5      nUR                  5         UR                  5       nU$ )Nz/api/account)r&   raise_for_statusr(   )r7   resaccounts      r.   r   BaseClient.account   s,    hh~&((*r:   c                     U R                   R                  S0 5      nUR                  SS5      nUR                  SS5      nU(       d  U(       d  U R                  $ U SU 3R                  5       $ )Nuser
first_namer"   	last_name )r   r&   emailstrip)r7   r   r   r   s       r.   nameBaseClient.name   sa    ||+XXlB/
HH["-	):: \9+.4466r:   c                 x    U R                   R                  S0 5      R                  S5      nUc  [        S5      eU$ )Nr   r   zJSomething is wrong with your account. An email address could not be found.)r   r&   r^   )r7   values     r.   r   BaseClient.email   s?      ,009=\  Lr:   c                     [        U R                  R                  S5      5      R                  5       nU R	                  SU S3U R
                  R                  SS9nUR                  (       a  UR                  $ g )Nzutf-8zhttps://gravatar.com/avatar/z.png?size=120&d=404F)rw   ri   )	r   r   encode	hexdigestr&   r`   rQ   okcontent)r7   hashedr   s      r.   avatarBaseClient.avatar   sj    TZZ&&w/0::<hh*6(2EF;;))  

 66;;r:   r   c                     Ub  U R                   c  g[        U R                   5      n[        U5      nUb  Uc  gX#:  a-  [        R                  " SU R                    SU S3[        5        gg)zRValidate that the client API version against the min API version from the service.NzClient API version is z#, minimum supported API version is z%. You may need to update your client.)rP   _parse_semver_stringwarningswarnDeprecationWarning)r7   r   rP   min_api_versions       r.   r    BaseClient._validate_api_version  s}    !)T-=-=-E +4+;+;<./EF/"9(MM()9)9(::]^t]u v6 6" )r:   )rc   rx   rP   ri   rz   r`   ra   rw   )NNNNNNNNNNNNN)r   N)#r@   rA   rB   rC   versionrJ   rD   __annotations__rK   r   r	   r   boolrd   r   r8   rb   r   r)   Requestr   r   bytesr   r   r$   r   r   propertyr   r   r   r   rE   __classcell__)rn   s   @r.   rH   rH   P   sL   'y1K1"&L(3-& 8<"& $.2!%$(%)1548(,<@%))-P6uS"2234P6 3-P6 	P6
 'smP6 #P6 SMP6 c]P6 U49-.P6  c4i 01P6  ~P6  sCx 89P6 c]P6 "#P6 P6d0<,3 ,3 ,0x'7'7 0O 0c5j! 3: 	
  
(    7c 7 7 s   
eTk* 
 
HSM d  r:   rH   r   c                     SR                  S U R                  " S5       5       5      n [        R                  " U5      $ ! [         a     gf = f)zParse a version string into a semver Version object, stripping off any leading zeros from the components.

If the version string is invalid, returns None.

.c              3   B   #    U  H  oR                  S 5      v   M     g7f)0N)lstrip).0ss     r.   	<genexpr>'_parse_semver_string.<locals>.<genexpr>"  s     F3EaHHSMM3Es   N)joinsplitr   parser^   )r   norm_versions     r.   r   r     sG     88F7==3EFFL}}\** s   A   
AArO   rP   c                     [        XS9$ )NrO   rP   )rH   r   s     r.   client_factoryr   )  s     EEr:   r   )1r(   r   	functoolsr   hashlibr   typingr   r   r   r   r	   r
   urllib.parser   r)   r   r   requests.authr   anaconda_authr   r   anaconda_auth.adaptersr   anaconda_auth.configr   r   anaconda_auth.exceptionsr   r   anaconda_auth.tokenr   anaconda_auth.utilsr   anaconda_cli_base.exceptionsr   semver.versionr   rv   semverr   r/   r1   SessionrH   rD   r   r   rF   r:   r.   <module>r      s      %    !       $  " 0 . 3 1 6 7 ) , F.&X c S X * .I!! IX
# 
(7*; 
 =AFF,4SMFFU  .-.s   C   C/.C/