a
    ‘º”h˜  ã                   @   sh   d dl mZ d dlZd dlmZ d dlmZ d dlmZ dgZ	G dd„ dej
jjƒZG d	d„ deƒZdS )
é    )ÚCallableN)Ú_FusedModule)ÚTracer)ÚScopeÚQuantizationTracerc                       s*   e Zd Zeejjedœ‡ fdd„Z‡  Z	S )ÚScopeContextManager)ÚscopeÚcurrent_moduleÚcurrent_module_pathc                    s   t ƒ  |t|t|ƒƒ¡ d S )N)ÚsuperÚ__init__r   Útype)Úselfr   r	   r
   ©Ú	__class__© úM/var/www/auris/lib/python3.9/site-packages/torch/ao/quantization/fx/tracer.pyr      s    zScopeContextManager.__init__)
Ú__name__Ú
__module__Ú__qualname__r   ÚtorchÚnnÚModuleÚstrr   Ú__classcell__r   r   r   r   r      s   
ÿr   c                       sB   e Zd Zee ee dœ‡ fdd„Zejj	ee
dœdd„Z‡  ZS )r   )Úskipped_module_namesÚskipped_module_classesc                    s,   t ƒ  ¡  || _|| _tdd ƒ| _d| _d S )NÚ T)r   r   r   r   r   r   Zrecord_stack_traces)r   r   r   r   r   r   r      s
    
zQuantizationTracer.__init__)ÚmÚmodule_qualified_nameÚreturnc                 C   sJ   |j  d¡s|j  d¡r(t|tjjƒ pH|| jv pHt|ƒ| jv pHt|t	ƒS )Nztorch.nnztorch.ao.nn)
r   Ú
startswithÚ
isinstancer   r   Z
Sequentialr   r   r   r   )r   r   r   r   r   r   Úis_leaf_module$   s    
þûùø	öz!QuantizationTracer.is_leaf_module)r   r   r   Úlistr   r   r   r   r   r   Úboolr#   r   r   r   r   r   r      s   ÿ)Útypingr   r   Ztorch.ao.nn.intrinsicr   Ztorch.fx._symbolic_tracer   Ztorch.fx.proxyr   Ú__all__ZfxÚproxyr   r   r   r   r   r   Ú<module>   s   ÿ