§
    2@ÄjÎ:  ã                   ó`  — d dl Z d dlZd dlmZ d dlmZmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZmZ d d	lmZ d d
lmZmZ d dlmZmZmZmZmZ d dlmZ d dlmZ d dl m!Z! d dl"m#Z#m$Z$ d dl%m&Z&m'Z' d dl(m)Z)  eddddd¦  «        Z* G d„ de*e¦  «        Z+ G d„ de
¦  «        Z, e,¦   «         Z- G d„ dej.        ¦  «        Z/e/eed         <   d„ Z0d„ Z1d „ Z2ej3        ej4        ej5        ej6        d!œZ7d"„ Z8ed#„ ¦   «         Z9 G d$„ d%e:¦  «        Z; G d&„ d'e;¦  «        Z< G d(„ d)e;¦  «        Z=d*„ Z>dS )+é    N)Úcontextmanager)ÚconfigÚtargetconfig)Újit)ÚTargetDescriptor)Ú	is_jitted)ÚNumbaDeprecationWarning)ÚTargetOptionsÚinclude_default_options)Ú
cpu_target)Údispatcher_registryÚtarget_registry)ÚutilsÚtypesÚ	serializeÚcompilerÚsigutils)Úas_dtype)Ú	_internal)Úparse_signature)Úbuild_ufunc_wrapperÚbuild_gufunc_wrapper)ÚFunctionCacheÚ	NullCache)Úglobal_compiler_lockÚnopythonÚforceobjÚboundscheckÚfastmathÚwritable_argsc                   ó   — e Zd Zd„ ZdS )ÚUFuncTargetOptionsc                 ój  — |                      d¦  «        sd|_        |                      d¦  «        sd|_        |                     dd¬¦  «         |                      d¦  «        st          j        |_        |                      d¦  «        s|j        |_        d|_        |                     d¦  «         d S )	NÚenable_pyobjectTÚenable_loopliftÚnrt)ÚdefaultÚ	debuginfor   r   )	Úis_setr$   r%   Úinherit_if_not_setr   ÚDEBUGINFO_DEFAULTr(   r   Úenable_pyobject_looplift)ÚselfÚflagsÚoptionss      úLC:\Projects\Historical\venv\Lib\site-packages\numba/np/ufunc/ufuncbuilder.pyÚfinalizezUFuncTargetOptions.finalize#   s³   € Ø�|Š|Ð-Ñ.Ô.ð 	)Ø$(ˆEÔ!à�|Š|Ð-Ñ.Ô.ð 	)Ø$(ˆEÔ!à× Ò  °Ð Ñ5Ô5Ð5à�|Š|˜KÑ(Ô(ð 	7Ý$Ô6ˆEŒOà�|Š|˜MÑ*Ô*ð 	0Ø %¤ˆEÔà)-ˆÔ&à× Ò  Ñ,Ô,Ð,Ð,Ð,ó    N)Ú__name__Ú
__module__Ú__qualname__r1   © r2   r0   r"   r"   !   s#   € € € € € ð-ð -ð -ð -ð -r2   r"   c                   óN   ‡ — e Zd ZeZˆ fd„Zed„ ¦   «         Zed„ ¦   «         Zˆ xZ	S )ÚUFuncTargetc                 óJ   •— t          ¦   «                              d¦  «         d S )NÚufunc)ÚsuperÚ__init__)r-   Ú	__class__s    €r0   r<   zUFuncTarget.__init__:   s!   ø€ Ý‰Œ×Ò˜Ñ!Ô!Ð!Ð!Ð!r2   c                 ó   — t           j        S ©N)r   Útyping_context©r-   s    r0   r@   zUFuncTarget.typing_context=   ó   € åÔ(Ð(r2   c                 ó   — t           j        S r?   )r   Útarget_contextrA   s    r0   rD   zUFuncTarget.target_contextA   rB   r2   )
r3   r4   r5   r"   r/   r<   Úpropertyr@   rD   Ú__classcell__)r=   s   @r0   r8   r8   7   ss   ø€ € € € € Ø €Gð"ð "ð "ð "ð "ð ð)ð )ñ „Xð)ð ð)ð )ñ „Xð)ð )ð )ð )ð )r2   r8   c                   óN   — e Zd ZdZeZd	d„Zd„ Zed„ ¦   «         Z	d„ Z
d
d„Zd„ ZdS )ÚUFuncDispatcherzK
    An object handling compilation of various signatures for a ufunc.
    Nc                 ó–   — |€i }|€i }|| _         t          j        ¦   «         | _        || _        || _        t          ¦   «         | _        d S r?   )Úpy_funcr   Ú
UniqueDictÚ	overloadsÚtargetoptionsÚlocalsr   Úcache)r-   rJ   rN   rM   s       r0   r<   zUFuncDispatcher.__init__O   sL   € Øˆ>ØˆFØÐ ØˆMØˆŒÝÔ)Ñ+Ô+ˆŒØ*ˆÔØˆŒÝ‘[”[ˆŒ
ˆ
ˆ
r2   c                 óD   — t          | j        | j        | j        ¬¦  «        S )ú4
        NOTE: part of ReduceMixin protocol
        )ÚpyfuncrN   rM   )ÚdictrJ   rN   rM   rA   s    r0   Ú_reduce_stateszUFuncDispatcher._reduce_statesZ   s+   € õ Ø”<Ø”;ØÔ,ð
ñ 
ô 
ð 	
r2   c                 ó   —  | |||¬¦  «        S )rQ   )rJ   rN   rM   r6   )ÚclsrR   rN   rM   s       r0   Ú_rebuildzUFuncDispatcher._rebuildd   s   € ð
 ˆs˜6¨&ÀÐNÑNÔNÐNr2   c                 ó8   — t          | j        ¦  «        | _        d S r?   )r   rJ   rO   rA   s    r0   Úenable_cachingzUFuncDispatcher.enable_cachingk   s   € Ý" 4¤<Ñ0Ô0ˆŒ
ˆ
ˆ
r2   c                 ó€  — |€i }| j                              ¦   «         }|                     |¦  «         | j                             ¦   «         }|                     |¦  «         t	          j        ¦   «         }| j        j                             ||¦  «         d|_	        d|_
        d|_        |                      |||¦  «        S )NTÚnumpyF)rN   ÚcopyÚupdaterM   r   ÚFlagsÚtargetdescrr/   Úparse_as_flagsÚno_cpython_wrapperÚerror_modelr%   Ú_compile_core)r-   ÚsigrN   rM   ÚlocsÚtoptr.   s          r0   ÚcompilezUFuncDispatcher.compilen   s²   € Øˆ>ØˆFØŒ{×ÒÑ!Ô!ˆØ�Š�FÑÔÐàÔ!×&Ò&Ñ(Ô(ˆØ�Š�MÑ"Ô"Ð"å”Ñ Ô ˆØÔÔ ×/Ò/°°tÑ<Ô<Ð<à#'ˆÔ Ø#ˆÔð !&ˆÔà×!Ò! # u¨fÑ5Ô5Ð5r2   c                 óä  ‡ ‡	— ‰ j         j        }‰ j         j        }t          ˆ	ˆ fd„¦   «         }t          5  t          j        ¦   «                              |                     ¦   «         ¦  «        5   |¦   «         5  ‰ j	         
                    ||¦  «        Š	‰	�&‰	cddd¦  «         cddd¦  «         cddd¦  «         S t          j        |¦  «        \  }}t          j        ||‰ j        ||||¬¦  «        Š	‰ j	                             |‰	¦  «         ‰	cddd¦  «         cddd¦  «         cddd¦  «         S # 1 swxY w Y   	 ddd¦  «         n# 1 swxY w Y   ddd¦  «         dS # 1 swxY w Y   dS )z•
        Trigger the compiler on the core function or load a previously
        compiled version from the cache.  Returns the CompileResult.
        c               3   ó˜   •K  — 	 d V — ‰j                              ‰j        ¦  «        } | €‰‰j         ‰j        <   d S d S # t          $ r ‚ w xY wr?   )rL   ÚgetÚ	signatureÚ	Exception)ÚexistsÚcresr-   s    €€r0   Ústore_overloads_on_successzAUFuncDispatcher._compile_core.<locals>.store_overloads_on_success‹   sn   øè è € ð:Ø���ð œ×+Ò+¨D¬NÑ;Ô;�Ø�>Ø59�D”N 4¤>Ñ2Ð2Ð2ð "�>øõ	 ð ð ð Øðøøøs	   …= ½A	N)ÚargsÚreturn_typer.   rN   )r_   r@   rD   r   r   r   ÚConfigStackÚenterr\   rO   Úload_overloadr   Únormalize_signaturer   Úcompile_extrarJ   Úsave_overload)
r-   rd   r.   rN   Ú	typingctxÚ	targetctxro   rp   rq   rn   s
   `        @r0   rc   zUFuncDispatcher._compile_coreƒ   sÍ  øø€ ð
 Ô$Ô3ˆ	ØÔ$Ô3ˆ	å	ð		:ð 		:ð 		:ð 		:ð 		:ñ 
