ó
    ‰*£h÷  ã                   ó    • S r SSKrSSKrSrSrS r\" 5       (       a  SrSr\R                  " S\R                  5      rS r	SSSSSS0 S4S	 jr
g)
z4Tools to assist importing optional external modules.é    Nc                  ól   • SS K n U R                  SS5      nUS;   a  [        U5      $ [        SU-  5      e)Nr   ÚSYMPY_DEBUGÚFalse)ÚTruer   z&unrecognized value for SYMPY_DEBUG: %s)ÚosÚgetenvÚevalÚRuntimeError)r   Ú	debug_strs     ÚW/home/mande/repo/quber/.venv/lib/python3.13/site-packages/sympy/external/importtools.pyÚ__sympy_debugr      sB   € ó Ø—	‘	˜-¨Ó1€IØÐ%Ó%Ü�I‹ÐäÐCØ$ñ%ó &ð 	&ó    Tz(\d+ | [a-z]+ | \.)c                 óÐ   • / n[         R                  U 5       H1  nU(       d  M  US:w  d  M   [        U5      nUR	                  U5        M3     [        U5      $ ! [         a     N,f = f)NÚ.)Ú_component_reÚsplitÚintÚ
ValueErrorÚappendÚtuple)ÚvstringÚ
componentsÚxs      r   Úversion_tupler   !   sh   € ð €JÜ× Ñ  Ö)ˆßˆ1��c•ðÜ˜“F�ð ×Ñ˜aÖ ñ *ô �ÓÐøô ó Ùðús   ­AÁ
A%Á$A%Ú__version__© c	                 ó  • [         b  [         O
U=(       d    Sn[        b  [        O
U=(       d    SnSSKn	U(       aW  [        R                  U:  aC  U(       a;  U	R                  SU < SSR                  [        [        U5      5      < S3[        S	S
9  g [        U 40 UD6n
UR                  SS5      nU H.  nUS:X  d  M  U
R                  S:X  d  M  [        U S-   U-   5        M0     U(       a®  [        X¥5      nUb  U" U6 n[!        U5      [!        U5      :  aƒ  U(       a{  [#        U[        5      (       a  UnOF[#        U[$        [&        45      (       a   SR                  [        [        U5      5      nO[        U5      nU	R                  U < SU< S3[        S	S
9  gU
$ ! [         a"    U(       a  U	R                  SU -  [        S	S
9   gU a2  nU(       a!  U	R                  U < S[        U5      < S3S	S
9   SnAgSnAff = f)aÔ  
Import and return a module if it is installed.

If the module is not installed, it returns None.

A minimum version for the module can be given as the keyword argument
min_module_version.  This should be comparable against the module version.
By default, module.__version__ is used to get the module version.  To
override this, set the module_version_attr keyword argument.  If the
attribute of the module to get the version should be called (e.g.,
module.version()), then set module_version_attr_call_args to the args such
that module.module_version_attr(*module_version_attr_call_args) returns the
module's version.

If the module version is less than min_module_version using the Python <
comparison, None will be returned, even if the module is installed. You can
use this to keep from importing an incompatible older version of a module.

You can also specify a minimum Python version by using the
min_python_version keyword argument.  This should be comparable against
sys.version_info.

If the keyword argument warn_not_installed is set to True, the function will
emit a UserWarning when the module is not installed.

If the keyword argument warn_old_version is set to True, the function will
emit a UserWarning when the library is installed, but cannot be imported
because of the min_module_version or min_python_version options.

Note that because of the way warnings are handled, a warning will be
emitted for each module only once.  You can change the default warning
behavior by overriding the values of WARN_NOT_INSTALLED and WARN_OLD_VERSION
in sympy.external.importtools.  By default, WARN_NOT_INSTALLED is False and
WARN_OLD_VERSION is True.

This function uses __import__() to import the module.  To pass additional
options to __import__(), use the import_kwargs keyword argument.  For
example, to import a submodule A.B, you must pass a nonempty fromlist option
to __import__.  See the docstring of __import__().

This catches ImportError to determine if the module is not installed.  To
catch additional errors, pass them as a tuple to the catch keyword
argument.

Examples
========

>>> from sympy.external import import_module

>>> numpy = import_module('numpy')

>>> numpy = import_module('numpy', min_python_version=(2, 7),
... warn_old_version=False)

>>> numpy = import_module('numpy', min_module_version='1.5',
... warn_old_version=False) # numpy.__version__ is a string

>>> # gmpy does not have __version__, but it does have gmpy.version()

>>> gmpy = import_module('gmpy', min_module_version='1.14',
... module_version_attr='version', module_version_attr_call_args=(),
... warn_old_version=False)

>>> # To import a submodule, you must pass a nonempty fromlist to
>>> # __import__().  The values do not matter.
>>> p3 = import_module('mpl_toolkits.mplot3d',
... import_kwargs={'fromlist':['something']})

>>> # matplotlib.pyplot can raise RuntimeError when the display cannot be opened
>>> matplotlib = import_module('matplotlib',
... import_kwargs={'fromlist':['pyplot']}, catch=(RuntimeError,))

NTFr   z!Python version is too old to use z (r   z or newer required)é   )Ú
stacklevelÚfromlistr   ÚcollectionsÚ
matplotlibz%s module is not installedz module could not be used (Ú)z version is too old to use ()ÚWARN_OLD_VERSIONÚWARN_NOT_INSTALLEDÚwarningsÚsysÚversion_infoÚwarnÚjoinÚmapÚstrÚUserWarningÚ
__import__ÚgetÚ__name__ÚImportErrorÚreprÚgetattrr   Ú
isinstancer   Úlist)ÚmoduleÚmin_module_versionÚmin_python_versionÚwarn_not_installedÚwarn_old_versionÚmodule_version_attrÚmodule_version_attr_call_argsÚimport_kwargsÚcatchr&   ÚmodÚ	from_listÚsubmodÚeÚ
modversionÚverstrs                   r   Úimport_modulerE   0   sì  € ô^ -=Ñ,HÕ(Ø×% ð ä0BÑ0NÕ,Ø×( 5ð ó ö Ü×ÑÐ0Ó0ÞØ—’ã §¡¬¬SÐ2DÓ)EÖ FðHô  ¨Að ñ /ð ðÜ˜Ñ1 =Ñ1ˆð "×%Ñ% j°"Ó5ˆ	ÛˆFØ˜Õ&¨3¯<©<¸<Õ+GÜ˜6 C™<¨&Ñ0Ö1ñ  ö Ü˜SÓ6ˆ
Ø(Ñ4Ù#Ð%BÐCˆJÜ˜Ó$¤}Ð5GÓ'HÓHÞäÐ0´#×6Ñ6Ø/‘FÜÐ 2´U¼D°M×BÑBØ ŸX™X¤c¬#Ð/AÓ&BÓC‘Fô !Ð!3Ó4�FØ—‘Û06»ð@ä¨Að ñ /ð à€JøôA ó ÞØ�M‰MÐ6¸Ñ?ÄØ ð ñ "áØó ÞØ�M‰MÛ6<¼dÀ1¾gÐFØð ñ ô 	ûðús*   Â'F Â?F ÃF Æ)G?ÇG?Ç(G:Ç:G?)Ú__doc__r'   Úrer%   r$   r   ÚcompileÚVERBOSEr   r   rE   r   r   r   Ú<module>rJ      sn   ðÙ :ã 
Û 	ð Ð ØÐ ò
&ñ ‡?�?ØÐØÐð —
’
Ð1°2·:±:Ó>€òð .2ÀdØ°$Ø)ÈØ õKr   