
    i              	           U d dl mZ d dlmZmZ ddlmZ ddlmZ ddl	m
Z
 g dZ G d d	      Z e       Zeed
<    G d d      Z G d d      Zdededeedef      fdZy)    )Callable)AnyOptional   )EffectHolder)FakeImplHolder)RegistrationHandle)SimpleLibraryRegistrySimpleOperatorEntry	singletonc                   (    e Zd ZdZddZdeddfdZy)	r
   aJ  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.
    returnNc                     i | _         y N_dataselfs    X/var/www/html/engine/venv/lib/python3.12/site-packages/torch/_library/simple_registry.py__init__zSimpleLibraryRegistry.__init__   s	    57
    qualnamer   c                 v    | j                   j                  |d       }|t        |      x| j                   |<   }|S r   )r   getr   )r   r   ress      r   findzSimpleLibraryRegistry.find   s8    jjnnXt,;)<X)FFDJJx 3
r   r   N)__name__
__module____qualname____doc__r   strr    r   r   r
   r
      s     8S %: r   r
   r   c                   6    e Zd ZdZdeddfdZedefd       Zy)r   zThis is 1:1 to an operator overload.

    The fields of SimpleOperatorEntry are Holders where kernels can be
    registered to.
    r   r   Nc                 r    || _         t        |      | _        t        |      | _        t        |      | _        y r   )r   r   	fake_implGenericTorchDispatchRuleHoldertorch_dispatch_rulesr   effectr   r   s     r   r   zSimpleOperatorEntry.__init__0   s3    %)7)A*84 	! %1$:r   c                     | j                   S r   )r&   r   s    r   abstract_implz!SimpleOperatorEntry.abstract_impl:   s    ~~r   )	r   r   r    r!   r"   r   propertyr   r,   r#   r   r   r   r   )   s5    ; ; ; ~  r   r   c                   Z    e Zd ZdeddfdZdededef   defdZ	dede
edef      fd	Zy)
r'   r   r   Nc                      i | _         || _        y r   )r   r   r*   s     r   r   z'GenericTorchDispatchRuleHolder.__init__@   s    57
%r   torch_dispatch_classfunc.c                       j                        rt         d j                         | j                  <   d fd}t	        |      S )Nz8 already has a `__torch_dispatch__` rule registered for c                        j                   = y r   r   r   r0   s   r   
deregisterz;GenericTorchDispatchRuleHolder.register.<locals>.deregisterM   s    

/0r   r   )r   RuntimeErrorr   r   r	   )r   r0   r1   r5   s   ``  r   registerz'GenericTorchDispatchRuleHolder.registerD   sZ     99)*'((`aeanan`op  ,0

'(	1 "*--r   c                 :    | j                   j                  |d       S r   )r   r   r4   s     r   r   z#GenericTorchDispatchRuleHolder.findR   s    zz~~2D99r   )r   r   r    r"   r   typer   r   r	   r7   r   r   r#   r   r   r'   r'   ?   s\    & & &.$(.08c0B.	.: :(8CH;M2N :r   r'   opr0   r   .c                 r    t         j                  | j                        j                  j                  |      S r   )r   r   r    r(   )r:   r0   s     r   find_torch_dispatch_ruler<   V   s-     >>"//*??DD r   N)collections.abcr   typingr   r   effectsr   r&   r   utilsr	   __all__r
   r   __annotations__r   r'   r9   r<   r#   r   r   <module>rC      su    $   ! % % H 4 $9#:	  : ,: :.#'hsCx !r   