Œð		:õ "ð 	 ð 	 ÝÔ)Ñ+Ô+×1Ò1°%·*²*±,´,Ñ?Ô?ð  ð  Ø/Ð/Ñ1Ô1ð  ð  àœ:×3Ò3°C¸ÑCÔC�DØÐ'Ø#ð	 ð  ð  ð  ñ  ô  ð  ð ð  ð  ð  ñ  ô  ð  ð	 ð 	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 õ )1Ô(DÀSÑ(IÔ(IÑ%�D˜+Ý#Ô1°)¸YØ26´,ÀTØ>IØ8=ÀfðNñ Nô N�Dð ”J×,Ò,¨S°$Ñ7Ô7Ð7àð! ð  ð  ð  ñ  ô  ð  ð ð  ð  ð  ñ  ô  ð  ð	 ð 	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð ð  ð  ð  øøøð  ð  ð  ð  ð  ð ð  ð  ñ  ô  ð  ð  ð  ð  ð  ð  øøøð  ð  ð  ð  ð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð 	 ð 	 sr   µ9E%Á.EÁ9D5ÂEÂ$E%Â=AD5ÄEÄE%Ä5D9Ä9EÄ<D9Ä=EÅE%ÅE	ÅE%ÅE	ÅE%Å%E)Å,E))NNr?   )r3   r4   r5   Ú__doc__Úufunc_targetr_   r<   rT   ÚclassmethodrW   rY   rg   rc   r6   r2   r0   rH   rH   I   s˜   € € € € € ðð ð €Kð	!ð 	!ð 	!ð 	!ð
ð 
ð 
ð ðOð Oñ „[ðOð1ð 1ð 1ð6ð 6ð 6ð 6ð*' ð ' ð ' ð ' ð ' r2   rH   Únpyufuncc                 óV   —  | j         |fi |¤Ž}t          j        |¦  «        \  }}|||fS r?   )rg   r   ru   )Únb_funcrM   rd   rn   rp   rq   s         r0   Ú_compile_element_wise_functionr€   ²   s?   € ð ˆ7Œ?˜3Ð0Ð0 -Ð0Ð0€DÝ Ô4°SÑ9Ô9Ñ€Dˆ+Ø��{Ð"Ð"r2   c                 óx   — |€"| j         rt          d¦  «        ‚| j        j        }|t          j        k    sJ ‚ ||Ž S )z¼Given a compilation result, argument types, and a return type,
    build a valid Numba signature after validating that it doesn't
    violate the constraints for the compilation mode.
    Nz-return type must be specified for object mode)Ú
