
    [i                        d Z ddlmZ ddlmZmZ ddlZ G d de          Zi 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Zdededej        fdZdej        deee         z  defdZdej        deee         z  def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EnumNc                   N   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     L/var/www/icac/venv/lib/python3.11/site-packages/torch/utils/_sympy/symbol.pyr   r      s        466DDFFE466LTVVN $&&CtvvH tvv DFFE tvvHtvvH
 TVVNTVVFTVVFTVVF466DTVVFFFr   r   suzfzuftmppsir0_r1_idxxyzindirectviewhprefixreturnc                 D    t          j        t          |           | fi |S N)sympySymbol
prefix_str)r.   r'   kwargss      r   make_symbolr6   S   s*    <:f-4s44?????r   symc                 H   t          | t          j                  st          d          | j                                        }t          |t                    r |                    t          |                   S |                    t          d |D                                 S )Nzexpected sympy.Symbolc              3   0   K   | ]}t           |         V  d S r1   )r4   ).0ps     r   	<genexpr>z!symbol_is_type.<locals>.<genexpr>a   s&      (G(G1A(G(G(G(G(G(Gr   )

isinstancer2   r3   AssertionErrornamelowerr   
startswithr4   tuple)r7   r.   name_strs      r   symbol_is_typerD   Z   s    c5<(( 64555x~~H&$ I"":f#5666""5(G(G(G(G(G#G#GHHHr   ec                 D    t          fd| j        D                       S )Nc              3   8   K   | ]}t          |          V  d S r1   )rD   )r:   vr.   s     r   r<   z&free_symbol_is_type.<locals>.<genexpr>e   s-      AAQ~a((AAAAAAr   )anyfree_symbols)rE   r.   s    `r   free_symbol_is_typerK   d   s(    AAAA!.AAAAAAr   )!__doc__collections.abcr   enumr   r   r2   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r4   intr3   r6   BasicboolrD   ExprrK   r   r   r   <module>rS      s
    % $ $ $ $ $         " " " " "4 " " "NIss 	J 	 	He 	4 	J 	M5 	M5 	 	K 	K  	K!" 	M:#$ 	Iv%& 	K'
.@ @3 @U\ @ @ @ @I ITHTN-B It I I I IB5: Bthtn/D B B B B B B Br   