o
    Ö]¼j^8  ã                   @   s¢   d Z dZddlZddlZddlZdd„ Zdd„ Zdd	„ ZG d
d„ dƒZG dd„ dƒZ	G dd„ de	ƒZ
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zddd„ZdS )zMethod decorator helpers.© é    Nc                 C   s   t jdt| d� d S )Nz9decorating class methods with @cachedmethod is deprecated©Ú
stacklevel©ÚwarningsÚwarnÚDeprecationWarningr   r   r   ú[/home/dinkstrade/pdmp-scanner/venv/lib/python3.10/site-packages/cachetools/_cachedmethod.pyÚ_warn_classmethod
   ó
   
ýr
   c                 C   s   t j| t|d� d S )Nr   r   )Úmsgr   r   r   r	   Ú_warn_instance_dict   r   r   c                 C   s   d S ©Nr   )Ú_r   r   r	   Ú_none   s   r   c                   @   sZ   e Zd ZdZddd„Zdd„ Zdd„ Zed	d
„ ƒZedd„ ƒZ	edd„ ƒZ
edd„ ƒZdS )Ú_WrapperBasezDWrapper base class providing default implementations for properties.Nc                 C   sh   t |tƒr
tdd� t | |¡ || _|| _t ||¡| _|d ur#|nt	| _
|d ur/|| _d S t	| _d S )Né   r   )Ú
isinstanceÚtyper
   Ú	functoolsÚupdate_wrapperÚ_objÚ_WrapperBase__cacheÚpartialÚ_WrapperBase__keyr   Ú_WrapperBase__lockÚ_WrapperBase__cond)ÚselfÚobjÚmethodÚcacheÚkeyÚlockÚcondr   r   r	   Ú__init__!   s   

z_WrapperBase.__init__c                 O   ó   t ƒ ‚r   ©ÚNotImplementedError©r   ÚargsÚkwargsr   r   r	   Ú__call__+   ó   z_WrapperBase.__call__c                 C   r%   r   r&   ©r   r   r   r	   Úcache_clear.   r,   z_WrapperBase.cache_clearc                 C   ó   |   | j¡S r   )r   r   r-   r   r   r	   r    1   ó   z_WrapperBase.cachec                 C   s   | j S r   )r   r-   r   r   r	   Ú	cache_key5   s   z_WrapperBase.cache_keyc                 C   r/   r   )r   r   r-   r   r   r	   Ú
cache_lock9   r0   z_WrapperBase.cache_lockc                 C   r/   r   )r   r   r-   r   r   r	   Úcache_condition=   r0   z_WrapperBase.cache_condition)NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r$   r+   r.   Úpropertyr    r1   r2   r3   r   r   r   r	   r      s    




r   c                   @   s,   e Zd ZdZd
dd„Zdd„ Zddd	„ZdS )Ú_DescriptorBasezADescriptor base class implementing the basic descriptor protocol.Fc                 C   s   d | _ || _d S r   )Ú_DescriptorBase__attrnameÚ_DescriptorBase__deprecated)r   Ú
deprecatedr   r   r	   r$   E   s   
z_DescriptorBase.__init__c                 C   s:   | j d u r
|| _ d S || j krtd| j ›d|›d�ƒ‚d S )Nz=Cannot assign the same @cachedmethod to two different names (z and z).)r:   Ú	TypeError)r   ÚownerÚnamer   r   r	   Ú__set_name__I   s   


ÿÿÿÿz_DescriptorBase.__set_name__Nc                 C   sæ   |   |¡}|d u r	 |S | jd urfz|j | j|¡}W |S  tyA   dt|ƒj›d| j›d�}| jr9t|dƒ nt	|ƒd ‚Y |S  t	ye   dt|ƒj›d| j›d�}| jr]t|dƒ nt	|ƒd ‚Y |S w | jrl	 |S d}t	|ƒd ‚)NzNo '__dict__' attribute on z instance to cache z
 property.é   zThe '__dict__' attribute on z7 instance does not support item assignment for caching zDCannot use @cachedmethod instance without calling __set_name__ on it)
