o
    Df<#                     @   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mZmZmZmZmZmZmZmZ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Z0dAd d!Z1e'e+fd"d#Z2e+fd$d%Z3d&d' Z4d(d) Z5dBd+d,Z6d-d. Z7d/d0 Z8d1d2 Z9d3d4 Z:dAd5d6Z;d7d8 Z<ddde=fd9ed:ee d;e>d<e>d=ed>ee fd?d@Z?dS )Ca  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)
AnyAnyStrCallableDictIteratorListOptionalSequenceSetTuple   )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-   N/home/ubuntu/webapp/venv/lib/python3.10/site-packages/celery/utils/saferepr.pyr   B   s   	r   c                 c   sP    t | }t|  D ]\}\}}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.   
_chaindictP   s   
r:   c                 c   s8    t | }t| D ]\}}|V  ||d k r|V  q	d S r/   )r0   r1   )itr5   r6   r7   r9   r-   r-   r.   
_chainlist]   s   r<   c                 C   s   t | j dS )Nz())type__name__sr-   r-   r.   _repr_empty_setf   s   rA   c                 C   s@   t | trz| d W | S  ty   | jddd Y S w | S )Nutf-8backslashreplace)errors)
isinstancebytesencodeUnicodeDecodeErrordecodevalr-   r-   r.   	_safetextk   s   
rL   ...c                 C   sP   |rt | |krt| d |  }tdt| | dS tdt|  dS )N')r0   
memoryviewtobytes_bytes_prefix_repr_binary_bytes)rK   r'   ellipsischunkr-   r-   r.   _format_binary_bytesw   s   rU   c                 C   s   d|  S )Nbr-   r?   r-   r-   r.   rQ      s   rQ   c                 C   s(   z|  dW S  ty   |   Y S w )NrB   )rI   rH   hexrJ   r-   r-   r.   rR      s
   rR   c                 C   s,   t | tr
t| |S dt| |ddS )Nz'{}'rN   z\')rE   rF   rU   formatr   replace)rK   r'   r-   r-   r.   _format_chars   s   

rZ   c                 C   sd   zt | W S  ty1 } z dt }dt| t| dd|d|dW  Y d }~S d }~ww )N
z<Unrepresentable z#xr    >)repr	Exceptionr*   	tracebackformat_stackr=   id)objexcstackr-   r-   r.   _repr   s   
2rf   c           
      c   s    t t| gg}t|||dD ]L\}}|d ur&|dkr&dV  ||  n7t|tr/|j}n t|tr<t|j||}nt|t	rHt
|j|}ntt||}|V  |d ur\|t|8 }q|D ]}|D ]}	t|	trq|	jsq|	jV  qcq_d S )N)r)   r(   r   z, ...)r   iterr   appendrE   r   r   r   r   r   rZ   rL   r   r0   )
r,   r'   r(   r)   re   tokenr;   rK   rest1rest2r-   r-   r.   r+      s2   



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    )r=   r   r>   r   )rK   	lit_startlit_endbuiltin_typechainerr-   r-   r.   _reprseq   s   rp   re   r)   r(   levelrE   returnc                 c   s,   |pt  }| j}| j}|j}|j}|j}	| rd }
}| }|D ]}|}||tr0||j q!||tr@||j	7 }||fV  q!||t
rK||fV  q!||trXt||fV  q!||tret||fV  q!||trrt||fV  q!||trt||fV  q!||tr|st||fV  q!t|ttt t\}
}}n@||trtt|dkrtntt|}
}}n(||trttt |}
}}n||t!rt"t#t|}
}}nt||fV  q!|r||kr|
j$ d|j$ |fV  q!t%|}||rt&||fV  q!|	| |t'|
g|t||g|  | sdS dS )z Streaming repr, yielding tokens.Nr   rM   )(setrh   popleft__contains__discardaddr   r   r   r   r   r   rf   safe_tstrchars_tr   rangeset_trA   rp   LIT_SET_STARTLIT_SET_ENDr<   tupleLIT_TUPLE_STARTr0   LIT_TUPLE_END_SVLIT_TUPLE_ENDdictLIT_DICT_STARTLIT_DICT_ENDr:   listLIT_LIST_STARTLIT_LIST_ENDr   rb   r   r   )re   r)   r(   rq   rE   rh   rt   
is_in_seendiscard_from_seenadd_to_seenrl   rm   r;   rK   origr   r-   r-   r.   r      sv   
















r   )Nr%   N)rM   )@__doc__r`   collectionsr   r   decimalr   	itertoolsr   numbersr   pprintr   typingr   r	   r
   r   r   r   r   r   r   r   textr   __all__r   r   r   r   rF   ry   rz   rx   	frozensetrs   r|   r   r4   r   r   r   r5   r}   r~   r   r   r   r   r:   r<   rA   rL   rU   rQ   rR   rZ   rf   r+   rp   rE   intr   r-   r-   r-   r.   <module>   sr    0


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