objectmodeÚ	TypeErrorrk   rq   r   Úpyobject)rn   rp   rq   s      r0   Ú_finalize_ufunc_signaturer…   º   sM   € ð
 ÐØŒ?ð 	5åÐKÑLÔLÐLàœ.Ô4ˆKà�%œ.Ò(Ð(Ð(Ð(Øˆ;˜ÐÐr2   c           	      ór  — | j         }| j        }| j        j        }t          5  t          ||||| j        | ¦  «        }|j                             |j        ¦  «        }ddd¦  «         n# 1 swxY w Y   d„ |j	        D ¦   «         }| 
                    t          |j        ¦  «        j        ¦  «         ||| j        fS )z�Build a wrapper for the ufunc loop entry point given by the
    compilation result object, using the element-wise signature.
    Nc                 ó6   — g | ]}t          |¦  «        j        ‘ŒS r6   )r   Únum)Ú.0Úas     r0   ú
<listcomp>z5_build_element_wise_ufunc_wrapper.<locals>.<listcomp>×   s    € Ð9Ð9Ð9 Q•˜!‘””Ð9Ð9Ð9r2   )rD   ÚlibraryÚfndescÚllvm_func_namer   r   r‚   Úget_pointer_to_functionÚnamerp   Úappendr   rq   rˆ   Úenvironment)rn   rk   ÚctxrŒ   ÚfnameÚinfoÚptrÚ	dtypenumss           r0   Ú!_build_element_wise_ufunc_wrapperr˜   Ê   sö   € ð Ô
€CØŒl€GØŒKÔ&€Eå	ð >ð >Ý" 7¨C°¸	Ø#'¤?°Dñ:ô :ˆàŒl×2Ò2°4´9Ñ=Ô=ˆð>ð >ð >ñ >ô >ð >ð >ð >ð >ð >ð >øøøð >ð >ð >ð >ð
 :Ð9¨)¬.Ð9Ñ9Ô9€IØ×Ò•X˜iÔ3Ñ4Ô4Ô8Ñ9Ô9Ð9Ø�c˜4Ô+Ð+Ð+s   ¢9A'Á'A+Á.A+)r   é   NÚreorderablec                 ód   — 	 t           |          } n # t          $ r t          d| ›�¦  «        ‚w xY w| S )z]
    Parse an identity value and return the corresponding low-level value
    for Numpy.
    zInvalid identity value )Ú_identitiesÚKeyErrorÚ
