o
    j9:j
                     @   sF   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 )	    )EnumNc                   @   s   e Zd ZdZdS )
EffectTypeOrderedN)__name__
__module____qualname__ORDERED r	   r	   ]/home/nk/hobo-godmode/plappi-mvp/.venv/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dB fd	d
Z	e	j
dd
 Z	dedB 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r&t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AssertionError_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   !   s2   




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   r0   setterr   r5   r	   r	   r	   r
   r      s    

r   )enumr   r   r   torch._library.utilsr   r(   r   r	   r	   r	   r
   <module>   s    