o
    £D®f°  ã                   @   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y)   dZY nw 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   sd   t du rdS zt j}W n ty   tdƒ‚w t   | t j¡}|r%||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ÚNotImplementedErrorÚF_GETFDÚF_SETFD)ÚfdÚcloexecr   Úflags© r   úC/home/ubuntu/webapp/venv/lib/python3.10/site-packages/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   ˆ | i |¤Ž}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   ó   t | tƒr|  dd¡S | S )zConvert str to bytes.úutf-8Úsurrogatepass)Ú
isinstanceÚstrÚencode©Úsr   r   r   Ústr_to_bytes,   ó   
r"   c                 C   r   )zConvert bytes to str.r   r   )r   ÚbytesÚdecoder    r   r   r   Úbytes_to_str3   r#   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   Úviner   Ú
vine.utilsr   r   ÚImportErrorr   r   r"   r&   r,   r   r   r   r   Ú<module>   s    ÿ