ValueError)Úidentitys    r0   Úparse_identityr    ä   sM   € ð
DÝ˜xÔ(ˆˆøÝð Dð Dð DÝˆj¸¸ÐBÑCÔCÐCðDøøøà€Os   ‚ �-c               #   ó¢   K  — t          j        ¦   «         5  t          j        dt          d¬¦  «         dV — ddd¦  «         dS # 1 swxY w Y   dS )z÷This suppresses the NumbaDeprecationWarning that occurs through the use
    of `jit` without the `nopython` kwarg. This use of `jit` occurs in a few
    places in the `{g,}ufunc` mechanism in Numba, predominantly to wrap the
    "kernel" function.Úignorez3.*The 'nopython' keyword argument was not supplied*)ÚcategoryÚmessageN)ÚwarningsÚcatch_warningsÚfilterwarningsr	   r6   r2   r0   Ú3_suppress_deprecation_warning_nopython_not_suppliedr¨   ð   s®   è è € õ 
Ô	 Ñ	"Ô	"ð ð ÝÔ Ý)@ð*=ð	@ñ 	@ô 	@ð 	@ð 	ˆˆˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   –!AÁAÁAc                   ó   — e Zd Zdd„Zd„ ZdS )Ú_BaseUFuncBuilderNc                 óø   — t          | d¦  «        r| j        }n| j        j        }t          | j        ||¦  «        \  }}}|                      |||¦  «        }| j                             |¦  «         || j        |<   |S )NrM   )ÚhasattrrM   r   r€   Ú_finalize_signatureÚ_sigsr‘   Ú_cres)r-   rd   rM   rn   rp   rq   s         r0   Úaddz_BaseUFuncBuilder.add  s„   € Ý�4˜Ñ)Ô)ð 	7Ø Ô.ˆMˆMà œLÔ6ˆMÝ"@ØŒL˜-¨ñ#.ô #.Ñˆˆd�Kà×&Ò& t¨T°;Ñ?Ô?ˆØŒ
×Ò˜#ÑÔÐØˆŒ
�3‰Øˆr2   c                 ó   — dS )zI
        Disable the compilation of new signatures at call time.
        Nr6   rA   s    r0   Údisable_compilez!_BaseUFuncBuilder.disable_compile  s   € € € r2   r?   )r3   r4   r5   r°   r²   r6   r2   r0   rª   rª      s7   € € € € € ð
