o
    ÜÜÓhy  ã                   @   sl   d dl Z d dlmZ d dlmZ d dlmZ d dlmZm	Z	 dgZ
G dd„ de jjjƒZG d	d„ deƒZdS )
é    N)ÚTracer)ÚScope)Ú_FusedModule)ÚListÚCallableÚQuantizationTracerc                       s.   e Zd Zdedejjdef‡ 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__© úU/var/www/html/ai/venv/lib/python3.10/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                       sH   e Zd Zdee dee f‡ fdd„Zdejj	dede
f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	   Ú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¡ot|tjjƒ p$|| jv p$t|ƒ| jv p$t|t	ƒS )Nztorch.nnztorch.ao.nn)
r   Ú
startswithÚ
isinstancer   r   Ú
Sequentialr   r   r   r   )r   r    r!   r   r   r   Úis_leaf_module$   s   þüûùz!QuantizationTracer.is_leaf_module)r   r   r   r   r   r   r   r   r   r   Úboolr&   r   r   r   r   r   r      s    ÿÿ")r   Útorch.fx._symbolic_tracer   Útorch.fx.proxyr   Útorch.ao.nn.intrinsicr   Útypingr   r   Ú__all__ÚfxÚproxyr   r   r   r   r   r   Ú<module>   s    ÿ
