o
    wvXjH  ã                   @   s   d Z ddlmZmZ ddlZddlZddlmZmZ da	dd„ Z
dd„ Zej d	¡r0d%d
d„Znd%dd„ZerNdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZeZndd„ Zdd„ Zdd„ Zd%dd„ZeZeZzeZW n eyr   eZY nw d&dd„Zer€d'dd„Zn	d d!„ Zd'd"d„Zd&d#d$„ZdS )(z®Text encoding utilities.

Utilities to encode text, and to safely emit text from running
applications without crashing from the infamous
:exc:`UnicodeDecodeError` exception.
é    )Úabsolute_importÚunicode_literalsN)ÚPY3Útext_tc                 C   s   | a dS )z'Set file used to get codec information.N©Údefault_encoding_file©Úfile© r
   úQ/var/www/html/myproject/venv/lib/python3.10/site-packages/kombu/utils/encoding.pyÚset_default_encoding_file   s   r   c                   C   s   t S )z'Get file used to get codec information.r   r
   r
   r
   r   Úget_default_encoding_file   ó   r   Újavac                 C   s   dS )úGet default encoding.úutf-8r
   r   r
   r
   r   Údefault_encoding#   r   r   c                 C   s   | pt ƒ } t| ddƒpt ¡ S )r   ÚencodingN)r   ÚgetattrÚsysÚgetfilesystemencodingr   r
   r
   r   r   (   s   
c                 C   ó   t | tƒr	|  ¡ S | S ©zConvert str to bytes.)Ú
isinstanceÚstrÚencode©Úsr
   r
   r   Ústr_to_bytes/   ó   
r   c                 C   s   t | tƒr| jdd�S | S )úConvert bytes to str.Úreplace)Úerrors©r   ÚbytesÚdecoder   r
   r
   r   Úbytes_to_str5   s   
r&   c                 O   ó   | S )zGet str from utf-8 encoding.r
   ©r   ÚargsÚkwargsr
   r
   r   Ú	from_utf8;   r   r+   c                 C   s   t | tƒs	t| ƒS | S )zEnsure s is bytes, not str.)r   r$   r   r   r
   r
   r   Úensure_bytes?   r   r,   c                 C   r'   )zEncode using default encoding.r
   )Úobjr
   r
   r   Údefault_encodeE   r   r.   c                 C   r   r   )r   Úunicoder   r   r
   r
   r   r   M   r   c                 C   r'   )r    r
   r   r
   r
   r   r&   S   r   c                 O   s   | j dg|¢R i |¤ŽS )zConvert utf-8 to ASCII.r   )r   r(   r
   r
   r   r+   W   s   c                 C   s   t | t|ƒƒS )r   )r/   r   )r-   r	   r
   r
   r   r.   [   s   r!   c                 C   s*   t | ƒ} t| ttfƒst| |ƒS t| |ƒS )z+Safe form of str(), void of unicode errors.)r&   r   r   r$   Ú	safe_reprÚ	_safe_str)r   r"   r
   r
   r   Úsafe_stri   s   

r2   c                 C   sZ   t | tƒr| S zt| ƒW S  ty, } zd t| ƒ|d t ¡ ¡¡W  Y d }~S d }~ww ©Nz$<Unrepresentable {0!r}: {1!r} {2!r}>Ú
)r   r   Ú	ExceptionÚformatÚtypeÚjoinÚ	tracebackÚformat_stack)r   r"   r	   Úexcr
   r
   r   r1   s   s   

ÿ€ÿr1   c                 C   s   t | tƒr|  ||¡S | S ©Nr#   )r   r   r"   r
   r
   r   Ú_ensure_str|   s   
r=   c                 C   sx   t |ƒ}zt| tƒrt|  ||¡||ƒW S t| ||ƒW S  ty; } zd t| ƒ|d t	 
¡ ¡¡W  Y d }~S d }~ww r3   )r   r   r/   r=   r   r5   r6   r7   r8   r9   r:   )r   r"   r	   r   r;   r
   r
   r   r1   ‚   s   
ÿÿ€ÿc                 C   s(   zt | ƒW S  ty   t| |ƒ Y S w )z*Safe form of repr, void of Unicode errors.)Úreprr5   r1   )Úor"   r
   r
   r   r0   Ž   s
   
ÿr0   r<   )r!   )r!   N)Ú__doc__Ú
__future__r   r   r   r9   Ú
kombu.fiver   r   r   r   r   ÚplatformÚ
startswithr   r   r&   r+   r,   r.   r   Ústr_tr/   r$   Úbytes_tÚ	NameErrorr2   r1   r=   r0   r
   r
   r
   r   Ú<module>   sF   

ÿ
	