ð 
ð 
ð 
ðð ð ð ð r2   rª   c                   ó(   — e Zd Zdd„Zd„ Zd„ Zd„ ZdS )ÚUFuncBuilderNFc                 ó  — |€i }t          |¦  «        r|j        }|| _        t          |¦  «        | _        t	          ¦   «         5   t          dd|dœ|¤Ž|¦  «        | _        d d d ¦  «         n# 1 swxY w Y   g | _        i | _        d S )Nr}   ©Ú_targetrO   r6   )	r   rJ   r    rŸ   r¨   r   r   r®   r¯   )r-   rJ   rŸ   rO   rM   s        r0   r<   zUFuncBuilder.__init__  sè   € ØÐ ØˆMÝ�WÑÔð 	&Ø”oˆGØˆŒÝ& xÑ0Ô0ˆŒÝ@ÑBÔBð 	9ð 	9ð0�3ð 0 zØ%*ð0ð 0à!.ð0ð 0à07ñ9ô 9ˆDŒLð	9ð 	9ð 	9ñ 	9ô 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9øøøð 	9ð 	9ð 	9ð 	9ð ˆŒ
ØˆŒ
ˆ
ˆ
s   ÁA.Á.A2Á5A2c                 ó$   — t          |||¦  «        S )z^Slated for deprecation, use ufuncbuilder._finalize_ufunc_signature()
        instead.
        )r…   ©r-   rn   rp   rq   s       r0   r­   z UFuncBuilder._finalize_signature%  s   € õ )¨¨t°[ÑAÔAÐAr2   c                 ó²  — t           5  g }g }| j        st          d¦  «        ‚g }d }| j        D ]|}| j        |         }|                      ||¦  «        \  }}}|                     |¦  «         |                     t          |¦  «        ¦  «         |                     |j        |f¦  «         Œ}d gt          |¦  «        z  }	|€.t          j        | j        ¦  «        }
t          |
j        ¦  «        }nt          |j        j        ¦  «        }d}t          j        | j        j        | j        j        |||||	|| j        ¦	  «	        }|cd d d ¦  «         S # 1 swxY w Y   d S )NúNo definitionr™   )r   r   rƒ   r®   r¯   Úbuildr‘   ÚintrŒ   ÚlenÚinspectÚgetfullargspecrJ   rp   rk   r   Úfromfuncr3   rz   rŸ   )r-   Ú	dtypelistÚptrlistÚ	keepalivern   rd   r—   r–   ÚenvÚdatlistÚargspecÚinctÚoutctr:   s                 r0   Úbuild_ufunczUFuncBuilder.build_ufunc+  s¦  € Ý!ð $	ð $	ØˆIØˆGØ”<ð 1Ý Ñ0Ô0Ð0ð ˆIØˆDØ”zð 6ð 6�Ø”z #”�Ø&*§j¢j°°sÑ&;Ô&;Ñ#�	˜3 Ø× Ò  Ñ+Ô+Ð+Ø—’�s 3™xœxÑ(Ô(Ð(Ø× Ò  $¤,°Ð!4Ñ5Ô5Ð5Ð5à�f�s 7™|œ|Ñ+ˆGàˆ|Ý!Ô0°´Ñ>Ô>�Ý˜7œ<Ñ(Ô(��å˜4œ>Ô.Ñ/Ô/�ØˆEõ Ô&Ø”Ô% t¤|Ô';Ø˜ D¨%°Ø˜4œ=ñô ˆEð ðI$	ð $	ð $	ð $	ñ $	ô $	ð $	ð $	ð $	ð $	ð $	ð $	øøøð $	ð $	ð $	ð $	ð $	ð $	s   ˆD7EÅEÅEc                 ó"   — t          ||¦  «        S )z^Slated for deprecation, use
        ufuncbuilder._build_element_wise_ufunc_wrapper().
        )r˜   )r-   rn   rk   s      r0   r¼   zUFuncBuilder.buildR  s   € õ 1°°yÑAÔAÐAr2   )NFN)r3   r4   r5   r<   r­   rÊ   r¼   r6   r2   r0   r´   r´     s^   € € € € € ðð ð ð ðBð Bð Bð%ð %ð %ðNBð Bð Bð Bð Br2   r´   c                   ó<   — e Zd Z	 	 dd„Zd„ Zed„ ¦   «         Zd„ ZdS )	ÚGUFuncBuilderNFr6   c                 ó¬  ‡— |€i }|| _         t          |¦  «        | _        t          ¦   «         5   t	          d|¬¦  «        |¦  «        | _        d d d ¦  «         n# 1 swxY w Y   || _        t          |¦  «        \  | _        | _	        || _
        || _        g | _        i | _        t          |¦  «        Št          ˆfd„|D ¦   «         ¦  «        | _        d S )Nr}   r¶   c                 ó&   •— g | ]} ‰|¦  «        ‘ŒS r6   r6   )r‰   rŠ   Útransform_args     €r0   r‹   z*GUFuncBuilder.__init__.<locals>.<listcomp>l  s#   ø€ Ð#LÐ#LÐ#L¸ M M°!Ñ$4Ô$4Ð#LÐ#LÐ#Lr2   )rJ   r    rŸ   r¨   r   r   rk   r   ÚsinÚsoutrM   rO   r®   r¯   Ú_get_transform_argÚtupler    )r-   rJ   rk   rŸ   rO   rM   r    rÐ   s          @r0   r<   zGUFuncBuilder.__init__\  s&  ø€ àÐ ØˆMØˆŒÝ& xÑ0Ô0ˆŒÝ@ÑBÔBð 	Ið 	IØ?�3 z¸Ð?Ñ?Ô?ÀÑHÔHˆDŒLð	Ið 	Ið 	Iñ 	Iô 	Ið 	Ið 	Ið 	Ið 	Ið 	Ið 	Iøøøð 	Ið 	Ið 	Ið 	Ià"ˆŒÝ-¨iÑ8Ô8ÑˆŒ�$”)Ø*ˆÔØˆŒ
