o
    oi                  
   @   sr  U d Z ddlZddlmZ ddlmZ ddlmZ ddlm	Z	m
Z
 ddlmZ ddlmZmZ e d	ed
efddZe ded
efddZe dede	ded
e
e fddZedejdZe
e ed< edejdZe
e ed< edejdZe
e ed< edejdZe
e ed< edejdZe
e ed< ed Zeed!< ed"Zeed#< ed$Zeed%< ed&Z eed'< ed(Z!eed)< ed*Z"eed+< ed,Z#eed-< ed.Z$eed/< ed0Z%eed1< ed0ejd2Z&e
e ed3< ed4Z'eed5< ed6Z(eed7< ed8Z)eed9< ed:Z*eed;< ed<Z+eed=< ed>Z,eed?< ed@Z-eedA< edBZ.eedC< edDZ/eedE< dS )FzImport utilities.    N)	lru_cache)import_module)	find_spec)CallableOptional)Version)DistributionNotFoundget_distributionpackage_namereturnc              	   C   s:   zt | duW S  ty   Y dS  ttfy   Y dS w )zCheck if a package is available in your environment.

    >>> _package_available('os')
    True
    >>> _package_available('bla')
    False
    NF)r   AttributeErrorImportErrorModuleNotFoundError)r
    r   \/home/ubuntu/SoloSpeech/.venv/lib/python3.10/site-packages/torchmetrics/utilities/imports.py_package_available   s   	r   module_pathc                 C   sp   |  d}t|d sdS zt|d }W n
 ty   Y dS w |dd D ]}t||s0 dS t||}q&dS )zCheck if a module path is available in your environment.

    >>> _module_available('os')
    True
    >>> _module_available('os.bla')
    False
    >>> _module_available('bla.bla')
    False
    .r   F   NT)splitr   r   r   hasattrgetattr)r   module_namesmodulenamer   r   r   _module_available,   s   

r   packageopversionc              	   C   s   t | sdS z	t| }|j}W n ttfy   Y dS  ttfy*   t| j}Y nw zt	|}W n
 t
y;   Y dS w ||t	|S )zCompare package version with some requirements.

    >>> import operator
    >>> _compare_version("torch", operator.ge, "0.1")
    True
    >>> _compare_version("any_module", operator.ge, "0.0")  # is None
    NT)r   r   __version__r   r   r   r   r	   r   r   	TypeError)r   r   r   pkgpkg_versionr   r   r   _compare_versionE   s    	
r#   torchz
1.12.0.dev_TORCH_LOWER_1_12_DEVz1.9.0_TORCH_GREATER_EQUAL_1_9z1.10.0_TORCH_GREATER_EQUAL_1_10z1.11.0_TORCH_GREATER_EQUAL_1_11z1.12.0_TORCH_GREATER_EQUAL_1_12jiwer_JIWER_AVAILABLEnltk_NLTK_AVAILABLErouge_score_ROUGE_SCORE_AVAILABLE
bert_score_BERTSCORE_AVAILABLEscipy_SCIPY_AVAILABLEtorch_fidelity_TORCH_FIDELITY_AVAILABLElpips_LPIPS_AVAILABLEpycocotools_PYCOCOTOOLS_AVAILABLEtorchvision_TORCHVISION_AVAILABLEz0.8.0_TORCHVISION_GREATER_EQUAL_0_8tqdm_TQDM_AVAILABLEtransformers_TRANSFORMERS_AVAILABLEpesq_PESQ_AVAILABLE	sacrebleu_SACREBLEU_AVAILABLEregex_REGEX_AVAILABLEpystoi_PYSTOI_AVAILABLEfast_bss_eval_FAST_BSS_EVAL_AVAILABLEmultiprocessing_MULTIPROCESSING_AVAILABLE	torch_xla_XLA_AVAILABLE)0__doc__operator	functoolsr   	importlibr   importlib.utilr   typingr   r   packaging.versionr   pkg_resourcesr   r	   strboolr   r   r#   ltr%   __annotations__ger&   r'   r(   r)   r+   r-   r/   r1   r3   r5   r7   r9   r;   r<   r>   r@   rB   rD   rF   rH   rJ   rL   rN   r   r   r   r   <module>   sL    