Ë
    7^(h  ã                   óÂ  — d Z ddlmZ ddlmZ  G d„ de«      Z e«       Zej                  Zej                  Z	ddl
mZmZ d„ Zd„ Zd	„ Zdd„Z edd«      j#                  «       Z edd«      Zej#                  «       dk(  rd
Zn		  ee«      Zedk(  reZn'edk(  r	 ee«      Znedk(  r	 ee«      Zn edez  «      ‚d„ Zdededefd„Zy
# e$ r  eddez  z   «      ‚w xY w)z Caching facility for SymPy é    )Úimport_module)ÚCallablec                   ó   — e Zd ZdZd„ Zd„ Zy)Ú_cachez List of cached functions c                 óÎ   — | D ]`  }|j                   }|}t        |d«      r6t        |d«      r|j                  «       }n|j                  }t        |d«      rŒ6d}t	        ||«       Œb y)zprint cache infoÚ__wrapped__Ú
cache_infoN)Ú__name__Úhasattrr	   r   Úprint)ÚselfÚitemÚnameÚmyfuncÚinfos        úN/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/core/cache.pyÚprint_cachez_cache.print_cache   sn   € ð ò 	ˆDØ—=‘=ˆDØˆFÜ˜& -Ô0Ü˜6 <Ô0Ø!×,Ñ,Ó.�DØà#×/Ñ/�Fô ˜& -Õ0ð �ä�$˜Õñ	ó    c                 óœ   — | D ]G  }|}t        |d«      sŒt        |d«      r|j                  «        Œ/|j                  }t        |d«      rŒ6ŒI y)zclear cache contentr   Úcache_clearN)r   r   r   )r   r   r   s      r   Úclear_cachez_cache.clear_cache   sP   € àò 	0ˆDØˆFÜ˜& -Õ0Ü˜6 =Ô1Ø×&Ñ&Ô(Øà#×/Ñ/�Fô ˜& -Ö0ñ	0r   N)r
   Ú
__module__Ú__qualname__Ú__doc__r   r   © r   r   r   r      s   „ Ù$òó"	0r   r   )Ú	lru_cacheÚwrapsc                 ó   ‡ — ˆ fd„}|S )aù  caching decorator.

        important: the result of cached function must be *immutable*


        Examples
        ========

        >>> from sympy import cacheit
        >>> @cacheit
        ... def f(a, b):
        ...    return a+b

        >>> @cacheit
        ... def f(a, b): # noqa: F811
        ...    return [a, b] # <-- WRONG, returns mutable object

        to force cacheit to check returned results mutability and consistency,
        set environment variable SYMPY_USE_CACHE to 'debug'
    c                 óÈ   •‡ ‡—  t        ‰d¬«      ‰ «      Št        ‰ «      ˆˆ fd„«       }‰j                  |_        ‰j                  |_        t        j                  |«       |S )NT)Útypedc                  ó®   •— 	  ‰| i |¤Ž}|S # t         $ r>}|j                  r|j                  d   j                  d«      s‚  ‰| i |¤Ž}Y d }~|S d }~ww xY w)Nr   zunhashable type:)Ú	TypeErrorÚargsÚ