ØˆŒ
ØˆŒ
å*¨7Ñ3Ô3ˆÝ"Ð#LÐ#LÐ#LÐ#L¸mÐ#LÑ#LÔ#LÑMÔMˆÔÐÐs   ¯ AÁAÁ"Ac                 óˆ   — |j         s)|j        j        t          j        k    rt          d¦  «        ‚|€t          j        } ||Ž S )Nz(gufunc kernel must have void return type)r‚   rk   rq   r   Úvoidrƒ   r¹   s       r0   r­   z!GUFuncBuilder._finalize_signaturen  sG   € ØŒð 	H 4¤>Ô#=ÅÄÒ#KÐ#KÝÐFÑGÔGÐGàÐÝœ*ˆKàˆ{˜DÐ!Ð!r2   c                 ó<  — g }g }| j         st          d¦  «        ‚g }| j        D ]{}| j        |         }|                      |¦  «        \  }}}|                     |¦  «         |                     t          |¦  «        ¦  «         |                     |j        |f¦  «         Œ|d gt          |¦  «        z  }	t          | j	        ¦  «        }
t          | j
        ¦  «        }t          j        | j        j        | j        j        |||
||	|| j        | j        | j        ¦  «        }|S )Nr»   )r   rƒ   r®   r¯   r¼   r‘   r½   rŒ   r¾   rÑ   rÒ   r   rÁ   rJ   r3   rz   rŸ   rk   r    )r-   Ú	type_listÚ	func_listrÄ   rd   rn   r—   r–   rÅ   ÚdatalistÚninÚnoutr:   s                r0   rÊ   zGUFuncBuilder.build_ufuncw  s  € àˆ	Øˆ	ØŒ|ð 	-Ý˜OÑ,Ô,Ð,ð ˆ	Ø”:ð 	2ð 	2ˆCØ”:˜c”?ˆDØ"&§*¢*¨TÑ"2Ô"2ÑˆI�s˜CØ×Ò˜YÑ'Ô'Ð'Ø×Ò�S ™XœXÑ&Ô&Ð&Ø×Ò˜dœl¨CÐ0Ñ1Ô1Ð1Ð1à�6�C 	™NœNÑ*ˆå�$”(‰mŒmˆÝ�4”9‰~Œ~ˆõ Ô"ØŒLÔ! 4¤<Ô#7Ø�y # t¨XØ�t”} d¤n°dÔ6Hñ
ô 
ˆð
 ˆr2   c                 óf  — |j         }t          | j        || j        | j        | j        d¬¦  «        }|j        }|j                             |j	        ¦  «        }g }|j
        D ]M}t          |t          j        ¦  «        r|j        }n|}|                     t!          |¦  «        j        ¦  «         ŒN|||fS )zJ
        Returns (dtype numbers, function ptr, EnvironmentObject)
        F)rO   Ú
is_parfors)rk   r   rJ   rÑ   rÒ   rO   rÅ   rŒ   r�   r�   rp   Ú
isinstancer   ÚArrayÚdtyper‘   r   rˆ   )	r-   rn   rk   r•   rÅ   r–   r—   rŠ   Útys	            r0   r¼   zGUFuncBuilder.build”  sº   € ð
 ”Nˆ	Ý#ØŒL˜$ ¤¨$¬)Ø”*¨ð
