Ë
    Z^(hï  ã                  ó   — d dl mZ d dlZd dlmZmZ d dlmZ d dlm	Z	 d dl
mZmZmZmZmZmZ d dlmZ dZ G d	„ d
e	«      Z edddg«      Z ed¬«       G d„ d«      «       Z ed¬«       G d„ d«      «       Z ed¬«       G d„ d«      «       Zy)é    )ÚannotationsN)ÚdefaultdictÚ
namedtuple)Ú	dataclass)ÚIntEnum)ÚBackendIndexÚBackendMetadataÚDispatchKeyÚNativeFunctionÚNativeFunctionsGroupÚOperatorName)Úassert_neveré   c                  ó,   — e Zd ZdZdZdZdZdZdZdZ	dZ
y	)
Ú
ScalarTyper   r   é   é   é   é   é   é   N)Ú__name__Ú
__module__Ú__qualname__ÚByteÚCharÚShortÚIntÚLongÚFloatÚDoubleÚBool© ó    úW/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torchgen/executorch/model.pyr   r      s*   „ Ø€DØ€DØ€EØ
€CØ€DØ€EØ€FØ�Dr$   r   ÚETParsedYamlÚnative_functionsÚkernel_indexT)Úfrozenc                  ó4   — e Zd ZU ded<   ded<   ded<   dd„Zy)	ÚETKernelKeyOpArgMetaÚstrÚarg_nameÚdtypeztuple[int, ...]Ú	dim_orderc                óš   — t         | j                     j                  }t        | j                  «      dd j                  dd«      }|› d|› �S )Nr   éÿÿÿÿú Ú ú;)r   r.   Úvaluer,   r/   Úreplace)ÚselfÚ	dtype_strÚdim_strs      r%   Úto_native_stringz%ETKernelKeyOpArgMeta.to_native_string/   sI   € Ü˜tŸz™zÑ*×0Ñ0ˆ	Ü�d—n‘nÓ% a¨Ð+×3Ñ3°C¸Ó<ˆØ�˜A˜g˜YÐ'Ð'r$   N©Úreturnr,   )r   r   r   Ú__annotations__r:   r#   r$   r%   r+   r+   (   s   … àƒMØƒJàÓô(r$   r+   c                  ób   — e Zd ZU dZded<   dZded<   eZded<   e	 	 	 	 	 	 	 	 dd	„«       Z	dd
„Z
y)ÚETKernelKeyr#   z tuple[ETKernelKeyOpArgMeta, ...]Úarg_metaFÚboolÚdefaultÚintÚversionc                ó"  — |j                  «       D ���ci c]  \  }}||D �cg c]  }t        |«      ‘Œ c}“Œ! }}}}g }t        «       }| j                  «       D ];  \  }}	||v sJ dt	        |«      z   «       ‚|	|v s
J d|	› �«       ‚|j                  |«       Œ= |D ��
cg c]  }||   D �
cg c]  }
||
f‘Œ c}
‘Œ }}}
t        t        j                  |Ž «      D �cg c]  }t        |«      ‘Œ }}i }|D ]€  }g }| j                  «       D ]F  \  }}||d      }
||d      }	||
t        |	«      fx}|vrt        |Ž ||<   |j                  ||   «       ŒH |j                  t        t        |«      «      «       Œ‚ |S c c}w c c}}}w c c}
w c c}
}w c c}w )aú  Generate ETKernelKeys from arg kernel specs
        Multiple ETKernelKeys are returned due to dtype permutations from utilizing
        type_alias_map (actualizing each potential type permutation as a KernelKey)

        Args:
            args: Mapping from argument name to kernel specs
                Kernel specs are a tuple of (dtype, dim_order).
                Currently tuple entries must be aliased via the alias map arguments
            type_alias_map: Mapping from type alias to potential type enums
                i.e { T0 : [Double, Int] } means T0 can be either Double or Int
                Used for lookup by args
            dim_order_alias_map: Mapping from alias to a list of dimension orders
                Used for lookup by args
        zUndefined type alias: zUndefined dim_order alias: r   r   )ÚitemsrC   ÚsetÚvaluesr,   ÚaddÚlistÚ	itertoolsÚproductÚdictÚtupler+   Úappendr?   )ÚargsÚtype_alias_mapÚdim_order_alias_mapÚkÚvÚaliasÚkernel_keysÚdtype_alias_usedÚ
