U
    §Ê¹jA  ã                   @   s¼   U d Z ddlZddlZddlZG dd„ dƒZeƒ Zdd„ Zdd„ Zej 	¡ Z
i Zi Zd	d
„ Zdd„ Zdd„ Zdd„ Ze ¡ Zejed< e ¡ Zejed< dd„ Zdd„ Zdd„ Zdd„ ZdS )zÃJIT-related state

This module stores various pieces of Python-global state relating to the JIT.

This is not intended to be imported directly; please the exposed
functionalities in `torch.jit`.
é    Nc                   @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	ÚEnabledProxyzyStores whether the JIT is enabled or not.

    This is just a wrapper for a bool, so that we get reference semantics
    c                 C   s   |   dddd¡| _d S )NZPYTORCH_JITTz> Using PyTorch JITz> PyTorch JIT DISABLED)Ú	parse_envÚenabled©Úself© r   úO/var/www/html/bwave/python/venv/lib/python3.8/site-packages/torch/jit/_state.pyÚ__init__   s       ÿzEnabledProxy.__init__c                 C   st   t j |¡}|d kr|S | ¡ dkr(dS | ¡ dkr8dS |dkrLt|ƒ dS |dkr`t|ƒ dS td|› d�ƒ‚d S )	N>   Ú1ÚyesÚtrueT>   Ú0ÚfalseÚnoFZ1vZ0vzUnknown setting of z. Try using 0 or 1.)ÚosÚenvironÚgetÚlowerÚprintÚ
ValueError)r   ÚnameÚdefaultZtrue_messageZfalse_messageÚvaluer   r   r   r      s    zEnabledProxy.parse_envc                 C   s   | j S ©N)r   r   r   r   r   Ú__bool__)   s    zEnabledProxy.__bool__N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r	   r   r   r   r   r   r   r      s   r   c                   C   s
   dt _d S )NF©Ú_enabledr   r   r   r   r   Údisable0   s    r!   c                   C   s
   dt _d S )NTr   r   r   r   r   Úenable4   s    r"   c                 C   s   |t | < | t| ¡ < d S r   )Ú_script_classesÚ_name_to_pyclassÚqualified_name)Úpython_classZscript_classr   r   r   Ú_add_script_classC   s    r'   c                 C   s(   t | dd ƒ}|d k	rt|ƒ} t | d ¡S )NZ_jit_override_qualname)ÚgetattrÚ_get_python_classr#   r   )r&   Úoverrider   r   r   Ú_get_script_classH   s    r+   c                 C   s   t  | d ¡S r   )r$   r   ©r%   r   r   r   r)   O   s    r)   c                   C   s   t  ¡  t ¡  d S r   )r#   Úclearr$   r   r   r   r   Ú_clear_class_stateS   s    r.   Ú_jit_caching_layerÚ_jit_function_overload_cachingc                 C   s&   t  | d ¡}|rdd„ |D ƒS d S d S )Nc                 S   s   g | ]}t  |¡‘qS r   )Ú
_python_cuÚfind_function)Ú.0Ú	qual_namer   r   r   Ú
<listcomp>g   s     z1_try_get_jit_cached_overloads.<locals>.<listcomp>)r0   r   )ÚkeyZ
qual_namesr   r   r   Ú_try_get_jit_cached_overloadsd   s    r7   c                 C   s   dd„ |D ƒt | < d S )Nc                 S   s   g | ]
}|j ‘qS r   r,   )r3   Úfnr   r   r   r5   m   s     z+_set_jit_overload_cache.<locals>.<listcomp>)r0   )r6   Zcompiled_fnsr   r   r   Ú_set_jit_overload_cachel   s    r9   c                 C   s6   t | ddƒdkrd S t | d ¡}|r.t |¡S d S d S )NZ __disable_jit_function_caching__FT)r(   r/   r   r1   r2   )r6   r4   r   r   r   Ú_try_get_jit_cached_functionp   s    
r:   c                 C   s    t |tjjƒst‚|jt| < d S r   )Ú
isinstanceÚtorchZjitZScriptFunctionÚAssertionErrorr%   r/   )r6   r   r   r   r   Ú_set_jit_function_cachez   s    r>   )r   r   Úweakrefr<   r   r    r!   r"   Z_CZCompilationUnitr1   r#   r$   r'   r+   r)   r.   ÚWeakKeyDictionaryr/   Ú__annotations__r0   r7   r9   r:   r>   r   r   r   r   Ú<module>   s(   