ñ 
ô 
ˆð
 ŒhˆØŒl×2Ò2°4´9Ñ=Ô=ˆàˆ	Ø”ð 	/ð 	/ˆAÝ˜!�Uœ[Ñ)Ô)ð Ø”W��à�Ø×Ò�X b™\œ\Ô-Ñ.Ô.Ð.Ð.Ø˜#˜sÐ"Ð"r2   )NFNr6   )r3   r4   r5   r<   r­   r   rÊ   r¼   r6   r2   r0   rÍ   rÍ   Y  sp   € € € € € ð AFØ35ðNð Nð Nð Nð$"ð "ð "ð ðð ñ Ôðð8#ð #ð #ð #ð #r2   rÍ   c                 ó~   ‡ ‡‡— t          j        ‰ ¦  «        j        Šd„ t          ‰¦  «        D ¦   «         Šˆˆˆ fd„}|S )z-Return function that transform arg into indexc                 ó   — i | ]\  }}||“Œ	S r6   r6   )r‰   ÚiÚargs      r0   ú
<dictcomp>z&_get_transform_arg.<locals>.<dictcomp>¯  s   € Ð7Ð7Ð7™V˜Q �#�qÐ7Ð7Ð7r2   c                 óž   •— t          | t          ¦  «        r| S 	 ‰|          S # t          $ r  d| › d‰› d‰j        › �}t	          |¦  «        ‚w xY w)NzSpecified writable arg z not found in arg list z for function )rß   r½   r�   r5   ÚRuntimeError)ræ   Úmsgrp   Ú
pos_by_argrJ   s     €€€r0   rÐ   z)_get_transform_arg.<locals>.transform_arg±  s‰   ø€ Ý�c�3ÑÔð 	ØˆJð	$Ø˜c”?Ð"øÝð 	$ð 	$ð 	$ðA¨Sð Að AØðAð AØ*1Ô*>ðAð AˆCå˜sÑ#Ô#Ð#ð	$øøøs	   š" ¢*A)r¿   rÀ   rp   Ú	enumerate)rJ   rÐ   rp   rë   s   ` @@r0   rÓ   rÓ   ¬  s\   øøø€ åÔ! 'Ñ*Ô*Ô/€DØ7Ð7¥y°¡¤Ð7Ñ7Ô7€Jð	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð Ðr2   )?r¿   r¥   Ú
contextlibr   Ú
numba.corer   r   Únumba.core.decoratorsr   Únumba.core.descriptorsr   Únumba.core.extendingr   Únumba.core.errorsr	   Únumba.core.optionsr
   r   Únumba.core.registryr   Únumba.core.target_extensionr   r   r   r   r   r   r   Únumba.np.numpy_supportr   Únumba.np.ufuncr   Únumba.np.ufunc.sigparser   Únumba.np.ufunc.wrappersr   r   Únumba.core.cachingr   r   Únumba.core.compiler_lockr   Ú_options_mixinr"   r8   r{   ÚReduceMixinrH   r€   r…   r˜   ÚPyUFunc_ZeroÚPyUFunc_OneÚPyUFunc_NoneÚPyUFunc_ReorderableNonerœ   r    r¨   Úobjectrª   r´   rÍ   rÓ   r6   r2   r0   ú<module>r     so  ðð €€€Ø €€€Ø %Ð %Ð %Ð %Ð %Ð %à +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ø %Ð %Ð %Ð %Ð %Ð %Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø *Ð *Ð *Ð *Ð *Ð *Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø EÐ EÐ EÐ EÐ EÐ EÐ EÐ EØ *Ð *Ð *Ð *Ð *Ð *Ø LÐ LÐ LÐ LÐ LÐ LÐ LÐ LØ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BØ +Ð +Ð +Ð +Ð +Ð +Ø $Ð $Ð $Ð $Ð $Ð $Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø MÐ MÐ MÐ MÐ MÐ MÐ MÐ MØ 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9ð )Ð(ØØØØØñô €ð-ð -ð -ð -ð -˜¨ñ -ô -ð -ð,)ð )ð )ð )ð )Ð"ñ )ô )ð )ð ˆ{‰}Œ}€ða ð a ð a ð a ð a �iÔ+ñ a ô a ð a ðH 4CÐ �O JÔ/Ñ 0ð
#ð #ð #ðð ð ð ,ð ,ð ,ð& ÔØÔØ
Ô
 ØÔ4ð	ð €ð	ð 	ð 	ð ð
ð 
ñ „ð
ðð ð ð ð ˜ñ ô ð ð*ABð ABð ABð ABð ABÐ$ñ ABô ABð ABðHP#ð P#ð P#ð P#ð P#Ð%ñ P#ô P#ð P#ðfð ð ð ð r2   