Ë
    g^(h†  ã            
       ó¤  — 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"y)é    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y)Ú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© ó    úS/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/_export/db/case.pyr   r   #   s   „ ñð
 €IØÑr   r   .c                 óü   — t        | t        «      st        dt        | «      › �«      ‚t        |t        «      st        dt        |«      › �«      ‚|D ])  }t        |t
        «      rŒt        dt        |«      › �«      ‚ y )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„   € Ü�dœEÔ"ÜØ6´t¸D³z°lÐCó
ð 	
ô �fœdÔ#ÜØ7¼¸V»°~ÐFó
ð 	
ð ò ˆÜ˜#œsÕ#ÜØ=¼dÀ3»i¸[ÐIóð ñr   Útagc                 óÔ   — | j                  d«      }t        }|D ]L  }t        |«      t        t        j                  dz   «      k  s
J d|› �«       ‚||v r||   }Œ?t        d| › d�«      ‚ y )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†   € Ø�I‰I�c‹N€EÜ€AØò LˆÜ�4‹yœCÜ×"Ñ" SÑ(ó
ò 
ð 	6à.¨t¨fÐ5ó	6ð 
ð �1‰9Ø�$‘‰Aä˜t C 5Ð(IÐJÓKÐKñ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y)Ú
ExportCaseÚexample_argsÚdescriptionÚmodelÚname)Údefault_factoryÚexample_kwargsNÚ
extra_argsÚtagsÚsupport_levelÚdynamic_shapesc                 óV  — t        | j                  | j                  «       | j                  �t        | j                  i «       | j                  D ]  }t        |«       Œ t        | j                  t        «      rt        | j                  «      dk(  rt        d| j                  › d�«      ‚y )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Ø�?‰?Ð&Ü˜dŸo™o¨rÔ2à—9‘9ò 	ˆCÜ˜#Õð	ô ˜$×*Ñ*¬CÔ0´C¸×8HÑ8HÓ4IÈQÒ4NÜÐ5°d×6FÑ6FÐ5GÀqÐIÓJÐJð 5Or   )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‰8�?‰?ÓØ
ƒIÙ%*¸4Ô%@€N�D˜˜c˜‘NÓ@Ø%)€J�˜Ñ"Ó)á¨3Ô/€Dˆ#ˆc‰(Ó/Ø".×"8Ñ"8€M�<Ó8Ø/3€N�H˜T # s (™^Ñ,Ó3ó	Kr   r8   Ú_EXAMPLE_CASESÚ_MODULESÚ_EXAMPLE_CONFLICT_CASESÚ_EXAMPLE_REWRITE_CASESÚcaseÚreturnc                 ó  — | j                   t        v rZ| j                   t        vr%t        | j                      gt        | j                   <   t        | j                      j                  | «       y| t        | j                   <   y)zA
    Registers a user provided ExportCase into example bank.
    N)r<   rL   rN   Úappend)rP   s    r   Úregister_db_caserT   k   s`   € ð ‡y�y”NÑ"Ø�9‰9Ô3Ñ3Ü2@ÀÇÁÑ2KÐ1LÔ# D§I¡IÑ.Ü §	¡	Ñ*×1Ñ1°$Ô7Øà $„N�4—9‘9Òr   c                 óz   — t        j                  dd| «      } t        j                  dd| «      j                  «       S )Nz(.)([A-Z][a-z]+)z\1_\2z([a-z0-9])([A-Z]))ÚreÚsubÚlower)r<   s    r   Úto_snake_caserY   x   s2   € Ü�6‰6Ð$ h°Ó5€DÜ�6‰6Ð% x°Ó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œŸ™Ÿ™Ô)ÜÐHÓIÐIà˜GÑ#ð �I‰IÐ!ð	KàFÀqÀcÐJó	KØ!à7�WÐ7˜m¨Q¯Y©YÑ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	                  |«       |j
                  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�   sx   ø€ ØˆÜ×"Ñ" 1Ó%ˆØ”XÑÜÐWÓXÐXàÐ!Ð!Ð!Ü�‰�VÔØ—o‘o×+Ñ+¨CÓ0°Ñ4ˆÜ   K°Ó9ˆÜ˜ÔØˆr   r   ©r'   rh   s   ` r   Úexport_caserj   Š   s   ø€ ô
ð €Nr   c                  ó   ‡ — ˆ fd„}|S )Nc                 ó  •— ‰}|j                  d«      }t        |t        «      sJ ‚|j                  }|t        vr	g t        |<   |j
                  |d<   t        | t        | j                  «      |«      }t        |   j                  |«       |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‰kˆØÔ,Ñ,Ø*,Ô" 3Ñ'à"(×"5Ñ"5ˆ�ÑÜ  ¤M°!·*±*Ó$=¸wÓGˆÜ˜sÑ#×*Ñ*¨4Ô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      sG  ðä Û 	Û ß (Ý ß  Ý ã ð ØØØØØØñð ØØØØØØØñ	ñ$€€tˆC��c˜3�h‘ÐÑ ó ô.�4ô ð ��c�‰?€òð
L�só 
Lñ �$Ô÷Kð Kó ðKð0 )+€��S˜*�_Ñ%Ó *Ù›E€ˆ#ˆj‰/Ó !Ø79Ð ˜˜c 4¨
Ñ#3Ð3Ñ4Ó 9Ø68Ð ˜˜S $ zÑ"2Ð2Ñ3Ó 8ð
%˜:ð 
%¨$ó 
%ò?ò

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