§
    OŠtj  ã                   ó   — 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¦  «                             ¦   «         Z edd¦  «        Ze                     ¦   «         dk    rd
Zn'	  ee¦  «        Zn# e$ r  eddez  z   ¦  «        ‚w xY wedk    reZn2e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d
S )z Caching facility for SymPy é    )Úimport_module)ÚCallablec                   ó   — e Zd ZdZd„ Zd„ ZdS )Ú_cachez List of cached functions c                 óÞ   — | D ]i}|j         }|}t          |d¦  «        r<t          |d¦  «        r|                     ¦   «         }n|j        }t          |d¦  «        °<d}t	          ||¦  «         ŒjdS )zprint cache infoÚ__wrapped__Ú
cache_infoN)Ú__name__Úhasattrr	   r   Úprint)ÚselfÚitemÚnameÚmyfuncÚinfos        úN/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/core/cache.pyÚprint_cachez_cache.print_cache   s—   € ð ð 	ð 	ˆDØ”=ˆDØˆFÝ˜& -Ñ0Ô0ð Ý˜6 <Ñ0Ô0ð 0Ø!×,Ò,Ñ.Ô.�DØà#Ô/�Fõ ˜& -Ñ0Ô0ð ð �å�$˜ÑÔÐÐð	ð 	ó    c                 ó¬   — | D ]P}|}t          |d¦  «        r<t          |d¦  «        r|                     ¦   «          n|j        }t          |d¦  «        °<ŒQdS )zclear cache contentr   Úcache_clearN)r   r   r   )r   r   r   s      r   Úclear_cachez_cache.clear_cache   sv   € àð 	0ð 	0ˆDØˆFÝ˜& -Ñ0Ô0ð 0Ý˜6 =Ñ1Ô1ð 0Ø×&Ò&Ñ(Ô(Ð(Øà#Ô/�Fõ ˜& -Ñ0Ô0ð 0øð	0ð 	0r   N)r
   Ú
