o
    i
                     @   sR   d dl mZ d dlmZ d dlZG dd deZd dlmZ dZG dd	 d	Z	dS )
    )Enum)OptionalNc                   @   s   e Zd ZdZdS )
EffectTypeOrderedN)__name__
__module____qualname__ORDERED r
   r
   X/sda-disk/www/egybert/egybert_env/lib/python3.10/site-packages/torch/_library/effects.pyr      s    r   )RegistrationHandle)z8__torch__.torch.classes.quantized.Conv2dPackedParamsBasez8__torch__.torch.classes.quantized.Conv3dPackedParamsBasez;__torch__.torch.classes.quantized.EmbeddingPackedParamsBasez8__torch__.torch.classes.quantized.LinearPackedParamsBasez/__torch__.torch.classes.xnnpack.Conv2dOpContextz/__torch__.torch.classes.xnnpack.LinearOpContextz8__torch__.torch.classes.xnnpack.TransposeConv2dOpContextc                   @   sb   e Zd ZdZdefddZdddZedee	 fd	d
Z
e
jdd
 Z
dee	 defddZdS )EffectHolderz2A holder where one can register an effect impl to.qualnamec                 C   s   || _ |   d S N)r   _set_default_effect)selfr   r
   r
   r   __init__   s   zEffectHolder.__init__returnNc                 C   s   d | _ tjj| j\}}|d}t|dkr+t|dks&J d| d|\}}nd}|dkr3d S | d| }tj	||d urhtj
||}|jD ]}t|jtjrg|j }|tv r`qMtj| _  d S qMd S d S )	N.      zTried to split z' based on '.' but found more than 1 '.' higher_orderz::)_effecttorch_libraryutilsparse_namespacer   splitlen_C_get_operation_overload_get_schema	arguments
isinstancetype	ClassTypestrskip_classesr   r	   )r   	namespaceopnamer   overloadschemaargtype_strr
   r
   r   r   "   s0   




z EffectHolder._set_default_effectc                 C   s   | j S r   )r   r   r
   r
   r   effect@   s   zEffectHolder.effectc                 C   s   t d)NzUnable to directly set kernel.)RuntimeError)r   _r
   r
   r   r0   D   s   r0   c                    s   | _  fdd}t|}|S )zvRegister an effect

        Returns a RegistrationHandle that one can use to de-register this
        effect.
        c                      s       d S r   )r   r
   r/   r
   r   deregister_effectP   s   z0EffectHolder.register.<locals>.deregister_effect)r   r   )r   r0   r3   handler
   r/   r   registerH   s   zEffectHolder.register)r   N)r   r   r   __doc__r'   r   r   propertyr   r   r0   setterr   r5   r
   r
   r
   r   r      s    

r   )
enumr   typingr   r   r   torch._library.utilsr   r(   r   r
   r
   r
   r   <module>   s    