startswith)r#   ÚkwargsÚretvalÚeÚcfuncÚfuncs       €€r   Úwrapperz0__cacheit.<locals>.func_wrapper.<locals>.wrapperE   sd   ø€ ð/Ù Ð/¨Ñ/�ð
 ˆMøô	 ò /Ø—v’v Q§V¡V¨A¡Y×%9Ñ%9Ð:LÔ%MØÙ˜tÐ. vÑ.”ØˆMûð	/ús   ƒ �	A–3AÁA)r   r   r	   r   ÚCACHEÚappend©r)   r*   r(   Úmaxsizes   ` @€r   Úfunc_wrapperz__cacheit.<locals>.func_wrapperB   s[   ú€ Ø.”	˜'¨Ô.¨tÓ4ˆä	ˆt‹ô	ó 
ð	ð #×-Ñ-ˆÔØ#×/Ñ/ˆÔä�‰�WÔØˆr   r   ©r.   r/   s   ` r   Ú	__cacheitr1   -   s   ø€ ô*ð& Ðr   c                 ó   — | S ©Nr   )r)   s    r   Ú__cacheit_nocacher4   Y   s   € Ø€Kr   c                 ó   ‡ — ˆ fd„}|S )z)cacheit + code to check cache consistencyc                 óV   •‡ ‡—  t        ‰«      ‰ «      Št        ‰ «      ˆˆ fd„«       }|S )Nc                  ót   •—  ‰| i |¤Ž} ‰| i |¤Ž}t        |«      t        |«      f ||k7  rt        d«      ‚|S )Nz Returned values are not the same)ÚhashÚRuntimeError)r#   Úkw_argsÚr1Úr2r(   r)   s       €€r   r*   z6__cacheit_debug.<locals>.func_wrapper.<locals>.wrapperb   sO   ø€ ñ �tÐ'˜wÑ'ˆBÙ˜Ð( Ñ(ˆBô �‹H”d˜2“hÑð �RŠxÜ"Ð#EÓFÐFØˆIr   )r1   r   r-   s   ` @€r   r/   z%__cacheit_debug.<locals>.func_wrapper_   s1   ú€ Ø"”	˜'Ó" 4Ó(ˆä	ˆt‹ô	ó 
ð	ð( ˆr   r   r0   s   ` r   Ú__cacheit_debugr=   ]   s   ø€ ôð2 Ðr   Nc                 ó    — ddl m}  || |«      S )Nr   )Úgetenv)Úosr?   )ÚkeyÚdefaultr?   s      r   Ú_getenvrC   {   s   € ÝÙ�#�wÓÐr   ÚSYMPY_USE_CACHEÚyesÚSYMPY_CACHE_SIZEÚ1000Únonez2SYMPY_CACHE_SIZE must be a valid integer or None. zGot: %sÚnoÚdebugz*unrecognized value for SYMPY_USE_CACHE: %sc                 ó^   ‡ ‡‡— d‰ j                   z   Št        «       Šˆˆˆ fd„}t        |«      S )z"Decorator to cache property methodÚ__c                 óT   •— t        | ‰‰«      }|‰u r ‰| «      }t        | ‰|«       |S r3   )ÚgetattrÚsetattr)r   ÚvalÚ_cached_property_sentinelÚattrnamer)   s     €€€r   Úpropfuncz!cached_property.<locals>.propfuncŸ   s5   ø€ Ü�d˜HÐ&?Ó@ˆØÐ+Ñ+Ù�t“*ˆCÜ�D˜( CÔ(Øˆ
r   )r
   ÚobjectÚproperty)r)   rS   rQ   rR   s   ` @@r   Úcached_propertyrV   ›   s+   ú€ à�d—m‘mÑ#€HÜ &£Ðöô �HÓÐr   Úmoduler   Úreturnc                 ór   ‡ ‡‡‡— dŠˆˆ ˆfd„Š G ˆˆ ˆfd„dt         «      } G ˆˆˆ ˆfd„d|¬«      } |«       S )z‰Create a lazy proxy for a function in a module.

    The module containing the function is not imported until the function is used.

    Nc                  ó6   •— ‰ €t        t        ‰«      ‰«      Š ‰ S r3   ©rN   r   )r)   rW   r   s   €€€r   Ú_get_functionz$lazy_function.<locals>._get_function°   s   ø€ àˆ<Üœ=¨Ó0°$Ó7ˆDØˆr   c                   ó&   •— e Zd Zeˆ ˆˆfd„«       Zy)ú'lazy_function.<locals>.LazyFunctionMetac                 óp   •—  ‰«       j                   }|d| j                  j                  › d‰› d‰› d�z  }|S ©Nz

