o
    )is                     @   sd  d dl Z d dlmZmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ dejdefd	d
ZdejdedefddZdeej dedeej fddZdeej dedejfddZdeej dedeej fddZdeej dedejfddZdejdedeej fddZdejdedejfddZdedejdeej fddZdejdejfdd ZdS )!    N)IterableIterator)Optional)fx)auto_functionalized)
OpOverloadnodereturnc                 C   s   | j dko	| j|kS )Ncall_functionoptarget)r   r    r   e/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/vllm/compilation/fx_utils.pyis_func   s   r   r   c                 C   s   t | to| jd |kS Nr   r   r   args)r   r   r   r   r   is_auto_func   s   r   nodesc                 C   s    | D ]}|j |kr|  S qd S )N)r   r   r   r   r   r   r   find_specified_fn_maybe   s
   
r   c                 C   *   t | |}|d usJ d| d|  |S NzCould not find z
 in nodes )r   r   r   r   r   find_specified_fn      
r   c                 C   s.   | D ]}t |tr|jd |kr|  S qd S r   r   r   r   r   r   find_auto_fn_maybe&   s
   r   c                 C   r   r   )r   r   r   r   r   find_auto_fn/   r   r   idxc                 C   s2   | j D ]}t|tjr|jd |kr|  S qd S N   )usersr   operatorgetitemr   )r   r   userr   r   r   find_getitem_maybe7   s
   
r%   c                 C   r   )NzCould not find getitem z	 in node )r%   )r   r   retr   r   r   find_getitem?   r   r'   graphc                 c   sJ    | j js|jd| dE d H  |jdtdD ]}|jd | kr"|V  qd S )Nr
   r   r   )Z_schemaZ
is_mutableZ
find_nodesr   r   )r   r(   nr   r   r   find_op_nodesF   s   r*   c                 C   s    t | jdks	J tt| jS r   )lenr!   nextiter)r   r   r   r   get_only_userR   s   r.   )r"   collections.abcr   r   typingr   Ztorchr   Z*torch._higher_order_ops.auto_functionalizer   Z
torch._opsr   Nodeboolr   r   r   r   r   r   intr%   r'   ZGraphr*   r.   r   r   r   r   <module>   s0   
	
	