type_aliasr/   r.   Úalias_dtypesÚpermutationÚalias_permutationsÚop_arg_cacheÚarg_listr-   Úarg_specÚ	cache_keys                      r%   Úgen_from_yamlzETKernelKey.gen_from_yaml?   sþ  € ð, 8K×7PÑ7PÓ7R÷
ð 
Ù/3¨q°!ˆA¨Ö*˜u”�E•
Ò*Ñ*ð
Ðò 
ð ˆô ›5ÐØ%)§[¡[£]ò 		-Ñ!ˆJ˜	ð  Ñ/ð Ð1IÌCØóMñ 2ó Ð/ð Ð 3Ñ3ð Ø-¨i¨[Ð9óÐ3ð × Ñ  Õ,ð		-ð *÷
àð *8¸Ñ)>Ö? ˆe�UŠ^Ô?ð
ˆñ 
ô
 26´i×6GÑ6GÈÐ6VÓ1Wö
Ø"-ŒD�Õð
Ðð 
ð
 ˆØ-ò 	=ˆKØˆHØ&*§j¡j£lò 9Ñ"�˜(Ø# H¨Q¡KÑ0�Ø/°¸±Ñ<�	à"*¨E´5¸Ó3CÐ!DÐD�IØ%ñ&ô /CÀIÐ.N�L Ñ+à—‘ ¨YÑ 7Õ8ð9ð ×Ñœ{¬5°«?Ó;Õ<ð	=ð ÐùòS +ùô
ùò( @ùó
ùò
s3   •E:¢E5´E:ÂFÂ(FÂ3FÃFÅ5E:ÆFc                óÀ   — | j                   rydt        t        «      z   dz   dj                  | j                  D �cg c]  }|j                  «       ‘Œ c}«      z   S c c}w )NrB   rT   ú/ú|)rB   r,   ÚKERNEL_KEY_VERSIONÚjoinr@   r:   )r7   Úargs     r%   r:   zETKernelKey.to_native_string€   s\   € Ø�<Š<ØàÜÔ$Ó%ñ&àñð �h‰h¸$¿-¹-ÖH°3˜×,Ñ,Õ.ÒHÓIñJð	
ùò Is   »A
N)rP   zdict[str, tuple[str, str]]rQ   zdict[str, list[str]]rR   zdict[str, list[int]]r<   zlist[ETKernelKey]r;   )r   r   r   r@   r=   rB   rd   rD   Ústaticmethodr`   r:   r#   r$   r%   r?   r?   5   sa   … ð 24€HÐ.Ó3ð €GˆTÓà%€GˆSÓ%àð>Ø(ð>à,ð>ð 2ð>ð 
ò	>ó ð>ô@
r$   r?   c                  ó’   — e Zd ZU ded<   dd„Z	 	 	 	 dd„Ze	 	 	 	 	 	 dd„«       Ze	 	 	 	 dd„«       Z	 	 	 	 dd„Z	dd„Z
edd	„«       Zy
)ÚETKernelIndexú6dict[OperatorName, dict[ETKernelKey, BackendMetadata]]Úindexc                ó,   — | j                  |«      }|d uS ©N)Úget_kernels)r7   ÚgÚms      r%   Úhas_kernelszETKernelIndex.has_kernels�   s   € Ø×Ñ˜QÓˆØ˜ˆ}Ðr$   c                ó  — t        |t        «      r|}n(t        |t        «      r|j                  }nt	        |«       j
                  j                  | j                  vri S | j                  |j
                  j                     S rm   )Ú
isinstancer   r   Ú
functionalr   ÚfuncÚnamerk   )r7   ro   Úfs      r%   rn   zETKernelIndex.get_kernels“   s^   € ô �aœÔ(Ø‰AÜ˜Ô/Ô0Ø—‘‰Aä˜ŒOØ�6‰6�;‰;˜dŸj™jÑ(ØˆIØ�z‰z˜!Ÿ&™&Ÿ+™+Ñ&Ð&r$   c                óœ   — |D ]G  }||   }|j                  «       D ]-  \  }}|| v r|| |   t        d¬«      <   Œt        d¬«      |i| |<   Œ/ ŒI y )NT©rB   )rF   r?   )r(   Úbackend_indicesÚdkrk   ÚopÚbackend_metadatas         r%   Úgrow_from_backend_indicesz'ETKernelIndex.grow_from_backend_indices    sm   € ð
 "ò 	UˆBØ# BÑ'ˆEØ(-¯©«ò UÑ$�Ð$Ø˜Ñ%ØBR�L Ñ$¤[¸Ô%>Ò?ä(3¸DÔ(AÐCSÐ'T�L Ò$ñ	Uñ	Ur$   c                ób   — t        t        «      }t        j                  || «       t        |«      S rm   )r   rM   ri   r~   )rz   r(   s     r%   Úfrom_backend_indicesz"ETKernelIndex.from_backend_indices­   s.   € ô
 œÓð 	ô 	×/Ñ/°¸oÔNÜ˜\Ó*Ð*r$   c                óF   — t         j                  | j                  |«       | S rm   )ri   r~   rk   )r7   rz   s     r%   ÚgrowzETKernelIndex.grow·   s   € ô 	×/Ñ/°·
±
¸OÔLØˆr$   c           	     ó*  — i }| j                   D ]e  }| j                   |   }t        |j                  «       «      dk(  sJ d|› d|› �«       ‚|j                  t	        d¬«      t        ddd¬«      «      ||<   Œg t        t        j                  ddd|¬	«      S )
zp
        WARNING: this will be deprecated once all the codegen places know how to handle ETKernelIndex.
        r   z4Can't convert ETKernelIndex to BackendIndex because z  has more than one kernels. Got Try   r3   F)ÚkernelÚ
structuredÚcpp_namespace)Údispatch_keyÚuse_out_as_primaryÚdevice_guardÚexternalrk   )	rk   ÚlenrH   Úgetr?   r	   r   r
   ÚCPU)r7   rk   r|   Úkernel_dicts       r%   Ú_to_backend_indexzETKernelIndex._to_backend_index½   s©   € ð 68ˆØ—*‘*ò 	ˆBØŸ*™* R™.ˆKÜ�{×)Ñ)Ó+Ó,°Ò1ð ØFÀrÀdÐJjÐkvÐjwÐxóÐ1ð $Ÿ™Ü DÔ)Ü r°eÈ2ÔNóˆE�"ŠIð	ô Ü$Ÿ™Ø$ØØØô
ð 	
r$   c                óì   — t        t        | j                  j                  «       «      }|j                  j	                  «       D ]%  \  }}|j	                  «       D ]  \  }}|||   |<   Œ Œ' t        |«      S rm   )r   rM   rk   ÚcopyrF   ri   )Úindex_aÚindex_bÚcombinedr|   ÚentryÚkeyÚmetadatas          r%   Úmerge_indiceszETKernelIndex.merge_indicesÔ   so   € äœt W§]¡]×%7Ñ%7Ó%9Ó:ˆà Ÿ™×,Ñ,Ó.ò 	-‰IˆB�Ø!&§¡£ò -‘��XØ$,�˜‘˜SÒ!ñ-ð	-ô ˜XÓ&Ð&r$   N)ro   ú%NativeFunction | NativeFunctionsGroupr<   rA   )ro   r™   r<   z"dict[ETKernelKey, BackendMetadata])r(   rj   rz   ú6dict[DispatchKey, dict[OperatorName, BackendMetadata]]r<   ÚNone)rz   rš   r<   ri   )r<   r   )r’   ri   r“   ri   r<   ri   )r   r   r   r=   rq   rn   rg   r~   r€   r‚   r�   r˜   r#   r$   r%   ri   ri   ‹   s§   … àAÓAóð'Ø6ð'à	+ó'ð ð
UØLð
UàOð
Uð 
ò
Uó ð
Uð ð+ØOð+à	ò+ó ð+ðØUðà	óó
ð. ò'ó ñ'r$   ri   )Ú
__future__r   rK   Úcollectionsr   r   Údataclassesr   Úenumr   Útorchgen.modelr   r	   r
   r   r   r   Útorchgen.utilsr   rd   r   r&   r+   r?   ri   r#   r$   r%   ú<module>r¢      s®   ðõ #ã ß /Ý !Ý ÷÷ õ (ð Ð ô�ô ñ ˜.Ð+=¸~Ð*NÓO€ñ �$Ô÷	(ð 	(ó ð	(ñ �$Ô÷R
ð R
ó ðR
ñj �$Ô÷P'ð P'ó ñP'r$   