U
    wh                     @   s   U d Z ddlZddlZddlmZmZmZ ddlZG dd dZe Z	dd Z
dd	 Zej Zi Zeee ee f ed
< i Zeeee f ed< 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 )zJIT-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`.
    N)AnyDictTypec                   @   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
   B/var/www/html/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>   yes1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   disable2   s    r$   c                   C   s
   dt _d S )NTr"   r
   r
   r
   r   enable6   s    r%   _script_classes_name_to_pyclassc                 C   s   |t | < | t| < d S r   )r&   r'   qualified_name)python_classZscript_classr
   r
   r   _add_script_classE   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_classJ   s    r.   c                 C   s   t | d S r   )r'   r   r(   r
   r
   r   r,   Q   s    r,   c                   C   s   t   t  d S r   )r&   clearr'   r
   r
   r
   r   _clear_class_stateU   s    r1   _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>i   s     z1_try_get_jit_cached_overloads.<locals>.<listcomp>)r3   r   )keyZ
qual_namesr
   r
   r   _try_get_jit_cached_overloadsf   s    r:   c                 C   s   dd |D t | < d S )Nc                 S   s   g | ]
}|j qS r
   r/   )r6   fnr
   r
   r   r8   o   s     z+_set_jit_overload_cache.<locals>.<listcomp>)r3   )r9   Zcompiled_fnsr
   r
   r   _set_jit_overload_cachen   s    r<   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+   r2   r   r4   r5   )r9   r7   r
   r
   r   _try_get_jit_cached_functionr   s    
r=   c                 C   s    t |tjjst|jt| < d S r   )
isinstancetorchZjitZScriptFunctionAssertionErrorr(   r2   )r9   r   r
   r
   r   _set_jit_function_cache|   s    rA   )r!   r   weakreftypingr   r   r   r?   r   r#   r$   r%   Z_CZCompilationUnitr4   r&   __annotations__r'   strr*   r.   r,   r1   WeakKeyDictionaryr2   r3   r:   r<   r=   rA   r
   r
   r
   r   <module>   s*   

