
    Αi                     <    S SK r  " S S5      r\" S5      rS rS rg)    Nc                   2    \ rS rSrSrSS/rS rS rS rSr	g	)
Registry   zA general registry object.namerulesc                     Xl         0 U l        g Nr   r   )selfr   s     ]/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddle/decomposition/register.py__init__Registry.__init__   s    	
    c                     [        U[        5      (       d   e[        R                  " U5      (       d   eXR                  ;  d   SU S35       eX R                  U'   g )Nzname "z"" should not be registered before.)
isinstancestrinspect
isfunctionr   )r   op_typerules      r   registerRegistry.register   s^    '3''''!!$''''jj( 	
WI?@	
( #

7r   c                 8    U R                   R                  U5      $ r	   )r   get)r   r   s     r   lookupRegistry.lookup"   s    zz~~g&&r   r
   N)
__name__
__module____qualname____firstlineno____doc__	__slots__r   r   r   __static_attributes__ r   r   r   r      s    $!I#'r   r   decompositionc                 n   ^  [        T [        5      (       d  [        S[        T 5       S35      eU 4S jnU$ )a4  
Decorator for registering the lower function for an original op into sequence of primitive ops.

Args:
    op_type(str): The op name

Returns:
    wrapper: Inner wrapper function

Examples:
    .. code-block:: python

        >>> from paddle.decomposition import register
        >>> @register.register_decomp('softmax')
        >>> def softmax(x, axis):
        ...     molecular = exp(x)
        ...     denominator = broadcast_to(sum(molecular, axis=axis, keepdim=True), x.shape)
        ...     res = divide(molecular, denominator)
        ...     return res
zop_type must be str, but got .c                 4   > [         R                  TU 5        U $ r	   )_decomposition_opsr   )fr   s    r   wrapper register_decomp.<locals>.wrapperA   s    ##GQ/r   )r   r   	TypeErrortype)r   r+   s   ` r   register_decompr/   )   s7    * gs##7WaHII Nr   c                 0    [         R                  U 5      nU$ r	   )r)   r   )r   
_lowerrules     r   get_decomp_ruler2   H   s    #**73Jr   )r   r   r)   r/   r2   r$   r   r   <module>r3      s+    ' '* o. >r   