ó
    "EñiI  ã                   ó¬   • S SK r S SKJr  S SKJrJr  S SKJr  \" S5      r\" S5      r	\" S5      r
\" 5       rS\\\
\4   \	4   S	\\\
\4   \	4   4S
 jrg)é    N)ÚCallable)ÚConcatenateÚTypeVar)Ú	ParamSpecÚ_PÚ_TÚ_CÚfÚreturnc           	      óÄ   ^ ^• ST R                   -   m[        R                  " T 5      S[        S[        R
                  S[        R                  S[        4UU 4S jj5       nU$ )aê  
Like `@functools.cache` but for methods.

`@functools.cache` (and similarly `@functools.lru_cache`) shouldn't be used
on methods because it caches `self`, keeping it alive
forever. `@cache_method` ignores `self` so won't keep `self` alive (assuming
no cycles with `self` in the parameters).

Footgun warning: This decorator completely ignores self's properties so only
use it when you know that self is frozen or won't change in a meaningful
way (such as the wrapped function being pure).
Ú_cache_method_ÚselfÚargsÚkwargsr   c                 óÔ   >• U(       a  [        S5      e[        U TS 5      =n(       d  0 n[        U TU5        UR                  U[        5      nU[        La  U$ T" U /UQ70 UD6nXSU'   U$ )Nz.cache_method does not accept keyword arguments)ÚAssertionErrorÚgetattrÚsetattrÚgetÚ_cache_sentinel)r   r   r   ÚcacheÚcached_valueÚvalueÚ
cache_namer
   s         €€ÚS/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/utils/_functools.pyÚwrapÚcache_method.<locals>.wrap    su   ø€ æÜ Ð!QÓRÐRÜ   z°4Ó8Ð8�Õ8ØˆEÜ�D˜* eÔ,à—y‘y ¤Ó7ˆØœÒ.ØÐÙ�$Ð(˜Ò( Ñ(ˆàˆd‰Øˆó    )Ú__name__Ú	functoolsÚwrapsr	   r   r   r   r   )r
   r   r   s   ` @r   Úcache_methodr"      sY   ù€ ð " A§J¡JÑ.€Jä‡_‚_�QÓð”2ð œbŸg™gð ´·±ð ¼r÷ ó ðð €Kr   )r    Úcollections.abcr   Útypingr   r   Útyping_extensionsr   r   r   r	   Úobjectr   r"   © r   r   Ú<module>r(      sr   ðÛ Ý $ß 'Ý 'ñ ˆtƒ_€ÙˆTƒ]€ÙˆTƒ]€ñ “(€ð!Ø�˜B ˜FÑ# RÐ'Ñ(ð!àˆk˜"˜b˜&Ñ! 2Ð%Ñ&õ!r   