
    J/Ph                     R    d dl mZ d dlmZ  G d d          Z G d d          ZdS )    )numpy_support)typesc                       e Zd ZdZd Zd ZdS )UfuncLowererBasezHCallable class responsible for lowering calls to a specific gufunc.
    c                 P    || _         || _         ||          | _        g | _        d S N)ufuncmake_ufunc_kernel_fnkernellibs)selfr	   make_kernel_fnr
   s       Y/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/np/ufunc/ufunc_base.py__init__zUfuncLowererBase.__init__   s-    
$8!$nU++			    c                 J    |                      ||||| j        | j                  S r   )r
   r	   r   )r   contextbuildersigargss        r   __call__zUfuncLowererBase.__call__   s.    (('3)-T[B B 	Br   N)__name__
__module____qualname____doc__r   r    r   r   r   r      sA           B B B B Br   r   c                   *   e Zd Zed             Zed             Zed             Zed             Zed             Zed             Z	ed             Z
ed             Zed	             Zed
             Zed             Zed             Zd ZddZd ZdS )	UfuncBasec                     | j         j        S r   )r	   ninr   s    r   r    zUfuncBase.nin   s    z~r   c                     | j         j        S r   )r	   noutr!   s    r   r#   zUfuncBase.nout   s    zr   c                     | j         j        S r   )r	   nargsr!   s    r   r%   zUfuncBase.nargs       zr   c                     | j         j        S r   )r	   ntypesr!   s    r   r(   zUfuncBase.ntypes!       z  r   c                     | j         j        S r   )r	   r   r!   s    r   r   zUfuncBase.types%   r&   r   c                     | j         j        S r   )r	   identityr!   s    r   r,   zUfuncBase.identity)       z""r   c                     | j         j        S r   )r	   	signaturer!   s    r   r/   zUfuncBase.signature-   s    z##r   c                     | j         j        S r   )r	   
accumulater!   s    r   r1   zUfuncBase.accumulate1   s    z$$r   c                     | j         j        S r   )r	   atr!   s    r   r3   zUfuncBase.at5   s    z}r   c                     | j         j        S r   )r	   outerr!   s    r   r5   zUfuncBase.outer9   r&   r   c                     | j         j        S r   )r	   reducer!   s    r   r7   zUfuncBase.reduce=   r)   r   c                     | j         j        S r   )r	   reduceatr!   s    r   r9   zUfuncBase.reduceatA   r-   r   c                 R    t          | j        j                  dk    sJ d| _        dS )zI
        Disable the compilation of new signatures at call time.
        r   TN)len_dispatcher	overloads_frozenr!   s    r   disable_compilezUfuncBase.disable_compileE   s.    
 4#-..2222r   Nc                     | j         j        j        }t          j        }t          j        }|f j        j        z  |f j        j        z  z   }|f j        j        z  }|	                     fd||fD                        dS )a4  
        Install an implementation function for a GUFunc/DUFunc object in the
        given target context.  If no target context is given, then
        _install_cg() installs into the target context of the
        dispatcher object (should be same default context used by
        jit() and njit()).
        Nc                 $    g | ]}j         |fS r   )	_lower_me).0r   r   s     r   
<listcomp>z)UfuncBase._install_cg.<locals>.<listcomp>]   s"    AAASdndC(AAAr   )
r<   targetdescrtarget_contextr   AnyArrayr	   r    r#   insert_func_defn)r   	targetctx_any_arrsig0sig1s   `     r   _install_cgzUfuncBase._install_cgM   s     (4CIy{w'4'DJO*CCw'""AAAAT4LAAA	C 	C 	C 	C 	Cr   c                 (   | j         rJt          j        | |          }|dS t          |j        |j        z             dt          |                   }| j        j        	                                D ]!\  }}| 
                    ||          r||fc S "dS )a  
        Given a tuple of element-wise argument types, find a matching
        signature in the dispatcher.

        Return a 2-tuple containing the matching signature, and
        compilation result.  Will return two None's if no matching
        signature was found.
        N)NN)r>   r   ufunc_find_matching_looptupleinputsoutputsr;   r<   r=   itemsmatch_signature)r   ewise_typesloopr   cress        r   find_ewise_functionzUfuncBase.find_ewise_function_   s     < 	O 9$LLD|!zdl :;;<MS=M=M<MNK)399;; 	! 	!IC##K55 !Dy   !zr   r   )r   r   r   propertyr    r#   r%   r(   r   r,   r/   r1   r3   r5   r7   r9   r?   rO   rZ   r   r   r   r   r      s         X   X     X  ! ! X!     X  # # X# $ $ X$ % % X%   X     X  ! ! X! # # X#  C C C C$    r   r   N)numba.npr   
numba.corer   r   r   r   r   r   <module>r^      s    " " " " " "      B B B B B B B B^ ^ ^ ^ ^ ^ ^ ^ ^ ^r   