
    e{!                        d dl mZmZmZ d dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
mZmZmZmZmZmZmZ d dlmZ 	 d dlmZ n# e$ r	 d dlmZ Y nw xY w	 d dlmZ n# e$ r	 d dlmZ Y nw xY wddlmZ d	d
lmZmZ d	dlm Z m!Z! d	dl"m#Z#m$Z$  ej%        d          Z&d Z'd Z(dZ)dej*        v r) edej*        d                   Z+ ee+j,        e)          Z-n edd          Z+ e(de)z             Z-ddddddZ.ddddd d!d"Z/e+j0        Z1 e(d#e)          Z2e2Z3d$Z4i d%ddd%d&d'Z5g d(Z6de+j7        d)d#e+j,        d*d+fZ8d, Z9e+j,         e ee-          d-          gZ:e:d.         Z;d/ Z<d0 Z=d1 Z>d2 Z?d3 Z@d7d4ZAd5 ZBd8d6ZCdS )9    )absolute_importprint_functionunicode_literalsN)abspathdirnameexists
expanduserisdirisfilejoin)Template)Mapping)
quote_plus   )RepoCLIError   )AppDirs
EnvAppDirs)CONDA_PREFIX
CONDA_ROOT)	yaml_dump	yaml_loadrepo_clic                     t          t          t                    }|                    t          j                    t          |           j        di |S )N)r   r    )dictr   r   updateosenvironr   safe_substitute)pathr   s     5lib/python3.11/site-packages/repo_cli/utils/config.py
expandvarsr#   !   sG    j|DDDGNN2:)8D>>)44G444    c                 T    t          t          t          |                               S N)r   r	   r#   r!   s    r"   expandr(   '   s     :j..//000r$   zrepo-cli-config.yamlREPO_CONFIG_DIRz.condabinstarContinuumIOz	~/.conda/EnvironmentNotebookzConda PackagezPython PackagezAnaconda Project)envipynbcondapypiprojectconda1anaconda_envjupyter_notebookanaconda_projectbdist_wheelsbom)r0   r.   r/   r2   r1   r8   z $CONDA_ROOT/etc/anaconda-client/zrepo-service-cliTF)sitesauto_registerdefault_siteurl
ssl_verifyoauth2)r:   r;   r9   r<   r=   r>   z/etc/anaconda-client/z~/.continuum/anaconda-client/z"$CONDA_PREFIX/etc/anaconda-client/c                     |                                 D ]O\  }}t          |t                    r*t          |                     |i           |          }|| |<   D||         | |<   P| S r&   )items
isinstancer   recursive_updateget)configupdate_dict
update_keyupdated_valueupdated_value_dicts        r"   rB   rB   q   s}    %0%6%6%8%8 9 9!
MmW-- 	9!1

:r**M" " "4F:!,Z!8F:Mr$   tokensc                 B   t          |o|j                  }t          D ]}|                    d          }t	          |          st          j        |           t          |dt          |          z            }t          |          rt          j
        |           t                              d|  d|            t          |d          5 }t                              d|  d|            |                    |            d d d            n# 1 swxY w Y   t          j        |t           j        t           j        z             t          |dt          t          |d                    z            }t                              d|  d|            t          |d          5 }t                              d|  d|            |                    |            d d d            n# 1 swxY w Y   t          j        |t           j        t           j        z              d S )Nsiter<   %s.tokenzSaving token z to wrepo)
get_configrM   
TOKEN_DIRSrC   r
   r   makedirsr   r   r   unlinkloggerdebugopenwritechmodstatS_IWRITES_IREAD)tokenargsrD   	token_dirr<   	tokenfilefds          r"   store_tokenrb      sp   T/di000F : :	jjY 	#K	"""JC$@AA	) 	!Ii   ;U;;	;;<<<)S!! 	RLL???I??@@@HHUOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	DMDL8999 JDf<M<M1N1N$NOO	;U;;	;;<<<)S!! 	RLL???I??@@@HHUOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	DMDL89999-: :s$   6DD	D	$6G&&G*	-G*	c                    t          |           }|                    d          }|st                              d           d S t          D ]}t                              d                    |                     t          |dt          |          z            }t          |          }|rt                              d                    |                     t          |          5 }|
                                                                }d d d            n# 1 swxY w Y   |r|c S t                              d                    |                     t                              d	                    |                     t          j        |           Rt                              d
                    |                     d S )NrL   r<   zARepository URL is not set. Please configure. Skipping token checkz-[LOAD TOKEN] Looking for token in {token_dir})r_   rN   z"[LOAD TOKEN] Found login token: {}zToken file is empty: {}zRemoving file: {}z.[LOAD TOKEN] Token file {tokenfile} not found.)r`   )rQ   rC   rU   rV   rR   formatr   r   r   rW   readstripr   rT   )rM   rD   r<   r_   r`   _is_filera   r]   s           r"   
