+
    –°³jý  ã                   óÔ   a € R t0 t ^ RIHt ^ RIHt ^ RIHt ^RIHt ^RI	H
t
 ^RIHt . ROt ! R
 R4      t]! 4       t] ^ k  ! R R4      t ! R R4      t ! R R	4      tR R ltR# )é    )ÚCallable)ÚAny)Ú
OrderedSet)ÚEffectHolder©ÚFakeImplHolder)ÚRegistrationHandleÚSimpleLibraryRegistryÚSimpleOperatorEntryÚSymmMemArgsHolderc                   óZ   a € ] tR t^t o RtV 3R lR ltV 3R lR ltV 3R lR ltRtV t	R	# )
r
   a"  Registry for the "simple" torch.library APIs

The "simple" torch.library APIs are a higher-level API on top of the
raw PyTorch DispatchKey registration APIs that includes:
- fake impl

Registrations for these APIs do not go into the PyTorch dispatcher's
table because they may not directly involve a DispatchKey. For example,
the fake impl is a Python function that gets invoked by FakeTensor.
Instead, we manage them here.

SimpleLibraryRegistry is a mapping from a fully qualified operator name
(including the overload) to SimpleOperatorEntry.
c                ó   <€ V ^8„  d   QhRR/# ©é   ÚreturnN© )ÚformatÚ__classdict__s   "€Ú_/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torch/_library/simple_registry.pyÚ__annotate__Ú"SimpleLibraryRegistry.__annotate__#   s   ø€ ÷ 8ñ 8˜$ñ 8ó    c                ó   € / V n         R # ©N©Ú_data©Úselfs   &r   Ú__init__ÚSimpleLibraryRegistry.__init__#   s	   € Ø57ˆŽ
r   c                ó$   <€ V ^8„  d   QhRS[ RR/# )r   Úqualnamer   r   ©Ústr)r   r   s   "€r   r   r   &   s   ø€ ÷ ñ ™Sð Ð%:ñ r   c                óz   € V P                   P                  VR 4      pVf   \        V4      ;V P                   V&   pV# r   )r   Úgetr   )r   r"   Úress   && r   ÚfindÚSimpleLibraryRegistry.find&   s8   € Ø�j‰j�n‰n˜X tÓ,ˆØŠ;Ü)<¸XÓ)FÐFˆD�J‰J�xÑ  3Øˆ
r   c                ó$   <€ V ^8„  d   QhRS[ RR/# )r   r"   r   zSimpleOperatorEntry | Noner#   )r   r   s   "€r   r   r   ,   s   ø€ ÷ .ñ .™Cð .Ð$@ñ .r   c                ó:   € V P                   P                  VR 4      # r   ©r   r&   ©r   r"   s   &&r   r&   ÚSimpleLibraryRegistry.get,   s   € Ø�z‰z�~‰~˜h¨Ó-Ð-r   r   N)
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r(   r&   Ú__static_attributes__Ú__classdictcell__©r   s   @r   r
   r
      s(   ø‡ € ñ÷8ð 8÷ð ÷.ö .r   c                   óR   a € ] tR t^3t o RtV 3R lR lt]V 3R lR l4       tRtV t	R# )r   zxThis is 1:1 to an operator overload.

The fields of SimpleOperatorEntry are Holders where kernels can be
registered to.
c                ó$   <€ V ^8„  d   QhRS[ RR/# ©r   r"   r   Nr#   )r   r   s   "€r   r   Ú SimpleOperatorEntry.__annotate__:   s   ø€ ÷ Lñ L¡ð L¨ñ Lr   c                ó’   € Wn         \        V4      V n        \        V4      V n        \        V4      V n        \        V4      V n        R # r   )	r"   r   Ú	fake_implÚGenericTorchDispatchRuleHolderÚtorch_dispatch_rulesr   Úeffectr   Úsymm_mem_argsr-   s   &&r   r   ÚSimpleOperatorEntry.__init__:   s>   € Ø%ŒÜ)7¸Ó)AˆŒä*¨8Ó4ð 	Ô!ô %1°Ó$:ˆŒÜ0AÀ(Ó0KˆÖr   c                ó    <€ V ^8„  d   QhRS[ /# ©r   r   r   )r   r   s   "€r   r   r:   F   s   ø€ ÷ ñ ™~ñ r   c                ó   € V P                   # r   )r<   r   s   &r   Úabstract_implÚ!SimpleOperatorEntry.abstract_implE   s   € à�~‰~Ðr   )r?   r<   r"   r@   r>   N)
r/   r0   r1   r2   r3   r   ÚpropertyrE   r4   r5   r6   s   @r   r   r   3   s*   ø‡ € ñ÷Lð Lð ÷ó ör   c                   óV   a € ] tR t^Jt o V 3R lR ltV 3R lR ltV 3R lR ltRtV tR# )	r=   c                ó$   <€ V ^8„  d   QhRS[ RR/# r9   r#   )r   r   s   "€r   r   Ú+GenericTorchDispatchRuleHolder.__annotate__K   ó   ø€ ÷ &ñ &¡ð &¨ñ &r   c                ó    € / V n         Wn        R # r   ©r   r"   r-   s   &&r   r   Ú'GenericTorchDispatchRuleHolder.__init__K   s   € Ø57ˆŒ
Ø%Žr   c                ó@   <€ V ^8„  d   QhRS[ RS[RS[3,          RS[/# )r   Útorch_dispatch_classÚfunc.r   )Útyper   r   r	   )r   r   s   "€r   r   rJ   O   s.   ø€ ÷ .ñ .Ù$(ð.Ù08¸¹c¸Õ0Bð.á	ñ.r   c                ó°   a a€ S P                  S4      '       d   \        S R S P                   24      hVS P                  S&   R V V3R llp\	        V4      # )z8 already has a `__torch_dispatch__` rule registered for c                ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   Ú=GenericTorchDispatchRuleHolder.register.<locals>.__annotate__X   s   € ÷ 	1ñ 	1˜Dñ 	1r   c                  ó"   <€ S P                   S R # r   r   ©r   rP   s   €€r   Ú
deregisterÚ;GenericTorchDispatchRuleHolder.register.<locals>.deregisterX   s   ø€ Ø—
‘
Ð/Ò0r   )r(   ÚRuntimeErrorr"   r   r	   )r   rP   rQ   rX   s   ff& r   ÚregisterÚ'GenericTorchDispatchRuleHolder.registerO   sb   ù€ ð �9‰9Ð)×*Ò*ÜØ'Ð(Ð(`Ðae×anÑanÐ`oÐpóð ð ,0ˆ�
‰
Ð'Ñ(÷	1ñ 	1ô " *Ó-Ð-r   c                óH   <€ V ^8„  d   QhRS[ RS[RS[3,          R,          /# )r   rP   r   .N)rR   r   r   )r   r   s   "€r   r   rJ   ]   s)   ø€ ÷ :ñ :©ð :±(¸3Á¸8Õ2DÀtÕ2Kñ :r   c                ó:   € V P                   P                  VR 4      # r   r,   rW   s   &&r   r(   Ú#GenericTorchDispatchRuleHolder.find]   s   € Ø�z‰z�~‰~Ð2°DÓ9Ð9r   rM   N)	r/   r0   r1   r2   r   r[   r(   r4   r5   r6   s   @r   r=   r=   J   s#   ø‡ € ÷&ð &÷.ð .÷:ö :r   r=   c                   ó~   a € ] tR t^at o RtV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR	 ltV 3R
 lR lt	Rt
V tR# )r   z«Tracks which arguments of an operator require symmetric memory allocation.

Used by Inductor during lowering to automatically realize tensors as
symmetric memory buffers.
c                ó$   <€ V ^8„  d   QhRS[ RR/# r9   r#   )r   r   s   "€r   r   ÚSymmMemArgsHolder.__annotate__h   rK   r   c                ó    € R V n         Wn        R # r   ©Ú_symm_mem_argsr"   r-   s   &&r   r   ÚSymmMemArgsHolder.__init__h   s   € Ø6:ˆÔØ%Žr   c                ó6   <€ V ^8„  d   QhRS[ S[,          RS[/# )r   Ú	arg_namesr   )Úlistr$   r	   )r   r   s   "€r   r   rb   l   s    ø€ ÷ .ñ .¡$¡s¥)ð .Ñ0Bñ .r   c                ó*  a € V'       g   \        R S P                   24      hS P                  eB   ^ RIpVP	                  \
        4      pVP                  RS P                  S P                  V4       \        V4      S n        R V 3R llp\        V4      # )z)Cannot register empty arg_names list for Nz>Overwriting symm_mem arg registration for %s. Old: %s, New: %sc                ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   Ú0SymmMemArgsHolder.register.<locals>.__annotate__   s   € ÷ 	'ñ 	'˜Dñ 	'r   c                  ó   <€ R S n         R # r   ©re   r   s   €r   rX   Ú.SymmMemArgsHolder.register.<locals>.deregister   s   ø€ Ø"&ˆDÖr   )	Ú
ValueErrorr"   re   ÚloggingÚ	getLoggerr/   Úwarningr   r	   )r   rh   rq   ÚlogrX   s   f&   r   r[   ÚSymmMemArgsHolder.registerl   sŠ   ø€ ßÜØ;¸D¿M¹M¸?ÐKóð ð ×ÑÒ*Ûà×#Ñ#¤HÓ-ˆCØ�K‰KØPØ—‘Ø×#Ñ#Øô	ô )¨Ó3ˆÔ÷	'ð 	'ô " *Ó-Ð-r   c                ó>   <€ V ^8„  d   QhRS[ S[,          R,          /# r   )r   r$   )r   r   s   "€r   r   rb   „   s   ø€ ÷ #ñ #‘Z¡•_ tÕ+ñ #r   c                ó   € V P                   # r   rn   r   s   &r   r&   ÚSymmMemArgsHolder.get„   s   € Ø×"Ñ"Ð"r   c                ó    <€ V ^8„  d   QhRS[ /# rC   )Úbool)r   r   s   "€r   r   rb   ‡   s   ø€ ÷ /ñ /™tñ /r   c                ó   € V P                   R J# r   rn   r   s   &r   Úis_registeredÚSymmMemArgsHolder.is_registered‡   s   € Ø×"Ñ"¨$Ð.Ð.r   c                ó&   <€ V ^8„  d   QhRS[ RS[/# )r   Úarg_namer   )r$   rz   )r   r   s   "€r   r   rb   Š   s   ø€ ÷ Sñ S©ð S±ñ Sr   c                óJ   € V P                   R J;'       d    WP                   9   # r   rn   )r   r   s   &&r   Úis_symm_mem_argÚ!SymmMemArgsHolder.is_symm_mem_argŠ   s$   € Ø×"Ñ"¨$Ð.×RÐR°8×?RÑ?RÑ3RÐRr   rd   N)r/   r0   r1   r2   r3   r   r[   r&   r|   r�   r4   r5   r6   s   @r   r   r   a   s>   ø‡ € ñ÷&ð &÷.ð .÷0#ð #÷/ð /÷Sö Sr   c                ód   € V ^8„  d   QhR\         R\        R\        R\         3,          R,          /# )r   ÚoprP   r   .N)r   rR   r   )r   s   "r   r   r   Ž   s2   € ÷ ñ ÜðÜ#'ðäˆc”3ˆhÕ˜$Õñr   c                 ór   € \         P                  V P                  4      P                  P                  V4      # r   )Ú	singletonr(   r1   r>   )r„   rP   s   &&r   Úfind_torch_dispatch_ruler‡   Ž   s-   € ô �>‰>˜"Ÿ/™/Ó*×?Ñ?×DÑDØóð r   c                ó@   € V ^8„  d   Qh/ ^ \         9   d
   \        ;R&   # )r   r†   )Ú__conditional_annotations__r
   )r   s   "r   r   r      s   € × $Ñ $÷^ ;Ò :Ô Ñ :ò_ %r   N)r
   r   r†   r   )r‰   Úcollections.abcr   Útypingr   Útorch.utils._ordered_setr   Úeffectsr   r<   r   Úutilsr	   Ú__all__r
   r†   r   r=   r   r‡   r   )r‰   s   @r   Ú<module>r�      s_   øðß $Ò $Ý å /å !Ý %Ý %ò€÷.ñ .ñ: $9Ó#:€	Ó :÷ñ ÷.:ñ :÷.*Sñ *S÷Zr   