Source code for langchain_huggingface.utils.import_utils
importimportlib.metadataimportimportlib.utilimportoperatorasopfromtypingimportUnionfrompackagingimportversionSTR_OPERATION_TO_FUNC={">":op.gt,">=":op.ge,"==":op.eq,"!=":op.ne,"<=":op.le,"<":op.lt,}_optimum_available=importlib.util.find_spec("optimum")isnotNone_optimum_version="N/A"if_optimum_available:try:_optimum_version=importlib.metadata.version("optimum")exceptimportlib.metadata.PackageNotFoundError:_optimum_available=False_optimum_intel_available=(_optimum_availableandimportlib.util.find_spec("optimum.intel")isnotNone)_optimum_intel_version="N/A"if_optimum_intel_available:try:_optimum_intel_version=importlib.metadata.version("optimum-intel")exceptimportlib.metadata.PackageNotFoundError:_optimum_intel_available=False_ipex_available=importlib.util.find_spec("intel_extension_for_pytorch")isnotNone_openvino_available=importlib.util.find_spec("openvino")isnotNone# This function was copied from: https://github.com/huggingface/accelerate/blob/874c4967d94badd24f893064cc3bef45f57cadf7/src/accelerate/utils/versions.py#L319
[docs]defcompare_versions(library_or_version:Union[str,version.Version],operation:str,requirement_version:str,)->bool:""" Compare a library version to some requirement using a given operation. Arguments: library_or_version (`str` or `packaging.version.Version`): A library name or a version to check. operation (`str`): A string representation of an operator, such as `">"` or `"<="`. requirement_version (`str`): The version to compare the library version against """ifoperationnotinSTR_OPERATION_TO_FUNC.keys():raiseValueError(f"`operation` must be one of {list(STR_OPERATION_TO_FUNC.keys())}"f", received {operation}")ifisinstance(library_or_version,str):library_or_version=version.parse(importlib.metadata.version(library_or_version))returnSTR_OPERATION_TO_FUNC[operation](library_or_version,version.parse(requirement_version))
[docs]defis_optimum_version(operation:str,reference_version:str)->bool:""" Compare the current Optimum version to a given reference with an operation. """ifnot_optimum_version:returnFalsereturncompare_versions(version.parse(_optimum_version),operation,reference_version)
[docs]defis_optimum_intel_version(operation:str,reference_version:str)->bool:""" Compare the current Optimum Intel version to a given reference with an operation. """ifnot_optimum_intel_version:returnFalsereturncompare_versions(version.parse(_optimum_intel_version),operation,reference_version)
IMPORT_ERROR="""requires the {0} library but it was not found in your environment.You can install it with pip: `pip install {0}`.Please note that you may need to restart your runtime after installation."""