U
    Ç9%ey  ã                   @   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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__© ú^/var/www/html/Darija-Ai-API/env/lib/python3.8/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kpHt|ƒ| jk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   r   r   r   r   r   r   r   Úboolr$   r   r   r   r   r   r      s    ÿ)r   Ztorch.fx._symbolic_tracer   Ztorch.fx.proxyr   Ztorch.ao.nn.intrinsicr   Útypingr   r   Ú__all__ZfxÚproxyr   r   r   r   r   r   Ú<module>   s   ÿ