ÚWrapperr:   Ú__dict__Ú
setdefaultÚAttributeErrorr   r4   r;   r   r=   )r   r   ÚobjtypeÚwrapperr   r   r   r	   Ú__get__R   sD   
 
áçÿÿ
þñþÿ
þñ
þ
z_DescriptorBase.__get__)Fr   )r4   r5   r6   r7   r$   r@   rH   r   r   r   r	   r9   B   s
    
	r9   c                       s0   e Zd ZdZ‡ fdd„Zdd„ Zdd„ Z‡  ZS )Ú_DeprecatedDescriptorBasez=Descriptor base class supporting deprecated @classmethod use.c                    s   t ƒ jdd� || _|| _d S )NT)r<   )Úsuperr$   Ú"_DeprecatedDescriptorBase__wrapperÚ&_DeprecatedDescriptorBase__cache_clear)r   rG   r.   ©Ú	__class__r   r	   r$   ~   s   
z"_DeprecatedDescriptorBase.__init__c                 O   s   t dd� | j|i |¤ŽS ©NrA   r   )r
   rK   r(   r   r   r	   r+   „   ó   
z"_DeprecatedDescriptorBase.__call__c                 C   s   t dd� |  |¡S rO   )r
   rL   )r   rF   r   r   r	   r.   ‰   s   

z%_DeprecatedDescriptorBase.cache_clear)r4   r5   r6   r7   r$   r+   r.   Ú__classcell__r   r   rM   r	   rI   {   s
    rI   c                    s$   G ‡ ‡‡‡‡‡fdd„dt ƒ}|ƒ S )Nc                       ó*   e Zd ZG ‡ ‡‡‡‡‡fdd„deƒZdS )z#_condition_info.<locals>.Descriptorc                       sF   e Zd Z‡ ‡‡‡‡‡fdd„Z‡fdd„Zdd„ Z‡fdd„Z‡  ZS )	z+_condition_info.<locals>.Descriptor.Wrapperc                    s.   t ƒ  |ˆˆˆˆˆ¡ d | _| _tƒ | _d S ©Nr   )rJ   r$   Ú_Wrapper__hitsÚ_Wrapper__missesÚsetÚ_Wrapper__pending©r   r   ©rN   r    r#   r!   r"   r   r   r	   r$   —   s   z4_condition_info.<locals>.Descriptor.Wrapper.__init__c                    sÈ  ˆj }ˆj}ˆj}ˆj|i |¤Ž‰ |�> | ‡ ‡fdd„¡ z|ˆ  }ˆ jd7  _|W W  d   ƒ S  tyI   ˆj ˆ ¡ ˆ j	d7  _	Y nw W d   ƒ n1 sTw   Y  zmˆˆj
g|¢R i |¤Ž}|�7 z||ˆ < W n	 tyx   Y nw |W  d   ƒ W |� ˆj ˆ ¡ | ¡  W d   ƒ S 1 s™w   Y  S 1 s¢w   Y  W |� ˆj ˆ ¡ | ¡  W d   ƒ d S 1 sÀw   Y  d S |� ˆj ˆ ¡ | ¡  W d   ƒ w 1 sÞw   Y  w )Nc                      s
   ˆ ˆj vS r   )rW   r   ©r!   r   r   r	   Ú<lambda>£   s   
 zF_condition_info.<locals>.Descriptor.Wrapper.__call__.<locals>.<lambda>é   )r    r2   r3   r1   Úwait_forrT   ÚKeyErrorrW   ÚaddrU   r   Ú
