
    9-e                     L   d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dl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 d dlmZ d dlmZ d dlmZ d dlmZ  G d de          Z G d dej                  Zdedee         fdZ	 ddee         dee         defdZdS )    N)Any)Optional)Union)urljoin)PreparedRequest)Response)AuthBase)VersionInfo)__version__)	APIConfig)
AuthConfig)LoginRequiredError)TokenNotFoundError)	TokenInfoc                   N    e Zd Z	 ddee         dee         ddfdZdedefdZdS )	
BearerAuthNdomainapi_keyreturnc                 h    || _         |t                      j        }t          |          | _        d S )N)r   )r   r   r   r   _token_info)selfr   r   s      :lib/python3.11/site-packages/anaconda_cloud_auth/client.py__init__zBearerAuth.__init__   s5     >\\(F$F333    rc                     | j         s6	 d| j                                         |j        d<   n"# t          $ r Y nw xY wd| j          |j        d<   |S )NzBearer Authorization)r   r   get_access_tokenheadersr   )r   r   s     r   __call__zBearerAuth.__call__   s    | 	B Dd.??AACC 	#  &    *B4<)A)AAIo&s   $. 
;;)NN)__name__
__module____qualname__r   strr   r   r!    r   r   r   r      sr        EI4 4sm45=c]4	4 4 4 4
/ 
o 
 
 
 
 
 
r   r   c                       e Zd ZU de Zeed<   dZee         ed<   	 	 	 	 	 ddee         dee         dee         dee         d	ee         f
 fd
Z	de
eef         de
eef         dededef
 fdZdee         ddfdZ xZS )
BaseClientzanaconda-cloud-auth/_user_agentN_api_versionbase_urir   r   
user_agentapi_versionc                    t                                                       |r|rt          d          i }|||d<   |||d<   t          di || _        |pd| j        j         | _        |p| j        | j        d<   |p| j	        | _
        | j
        r| j
        | j        d<   t          | j        j                  | _        d S )	Nz7Can only specify one of `domain` or `base_uri` argumentr   keyzhttps://z
User-AgentzApi-Version)r   r&   )superr   
ValueErrorr   configr   	_base_urir)   r    r*   r-   r   r/   auth)r   r+   r   r   r,   r-   kwargs	__class__s          r   r   zBaseClient.__init__0   s     	 	X 	XVWWW%F8#F5M))&))!D%D0B%D%D%/%C43C\"&;$*; 	;*.*:DL't{777			r   methodurlargsr5   r   c                 z   t          | j        t          |                    } t                      j        ||g|R i |}|j        dk    s|j        dk    r6|j        j                            d          t          |j	         d          | 
                    |j                            d                     |S )Ni  i  r   zF: You must login before using this API endpoint using
  anaconda loginzMin-Api-Version)r   r3   r%   r0   requeststatus_coder    getr   reason_validate_api_version)r   r7   r8   r9   r5   
joined_urlresponser6   s          r   r;   zBaseClient.requestL   s     T^SXX66
"577?6:GGGGGG3&&(*>#*E*E'++O<<D( ( ( (  
 	""8#3#7#78I#J#JKKKr   min_api_version_stringc                     || j         dS t          | j                   }t          |          }||dS ||k     r(t          j        d| j          d| dt                     dS dS )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.)r-   _parse_semver_stringwarningswarnDeprecationWarning)r   rB   r-   min_api_versions       r   r?   z BaseClient._validate_api_version`   s    !)T-=-E4 +4+;<<./EFF/"94((M6)9 6 6^t 6 6 6"     )(r   )NNNNN)r"   r#   r$   versionr)   r%   __annotations__r*   r   r   r   bytesr   r   r;   r?   __classcell__)r6   s   @r   r(   r(   ,   sK        7g77K777"&L(3-&&& #' $!%$(%)8 83-8 8 #	8
 SM8 c]8 8 8 8 8 88c5j! 3: 	
  
     (HSM d        r   r(   rI   r   c                     d                     d  | j        d          D                       }	 t          j        |          S # t          $ r Y dS w xY w)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   @   K   | ]}|                     d           V  dS )0N)lstrip).0ss     r   	<genexpr>z'_parse_semver_string.<locals>.<genexpr>z   s,      FFaAHHSMMFFFFFFr   N)joinsplitr
   parser1   )rI   norm_versions     r   rD   rD   t   sh     88FF=7=3E3EFFFFFL ...   tts   A 
AAr,   r-   c                 $    t          | |          S )Nr,   r-   )r(   rZ   s     r   client_factoryr[      s     EEEEr   )N)rE   typingr   r   r   urllib.parser   requestsr   r   requests.authr	   semverr
   anaconda_cloud_authr   rI   anaconda_cloud_auth.configr   r   anaconda_cloud_auth.exceptionsr   r   anaconda_cloud_auth.tokenr   r   Sessionr(   r%   rD   r[   r&   r   r   <module>rf      s                                   $ $ $ $ $ $       " " " " " "       6 6 6 6 6 6 0 0 0 0 0 0 1 1 1 1 1 1 = = = = = = = = = = = = / / / / / /       .E E E E E! E E EP
# 
(;*? 
 
 
 
 =AF FF,4SMFF F F F F Fr   