
    `i              
          U d dl Z d dlZd dlZd dlmZmZ d dlmZ d dlm	Z	m
Z
 d dlmZ d dlZi i i i i i i di i i i i i i i ddZeeeee	f         f         ed	<    G d
 de          Zee	df         Zd ZdefdZ ed           G d d                      Zi Zeeef         ed<    e            Zee         ed<   i Zeeee         f         ed<   i Zeeee         f         ed<   deddfdZd Zd Z d Z!d Z"dS )    N)	dataclassfield)Enum)AnyOptional)
ModuleType)condzdynamic-shapezescape-hatchmapzdynamic-valueoperatormutation)assertbuiltinclosurezcontext-managerzcontrol-flowzdata-structurezstandard-libraryzobject-model)torchpython_TAGSc                       e Zd ZdZdZdZdS )SupportLevelz[
    Indicates at what stage the feature
    used in the example is handled in export.
       r   N)__name__
__module____qualname____doc__	SUPPORTEDNOT_SUPPORTED_YET     i/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/torch/_export/db/case.pyr   r   #   s'         
 Ir   r   .c                 H   t          | t                    st          dt          |                      t          |t                    st          dt          |                     |D ]6}t          |t
                    st          dt          |                     7d S )Nz(Expecting args type to be a tuple, got: z)Expecting kwargs type to be a dict, got: z+Expecting kwargs keys to be a string, got: )
isinstancetuple
ValueErrortypedictstr)argskwargskeys      r   check_inputs_typer)   0   s    dE"" 
CtDzzCC
 
 	
 fd## 
FVFF
 
 	
   #s## 	Id3iiII  	 r   tagc                     |                      d          }t          }|D ][}t          |          t          t          j        dz             k    sJ d|             ||v r	||         }It          d|  d          d S )N.-z!Tag contains invalid characters: zTag z! is not found in registered tags.)splitr   setstringascii_lowercaser"   )r*   partstparts       r   _validate_tagr5   ?   s    IIcNNEA L L4yyC"S(
 
 
 
 
5t55
 
 
 199$AAJCJJJKKKL Lr   T)frozenc                      e Zd ZU eed<   eed<   ej        j        ed<   eed<    e	e
          Ze
eef         ed<   dZee         ed<    e	e          Zee         ed	<   ej        Zeed
<   dZee
eef                  ed<   d ZdS )
ExportCaseexample_argsdescriptionmodelname)default_factoryexample_kwargsN
extra_argstagssupport_leveldynamic_shapesc                 8   t          | j        | j                   | j        t          | j        i            | j        D ]}t          |           t          | j        t                    rt          | j                  dk    rt          d| j         d          d S )Nr   zInvalid description: "")r)   r9   r>   r?   r@   r5   r    r:   r%   lenr"   )selfr*   s     r   __post_init__zExportCase.__post_init__Y   s    $+T-@AAA?&dor2229 	 	C#$*C00 	KC8H4I4IQ4N4NId6FIIIJJJ 5O4Nr   )r   r   r   ArgsType__annotations__r%   r   nnModuler   r$   r>   r   r?   r   r/   r@   r   r   rA   rB   rG   r   r   r   r8   r8   L   s         8?
III%*U4%@%@%@NDcN@@@%)J")))U3///D#c(///"."8M<888/3NHT#s(^,333	K 	K 	K 	K 	Kr   r8   _EXAMPLE_CASES_MODULES_EXAMPLE_CONFLICT_CASES_EXAMPLE_REWRITE_CASEScasereturnc                     | j         t          v rU| j         t          vr t          | j                  gt          | j         <   t          | j                                      |            dS | t          | j         <   dS )zA
    Registers a user provided ExportCase into example bank.
    N)r<   rL   rN   append)rP   s    r   register_db_caserT   k   sh     yN""93332@2K1L#DI.	*11$777 $N49r   c                 ~    t          j        dd|           } t          j        dd|                                           S )Nz(.)([A-Z][a-z]+)z\1_\2z([a-z0-9])([A-Z]))resublower)r<   s    r   to_snake_caserY   x   s7    6$h55D6%x66<<>>>r   c                     t          | t          j        j                  st	          d          d|vr!| j        J d|              i |d| j        i}t          di i || |dS )Nz.Export case class should be a torch.nn.Module.r:   z9Could not find description or docstring for export case: )r;   r<   r   )r    r   rJ   rK   	TypeErrorr   r8   )mr<   configss      r   _make_export_caser^   }   s    a)) JHIIIG## I!!JqJJ "!!7W7mQY77>>=7=Q===>>>r   c                        fd}|S )zK
    Decorator for registering a user provided case into example bank.
    c                     }t          j        |           }|t          v rt          d          |J t                              |           |j                            d          d         }t          | ||          }t          |           |S )Nz6export_case should only be used once per example file.r,   )	inspect	getmodulerM   RuntimeErroraddr   r.   r^   rT   )r\   r]   modulemodule_namerP   r'   s        r   wrapperzexport_case.<locals>.wrapper   s    "1%%XWXXX!!!Vo++C004 K99r   r   r'   rh   s   ` r   export_caserj      s#    
     Nr   c                        fd}|S )Nc                 2   }|                     d          }t          |t                    sJ |j        }|t          vr
g t          |<   |j        |d<   t          | t          | j                  |          }t          |         	                    |           |S )Nparentr9   )
popr    r8   r<   rO   r9   r^   rY   r   rS   )r\   r]   rm   r(   rP   r'   s        r   rh   z$export_rewrite_case.<locals>.wrapper   s    X&&&*-----k,,,*,"3'"("5 M!*$=$=wGGs#**4000r   r   ri   s   ` r   export_rewrite_casero      s#         Nr   )#rb   rV   r0   dataclassesr   r   enumr   typingr   r   typesr   r   r   r$   r%   rI   r   r!   rH   r)   r5   r8   rL   r/   rM   rN   listrO   rT   rY   r^   rj   ro   r   r   r   <module>ru      s    				  ( ( ( ( ( ( ( (                                	 	$ $tCc3h    .    4    c?  
Ls 
L 
L 
L 
L $K K K K K K K K0 )+S*_% * * *CEE#j/ ! ! !79 c4
#334 9 9 968 S$z"223 8 8 8
%: 
%$ 
% 
% 
% 
%? ? ?

? 
? 
?  *    r   