load_tokenrh      s   T"""F
**U

C O	
 	
 	
 	  	;BBYBWW	
 	
 	
 JC$@AA	)$$ 	LL=DDYOOPPPi *B		))* * * * * * * * * * * * * * *  %6==iHHIII077	BBCCC	)$$$$LL@GG' H     ' s   )'DD 	#D 	c                    t          | o| j                  }|                    d          }t          D ]}t	          |dt          |          z            }t          |          rt          j        |           t	          |dt          t	          |d                    z            }t          |          rt          j        |           d S )NrL   r<   rN   rP   )	rQ   rM   rC   rR   r   r   r   r   rT   )r^   rD   r<   r_   r`   s        r"   remove_tokenrj      s    T/di000F
**U

C ! !	JC$@AA	) 	!Ii   JDf<M<M1N1N$NOO	) 	!Ii   ! !r$   c                     t          |           rGt          |           5 }t          |          }|r|cd d d            S 	 d d d            n# 1 swxY w Y   i S r&   )r   rW   r   )config_filera   datas      r"   load_configrn      s    k + 	"R==D 	 	 	 	 	 	 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 Is   AAAc                 2   d }d }t           j        |t           j        |id d | D             }fd|D             }fdt          ||          D             }t	          j        d t          j                            |          D                       }|S )Nc              3      K   |                      d          s4|                      d          s|                      d          s
J |             | t          |           fV  d S )Nz.ymlz.yaml
anacondarc)endswithrn   )fullpaths    r"   _file_yaml_loaderz,load_file_configs.<locals>._file_yaml_loader   s      f%%	  ))	   ..	 	 		 	 	
 H--------r$   c              3      K   t          j        |           D ]0}|t          k    r#t          | |          }|t	          |          fV  1d S r&   )r   listdirCONFIG_FILENAMEr   rn   )rs   filenamefilepaths      r"   _dir_yaml_loaderz+load_file_configs.<locals>._dir_yaml_loader   s]      
8,, 	6 	6H?**(33H 5 55555	6 	6r$   c                 |    	 t          j        t          j         |           j                  S # t          $ r Y d S w xY wr&   )rZ   S_IFMTr   st_modeOSErrorr'   s    r"   _get_st_modez'load_file_configs.<locals>._get_st_mode   sD    	;rwt}}4555 	 	 	44	s   *- 
;;c                 ,    g | ]}t          |          S r   )r(   ).0r!   s     r"   
<listcomp>z%load_file_configs.<locals>.<listcomp>   s    ;;;tfTll;;;r$   c              3   .   K   | ]} |          V  d S r&   r   )r   r!   r   s     r"   	<genexpr>z$load_file_configs.<locals>.<genexpr>   s-      @@,,t$$@@@@@@r$   c              3   D   K   | ]\  }}| |         |          V  d S r&   r   )r   r!   r}   _loaders      r"   r   z$load_file_configs.<locals>.<genexpr>   sH        D' 	 r$   c              3      K   | ]}|V  d S r&   r   )r   kvs     r"   r   z$load_file_configs.<locals>.<genexpr>   s3       ' '' ' ' ' ' 'r$   )	rZ   S_IFREGS_IFDIRzipcollectionsOrderedDict	itertoolschainfrom_iterable)	search_pathrt   rz   expanded_paths
stat_paths
load_pathsraw_datar   r   s	          @@r"   load_file_configsr      s    . . .6 6 6 	'&G
   <;{;;;N@@@@@@@J    <<  J
 & ' '_22:>>' ' '  H Or$   c                    t                                           }t          t                    }|D ]}t	          |||                    | p|                    d          } |                    di           }| rSt          |           } | |vrt                              d|            n$t	          ||                    | i                      |S )Nr;   r9   z1Site alias "%s" does not exist in the config file)	DEFAULT_CONFIGcopyr   SEARCH_PATHrB   rC   strrU   warning)rM   rD   file_configsfnr9   s        r"   rQ   rQ     s      ""F$[11L 3 3b!12222-6::n--DJJw##E :4yyuNNNPTUUUU VUYYtR%8%8999Mr$   c                 @   t          |          }	 t          |          st          j        |           t	          |d          5 }t          | |           d d d            d S # 1 swxY w Y   d S # t          $ r#}t          |j        d|j	                  d }~ww xY w)NrO   )streamz: )
r   r   r   rS   rW   r   EnvironmentErrorr   rx   strerror)rm   rl   data_dirra   excs        r"   save_configr     s    {##H
h 	"K!!!+s## 	'rd2&&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 
 
 
 
 
 	

s;   3A0 A#A0 #A''A0 *A'+A0 0
B:BBc                 v    t          j        dt                     t          | |rt          nt
                     d S )Nz%Use save_config instead of set_config)warningswarnDeprecationWarningr   USER_CONFIGSYSTEM_CONFIG)rm   users     r"   
set_configr   /  s5    M9;MNNNT<kk}=====r$   r&   )T)D
__future__r   r   r   r   r   loggingr   rZ   r   os.pathr   r   r   r	   r
   r   r   stringr   collections.abcr   ImportErrorurllibr   urllib.parseerrorsr   appdirsr   r   r0   r   r   yamlr   r   	getLoggerrU   r#   r(   rw   r   dirsuser_data_dirr   PACKAGE_TYPESUPLOAD_TYPE_MAPPINGuser_log_dirUSER_LOGDIRSITE_CONFIGr   OIDC_CLIENT_IDr   CONFIGURATION_KEYSsite_data_dirr   rB   rR   	TOKEN_DIRrb   rh   rj   rn   r   rQ   r   r   r   r$   r"   <module>r      s   H H H H H H H H H H          				   M M M M M M M M M M M M M M M M M M      $''''''' $ $ $########$(!!!!!!! ( ( (''''''''(
 " ! ! ! ! ! ( ( ( ( ( ( ( ( + + + + + + + + & & & & & & & &		:	&	&5 5 51 1 1 )
"":h
+< =>>D$t)?;;KK 79m,,D&677K !  !   ff__NOO#      &#(
 
 
 	D		x((
 rN	: : :8     F! ! !  ' ' 'T   ,
 
 
&> > > > > >s#   A AAA A*)A*