
    e                         d Z ddlmZmZ ddlZddlZddlmZ ddlm	Z	m
Z
mZ ddlmZmZmZ ddlZddlmZ ddlmZ d	d
lmZ d ZddZd Z G d dej                  Zej        ddfdZddZdS )zB
Utilities functions for Anaconda repository command line manager
    )print_functionunicode_literalsN)RotatingFileHandler)getenvmakedirspath)existsisfilejoin)InsecureRequestWarning)PY2   )USER_LOGDIRc                     t                     rMt                     5 }|                                                                cddd           S # 1 swxY w Y   t	           fddD                       rt                       S )z~
    If value is a file path and the file exists its contents are stripped and returned,
    otherwise value is returned.
    Nc              3       K   | ]}|v V  	d S )N ).0charvalues     7lib/python3.11/site-packages/repo_cli/utils/__init__.py	<genexpr>z file_or_token.<locals>.<genexpr>   s'      
,
,T45=
,
,
,
,
,
,    z/\.)r
   openreadstripany
ValueError)r   fds   ` r   file_or_tokenr      s    
 e}} %%[[ 	%B7799??$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 
,
,
,
,V
,
,
,,,  llLs   &AAAFc                       fd}|S )Nc                     t          | t                    r                    d           d S r                    d| ||f           d S                     d|           d S )Nzexecution interrupted )exc_infoz%s)
issubclassKeyboardInterrupterror)exc_type	exc_valueexc_tracebackloggershow_tracebacks      r   
excepthookz&_custom_excepthook.<locals>.excepthook%   ss    h 122 	LL0111F 	*LLxM&JLKKKKKLLy)))))r   r   )r*   r+   r,   s   `` r   _custom_excepthookr-   $   s*    * * * * * * r   c                    |r|dS t          d          }|r>|                                r*t          |          dk    r|                    d           dS |                     d          }t          |t          t          f          rZt          |t                    r|s|                    d           t          j	        |          s|                    d|z             |S d	S )
a  
    Tries to determine if SSL certificate verification is
    needed and if needed then the follows priorities below

    1. If `verify_ssl` is given true then it is highest priority,
    2. Then `SSL_NO_VERIFY` comes next if environment variable is set,
    3. Else if `ssl_verify` is set in config and if either string or boolean,
    4. Finally we should verify SSL certificates by default.
    NFSSL_NO_VERIFYr   z2SSL_NO_VERIFY is set please make sure to unset it.
ssl_verifyz;"ssl_verify" is set to false please consider to turn it on.z:Specified "ssl_verify=%s" certificate path does not exist.T)
r   isdigitintwarningget
isinstanceboolstrr   r	   )configinsecurer*   config_ssl_verifys       r   get_ssl_verify_optionr;   2   s
     H(u o&&H H$$&& 3x==A+=+=KLLLu 

<00#dC[11 !'.. 	7H 	NNM   {,-- 	NNL#$  
 ! 4r   c                        e Zd Z fdZ xZS )ConsoleFormatterc                     |j         t          j        k    rdnd}t          r|| _        n|| j        _        t          t          |                               |          S )Nz%(message)sz[%(levelname)s] %(message)s)	levelnologgingINFOr   _fmt_stylesuperr=   format)selfrecordfmt	__class__s      r   rE   zConsoleFormatter.format[   s_     ~-- M. 	
  	#DII"DK%t,,33F;;;r   )__name__
__module____qualname__rE   __classcell__)rI   s   @r   r=   r=   Z   s8        
< 
< 
< 
< 
< 
< 
< 
< 
<r   r=   c                    |                      t          j                   t          t                    st          t                     t          t          d          }t          |dd          }|                     t          j                   t          j        t          j
                  }|                     |           |                    t                                 |                    t          j        d                     |                     |           |                     |           t          | |          t          _        |r+t"          j        j                            t*                     d S d S )Nzcli.logi      )maxBytesbackupCount)streamz3%(asctime)s %(levelname)-8s %(name)-15s %(message)s)r+   )setLevelr@   DEBUGr	   r   r   r   r   StreamHandlersysstdoutsetFormatterr=   	Formatter
addHandlerr-   r,   requestspackagesurllib3disable_warningsr   )r*   	log_levelr+   disable_ssl_warningslog_filefile_handlerconsole_handlers          r   _setup_loggingrd   h   sW    OOGM"""+ K++H&>q  L '-(((+3:>>>OY'''  !1!3!3444OPP   o&&&
l###'~NNNCN K!223IJJJJJK Kr   Tc                 B   |rdnd}	 t          | d|d          }|                                dv r|sdS |                                dv r|sd	S |                                d
v rdS |                                dv rd	S t          j                            d           )Nz[Y|n]z[y|N]r    z: )yyesT)r"   nnoF)r"   rg   rh   )ri   rj   zplease enter yes or no
)inputlowerrV   stderrwrite)promptdefaultdefault_strinpts       r   
bool_inputrs      s    $1'''K9&&&+++677::<<<'''4ZZ\\_,,W,5ZZ\\---4ZZ\\[((5J78889r   )F)T)__doc__
__future__r   r   r@   rV   logging.handlersr   osr   r   r   os.pathr	   r
   r   r[   $requests.packages.urllib3.exceptionsr   sixr   r8   r   r   r-   r;   rY   r=   rA   rd   rs   r   r   r   <module>r{      sj    8 7 7 7 7 7 7 7  



 0 0 0 0 0 0 % % % % % % % % % % ( ( ( ( ( ( ( ( ( (  G G G G G G              "   % % %P< < < < <w( < < < l5uK K K K@9 9 9 9 9 9r   