U
    Uºcå  ã                   @   s:   d dl Z d dlmZ d dlZd dlZdd„ Zd
dd	„ZdS )é    N)ÚDecimalc              	   C   s$   t | tjtjtjtjtjtt	f ƒS )z¦Determine if the object instance is of a protected type.

    Objects of protected types are preserved as-is when passed to
    force_unicode(strings_only=True).
    )
Ú
isinstanceÚsixÚinteger_typesÚtypesZNoneTypeÚdatetimeÚdateÚtimeÚfloatr   )Úobj© r   úG/tmp/pip-unpacked-wheel-g8kmtpbc/tensorboard/_vendor/bleach/encoding.pyÚis_protected_type   s       þÿÿr   úutf-8FÚstrictc              
      sê   t | tjƒr| S ˆr t| ƒr | S zpt | tjƒs‚t| dƒrB|  ¡ } qŽtjrnt | tƒrbt | ˆ ˆ¡} q€t | ¡} qŽt t| ƒˆ ˆ¡} n|  	ˆ ˆ¡} W nT t
k
rä } z6t | tƒs¸t
|jŽ ‚nd ‡ ‡‡fdd„| D ƒ¡} W 5 d}~X Y nX | S )zÆ
    Similar to smart_text, except that lazy instances are resolved to
    strings, rather than kept as lazy objects.

    If strings_only is True, don't convert (some) non-string-like objects.
    Ú__unicode__ú c                    s   g | ]}t |ˆ ˆˆƒ‘qS r   )Úforce_unicode)Ú.0Úarg©ÚencodingÚerrorsÚstrings_onlyr   r   Ú
<listcomp><   s   ÿÿz!force_unicode.<locals>.<listcomp>N)r   r   Ú	text_typer   Ústring_typesÚhasattrr   ÚPY3ÚbytesÚdecodeÚUnicodeDecodeErrorÚ	ExceptionÚargsÚjoin)Úsr   r   r   Úer   r   r   r      s*    	



ÿr   )r   Fr   )r   Údecimalr   r   r   r   r   r   r   r   r   Ú<module>   s
   