§
    2@Äjx  ã                   ó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       úJC:\Projects\Historical\venv\Lib\site-packages\numba/np/ufunc/ufunc_base.pyÚ__init__zUfuncLowererBase.__init__   s-   € ØˆŒ
Ø$8ˆÔ!Ø$�n UÑ+Ô+ˆŒØˆŒ	ˆ	ˆ	ó    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ÐA¨SˆdŒn˜d CÐ(Ð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ÔCˆIÝŒyˆÝŒ{ˆàˆw˜œœÑ'¨4¨'°D´J´OÑ*CÑCˆØˆw˜œœÑ'ˆØ×"Ò"ØAÐAÐAÐA°T¸4°LÐ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ÔLˆDØˆ|Ø!�zÝ ¤¨d¬lÑ :Ñ;Ô;Ð<M½SÀÑ=MÔ=MÐ<MÔNˆKØÔ)Ô3×9Ò9Ñ;Ô;ð 	!ð 	!‰IˆC�Ø×#Ò# K°Ñ5Ô5ð !Ø˜D�yÐ Ð Ð ð!àˆ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   