o
    ›¨Êh<#  ã                   @   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 )zÚSafe 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-   úG/var/www/html/env/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š|sŽt|ƒ|fV  q!t|ttt tƒ\}
}}n@||tƒr²tt|ƒdkr¨tntt|ƒ}
}}n(||tƒrÂttt |ƒ}
}}n||t!ƒrÒt"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|ƒƒ  | 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






þ	
		
	üÿþýüü