Note: this is a z wrapper of 'ú.ú'©r   Ú	__class__r
   ©r   Ú	docstringr\   rW   r   s     €€€r   r   z/lazy_function.<locals>.LazyFunctionMeta.__doc__¸   óG   ø€ á%›×/Ñ/ˆIØÐ/°·±×0GÑ0GÐ/HÈÐV\ÐU]Ð]^Ð_cÐ^dÐdeÐfÑfˆIØÐr   N)r
   r   r   rU   r   )r\   rW   r   s   €€€r   ÚLazyFunctionMetar^   ·   s   ø„ Ø	õ	ó 
ñ	r   rh   c                   óT   •‡ — e Zd Zˆˆˆfd„Zeˆˆˆfd„«       Zˆfd„Zˆ ˆˆfd„Zˆ xZS )ú#lazy_function.<locals>.LazyFunctionc                 óB   •— ‰€t        t        ‰«      ‰«      Š ‰|i |¤ŽS r3   r[   )r   r#   r%   r)   rW   r   s      €€€r   Ú__call__z,lazy_function.<locals>.LazyFunction.__call__¿   s+   ø€ ð ˆ|Üœ}¨VÓ4°dÓ;�Ù˜Ð( Ñ(Ð(r   c                 óp   •—  ‰«       j                   }|d| j                  j                  › d‰› d‰› d�z  }|S r`   rc   re   s     €€€r   r   z+lazy_function.<locals>.LazyFunction.__doc__Æ   rg   r   c                 ó.   •—  ‰«       j                  «       S r3   )Ú__str__)r   r\   s    €r   ro   z+lazy_function.<locals>.LazyFunction.__str__Ì   s   ø€ Ù “?×*Ñ*Ó,Ð,r   c           	      óJ   •— d‰j                   › dt        | «      d›d‰› d‰› d�	S )Nú<z object at 0xÚxz>: wrapping 'ra   rb   )r
   Úid)r   rd   rW   r   s    €€€r   Ú__repr__z,lazy_function.<locals>.LazyFunction.__repr__Ï   s7   ø€ Ø�y×)Ñ)Ð*¨-¼¸4»À°|À=ÐQWÐPXÐXYÐZ^ÐY_Ð_`ÐaÐar   )	r
   r   r   rl   rU   r   ro   rt   Ú__classcell__)rd   r\   r)   rW   r   s   @€€€€r   ÚLazyFunctionrj   ¾   s-   ù„ ö	)ð 
õ	ó 
ð	ô
	-÷	bò 	br   rv   )Ú	metaclass)Útype)rW   r   rh   rv   r\   r)   s   ``  @@r   Úlazy_functionry   ¨   s?   û€ ð €Dö÷ð œ4ô ÷bñ bÐ!1õ bñ( ‹>Ðr   r3   )r   Ú	importlibr   Útypingr   Úlistr   r+   r   r   Ú	functoolsr   r   r1   r4   r=   rC   ÚlowerÚ	USE_CACHEÚscsrF   ÚintÚ
ValueErrorr9   ÚcacheitrV   Ústrry   r   r   r   ú<module>r…      s6  ðÙ "Ý #Ý ô0ˆTô 0ñB 	‹€à×Ñ€Ø×Ñ€ç &ò(òXòó< ñ
 Ð% uÓ-×3Ñ3Ó5€	ñ
 Ð  &Ó)€Ø‡9�9ƒ;�&ÒØÑð*Ù˜s›8Ðð �ÒØ�GØ�%ÒÙÐ(Ó)�GØ�'ÒÙÐ.Ó/�Gá
Ø4°yÑ@óBð Bò
ð*˜3ð * sð *¨xô *øð; ò *ÙØ@ØÐ(Ñ(ñ)ó*ð 	*ð*ús   ÂC
 Ã
C