o
    	Ti                     @   s  d dl 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	 d dl
mZ dZedZed	Zed
Zeddd\ZZedZedZedZedZedZedZedZedZedZdefddZdefddZdefddZefdedefdd Z defd!d"Z!defd#d$Z"defd%d&Z#defd'd(Z$defd)d*Z%defd+d,Z&defd-d.Z'defd/d0Z(defd1d2Z)G d3d4 d4eZ*G d5d6 d6e+Z,dS )7    N)chain)
ModuleType)Any)version)_is_package_availablez0.5.8	deepspeed	diffusersfastapiliger_kernelT)return_versionllm_blendermergekitpydanticrequestsunslothuvicornvllmvllm_ascendjoblibreturnc                   C      t S N)_deepspeed_available r   r   D/home/ubuntu/.local/lib/python3.10/site-packages/trl/import_utils.pyis_deepspeed_available+      r   c                   C   r   r   )_diffusers_availabler   r   r   r   is_diffusers_available/   r   r   c                   C   r   r   )_fastapi_availabler   r   r   r   is_fastapi_available3   r   r    min_versionc                 C   s   t ottt| kS r   )_is_liger_kernel_availabler   parse_liger_kernel_version)r!   r   r   r   is_liger_kernel_available7   s   r%   c                   C   r   r   )_llm_blender_availabler   r   r   r   is_llm_blender_available;   r   r'   c                   C   r   r   )_mergekit_availabler   r   r   r   is_mergekit_available?   r   r)   c                   C   r   r   )_pydantic_availabler   r   r   r   is_pydantic_availableC   r   r+   c                   C   r   r   )_requests_availabler   r   r   r   is_requests_availableG   r   r-   c                   C   r   r   )_unsloth_availabler   r   r   r   is_unsloth_availableK   r   r/   c                   C   r   r   )_uvicorn_availabler   r   r   r   is_uvicorn_availableO   r   r1   c                   C   r   r   )_vllm_availabler   r   r   r   is_vllm_availableS   r   r3   c                   C   r   r   )_vllm_ascend_availabler   r   r   r   is_vllm_ascend_availableW   r   r5   c                   C   r   r   )_joblib_availabler   r   r   r   is_joblib_available[   r   r7   c                       sV   e Zd ZdZd fdd	Z fddZdedefd	d
ZdefddZ	dd Z
  ZS )_LazyModulezu
    Module class that surfaces all objects but only performs associated imports when the objects are requested.
    Nc           	         s   t  | t| | _i | _| D ]\}}|D ]}|| j|< qqt| tt|	   | _
|| _|| _tj|g| _|d u rFi n|| _|| _|| _d S r   )super__init__setkeys_modules_class_to_moduleitemslistr   values__all____file____spec__ospathdirname__path___objects_name_import_structure)	selfnamemodule_fileimport_structuremodule_specextra_objectskeyrA   value	__class__r   r   r:   f   s   
z_LazyModule.__init__c                    s,   t   }| jD ]}||vr|| q|S r   )r9   __dir__rB   append)rL   resultattrrT   r   r   rV   w   s   


z_LazyModule.__dir__rM   r   c                 C   sz   || j v r
| j | S || jv r| |}n || j v r*| | j| }t||}ntd| j d| t| || |S )Nzmodule z has no attribute )	rI   r=   _get_moduler>   r<   getattrAttributeError__name__setattr)rL   rM   rS   moduler   r   r   __getattr__   s   


z_LazyModule.__getattr__module_namec              
   C   sL   z
t d| | jW S  ty% } ztd| j d| d| |d }~ww )N.zFailed to import z@ because of the following error (look up to see its traceback):
)	importlibimport_moduler]   	ExceptionRuntimeError)rL   ra   er   r   r   rZ      s   z_LazyModule._get_modulec                 C   s   | j | j| j| jffS r   )rU   rJ   rC   rK   )rL   r   r   r   
__reduce__   s   z_LazyModule.__reduce__)NN)r]   
__module____qualname____doc__r:   rV   strr   r`   rZ   rh   __classcell__r   r   rT   r   r8   _   s    		r8   c                   @   s   e Zd ZdZdS )OptionalDependencyNotAvailablezPInternally used error class for signalling an optional dependency was not found.N)r]   ri   rj   rk   r   r   r   r   rn      s    rn   )-rc   rE   	itertoolsr   typesr   typingr   	packagingr   transformers.utils.import_utilsr   LIGER_KERNEL_MIN_VERSIONr   r   r   r"   r$   r&   r(   r*   r,   r.   r0   r2   r4   r6   boolr   r   r    rl   r%   r'   r)   r+   r-   r/   r1   r3   r5   r7   r8   BaseExceptionrn   r   r   r   r   <module>   sH   <