Ë
    †\;jÌ  ã                   ó<   — d dl Z  G d„ d«      Z ed«      Zd„ Zd„ Zy)é    Nc                   ó*   — e Zd ZdZddgZd„ Zd„ Zd„ Zy)ÚRegistryzA general registry object.ÚnameÚrulesc                 ó    — || _         i | _        y ©N)r   r   )Úselfr   s     úfG:\00. PROJECTS\API\Inventory\templateJSON\kerjaOCR\Lib\site-packages\paddle/decomposition/register.pyÚ__init__zRegistry.__init__   s   € ØˆŒ	Øˆ�
ó    c                 ó¦   — t        |t        «      sJ ‚t        j                  |«      sJ ‚|| j                  vsJ d|› d�«       ‚|| j                  |<   y )Nzname "z"" should not be registered before.)Ú
isinstanceÚstrÚinspectÚ
isfunctionr   )r	   Úop_typeÚrules      r
   ÚregisterzRegistry.register   s\   € Ü˜'¤3Ô'Ð'Ð'Ü×!Ñ! $Ô'Ð'Ð'à˜4Ÿ:™:Ñ%ð	@à�G�9Ð>Ð?ó	@Ø%à"ˆ�
‰
�7Òr   c                 ó8   — | j                   j                  |«      S r   )r   Úget)r	   r   s     r
   ÚlookupzRegistry.lookup"   s   € Ø�z‰z�~‰~˜gÓ&Ð&r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__r   r   r   © r   r
   r   r      s   „ Ù$à˜Ð!€Iòò#ó'r   r   Údecompositionc                 ób   ‡ — t        ‰ t        «      st        dt        ‰ «      › d�«      ‚ˆ fd„}|S )ap  
    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   •— t         j                  ‰| «       | S r   )Ú_decomposition_opsr   )Úfr   s    €r
   Úwrapperz register_decomp.<locals>.wrapperA   s   ø€ Ü×#Ñ# G¨QÔ/Øˆr   )r   r   Ú	TypeErrorÚtype)r   r$   s   ` r
   Úregister_decompr'   )   s4   ø€ ô* �gœsÔ#ÜÐ7¼¸W»°ÀaÐHÓIÐIôð €Nr   c                 ó0   — t         j                  | «      }|S r   )r"   r   )r   Ú
_lowerrules     r
   Úget_decomp_ruler*   H   s   € Ü#×*Ñ*¨7Ó3€JØÐr   )r   r   r"   r'   r*   r   r   r
   Ú<module>r+      s+   ðó ÷'ñ 'ñ* ˜oÓ.Ð òó>r   