o
    ٷi                     @   s   U d dl Z d dlZd dlmZ ddlmZmZmZmZ de	defddZ
de	fd	d
Zdaeed< er7eed< de	fddZde	fddZddgZdS )    N)TYPE_CHECKING   )BasePlatformCudaPlatformCpuPlatformNPUPlatformqualnamereturnc                 C   s$   |  dd\}}t|}t||S )z>
    Resolve an object by its fully-qualified class name.
    .r   )rsplit	importlibimport_modulegetattr)r   module_nameobj_namemodule r   P/home/ubuntu/.local/lib/python3.10/site-packages/cache_dit/platforms/__init__.pyresolve_obj_by_qualname   s   

r   c                  C   s2   t j rdS zdd l} W dS  ty   Y dS w )Nz)cache_dit.platforms.platform.CudaPlatformr   z(cache_dit.platforms.platform.NPUPlatformz(cache_dit.platforms.platform.CpuPlatform)torchcudais_available	torch_npuImportError)r   r   r   r   %resolve_current_platform_cls_qualname   s   
r   _current_platformcurrent_platformnamec                 C   sN   | dkrt d u rt }t| a t S | t v rt |  S td|  dt dNr   zNo attribute named 'z' exists in r
   )r   r   r   globalsAttributeError__name__)r   platform_cls_qualnamer   r   r   __getattr__"   s   


r#   c                 C   s>   | dkr|a d S | t v r|t | < d S td|  dt dr   )r   r   r    r!   )r   valuer   r   r   __setattr__/   s
   
r%   r   )r   r   typingr   platformr   r   r   r   strr   r   r   __annotations__r#   r%   __all__r   r   r   r   <module>   s   
 	