__module__Ú__qualname__Ú__doc__r   r   © r   r   r   r      s8   € € € € € Ø$Ð$ðð ð ð"	0ð 	0ð 	0ð 	0ð 	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                               |¦  «         |S )NT)Útypedc                  óª   •— 	  ‰| i |¤Ž}nG# t           $ r:}|j        r |j        d                              d¦  «        s‚  ‰| i |¤Ž}Y d }~nd }~ww xY w|S )Nr   zunhashable type:)Ú	TypeErrorÚargsÚ
startswith)r#   ÚkwargsÚretvalÚeÚcfuncÚfuncs       €€r   Úwrapperz0__cacheit.<locals>.func_wrapper.<locals>.wrapperE   s‹   ø€ ð/Ø˜ Ð/¨Ð/Ð/��øÝð /ð /ð /Ø”vð  Q¤V¨A¤Y×%9Ò%9Ð:LÑ%MÔ%Mð ØØ˜˜tÐ. vÐ.Ð.������øøøøð/øøøð ˆMs   ƒ Œ
A–0AÁA)r   r   r	   r   ÚCACHEÚappend©r)   r*   r(   Úmaxsizes   ` @€r   Úfunc_wrapperz__cacheit.<locals>.func_wrapperB   s~   øøø€ Ø.•	˜'¨Ð.Ñ.Ô.¨tÑ4Ô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                 ór   •‡ ‡—  t          ‰¦  «        ‰ ¦  «        Št          ‰ ¦  «        ˆˆ fd„¦   «         }|S )Nc                  óŽ   •—  ‰| i |¤Ž} ‰| i |¤Ž}t          |¦  «        t          |¦  «        f ||k    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   se   ø€ ð ��tÐ'˜wÐ'Ð'ˆBØ�˜Ð( Ð(Ð(ˆBõ �‰HŒH•d˜2‘h”hÐÐð �RŠxˆxÝ"Ð#EÑFÔFÐFØˆIr   )r1   r   r-   s   ` @€r   r/   z%__cacheit_debug.<locals>.func_wrapper_   sQ   øøø€ Ø"•	˜'Ñ"Ô" 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&   € ØÐÐÐÐÐØˆ6�#�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   ‡ ‡‡— d‰ j         z   Št          ¦   «         Šˆˆˆ fd„}t          |¦  «        S )z"Decorator to cache property methodÚ__c                 ój   •— t          | ‰‰¦  «        }|‰u r ‰| ¦  «        }t          | ‰|¦  «         |S r3   )ÚgetattrÚsetattr)r   ÚvalÚ_cached_property_sentinelÚattrnamer)   s     €€€r   Úpropfuncz!cached_property.<locals>.propfuncŸ   sE   ø€ Ý�d˜HÐ&?Ñ@Ô@ˆØÐ+Ð+Ð+Ø�$�t‘*”*ˆCÝ�D˜( CÑ(Ô(Ð(Øˆ
r   )r
   ÚobjectÚproperty)r)   rS   rQ   rR   s   ` @@r   Úcached_propertyrV   ›   sN   øøø€ à�d”mÑ#€HÝ &¡¤Ððð ð ð ð ð ð õ �HÑÔÐr   Úmoduler   Úreturnc                 ó†   ‡ ‡‡‡— 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                  óF   •— ‰ €t          t          ‰¦  «        ‰¦  «        Š ‰ S r3   ©rN   r   )r)   rW   r   s   €€€r   Ú_get_functionz$lazy_function.<locals>._get_function°   s$   ø€ àˆ<Ý�=¨Ñ0Ô0°$Ñ7Ô7ˆDØˆr   c                   ó.   •— e Zd Zeˆ ˆˆfd„¦   «         ZdS )ú'lazy_function.<locals>.LazyFunctionMetac                 óX   •—  ‰¦   «         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__¸   óD   ø€ à%˜™œÔ/ˆIØÐf°´Ô0GÐfÐfÐV\ÐfÐfÐ_cÐfÐfÐfÑfˆIØÐr   N)r
   r   r   rU   r   )r\   rW   r   s   €€€r   ÚLazyFunctionMetar^   ·   sB   ø€ € € € € Ø	ð	ð 	ð 	ð 	ð 	ð 	ñ 
Œð	ð 	ð 	r   rh   c                   óZ   •‡ — e Zd Zˆˆˆfd„Zeˆˆˆfd„¦   «         Zˆfd„Zˆ ˆˆfd„Zˆ xZS )ú#lazy_function.<locals>.LazyFunctionc                 óR   •— ‰€t          t          ‰¦  «        ‰¦  «        Š ‰|i |¤ŽS r3   r[   )r   r#   r%   r)   rW   r   s      €€€r   Ú__call__z,lazy_function.<locals>.LazyFunction.__call__¿   s6   ø€ ð ˆ|Ý�}¨VÑ4Ô4°dÑ;Ô;�Ø�4˜Ð( Ð(Ð(Ð(r   c                 óX   •—  ‰¦   «         j         }|d| j        j        › d‰› d‰› d�z  }|S r`   rc   re   s     €€€r   r   z+lazy_function.<locals>.LazyFunction.__doc__Æ   rg   r   c                 ó<   •—  ‰¦   «                               ¦   «         S r3   )Ú__str__)r   r\   s    €r   ro   z+lazy_function.<locals>.LazyFunction.__str__Ì   s   ø€ Ø �=‘?”?×*Ò*Ñ,Ô,Ð,r   c           	      óH   •— 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__Ï   s:   ø€ Øa�yÔ)ÐaÐa½¸4¹¼ÐaÐaÐaÐQWÐaÐaÐZ^ÐaÐaÐaÐar   )	r
   r   r   rl   rU   r   ro   rt   Ú__classcell__)rd   r\   r)   rW   r   s   @€€€€r   ÚLazyFunctionrj   ¾   s¹   øø€ € € € € ð	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 
ð	ð 	ð 	ð 	ð 	ð 	ñ 
Œð	ð
	-ð 	-ð 	-ð 	-ð 	-ð	bð 	bð 	bð 	bð 	bð 	bð 	bð 	bð 	bð 	bð 	br   rv   )Ú	metaclass)Útype)rW   r   rh   rv   r\   r)   s   ``  @@r   Úlazy_functionry   ¨   sÓ   øøøø€ ð €Dðð ð ð ð ð ð ðð ð ð ð ð ð ð ð �4ñ ô ð ðbð bð bð bð bð bð bð bð bð bÐ!1ð bñ bô bð 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…      s&  ðØ "Ð "Ø #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð ð0ð 0ð 0ð 0ð 0ˆTñ 0ô 0ð 0ðB 	ˆ‰Œ€àÔ€ØÔ€à &Ð &Ð &Ð &Ð &Ð &Ð &Ð &ð(ð (ð (ðXð ð ðð ð ð< ð  ð  ð  ð
 ˆGÐ% uÑ-Ô-×3Ò3Ñ5Ô5€	ð
 €gÐ  &Ñ)Ô)€Ø‡9‚9�;„;�&ÒÐØÐÐð*Ø˜3˜s™8œ8ÐÐøØð *ð *ð *ØˆlØ@ØÐ(Ñ(ñ)ñ*ô *ð 	*ð*øøøð
 �ÒÐØ€G€GØ�%ÒÐØˆiÐ(Ñ)Ô)€G€GØ�'ÒÐØˆoÐ.Ñ/Ô/€G€Gà
ˆ,Ø4°yÑ@ñBô Bð Bð
ð 
ð 
ð*˜3ð * sð *¨xð *ð *ð *ð *ð *ð *s   ÂB ÂB3