o
    h	                     @   s   d dl mZ d dlmZ ddlmZ ddlmZ ddlm	Z	 ddl
mZ er2d d	lmZ d d
lmZ d ZG dd deZdS )    )getattr_static)TYPE_CHECKING   )create_call_function)Unsupported)
AttrSource   )VariableTracker)	PyCodegen)InstructionTranslatorz6query key value attn_mask dropout is_causal enable_gqac                       sd   e Zd ZdZedddZd fdd	ZdddZdd Zddde	de
fddZedd Z  ZS )SDPAParamsVariablezeRepresents the c++ params struct for scaled dot product attention.
    This is a read-only container.txr   c                    s@   ddl m} ddlm}  fddtD }|||i S )Nr   
SDPAParamsr   )TorchInGraphFunctionVariablec              	      s&   g | ]}t t|t |qS  )r	   buildgetattrr   ).0psourcer   valuer   b/home/www/facesmatcher.com/frenv_anti/lib/python3.10/site-packages/torch/_dynamo/variables/sdpa.py
<listcomp>   s    z-SDPAParamsVariable.create.<locals>.<listcomp>)torch.backends.cudar   torchr   PARAM_NAMESZcall_function)r   r   r   r   r   paramsr   r   r   create   s   zSDPAParamsVariable.createreturnNc                    s"   || _ || _t jdi | d S )Nr   )proxy
param_varssuper__init__)selfr!   r"   kwargs	__class__r   r   r$   #   s   zSDPAParamsVariable.__init__codegenr
   c                    sT   | j d u sJ | jd usJ   fdd  | j  tt| jd d S )Nc                      s     ddS )Nztorch._C_SDPAParams)Zload_import_fromr   r)   r   r   <lambda>,   s    z0SDPAParamsVariable.reconstruct.<locals>.<lambda>F)r   r"   Zadd_push_nullZforeachZextend_outputr   len)r%   r)   r   r+   r   reconstruct(   s   
zSDPAParamsVariable.reconstructc                 C   s   | j S )N)r!   )r%   r   r   r   as_proxy1   s   zSDPAParamsVariable.as_proxynamec                 C   s   dd l }ddlm} ddlm} z	t|jj| W n ty(   t	d| d w |
|  |}| jd urA|||t| j|dS |||dS )Nr   r   )wrap_fx_proxy)GetAttrVariablez+Unsupported torch._C._SDPAParams attribute )r   r!   r   )r   r!   )Ztorch._Cbuilderr1   miscr2   r   Z_Cr*   AttributeErrorr   Zcreate_getattr_proxyr/   r   r   )r%   r   r0   r   r1   r2   r!   r   r   r   var_getattr4   s$   
zSDPAParamsVariable.var_getattrc                 C   s   ddl m} | |u S )Nr   r   )r   r   )r   r   r   r   r   is_sdpa_paramsJ   s   z!SDPAParamsVariable.is_sdpa_params)r   r   )r    N)r)   r
   )__name__
__module____qualname____doc__staticmethodr   r$   r.   r/   strr	   r6   r7   __classcell__r   r   r'   r   r      s    
	r   N)inspectr   typingr   Zbytecode_transformationr   excr   r   r   baser	   Ztorch._dynamo.codegenr
   Ztorch._dynamo.symbolic_convertr   splitr   r   r   r   r   r   <module>   s   