U
    ôáêbÚ  ã                   @   s  d dl mZmZmZmZ d dlmZ d dlmZm	Z	 d dl
mZmZmZmZmZ d dlmZ ddlmZ eeƒZeƒ ZeZedd	ƒZed
d	ƒZefdd„Zefdd„Zdd„ Zefdd„ZG dd„ deƒZeddddjZdd„ Z dd„ Z!dddœZ"d d!„ Z#d"d#d$œZ$d%d&„ Z%d*d'd(„Z&d)S )+é    )Úabsolute_importÚdivisionÚprint_functionÚunicode_literals)Úislice)ÚJSONEncoderÚdumps)Ú	getLoggerÚINFOÚ	FormatterÚStreamHandlerÚDEBUG)Ústderré   )ÚNullHandlerze[%(levelname)s] [%(asctime)s.%(msecs)03d] %(process)d %(name)s:%(funcName)s(%(lineno)d):
%(message)s
z%Y-%m-%d %H:%M:%SzX[%(levelname)s] [%(asctime)s.%(msecs)03d] %(process)d %(name)s(%(lineno)d): %(message)s
c                 C   s   t  | ¡ d S ©N)Úroot_logÚsetLevel©Úlevel© r   ú0lib/python3.8/site-packages/conda/auxlib/logz.pyÚset_root_level   s    r   c                 C   sd   t dd„ tjD ƒƒ}|s\ttƒ}d|_| d k	r8| | ¡ | | tkrHt	nt
¡ t |¡ dS dS d S )Nc                 s   s   | ]}|j d kV  qdS )r   N)Úname)Ú.0Úhandlerr   r   r   Ú	<genexpr>   s     z attach_stderr.<locals>.<genexpr>r   TF)Úanyr   Úhandlersr   r   r   r   ZsetFormatterr   ÚDEBUG_FORMATTERÚINFO_FORMATTERZ
addHandler)r   Zhas_stderr_handlerr   r   r   r   Úattach_stderr   s    

r!   c                  C   s*   t jD ]} | jdkrt  | ¡  dS qdS )Nr   TF)r   r   r   ZremoveHandler)r   r   r   r   Údetach_stderr+   s
    


r"   c                 C   s   t | ƒ d S r   )r!   r   r   r   r   Úinitialize_logging3   s    r#   c                       s   e Zd Z‡ fdd„Z‡  ZS )ÚDumpEncoderc                    s"   t |dƒr| ¡ S tt| ƒ |¡S )NÚdump)Úhasattrr%   Úsuperr$   Údefault)ÚselfÚobj©Ú	__class__r   r   r(   8   s    
zDumpEncoder.default)Ú__name__Ú
__module__Ú__qualname__r(   Ú__classcell__r   r   r+   r   r$   7   s   r$   é   FT)ÚindentZensure_asciiZ	sort_keysc                 C   s   t | ƒS r   )Ú_DUMPS©r*   r   r   r   Ú	jsondumpsB   s    r5   c                 C   s6   z| j d | jj W S  tk
r0   | jj Y S X d S )NÚ.)r.   r,   r-   ÚAttributeErrorr4   r   r   r   ÚfullnameF   s    r8   z  z )ZHostz
User-Agentc                 C   s   t  | d | d  ¡ ¡S ©Nr   )Úrequest_header_sort_dictÚgetÚlower©Úitemr   r   r   Úrequest_header_sort_keyQ   s    r?   z~~az~~b)zContent-LengthZ
Connectionc                 C   s   t  | d | d  ¡ ¡S r9   )Úresponse_header_sort_dictr;   r<   r=   r   r   r   Úresponse_header_sort_keyY   s    rA   c              
      sà   dd„ }dd„ }‡ fdd„}z’t | ƒ}dg}| d¡rB||| ƒ nX| d	¡rX||| ƒ nB| d