ValueErrorÚremoveÚ
notify_all)r   r)   r*   r    r"   r#   ÚresultÚval©r   rZ   r	   r+   œ   sN   ûþø	ÿû
þù
(þ
þz4_condition_info.<locals>.Descriptor.Wrapper.__call__c                 S   óB   | j � | j ¡  d | _| _W d   ƒ d S 1 sw   Y  d S rS   ©r2   r    ÚclearrT   rU   r-   r   r   r	   r.   ¸   ó   
"þz7_condition_info.<locals>.Descriptor.Wrapper.cache_clearc                    ó<   | j � ˆ | j| j| jƒW  d   ƒ S 1 sw   Y  d S r   ©r2   r    rT   rU   r-   ©Úinfor   r	   Ú
cache_info½   ó   $ÿz6_condition_info.<locals>.Descriptor.Wrapper.cache_info©r4   r5   r6   r$   r+   r.   rn   rQ   r   ©r    r#   rm   r!   r"   r   rM   r	   rB   –   s
    rB   N©r4   r5   r6   r   rB   r   rq   r   r	   Ú
Descriptor•   ó    "rs   ©r9   )r   r    r!   r"   r#   rm   rs   r   rq   r	   Ú_condition_info”   s   ,rv   c                    s"   G ‡ ‡‡‡‡fdd„dt ƒ}|ƒ S )Nc                       ó(   e Zd ZG ‡ ‡‡‡‡fdd„deƒZdS )z _locked_info.<locals>.Descriptorc                       sD   e Zd Z‡ ‡‡‡‡fdd„Z‡fdd„Zdd„ Z‡fdd„Z‡  ZS )	z(_locked_info.<locals>.Descriptor.Wrapperc                    s$   t ƒ  |ˆˆˆˆ¡ d | _| _d S rS   ©rJ   r$   rT   rU   rX   ©rN   r    r!   r"   r   r   r	   r$   Ç   s   z1_locked_info.<locals>.Descriptor.Wrapper.__init__c              	      s   | j }| j}| j|i |¤Ž}|�. z|| }|  jd7  _|W W  d   ƒ S  ty6   |  jd7  _Y nw W d   ƒ n1 sAw   Y  ˆ | jg|¢R i |¤Ž}|�" z| ||¡W W  d   ƒ S  tyu   | Y W  d   ƒ S w 1 syw   Y  d S ©Nr\   )	r    r2   r1   rT   r^   rU   r   rD   r`   )r   r)   r*   r    r"   r!   rc   rd   re   r   r	   r+   Ë   s0   üÿúûùúz1_locked_info.<locals>.Descriptor.Wrapper.__call__c                 S   rf   rS   rg   r-   r   r   r	   r.   à   ri   z4_locked_info.<locals>.Descriptor.Wrapper.cache_clearc                    rj   r   rk   r-   rl   r   r	   rn   å   ro   z3_locked_info.<locals>.Descriptor.Wrapper.cache_inforp   r   ©r    rm   r!   r"   r   rM   r	   rB   Æ   s
    rB   Nrr   r   r{   r   r	   rs   Å   ó     rs   ru   )r   r    r!   r"   rm   rs   r   r{   r	   Ú_locked_infoÄ   s   $r}   c                    s    G ‡ ‡‡‡fdd„dt ƒ}|ƒ S )Nc                       s&   e Zd ZG ‡ ‡‡‡fdd„deƒZdS )z"_unlocked_info.<locals>.Descriptorc                       sB   e Zd Z‡ ‡‡‡fdd„Z‡fdd„Zdd„ Z‡fdd„Z‡  ZS )	z*_unlocked_info.<locals>.Descriptor.Wrapperc                    s"   t ƒ  |ˆˆˆ¡ d | _| _d S rS   rx   rX   ©rN   r    r!   r   r   r	   r$   ï   s   z3_unlocked_info.<locals>.Descriptor.Wrapper.__init__c                    s�   | j }| j|i |¤Ž}z|| }|  jd7  _|W S  ty)   |  jd7  _Y nw ˆ | jg|¢R i |¤Ž}z|||< W |S  tyG   Y |S w rz   )r    r1   rT   r^   rU   r   r`   )r   r)   r*   r    r!   rc   rd   re   r   r	   r+   ó   s"   ÿ
