K idZddlZddlZdZdZdZerdZdZej dejZdZ ddddddidfd Z y) z4Tools to assist importing optional external modules.Nchddl}|jdd}|dvr t|Std|z)Nr SYMPY_DEBUGFalse)Truerz&unrecognized value for SYMPY_DEBUG: %s)osgetenveval RuntimeError)r debug_strs `/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sympy/external/importtools.py __sympy_debugr sB -1I%%IC$%& &Tz(\d+ | [a-z]+ | \.)cg}tj|D](}|s|dk7s t|}|j |*t |S#t$rY)wxYw)N.) _component_resplitint ValueErrorappendtuple)vstring componentsxs r version_tupler!skJ   )! c F   a !    s A AA __version__c ttn|xsd}ttn|xsd}ddl} |rRtj|kr?|r<| j d|ddj tt|dtd y t|fi|} |jd d } | D])} | d k(s | jdk(st|dz| z+ |rt| |}|||}t!|t!|kru|rrt#|tr|}nAt#|t$t&fr dj tt|}n t|}| j |d|dtd y| S#t$r |r| j d|ztd Yy|$r.} |r"| j |dt| dd Yd} ~ yd} ~ wwxYw)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,)) NTFrz!Python version is too old to use z (rz or newer required)) stacklevelfromlistr collections matplotlibz%s module is not installedz module could not be used ()z version is too old to use ()WARN_OLD_VERSIONWARN_NOT_INSTALLEDwarningssys version_infowarnjoinmapstr UserWarning __import__get__name__ ImportErrorreprgetattrr isinstancerlist)modulemin_module_versionmin_python_versionwarn_not_installedwarn_old_versionmodule_version_attrmodule_version_attr_call_args import_kwargscatchr&mod from_listsubmode modversionverstrs r import_modulerE0s^-=,H(  %0B0N,  (5   0 0 S2D)E FH A/ 1=1 "%%j"5  2F&3<<<+G6C<&01 2S"56 ( 4#%BCJ  $}5G'H H0#6/F 2UDMB XXc#/A&BCF!!34F 06@A/  JA   MM6?   "   MM6(E.'E.7E..&GG$GG) __doc__r'rer%r$r compileVERBOSErrrErrr rJsn:  &? 12::>  .2d$)Kr