U
    W¨+d°  ã                   @   s‚   d Z ddlZddlmZ ddlmZ ddlmZ zddlZW n ek
rT   dZY nX dd„ Z	dd	„ Z
d
d„ Zdd„ Zdd„ ZdS )zCompatibility utilities.é    N)ÚNullHandler)Úpromise©Úwrapsc                 C   sj   t dkrdS z
t j}W n tk
r2   tdƒ‚Y nX t   | t j¡}|rP||O }n
|| M }t   | t j|¡S )z Set flag to close fd after exec.Nz1close-on-exec flag not supported on this platform)ÚfcntlÚ
FD_CLOEXECÚAttributeErrorÚNotImplementedErrorZF_GETFDZF_SETFD)ÚfdZcloexecr   Úflags© r   ú./tmp/pip-unpacked-wheel-xhcdc304/amqp/utils.pyÚset_cloexec   s    
ÿ


r   c                    s   t ˆ ƒ‡ fdd„ƒ}|S )z,Decorator to mark generator as a co-routine.c                     s   ˆ | |Ž}t |ƒ |S )N)Únext)ÚargsÚkwargsÚco©Úgenr   r   Ú_boot#   s    
zcoro.<locals>._bootr   )r   r   r   r   r   Úcoro!   s    r   c                 C   s   t | tƒr|  dd¡S | S )zConvert str to bytes.úutf-8Úsurrogatepass)Ú
isinstanceÚstrÚencode©Úsr   r   r   Ústr_to_bytes,   s    
r   c                 C   s   t | tƒr|  dd¡S | S )zConvert bytes to str.r   r   )r   ÚbytesÚdecoder   r   r   r   Úbytes_to_str3   s    
r!   c                 C   s*   t | tƒrt | ¡} | js&|  tƒ ¡ | S )zGet logger by name.)r   r   ÚloggingÚ	getLoggerÚhandlersÚ
addHandlerr   )Úloggerr   r   r   Ú
get_logger:   s
    

r'   )Ú__doc__r"   r   Zviner   Z
vine.utilsr   r   ÚImportErrorr   r   r   r!   r'   r   r   r   r   Ú<module>   s   
