U
    ©Ê¹j  ã                   @   sJ   d dl mZ d dlZd dlmZ deeeedœdd„Zee	dœd	d
„Z
dS )é    )ÚAnyN)Ú_get_device_indexF)ÚdeviceÚoptionalÚ	allow_cpuÚreturnc                 C   sŽ   t | tƒr| S t | tƒr"t | ¡} t | tjƒrd|rL| jdkrdtd| › �ƒ‚n| jdkrdtd| › �ƒ‚tj ¡ s‚t | tj	jƒr‚| j
S t| ||ƒS )a¶  Gets the device index from :attr:`device`, which can be a torch.device
    object, a Python integer, or ``None``.

    If :attr:`device` is a torch.device object, returns the device index if it
    is a CUDA device. Note that for a CUDA device without a specified index,
    i.e., ``torch.device('cuda')``, this will return the current default CUDA
    device if :attr:`optional` is ``True``. If :attr:`allow_cpu` is ``True``,
    CPU devices will be accepted and ``-1`` will be returned in this case.

    If :attr:`device` is a Python integer, it is returned as is.

    If :attr:`device` is ``None``, this will return the current default CUDA
    device if :attr:`optional` is ``True``.
    )ÚcudaÚcpuz(Expected a cuda or cpu device, but got: r   z!Expected a cuda device, but got: )Ú
isinstanceÚintÚstrÚtorchr   ÚtypeÚ
ValueErrorZjitZis_scriptingr   ÚidxÚ_torch_get_device_index)r   r   r   © r   úP/var/www/html/bwave/python/venv/lib/python3.8/site-packages/torch/cuda/_utils.pyr   	   s    





r   )Únamer   c                 C   s*   t dœdd„}t| tf|dƒ|dƒdœƒS )N©Úis_initc                    s   ‡ fdd„}|S )Nc                    s&   ˆ r| j j}n| j}td|› �ƒ‚d S )Nz&Tried to instantiate dummy base class )Ú	__class__Ú__name__ÚRuntimeError)ÚobjÚargsÚkwargsÚ
class_namer   r   r   Úerr_fn,   s    
z/_dummy_type.<locals>.get_err_fn.<locals>.err_fnr   )r   r   r   r   r   Ú
get_err_fn+   s    z_dummy_type.<locals>.get_err_fnTF)Ú__init__Ú__new__)Úboolr   Úobject)r   r   r   r   r   Ú_dummy_type*   s    
  ÿr$   )FF)Útypingr   r   Ztorch._utilsr   r   r"   r   r   r   r$   r   r   r   r   Ú<module>   s      ÿ  þ!