a
    xdt#                     @   s  d Z ddlZddlmZmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZ dd	lmZ d
ZeddZeddZeddZeddZeefZe
fZeefZedddZedddZedddZedddZedddZedddZ edddZ!edddZ"edddZ#edddZ$edddZ%d:dd Z&ee fd!d"Z'e fd#d$Z(d%d& Z)d'd( Z*d;d*d+Z+d,d- Z,d.d/ Z-d0d1 Z.d2d3 Z/d<d4d5Z0d6d7 Z1ddde2fd8d9Z3dS )=a  Streaming, truncating, non-recursive version of :func:`repr`.

Differences from regular :func:`repr`:

- Sets are represented the Python 3 way: ``{1, 2}`` vs ``set([1, 2])``.
- Unicode strings does not have the ``u'`` prefix, even on Python 2.
- Empty set formatted as ``set()`` (Python 3), not ``set([])`` (Python 2).
- Longs don't have the ``L`` suffix.

Very slow with no limits, super quick with limits.
    N)deque
namedtuple)Decimal)chain)Number)
_recursion   )truncate)saferepr
reprstream_literal)valuer	   	direction_key)r   _quoted_dirty)objid{F: T}[]z, ()z,)   c                 C   s   d t| |||dS )zSafe version of :func:`repr`.

    Warning:
        Make sure you set the maxlen argument, or it will be very slow
        for recursive objects.  With the maxlen set, it's often faster
        than built-in repr.
     )maxlen	maxlevelsseen)join	_saferepr)or   r   r    r#   M/var/www/html/Ranjet/env/lib/python3.9/site-packages/celery/utils/saferepr.pyr
   A   s    	r
   c                 c   sN   t | }t|  D ]4\}\}}t|V  |V  |V  ||d k r|V  qd S Nr   )len	enumerateitemsr   )mappingLIT_DICT_KVSEPLIT_LIST_SEPsizeikvr#   r#   r$   
_chaindictO   s    
r0   c                 c   s6   t | }t| D ] \}}|V  ||d k r|V  qd S r%   )r&   r'   )itr+   r,   r-   r/   r#   r#   r$   
_chainlist\   s
    r2   c                 C   s   t | j dS )Nz())type__name__sr#   r#   r$   _repr_empty_sete   s    r7   c                 C   s>   t | tr:z| d W n  ty8   | jddd Y S 0 | S )Nutf-8backslashreplaceerrors)
isinstancebytesencodeUnicodeDecodeErrordecode)valr#   r#   r$   	_safetextj   s    
rB   ...c                 C   sP   |r<t | |kr<t| d |  }tdt| | dS tdt|  dS )N')r&   
memoryviewtobytes_bytes_prefix_repr_binary_bytes)rA   r   Zellipsischunkr#   r#   r$   _format_binary_bytesv   s    rJ   c                 C   s   d|  S )Nbr#   r5   r#   r#   r$   rG      s    rG   c                 C   s^   z|  dW S  tyX   z
| j}W n$ tyH   | j ddd Y  Y S 0 |  Y S Y n0 d S )Nr8   replacer:   )r@   r?   hexAttributeError)rA   Zashexr#   r#   r$   rH      s    
rH   c                 C   s0   t | trt| |S dt| |ddS d S )Nz'{}'rD   z\')r<   r=   rJ   formatr	   rL   )rA   r   r#   r#   r$   _format_chars   s    

rP   c                 C   sh   z
t | W S  tyb } z@dt }dt| t| dd|d|dW  Y d }~S d }~0 0 d S )N
z<Unrepresentable z#xr    >)repr	Exceptionr    	tracebackformat_stackr3   id)objexcstackr#   r#   r$   _repr   s
    
r\   c           
      c   s   t t| gg}t|||dD ]\}}|d urJ|dkrJdV  ||  qt|tr\|j}n@t|trvt|j||}n&t|t	rt
|j|}ntt||}|V  |d ur|t|8 }q|D ]&}|D ]}	t|	tr|	js|	jV  qqd S )N)r   r   r   z, ...)r   iterr   appendr<   r   r   r   r
   r   rP   rB   r	   r&   )
r"   r   r   r   r[   tokenr1   rA   Zrest1Zrest2r#   r#   r$   r!      s(    



r!   c                 C   sR   t | |u r|||| fS tt | j d|j ddt|j ddd|| fS )Nr   Fr   r   r   )r3   r   r4   r   )rA   	lit_startlit_endZbuiltin_typeZchainerr#   r#   r$   _reprseq   s    rb   c                 c   s@  |pt  }| j}| j}|j}|j}|j}	| r<d }
}| }|D ]}|}||trb||j q@q@||tr||j	7 }||fV  q@||t
r||fV  q@||trt||fV  q@||trt||fV  q@||trt||fV  q@||trt||fV  q@||tr<|s$t||fV  q@t|ttt t\}
}}n||trptt|dkr\tntt|  }
}}nT||trttt |  }
}}n2||t!rt"t#t|  }
}}nt||fV  q@|r||kr|
j$ d|j$ |fV  q@t%|}||rt&||fV  q@|	| |t'|
g|t||g|  q(q@q(dS )z Streaming repr, yielding tokens.Nr   rC   )(setr^   popleft__contains__discardaddr   r   r   r   r   r   r\   safe_tstrchars_tr   rangeset_tr7   rb   LIT_SET_STARTLIT_SET_ENDr2   tupleLIT_TUPLE_STARTr&   LIT_TUPLE_END_SVLIT_TUPLE_ENDdictLIT_DICT_STARTLIT_DICT_ENDr0   listLIT_LIST_STARTLIT_LIST_ENDr   rX   r   r   )r[   r   r   levelr<   r^   rd   Z
is_in_seenZdiscard_from_seenZadd_to_seenr`   ra   r1   rA   origr   r#   r#   r$   r      sr    













r   )Nr   N)rC   )Nr   N)4__doc__rV   collectionsr   r   decimalr   	itertoolsr   Znumbersr   pprintr   textr	   __all__r   r   r   r   r=   ri   rj   rh   	frozensetrc   rl   rt   r*   ru   rw   rx   r+   rm   rn   rp   rr   rq   r
   r0   r2   r7   rB   rJ   rG   rH   rP   r\   r!   rb   r<   r   r#   r#   r#   r$   <module>   sR   






	
		