¡r”t| dƒrz||| jƒ nt d| j¡ ||| ƒ nW d S | d¡ d 	|¡W S  t
k
rÚ } zt |¡ W 5 d }~X Y nX d S )Nc              
   S   sl   |   d |j|j|j dd¡| d¡¡¡ | dd„ |j ¡ D ƒ7 } |   d¡ |j 	¡  
¡ }|rh|   |¡ d S )Nz{0} {1}{2} {3}ZQUERY_STRINGÚ ZSERVER_PROTOCOLc                 S   s   g | ]\}}d   ||¡‘qS )z{0}: {1}©Úformat©r   ÚkeyÚvaluer   r   r   Ú
<listcomp>c   s     z5stringify.<locals>.bottle_builder.<locals>.<listcomp>)ÚappendrD   ÚmethodÚpathÚenvironr;   ÚheadersÚitemsÚbodyÚreadÚstrip)ÚbuilderZbottle_objectrO   r   r   r   Úbottle_builder^   s    ý
z!stringify.<locals>.bottle_builderc              
   S   sl   |   d |j|j|j dd¡d  ¡ ¡¡ |  dd„ t|j	 
¡ tdD ƒ¡ |   d¡ |jrh|   |j¡ d S )	Nz>>{0} {1} {2}ú:r   r   c                 s   s   | ]\}}d   ||¡V  qdS )z
> {0}: {1}NrC   rE   r   r   r   r   l   s   ÿzMstringify.<locals>.requests_models_PreparedRequest_builder.<locals>.<genexpr>©rF   rB   )rI   rD   rJ   Zpath_urlÚurlÚsplitÚupperÚextendÚsortedrM   rN   r?   rO   )rR   Zrequest_objectr   r   r   Ú'requests_models_PreparedRequest_builderi   s    ÿ

ÿÿ
z:stringify.<locals>.requests_models_PreparedRequest_builderc                    s@  |   d |j dd¡d  ¡ |j|j¡¡ |  dd„ t|j	 
¡ tdD ƒ¡ t|jƒ dd¡d }|   d	 |¡¡ ˆ r<|   d
¡ |j	 d¡}|dkrî| ¡ }tt| 
¡ ˆ ƒƒ}t|dd}t|ƒˆ krÔ|d ˆ … n|}|   |¡ |   d
¡ nN|d k	r<| d¡s|dkr<|j}t|ƒˆ kr.|d ˆ … n|}|   |¡ d S )Nz<<{0} {1} {2}rT   r   r   c                 s   s   | ]\}}d   ||¡V  qdS )z
< {0}: {1}NrC   rE   r   r   r   r   {   s   ÿzFstringify.<locals>.requests_models_Response_builder.<locals>.<genexpr>rU   éÿÿÿÿz< Elapsed: {0}rB   zContent-Typezapplication/jsonr1   )r2   ztext/zapplication/xml)rI   rD   rV   rW   rX   Zstatus_codeÚreasonrY   rZ   rM   rN   rA   ÚstrÚelapsedr;   ÚjsonÚdictr   r   ÚlenÚ
startswithÚtext)rR   Zresponse_objectr_   Zcontent_typeZrespZcontentrd   ©Úcontent_max_lenr   r   Ú requests_models_Response_builders   s8    ýÿ
þ

ÿz3stringify.<locals>.requests_models_Response_builderrB   zbottle.zrequests.models.PreparedRequestzrequests.models.ResponseÚrequestz1request is 'None' for Response object with url %sÚ
)r8   rc   ÚendswithÚgetattrrh   ÚlogÚinforV   rI   ÚjoinÚ	ExceptionZ	exception)r*   rf   rS   r[   rg   r   rR   Úer   re   r   Ú	stringify]   s(    





rq   N)r   )'Z
__future__r   r   r   r   Ú	itertoolsr   r`   r   r   Zloggingr	   r
   r   r   r   Úsysr   rB   r   r-   rl   r   r   r    r   r!   r"   r#   r$   Úencoder3   r5   r8   r:   r?   r@   rA   rq   r   r   r   r   Ú<module>   sB   ýþþþ