o
    ê6Wj‹  ã                   @   sþ   d dl Z d dlZd dlZd dlZd dlmZ ejd ZG dd„ dejƒZ	de
defdd	„Zde
defd
d„Zdejdejf defdd„Zeje
eef Zdedefdd„Zdejdejf defdd„Zdejdejf dejdejej f fdd„ZdS )é    N)Ú	timedeltaé   c                
   @   s4   e Zd ZdZdededejdejdejf
dd„Zd	S )
ÚLoggerProtocolz}
    Protocol used by utils expecting a logger (eg: before_log).

    Compatible with logging, structlog, loguru, etc...
    ÚlevelÚmsgÚargsÚkwargsÚreturnc                O   s   d S ©N© )Úselfr   r   r   r   r   r   ú^/home/esfera/Documents/content_generation/venv/lib/python3.10/site-packages/tenacity/_utils.pyÚlog#   s   zLoggerProtocol.logN)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚintÚstrÚtypingÚAnyr   r   r   r   r   r      s    ÿÿÿÿþr   Úpos_numr	   c                 C   sT   | dkrdS | dkrdS | dkrdS | dkrdS d	|   kr#d
kr$dS  t | d ƒS )Nr   Úthé   Ústr   Úndé   Úrdé   é   é
   ©Úfind_ordinal©r   r   r   r   r"   (   s   ÿr"   c                 C   s   | › t | ƒ› �S r
   r!   r#   r   r   r   Ú
to_ordinal8   s   r$   Úcb.c                 C   sŽ   g }z|  | j¡ W n ty%   z|  | j¡ W n	 ty"   Y nw Y nw |s,t| ƒS z| jr7| d| j¡ W n	 tyA   Y nw d |¡S )znGet a callback fully-qualified name.

    If no name can be produced ``repr(cb)`` is called and returned.
    r   Ú.)Úappendr   ÚAttributeErrorr   Úreprr   ÚinsertÚjoin)r%   Úsegmentsr   r   r   Úget_callback_name<   s*   ÿ€ý€ÿ
r-   Ú	time_unitc                 C   s   t t| tƒr|  ¡ ƒS | ƒS r
   )ÚfloatÚ
isinstancer   Útotal_seconds)r.   r   r   r   Ú
to_secondsX   s
   ÿÿr2   Úcallc                 C   sH   t  | ¡rdS t  | ¡rdS t| tjƒo| j}|pt| dd ƒ}t  |¡S )NFTÚ__call__)ÚinspectÚisclassÚiscoroutinefunctionr0   Ú	functoolsÚpartialÚfuncÚgetattr)r3   Úpartial_callÚdunder_callr   r   r   Úis_coroutine_callable^   s   


r>   c                    s0   t ˆ ƒrˆ S dtjdtjdtjf‡ fdd„}|S )Nr   r   r	   c                  Ÿ   s   �ˆ | i |¤ŽS r
   r   )r   r   ©r3   r   r   Úinnern   s   €z!wrap_to_async_func.<locals>.inner)r>   r   r   )r3   r@   r   r?   r   Úwrap_to_async_funch   s    rA   )r8   r5   Úsysr   Údatetimer   ÚmaxsizeÚMAX_WAITÚProtocolr   r   r   r"   r$   ÚCallabler   r-   ÚUnionr/   Útime_unit_typer2   Úboolr>   Ú	AwaitablerA   r   r   r   r   Ú<module>   s$   

ÿþ