
    bi                        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      \  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ZdefdZdefdZefdedefdZ defdZ!defdZ"defdZ#defd Z$defd!Z%defd"Z&defd#Z'defd$Z(defd%Z) G d& d'e      Z* G d( d)e+      Z,y)*    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                      t         S N)_deepspeed_available     K/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/trl/import_utils.pyis_deepspeed_availabler   +       r   c                      t         S r   )_diffusers_availabler   r   r   is_diffusers_availabler!   /   r   r   c                      t         S r   )_fastapi_availabler   r   r   is_fastapi_availabler$   3       r   min_versionc                 p    t         xr/ t        j                  t              t        j                  |       k\  S r   )_is_liger_kernel_availabler   parse_liger_kernel_version)r&   s    r   is_liger_kernel_availabler+   7   s)    %l'--8M*NRYR_R_`kRl*llr   c                      t         S r   )_llm_blender_availabler   r   r   is_llm_blender_availabler.   ;       !!r   c                      t         S r   )_mergekit_availabler   r   r   is_mergekit_availabler2   ?       r   c                      t         S r   )_pydantic_availabler   r   r   is_pydantic_availabler6   C   r3   r   c                      t         S r   )_requests_availabler   r   r   is_requests_availabler9   G   r3   r   c                      t         S r   )_unsloth_availabler   r   r   is_unsloth_availabler<   K   r%   r   c                      t         S r   )_uvicorn_availabler   r   r   is_uvicorn_availabler?   O   r%   r   c                      t         S r   )_vllm_availabler   r   r   is_vllm_availablerB   S   s    r   c                      t         S r   )_vllm_ascend_availabler   r   r   is_vllm_ascend_availablerE   W   r/   r   c                      t         S r   )_joblib_availabler   r   r   is_joblib_availablerH   [   s    r   c                   P     e Zd ZdZd
 fd	Z fdZdedefdZdefdZ	d	 Z
 xZS )_LazyModulezu
    Module class that surfaces all objects but only performs associated imports when the objects are requested.
    c                    t         	|   |       t        |j                               | _        i | _        |j                         D ]  \  }}|D ]  }|| j
                  |<     t        |j                               t        t        |j                                z   | _
        || _        || _        t        j                  j                  |      g| _        |i n|| _        || _        || _        y 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keyrT   value	__class__s
            r   rM   z_LazyModule.__init__f   s    ,1134 "+113 	3KC 3/2%%e,3	3 ,1134tECSCZCZC\<]7^^##56+3
!1r   c                 r    t         |          }| j                  D ]  }||vs|j                  |        |S r   )rL   __dir__rU   append)r_   resultattrrg   s      r   ri   z_LazyModule.__dir__w   s?    " LL 	$D6!d#	$ r   r`   r   c                 ^   || j                   v r| j                   |   S || j                  v r| j                  |      }nb|| j                  j	                         v r+| j                  | j                  |         }t        ||      }nt        d| j                   d|       t        | ||       |S )Nzmodule z has no attribute )	r\   rP   _get_modulerQ   rO   getattrAttributeError__name__setattr)r_   r`   rf   modules       r   __getattr__z_LazyModule.__getattr__   s    4== ==&&4== $$T*ET**//11%%d&;&;D&ABFFD)E 74==/9KD6!RSSdE"r   module_namec           	          	 t        j                  d|z   | j                        S # t        $ r$}t	        d| j                   d| d|       |d }~ww xY w)N.zFailed to import z@ because of the following error (look up to see its traceback):
)	importlibimport_modulerq   	ExceptionRuntimeError)r_   ru   es      r   rn   z_LazyModule._get_module   sf    	**3+<dmmLL 	#DMM?!K= A!!"% 	s   "% 	AAAc                 `    | j                   | j                  | j                  | j                  ffS r   )rg   r]   rV   r^   )r_   s    r   
__reduce__z_LazyModule.__reduce__   s&    T]]D<R<R STTr   )NN)rq   
__module____qualname____doc__rM   ri   strr   rt   rn   r~   __classcell__)rg   s   @r   rJ   rJ   _   s7    2"  s Ur   rJ   c                       e Zd ZdZy)OptionalDependencyNotAvailablezPInternally used error class for signalling an optional dependency was not found.N)rq   r   r   r   r   r   r   r   r      s    Zr   r   )-rx   rX   	itertoolsr   typesr   typingr   	packagingr   transformers.utils.import_utilsr   LIGER_KERNEL_MIN_VERSIONr   r    r#   r(   r*   r-   r1   r5   r8   r;   r>   rA   rD   rG   boolr   r!   r$   r   r+   r.   r2   r6   r9   r<   r?   rB   rE   rH   rJ   BaseExceptionr   r   r   r   <module>r      s    	     A #  -[9 ,[9 *95 4I.im4n 1 1.}= +J7 +J7 +J7 *95 *95 '/.}= )(3       d  2J m3 md m"$ "t t t d d 4 "$ "T 9U* 9Ux[] [r   