o
    wvXjN$  ã                   @   sÌ  d Z ddlmZm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 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(„ Z0d)d*„ Z1d=d,d-„Z2d.d/„ Z3d0d1„ Z4d2d3„ Z5d4d5„ Z6d<d6d7„Z7d8d9„ Z8dd de9fd:d;„Z:d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.
é    )Úabsolute_importÚunicode_literalsN)ÚdequeÚ
namedtuple)ÚDecimal)Úchain)ÚNumber)Ú
_recursion)ÚPY3ÚitemsÚrangeÚtext_té   )Útruncate)ÚsafereprÚ
reprstreamÚ_literal)Úvaluer   Ú	directionÚ_key)r   Ú_quotedÚ_dirty)ÚobjidÚ{Fz: 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(   úR/var/www/html/myproject/venv/lib/python3.10/site-packages/celery/utils/saferepr.pyr   F   s   	ÿr   c                 c   sP   � t | ƒ}tt| ƒƒD ]\}\}}t|ƒV  |V  |V  ||d k r%|V  qd S ©Nr   )ÚlenÚ	enumerater   r   )ÚmappingÚLIT_DICT_KVSEPÚLIT_LIST_SEPÚsizeÚiÚkÚvr(   r(   r)   Ú
_chaindictT   s   €
€ûr4   c                 c   s8   � t | ƒ}t| ƒD ]\}}|V  ||d k r|V  q	d S r*   )r+   r,   )Úitr/   r0   r1   r3   r(   r(   r)   Ú
_chainlista   s   €€ýr6   c                 C   s   dt | ƒjf S )Nz%s())ÚtypeÚ__name__©Úsr(   r(   r)   Ú_repr_empty_setj   s   r;   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)   Ú	_safetexto   s   
üýrF   ú...c                 C   sJ   |rt | ƒ|krt| ƒd |…  ¡ }td t|ƒ|¡ƒS td t| ƒ¡ƒS )Nz'{0}{1}'ú'{0}')r+   Ú
memoryviewÚtobytesÚ_bytes_prefixÚformatÚ_repr_binary_bytes)rE   r"   ÚellipsisÚchunkr(   r(   r)   Ú_format_binary_bytes{   s   ÿrP   c                 C   s   t rd|  S | S )NÚb)r
   r9   r(   r(   r)   rK   …   s   rK   c                 C   sV   z|   d¡W S  ty*   z| j}W n ty$   | j ddd� Y  Y S w |ƒ  Y S w )Nr<   Úreplacer>   )rD   rC   ÚhexÚAttributeError)rE   Úashexr(   r(   r)   rM   ‰   s   
þ
÷rM   c                 C   s,   t | tƒr
t| |ƒS d t| |ƒ dd¡¡S )NrH   ú'z\')r@   rA   rP   rL   r   rR   )rE   r"   r(   r(   r)   Ú_format_chars™   s   

rW   c                 C   sR   zt | ƒW S  ty( } zd t| ƒt| ƒ|d t ¡ ¡¡W  Y d }~S d }~ww )Nz*<Unrepresentable {0!r}{1:#x}: {2!r} {3!r}>Ú
)ÚreprÚ	ExceptionrL   r7   Úidr%   Ú	tracebackÚformat_stack)ÚobjÚexcr(   r(   r)   Ú_repr¡   s   
ÿ€ÿr`   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   Úappendr@   r   r   r   r   r   rW   rF   r   r+   )
r'   r"   r#   r$   ÚstackÚtokenr5   rE   Úrest1Úrest2r(   r(   r)   r&   ª   s2   €



€€þþr&   c                 C   sP   t | ƒ|u r|||| ƒfS tdt | ƒj|jf ddƒtd|jf ddƒ|| ƒfS )Nz%s(%sFr   z%s)r   )r7   r   r8   r   )rE   Ú	lit_startÚlit_endÚbuiltin_typeÚchainerr(   r(   r)   Ú_reprseqÆ   s   ýrk   c                 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ìd|
j$|j$f |fV  q!t%|ƒ}||ƒrüt&|ƒ|fV  q!|	|ƒ |t'|
g|t|ƒ|g|ƒƒ  | sdS dS )z Streaming repr, yielding tokens.Nr   z%s...%s)(Úsetrb   ÚpopleftÚ__contains__ÚdiscardÚaddr   r   r   r   r   r   r`   Úsafe_tr   Úchars_tr   r   Úset_tr;   rk   ÚLIT_SET_STARTÚLIT_SET_ENDr6   ÚtupleÚLIT_TUPLE_STARTr+   ÚLIT_TUPLE_END_SVÚLIT_TUPLE_ENDÚdictÚLIT_DICT_STARTÚLIT_DICT_ENDr4   ÚlistÚLIT_LIST_STARTÚLIT_LIST_ENDr   r[   r	   r   )rc   r$   r#   Úlevelr@   rb   rm   Ú
is_in_seenÚdiscard_from_seenÚadd_to_seenrg   rh   r5   rE   Úorigr   r(   r(   r)   r   Ñ   sv   €











ÿ
ý

ÿ

ÿÅr   )Nr    N)rG   );Ú__doc__Ú
__future__r   r   r\   Úcollectionsr   r   Údecimalr   Ú	itertoolsr   Únumbersr   Úpprintr	   Úcelery.fiver
   r   r   r   Útextr   Ú__all__r   r   r   r   rA   rr   rq   Ú	frozensetrl   rs   r{   r.   r|   r~   r   r/   rt   ru   rw   ry   rx   r   r4   r6   r;   rF   rP   rK   rM   rW   r`   r&   rk   r@   r   r(   r(   r(   r)   Ú<module>   sX   


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