+
    i                         R t ^ RIt^ RItRtRtR t]! 4       '       d   RtRt]P                  ! R]P                  4      tR t	RRRRRR/ R3R lt
R# )	z4Tools to assist importing optional external modules.Nc                  v    ^ RI p V P                  RR4      pVR9   d   \        V4      # \        RV,          4      h)    NSYMPY_DEBUGFalsez&unrecognized value for SYMPY_DEBUG: %s)Truer   )osgetenvevalRuntimeError)r   	debug_strs     z/Users/tonyclaw/.openclaw/workspace/skills/math-calculator/venv/lib/python3.14/site-packages/sympy/external/importtools.py__sympy_debugr      sB     		-1I%%IC$% & 	&    Tz(\d+ | [a-z]+ | \.)c                     . p\         P                  V 4       F3  pV'       g   K  VR 8w  g   K   \        V4      pVP	                  V4       K5  	  \        V4      #   \         d     L-i ; i).)_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	                d   \         e   \         MT;'       g    Rp\        e   \        MT;'       g    Rp^ RIp	V'       d^   \        P                  V8  dI   V'       d?   V	P                  RV : RRP                  \        \        V4      4      : R2\        ^R7       R#  \        V 3/ VB p
VP                  R	R4      pV F8  pVR
8X  g   K  V
P                  R8X  g   K  \        V R,           V,           4       K:  	  T'       d   \        Y4      pTe   T! T!  p\!        T4      \!        T4      8  d   T'       d   \#        T\        4      '       d   TpMG\#        T\$        \&        34      '       d!   RP                  \        \        T4      4      pM\        T4      pT	P                  T : RT: R2\        ^R7       R# T
#   \         d,    T'       d    T	P                  RT ,          \        ^R7        R# T d8   pT'       d%   T	P                  T : R\        T4      : R2^R7        Rp?R# Rp?ii ; i)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,))

NTFz!Python version is too old to use z (r   z or newer required))
stacklevelfromlist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_modulerD   0   s   ^ -=,H(%% 0B0N,((5   00S2D)E FH  A  / 1=1 "%%j"5	F&3<<<+G6C<&01   S6
(4#%BCJ$}5G'HH0#66/F 2UDMBB XXc#/A&BCF !!34F06@A  / JA  MM6?   " MM6<d1gF   	s6   'F= F= F= =H/H/2H/7H/8,H**H/r"   )__doc__r&   rer$   r#   r   compileVERBOSEr   r   rD   r"   r   r   <module>rI      sn    : 
 	   
& ?? 

12::> .2d$)Kr   