o
    U۷i                     @   s`   d dl mZ G dd deZG dd deZG dd deZG dd	 d	eZG d
d deZdS )    )defaultdictc                   @   s   e Zd ZdS )DuplicatedNameErrorN)__name__
__module____qualname__ r   r   H/home/ubuntu/vllm_env/lib/python3.10/site-packages/llvmlite/ir/_utils.pyr      s    r   c                   @   s6   e Zd Zdd Zdd ZdddZdd	 Zd
d ZdS )	NameScopec                 C   s   t dg| _tt| _d S )N )set_usesetr   int_basenamemapselfr   r   r   __init__	   s   zNameScope.__init__c                 C   s
   || j v S N)r   )r   namer   r   r   is_used   s   
zNameScope.is_usedFc                 C   s2   |r|  |}n	| |rt|| j| |S r   )deduplicater   r   r   add)r   r   r   r   r   r   register   s   
zNameScope.registerc                 C   s@   |}|  |r| j| d }|| j|< d||}|  |s|S )N   z{0}.{1})r   r   format)r   r   basenameidentr   r   r   r      s   


zNameScope.deduplicatec                 C   s   t | | dS )N)parent)typer   r   r   r   	get_child    s   zNameScope.get_childNF)r   r   r   r   r   r   r   r   r   r   r   r   r	      s    
r	   c                   @   s   e Zd Zdd Zdd ZdS )_StrCachingc                 C   s    z| ` W d S  ty   Y d S w r   )_StrCaching__cached_strAttributeErrorr   r   r   r   _clear_string_cache&   s
   
z_StrCaching._clear_string_cachec                 C   .   z| j W S  ty   |   }| _ | Y S w r   )r!   r"   
_to_stringr   sr   r   r   __str__,      z_StrCaching.__str__N)r   r   r   r#   r(   r   r   r   r   r    $   s    r    c                   @   s   e Zd Zdd ZdS )_StringReferenceCachingc                 C   r$   r   )&_StringReferenceCaching__cached_refstrr"   _get_referencer&   r   r   r   get_reference6   r)   z%_StringReferenceCaching.get_referenceN)r   r   r   r-   r   r   r   r   r*   4   s    r*   c                   @   s   e Zd Zdd ZdddZdS )_HasMetadatac                 C   s   || j |< dS )zc
        Attach unnamed metadata *node* to the metadata slot *name* of this
        value.
        N)metadata)r   r   noder   r   r   set_metadata@   s   z_HasMetadata.set_metadataFc                 C   s>   | j rg }|r|d |dd | j  D 7 }d|S dS )Nr
   c                 S   s    g | ]\}}d  || qS )z!{0} {1})r   r-   ).0kvr   r   r   
<listcomp>L   s    z4_HasMetadata._stringify_metadata.<locals>.<listcomp>z, )r/   appenditemsjoin)r   leading_commabufr   r   r   _stringify_metadataG   s   

z _HasMetadata._stringify_metadataNr   )r   r   r   r1   r;   r   r   r   r   r.   >   s    r.   N)	collectionsr   	NameErrorr   objectr	   r    r*   r.   r   r   r   r   <module>   s    
