
    קgN
                         U d dl mZ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e         fdZdS )    )CallableOptional   )FakeImplHolder)RegistrationHandle)SimpleLibraryRegistrySimpleOperatorEntry	singletonc                   (    e Zd ZdZd ZdeddfdZdS )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.
    c                     i | _         d S N_dataselfs    Z/var/www/html/ai-engine/env/lib/python3.11/site-packages/torch/_library/simple_registry.py__init__zSimpleLibraryRegistry.__init__   s    


    qualnamereturnr	   c                 \    || j         vrt          |          | j         |<   | j         |         S r   )r   r	   r   r   s     r   findzSimpleLibraryRegistry.find   s0    4:%%#6x#@#@DJx z(##r   N)__name__
__module____qualname____doc__r   strr    r   r   r   r      sP           $S $%: $ $ $ $ $ $r   r   r
   c                   4    e Zd ZdZdefdZed             ZdS )r	   zThis is 1:1 to an operator overload.

    The fields of SimpleOperatorEntry are Holders where kernels can be
    registered to.
    r   c                 d    || _         t          |          | _        t          |          | _        d S r   )r   r   	fake_implGenericTorchDispatchRuleHoldertorch_dispatch_rulesr   s     r   r   zSimpleOperatorEntry.__init__.   s1    %)7)A)A*844 	!!!r   c                     | j         S r   )r"   r   s    r   abstract_implz!SimpleOperatorEntry.abstract_impl6   s
    ~r   N)r   r   r   r   r   r   propertyr&   r   r   r   r	   r	   '   sT         
 
 
 
 
   X  r   r	   c                   .    e Zd Zd ZdededefdZd ZdS )r#   c                 "    i | _         || _        d S r   )r   r   r   s     r   r   z'GenericTorchDispatchRuleHolder.__init__<   s    
 r   torch_dispatch_classfuncr   c                                                      rt           d j                   | j        <    fd}t	          |          S )Nz8 already has a `__torch_dispatch__` rule registered for c                       j         = d S r   r   r   r*   s   r   
deregisterz;GenericTorchDispatchRuleHolder.register.<locals>.deregisterI   s    
/000r   )r   RuntimeErrorr   r   r   )r   r*   r+   r/   s   ``  r   registerz'GenericTorchDispatchRuleHolder.register@   s     99)** 	'ppaeanpp   ,0
'(	1 	1 	1 	1 	1 	1 "*---r   c                 8    | j                             |d           S r   )r   getr.   s     r   r   z#GenericTorchDispatchRuleHolder.findN   s    z~~2D999r   N)	r   r   r   r   typer   r   r1   r   r   r   r   r#   r#   ;   s^        ! ! !.$(.08.	. . . .: : : : :r   r#   r*   r   c                 p    t                               | j                  j                            |          S r   )r
   r   r   r$   )opr*   s     r   find_torch_dispatch_ruler7   R   s.    >>"/**?DD  r   N)typingr   r   r"   r   utilsr   __all__r   r
   __annotations__r	   r#   r4   r7   r   r   r   <module>r<      s   % % % % % % % % % % % % % % % % % % % % % H
G
G$ $ $ $ $ $ $ $2 $9#8#:#:	  : : :       (: : : : : : : :.t @R      r   