þþz3_unlocked_info.<locals>.Descriptor.Wrapper.__call__c                 S   s   | j  ¡  d | _| _d S rS   )r    rh   rT   rU   r-   r   r   r	   r.     rP   z6_unlocked_info.<locals>.Descriptor.Wrapper.cache_clearc                    s   ˆ | j | j| jƒS r   )r    rT   rU   r-   rl   r   r	   rn     s   z5_unlocked_info.<locals>.Descriptor.Wrapper.cache_inforp   r   ©r    rm   r!   r   rM   r	   rB   î   s
    rB   Nrr   r   r   r   r	   rs   í   s    rs   ru   )r   r    r!   rm   rs   r   r   r	   Ú_unlocked_infoì   s   r€   c                    sb   t  ¡ ‰‡ ‡‡‡‡fdd„‰‡ ‡fdd„‰‡‡fdd„}G ‡ ‡‡‡‡‡‡fdd„dtƒ}||ˆƒS )	Nc                    s¾  ˆ| ƒ}ˆ| g|¢R i |¤Ž‰ ˆ| ƒ�/ ˆ| ƒ  ‡ ‡fdd„¡ z|ˆ  W W  d   ƒ S  ty:   ˆ ˆ ¡ Y nw W d   ƒ n1 sEw   Y  ztˆ| g|¢R i |¤Ž}ˆ| ƒ�: z||ˆ < W n	 tyj   Y nw |W  d   ƒ W ˆ| ƒ� ˆ ˆ ¡ ˆ| ƒ ¡  W d   ƒ S 1 sŽw   Y  S 1 s—w   Y  W ˆ| ƒ� ˆ ˆ ¡ ˆ| ƒ ¡  W d   ƒ d S 1 s¸w   Y  d S ˆ| ƒ� ˆ ˆ ¡ ˆ| ƒ ¡  W d   ƒ w 1 sÙw   Y  w )Nc                      s   ˆ ˆvS r   r   r   ©ÚkÚpendingr   r	   r[     s    z-_condition.<locals>.wrapper.<locals>.<lambda>)r]   r^   r_   r`   ra   rb   )r   rƒ   r)   r*   ÚcÚv)r    r#   r!   r"   r   r�   r	   rG     sD   
ýÿû
ÿû

þù

,þ
þz_condition.<locals>.wrapperc                    ó>   ˆ | ƒ}ˆ| ƒ� |  ¡  W d   ƒ d S 1 sw   Y  d S r   ©rh   ©r   r„   ©r    r"   r   r	   r.   '  ó   

"ÿz_condition.<locals>.cache_clearc                    s&   ˆ   | tƒ ¡}ˆ| |g|¢R i |¤ŽS r   )rD   rV   )r   r)   r*   Úp)rƒ   rG   r   r	   Úclassmethod_wrapper,  s   z'_condition.<locals>.classmethod_wrapperc                       s,   e Zd ZG ‡ ‡‡‡‡‡‡fdd„deƒZdS )z_condition.<locals>.Descriptorc                       s@   e Zd Z‡ ‡‡‡‡‡fdd„Z‡fdd„Zd‡fdd„	Z‡  ZS )	z&_condition.<locals>.Descriptor.Wrapperc                    s"   t ƒ  |ˆˆˆˆˆ¡ tƒ | _d S r   )rJ   r$   rV   rW   rX   rY   r   r	   r$   2  s   z/_condition.<locals>.Descriptor.Wrapper.__init__c                    s   ˆ | j | jg|¢R i |¤ŽS r   )r   rW   r(   ©rG   r   r	   r+   6  s   z/_condition.<locals>.Descriptor.Wrapper.__call__Nc                    ó
   ˆ | j ƒS r   ©r   ©r   Ú_objtype©r.   r   r	   r.   :  ó   
z2_condition.<locals>.Descriptor.Wrapper.cache_clearr   ©r4   r5   r6   r$   r+   r.   rQ   r   ©r    r.   r#   r!   r"   r   rG   rM   r	   rB   1  s    rB   Nrr   r   r•   r   r	   rs   0  s    $rs   )ÚweakrefÚWeakKeyDictionaryrI   )r   r    r!   r"   r#   rŒ   rs   r   )r    r.   r#   r!   r"   r   rƒ   rG   r	   Ú
_condition  s    
r˜   c                    sH   ‡ ‡‡‡fdd„‰‡ ‡fdd„‰G ‡ ‡‡‡‡‡fdd„dt ƒ}|ˆˆƒS )Nc              	      sè   ˆ | ƒ}ˆ| g|¢R i |¤Ž}ˆ| ƒ� z|| W W  d   ƒ S  t y)   Y nw W d   ƒ n1 s4w   Y  ˆ| g|¢R i |¤Ž}ˆ| ƒ�" z| ||¡W W  d   ƒ S  tyi   | Y W  d   ƒ S w 1 smw   Y  d S r   )r^   rD   r`   ©r   r)   r*   r„   r‚   r…   )r    r!   r"   r   r   r	   rG   A  s*   
þÿü
ûùúz_locked.<locals>.wrapperc                    r†   r   r‡   rˆ   r‰   r   r	   r.   S  rŠ   z_locked.<locals>.cache_clearc                       rR   )z_locked.<locals>.Descriptorc                       s>   e Zd Z‡ ‡‡‡‡fdd„Z‡fdd„Zd‡fdd„	Z‡  ZS )	z#_locked.<locals>.Descriptor.Wrapperc                    s   t ƒ  |ˆˆˆˆ¡ d S r   ©rJ   r$   rX   ry   r   r	   r$   Z  ó   z,_locked.<locals>.Descriptor.Wrapper.__init__c                    ó   ˆ | j g|¢R i |¤ŽS r   r�   r(   r�   r   r	   r+   ]  r›   z,_locked.<locals>.Descriptor.Wrapper.__call__Nc                    rŽ   r   r�   r�   r’   r   r	   r.   a  r“   z/_locked.<locals>.Descriptor.Wrapper.cache_clearr   r”   r   ©r    r.   r!   r"   r   rG   rM   r	   rB   Y  s    rB   Nrr   r   r�   r   r	   rs   X  rt   rs   ©rI   )r   r    r!   r"   rs   r   r�   r	   Ú_locked@  s   
rŸ   c                    sB   ‡ ‡‡fdd„‰‡ fdd„‰G ‡ ‡‡‡‡fdd„dt ƒ}|ˆˆƒS )Nc                    sv   ˆ | ƒ}ˆ| g|¢R i |¤Ž}z|| W S  t y   Y nw ˆ| g|¢R i |¤Ž}z|||< W |S  ty:   Y |S w r   )r^   r`   r™   )r    r!   r   r   r	   rG   h  s   
ÿ
þþz_unlocked.<locals>.wrapperc                    s   ˆ | ƒ}|  ¡  d S r   r‡   rˆ   )r    r   r	   r.   v  s   z_unlocked.<locals>.cache_clearc                       rw   )z_unlocked.<locals>.Descriptorc                       s<   e Zd Z‡ ‡‡‡fdd„Z‡fdd„Zd‡fdd„	Z‡  ZS )	z%_unlocked.<locals>.Descriptor.Wrapperc                    s   t ƒ  |ˆˆˆ¡ d S r   rš   rX   r~   r   r	   r$   |  s   z._unlocked.<locals>.Descriptor.Wrapper.__init__c                    rœ   r   r�   r(   r�   r   r	   r+     r›   z._unlocked.<locals>.Descriptor.Wrapper.__call__Nc                    rŽ   r   r�   r�   r’   r   r	   r.   ƒ  r“   z1_unlocked.<locals>.Descriptor.Wrapper.cache_clearr   r”   r   ©r    r.   r!   r   rG   rM   r	   rB   {  s    rB   Nrr   r   r    r   r	   rs   z  r|   rs   rž   )r   r    r!   rs   r   r    r	   Ú	_unlockedg  s   
r¡   c                 C   s  |d ur9|d ur|d urt | |||||ƒ}nS|d ur$t | |||||ƒ}nE|d ur1t| ||||ƒ}n8t| |||ƒ}n0|d urJ|d urJt| ||||ƒ}n|d urWt| ||||ƒ}n|d urct| |||ƒ}nt| ||ƒ}||_||_|d uru|n||_||_	t
 || ¡S r   )rv   r}   r€   r˜   rŸ   r¡   r    r1   r2   r3   r   r   )r   r    r!   r"   r#   rm   rG   r   r   r	   Ú_wrapper‰  s(   r¢   )NNN)r7   Ú__all__r   r   r–   r
   r   r   r   r9   rI   rv   r}   r€   r˜   rŸ   r¡   r¢   r   r   r   r	   Ú<module>   s$    $90(!3'"