a
    h                      @   s   d Z ddlmZ ddlmZmZ ddlmZ ddlZG dd deZ	e	j
de	jd	e	jd
e	jde	jde	jde	jde	jde	jde	jde	jde	jde	jde	jde	jde	jdiZe	eejdddZejee	ee	 f edddZ ej!ee	ee	 f eddd Z"dS )!a  
This file contains canonical definitions for our symbol naming conventions,
across torch.fx.experimental.symbolic_shapes and torch._inductor.  The
intention is:

1. To make it easily greppable where all the sites we use a prefix are
2. Make it possible to easily tell if we can introduce a new prefix without
   introducing a conflict

You can occasionally test if prefixes have been hardcoded by renaming prefixes
in this file and seeing what breaks.
    )Iterable)autoEnum)UnionNc                   @   sl   e Zd Ze Ze Ze Ze Ze Ze Z	e Z
e Ze Ze Ze Ze Ze Ze Ze Ze ZdS )SymTN)__name__
__module____qualname__r   SIZEFLOATUNBACKED_INTUNBACKED_FLOATTMPINDIRECTPRECOMPUTED_SIZEINDEXR0_INDEXR1_INDEXTEMPLATE_INDEXXBLOCKYBLOCKZBLOCKVIEWHALIDE r   r   G/var/www/auris/lib/python3.9/site-packages/torch/utils/_sympy/symbol.pyr      s    r   suzfZzuftmpZpsiZr0_Zr1_idxxyzZindirectviewh)prefixr!   returnc                 K   s   t jt|   | fi |S N)sympySymbol
prefix_str)r'   r!   kwargsr   r   r   make_symbolT   s    r.   )symr'   r(   c                 C   sN   t | tjsJ | j }t |tr2|t| S |tdd |D S d S )Nc                 s   s   | ]}t | V  qd S r)   )r,   ).0pr   r   r   	<genexpr>a       z!symbol_is_type.<locals>.<genexpr>)	
isinstancer*   r+   namelowerr   
startswithr,   tuple)r/   r'   Zname_strr   r   r   symbol_is_type[   s
    

r9   )er'   r(   c                    s   t  fdd| jD S )Nc                 3   s   | ]}t | V  qd S r)   )r9   )r0   vr'   r   r   r2   e   r3   z&free_symbol_is_type.<locals>.<genexpr>)anyZfree_symbols)r:   r'   r   r<   r   free_symbol_is_typed   s    r>   )#__doc__collections.abcr   enumr   r   typingr   r*   r   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r,   intr+   r.   ZBasicboolr9   Exprr>   r   r   r   r   <module>   s2   ( 	