o
    ۷iG                     @   s6   d dl Z d dlZd dlZd dlZG dd de jZdS )    Nc                   @   s2   e Zd ZdZdd Zdd Zdd Zdd	d
ZdS )ReturnNameVisitorzThanks to ChatGPT for pairing.c                 C   s
   g | _ d S N)return_names)self r   _/home/ubuntu/vllm_env/lib/python3.10/site-packages/diffusers/utils/source_code_parsing_utils.py__init__
   s   
zReturnNameVisitor.__init__c              	   C   s   t |jtjr9|jjD ],}t |tjr| j|j qz| jt	| W q t
y7   | jt| Y qw n/t |jtjrI| j|jj nz| jt	|j W n t
yg   | jt|j Y nw | | d S r   )
isinstancevalueastTupleeltsNamer   appendidunparse	Exceptionstrgeneric_visit)r   nodeeltr   r   r   visit_Return   s$   	zReturnNameVisitor.visit_Returnc                 C   s8   ddl m} ddlm} t||rdS t||rdS t)Nr   )DiffusionPipeline)
ModelMixin	pipelinesmodels)	diffusersr   diffusers.models.modeling_utilsr   
issubclassNotImplementedError)r   clsr   r   r   r   r   _determine_parent_module"   s   

z*ReturnNameVisitor._determine_parent_moduleencode_promptc                 C   sN   |  |}td| }t||j}tt||}t|}t	
|}|S )Nz
diffusers.)r!   	importlibimport_modulegetattr__name__inspect	getsourcetextwrapdedentr   parse)r   r    attribute_nameparent_module_namemain_modulecurrent_cls_modulesource_codetreer   r   r   get_ast_tree-   s   


zReturnNameVisitor.get_ast_treeN)r"   )r&   
__module____qualname____doc__r   r   r!   r2   r   r   r   r   r      s    r   )r   r#   r'   r)   NodeVisitorr   r   r   r   r   <module>   s
    