U
    ¿|eH…  ã                   @   sú  d Z ddlZ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mZmZmZ ddlmZmZmZ ddlmZ dd	lmZ dd
lmZ ej d¡ ZZeeejƒZej fd Z!dd„ Z"dd„ Z#dd„ Z$dd„ Z%dd„ Z&d‡dd„Z'dˆdd„Z(dd„ Z)dd„ Z*eed d!d d"d d"d d d"d d"d gƒZ+eed d#d d"d d"d d d"d d"d gƒZ,eedd d$d%d&d'd(d)d*d+d,d-gƒZ-eedd d.d/d0d1d2d3d4d5d6d7gƒZ.eej/ƒeej ƒd8d9„ ƒƒZ0eej1ej ƒd:d;„ ƒZ2eej3ej ƒd<d=„ ƒZ4ee5ej ƒd>d?„ ƒZ6d@dA„ Z7eej8fe!žŽ eej9fe!žŽ dBdC„ ƒƒZ:eej;fe!žŽ eej<fe!žŽ dDdE„ ƒƒZ=dFdG„ Z>eej?ej ej@ƒeejAej ej@ƒeej?ej ejBƒeejAej ejBƒdHdI„ ƒƒƒƒZCeej?ej@ej ƒeejAej@ej ƒeej?ejBej ƒeejAejBej ƒdJdK„ ƒƒƒƒZDeejEej ej@ƒeejFej ej@ƒeejGej ej@ƒeejHej ej@ƒeejEej ejBƒeejFej ejBƒeejGej ejBƒeejHej ejBƒdLdM„ ƒƒƒƒƒƒƒƒZIeejEfe!žŽ eejFfe!žŽ dNdO„ ƒƒZJeejGfe!žŽ dPdQ„ ƒZKdRdS„ ZLdTdU„ ZMdVdW„ ZNeMdXe	jOƒZPeMdYe	jQƒZReNdZƒZSeNd[ƒZTeNd\ƒZUeNd]ƒZVejWePfejXeRfejYeSfejZeTfej[eUfej\eVffD ]\Z]Z^ee]fe!žŽ e^ƒ �qHd^d_„ Z_d`da„ Z`dbdc„ Zaddde„ Zbdfdg„ ZcecdhƒZdecdiƒZeeej8ej/ej ƒeej9ej/ej ƒdjdk„ ƒƒZfeej8ej ej/ƒeej9ej ej/ƒdldm„ ƒƒZgeej;ej/ej ƒeej<ej/ej ƒdndo„ ƒƒZheej;ej/ej/ƒdpdq„ ƒZidrds„ ZjejdXƒZkejdYƒZlejdZƒZmejd[ƒZnejd\ƒZoejd]ƒZpejWekfejXelfejYemfejZenfej[eofej\epffD ]$\ZqZ^eeqfej/gd žŽ e^ƒ �q¨dtdu„ ZrerdvƒZserdwƒZtdxdy„ ZueudvƒZveudwƒZwdzd{„ ZxexdvƒZyexdwƒZzd|d}„ Z{e{dvƒZ|e{dwƒZ}d~d„ Z~eejej/ƒeejej ƒd€d�„ ƒƒZ€eej/ej@ƒeej ej@ƒd‚dƒ„ ƒƒZ�eej d„ƒeej/d„ƒd…d†„ ƒƒZ‚eejƒej/ej/ƒevƒ eejƒej ej ƒevƒ eej„ej/ej/ƒesƒ eej„ej ej ƒesƒ dS )‰z4
Implementation of operations on numpy timedelta64.
é    N)ÚConstant)ÚtypesÚcgutils)Úcreate_constant_array)Úlower_builtinÚlower_constantÚimpl_ret_untrackedÚ
lower_cast)Únpdatetime_helpersÚnumpy_supportÚnpyfuncs)Úoverload_method©Ú	IS_32BITS)ÚLoweringErroré@   é   c                 C   s   |   |tt|ƒ¡S )z2
    Multiply *val* by the constant *factor*.
    )Úmulr   ÚTIMEDELTA64©ÚbuilderÚvalÚfactor© r   úP/var/www/website-v5/atlas_env/lib/python3.8/site-packages/numba/np/npdatetime.pyÚscale_by_constant   s    r   c                 C   s   |   |tt|ƒ¡S )z0
    Divide *val* by the constant *factor*.
    )Úsdivr   r   r   r   r   r   Úunscale_by_constant"   s    r   c                 C   s   |   |tt|ƒ¡S )z(
    Add constant *const* to *val*.
    )Úaddr   r   )r   r   Úconstr   r   r   Úadd_constant)   s    r    c                 C   s@   t  |j|j¡}|dkr4d|j› d|j› �}t|ƒ‚t|||ƒS )zk
    Scale the timedelta64 *val* from *srcty* to *destty*
    (both numba.types.NPTimedelta instances)
    Nz cannot convert timedelta64 from ú to )r
   Úget_timedelta_conversion_factorÚunitr   r   )Úcontextr   r   ÚsrctyZdesttyr   Úmsgr   r   r   Úscale_timedelta0   s     ÿr'   c                 C   sd   t  |j|j¡}|dk	r(t|||ƒ|fS t  |j|j¡}|dk	rP|t|||ƒfS td||f ƒ‚dS )ze
    Scale either *left* or *right* to the other's unit, in order to have
    homogeneous units.
    Nzcannot normalize %r and %r)r
   r"   r#   r   ÚRuntimeError)r$   r   ÚleftÚrightZlefttyZrighttyr   r   r   r   Únormalize_timedeltas>   s     ÿ ÿr+   Úretc                 C   s    t j| t|d�}|  t|¡ |S )zM
    Allocate a NaT-initialized datetime64 (or timedelta64) result slot.
    ©Úname)r   Úalloca_oncer   ÚstoreÚNAT©r   r.   r,   r   r   r   Úalloc_timedelta_resultO   s    r3   c                 C   s   t j| tj d¡|d�}|S )z8
    Allocate an uninitialized boolean result slot.
    é   r-   )r   r/   ÚllvmliteÚirÚIntTyper2   r   r   r   Úalloc_boolean_resultX   s    r8   c                 C   s   |   d|t¡S )z?
    Return a predicate which is true if *val* is not NaT.
    ú!=)Úicmp_unsignedr1   )r   r   r   r   r   Ú
is_not_nat`   s    r;   c                 C   sF   t |ƒdkst‚t| |d ƒ}|dd… D ]}|  |t| |ƒ¡}q*|S )zH
    Return a predicate which is true if all of *vals* are not NaT.
    r4   r   N)ÚlenÚAssertionErrorr;   Úand_)r   ÚvalsÚpredr   r   r   r   Úare_not_natg   s
    rA   é   é   é   é   é;   éZ   éx   é—   éµ   éÔ   éó   i  i0  iN  é<   é[   éy   é˜   é¶   éÕ   éô   i  i1  iO  c                 C   s   t | tj¡ƒS ©N)Ú
DATETIME64ÚastypeÚnpÚint64)r$   r   ÚtyÚpyvalr   r   r   Údatetime_constant€   s    r[   c                 C   s   |d }t | ||j|ƒS ©Nr   )r   Úreturn_type©r$   r   ÚsigÚargsÚresr   r   r   Útimedelta_pos_implˆ   s    rb   c                 C   s   |  |d ¡}t| ||j|ƒS r\   )Únegr   r]   r^   r   r   r   Útimedelta_neg_implŽ   s    rd   c           	   
   C   sˆ   |\}t |ƒ}| t ||¡¡�H\}}|� | | |¡|¡ W 5 Q R X |� | ||¡ W 5 Q R X W 5 Q R X | |¡}t| ||j|ƒS rT   )	r3   Úif_elser   Úis_scalar_negr0   rc   Úloadr   r]   )	r$   r   r_   r`   r   r,   ÚthenÚ	otherwisera   r   r   r   Útimedelta_abs_impl”   s     
rj   c                 C   sð   |\}t |ƒ}ttdƒ}| | d||¡¡�¤\}}|� | ttdƒ|¡ W 5 Q R X |�n | | d||¡¡�N\}	}
|	� | ttdƒ|¡ W 5 Q R X |
� | ttdƒ|¡ W 5 Q R X W 5 Q R X W 5 Q R X W 5 Q R X | |¡}t| ||j	|ƒS )z
    np.sign(timedelta64)
    r   ú>r4   ú==éÿÿÿÿ)
r3   r   r   re   Úicmp_signedr0   r:   rg   r   r]   )r$   r   r_   r`   r   r,   ÚzeroÚgt_zeroZle_zeroZeq_zeroÚlt_zerora   r   r   r   Útimedelta_sign_impl¡   s     
:
rr   c           
   	   C   sŽ   |\}}|j \}}t|ƒ}t |t|||gƒ¡�> t| ||||jƒ}t| ||||jƒ}| | ||¡|¡ W 5 Q R X | 	|¡}	t
| ||j|	ƒS rT   )r`   r3   r   Ú	if_likelyrA   r'   r]   r0   r   rg   r   ©
r$   r   r_   r`   ÚvaÚvbÚtaÚtbr,   ra   r   r   r   Útimedelta_add_impl·   s    

ry   c           
   	   C   sŽ   |\}}|j \}}t|ƒ}t |t|||gƒ¡�> t| ||||jƒ}t| ||||jƒ}| | ||¡|¡ W 5 Q R X | 	|¡}	t
| ||j|	ƒS rT   )r`   r3   r   rs   rA   r'   r]   r0   Úsubrg   r   rt   r   r   r   Útimedelta_sub_implÅ   s    

r{   c           	   	   C   sŒ   t |ƒ}t |t||ƒ¡�b t|tjƒrP| ||j¡}| 	||¡}t
| ||ƒ}n| ||¡}t| ||||ƒ}| ||¡ W 5 Q R X | |¡S rT   )r3   r   rs   r;   Ú
isinstancer   ÚFloatÚsitofpÚtypeÚfmulÚ_cast_to_timedeltar   r'   r0   rg   )	r$   r   Útd_argÚtd_typeÚ
number_argÚnumber_typer]   r,   r   r   r   r   Ú_timedelta_times_numberÓ   s    r†   c                 C   s:   t | ||d |jd |d |jd |jƒ}t| ||j|ƒS )Nr   r4   ©r†   r`   r]   r   r^   r   r   r   Útimedelta_times_numberä   s       þrˆ   c                 C   s:   t | ||d |jd |d |jd |jƒ}t| ||j|ƒS ©Nr4   r   r‡   r^   r   r   r   Únumber_times_timedeltaï   s       þrŠ   c              	   C   sÐ   |\}}|j d }t|ƒ}| t||ƒ| t ||¡¡¡}t ||¡�j t|t	j
ƒr|| ||j¡}	| |	|¡}	t| ||	ƒ}	n| ||¡}	t| ||	|j d |jƒ}	| |	|¡ W 5 Q R X | |¡}
t| ||j|
ƒS r‰   )r`   r3   r>   r;   Únot_r   Úis_scalar_zero_or_nanrs   r|   r   r}   r~   r   Úfdivr�   r   r'   r]   r0   rg   r   )r$   r   r_   r`   r‚   r„   r…   r,   Úokr   ra   r   r   r   Útimedelta_over_numberú   s&    	
ÿ ÿ
r�   c              	   C   sÆ   |\}}|j \}}t|||gƒ}|  |j¡}	tj||	dd�}
| t|	tdƒƒ|
¡ t 	||¡�H t
| |||||ƒ\}}| ||	¡}| ||	¡}| | ||¡|
¡ W 5 Q R X | |
¡}t| ||j|ƒS )Nr,   r-   Únan)r`   rA   Úget_value_typer]   r   r/   r0   r   Úfloatrs   r+   r~   r�   rg   r   )r$   r   r_   r`   ru   rv   rw   rx   Únot_nanÚll_ret_typer,   ra   r   r   r   Útimedelta_over_timedelta  s    

r•   c                 C   sÊ  |\}}|j \}}|  |j¡}t|||gƒ}	tj||dd�}
t|dƒ}t|dƒ}| ||
¡ t ||	¡��@ t	| |||||ƒ\}}| 
| d||¡¡}t ||¡�þ | d||¡}| || d||¡¡}| |¡�Ä\}}|�ˆ | |¡�r\}}|�* | ||¡}| ||¡}| ||
¡ W 5 Q R X |�* | ||¡}| ||¡}| ||
¡ W 5 Q R X W 5 Q R X W 5 Q R X |� | ||¡}| ||
¡ W 5 Q R X W 5 Q R X W 5 Q R X W 5 Q R X | |
¡}t| ||j|ƒS )Nr,   r-   r   r4   rl   ú<)r`   r‘   r]   rA   r   r/   r   r0   rs   r+   r‹   rn   Úor_re   rz   r   r   rg   r   )r$   r   r_   r`   ru   rv   rw   rx   r”   r“   r,   ro   ÚoneÚdenom_okZvanegrc   rh   ri   ZnegthenZnegotherwiseÚtopÚdivra   r   r   r   Útimedelta_floor_div_timedelta+  s<    


*4
rœ   c                 C   s^  |\}}|j \}}t|||gƒ}|  |j¡}	t|ƒ}
| t|
¡ t|	dƒ}t 	||¡�è t
| |||||ƒ\}}| | d||¡¡}t 	||¡�¦ | d||¡}| d||¡}| ||¡}| | ||¡| d||¡¡}| |¡�J\}}|� | ||
¡ W 5 Q R X |� | | ||¡|
¡ W 5 Q R X W 5 Q R X W 5 Q R X W 5 Q R X | |
¡}t| ||j|ƒS )Nr   rl   rk   )r`   rA   r‘   r]   r3   r0   r1   r   r   rs   r+   r‹   rn   Úsremr—   r>   re   r   rg   r   )r$   r   r_   r`   ru   rv   rw   rx   r“   r”   r,   ro   r™   ZvaposZvbposÚremÚcondrh   ri   ra   r   r   r   Útimedelta_mod_timedeltaN  s0    

ÿ<
r    c                    s   ‡ ‡fdd„}|S )Nc              
      sð   |\}}|j \}}t|ƒ}| t|||gƒ¡�¢\}	}
|	�X zt| |||||ƒ\}}W n  tk
rt   | ˆ |¡ Y nX | | ˆ||¡|¡ W 5 Q R X |
�, ˆdkr´| tj	|¡ n| tj
|¡ W 5 Q R X W 5 Q R X | |¡}t| ||j|ƒS ©Nr9   )r`   r8   re   rA   r+   r(   r0   r:   r   Útrue_bitÚ	false_bitrg   r   r]   ©r$   r   r_   r`   ru   rv   rw   rx   r,   rh   ri   Únorm_aÚnorm_bra   ©Údefault_valueÚll_opr   r   Úimplt  s.    
     ÿ "
z/_create_timedelta_comparison_impl.<locals>.implr   )r©   r¨   rª   r   r§   r   Ú!_create_timedelta_comparison_impls  s    r«   c                    s   ‡ fdd„}|S )Nc              
      s²   |\}}|j \}}t|ƒ}| t|||gƒ¡�d\}	}
|	�2 t| |||||ƒ\}}| | ˆ ||¡|¡ W 5 Q R X |
� | tj|¡ W 5 Q R X W 5 Q R X | 	|¡}t
| ||j|ƒS rT   )r`   r8   re   rA   r+   r0   rn   r   r£   rg   r   r]   r¤   ©r©   r   r   rª   �  s$    
     ÿ "
z-_create_timedelta_ordering_impl.<locals>.implr   ©r©   rª   r   r¬   r   Ú_create_timedelta_ordering_impl�  s    r®   rl   r9   r–   ú<=rk   ú>=c              	   C   st   |   |ttdƒ¡}t | |  |ttdƒ¡¡}t | |  |ttdƒ¡¡}t | |  |ttdƒ¡¡}|  ||  ||¡¡S )z_
    Return a predicate indicating whether *year_val* (offset by 1970) is a
    leap year.
    i²  é   éd   é�  )	r   r   rU   r   Úis_nullr>   Úis_not_nullr�   r—   )r   Úyear_valZactual_yearZmultiple_of_4Znot_multiple_of_100Zmultiple_of_400r   r   r   Úis_leap_year¶  s      ÿ ÿ ÿ
ÿr·   c              
   C   s0  t  | t¡}t| |dƒ}|  t  | |¡¡�ö\}}|�r t| |dƒ}|  |t| |dƒ¡}t| |dƒ}|  	|t| |dƒ¡}t| |dƒ}	|  |t| |	dƒ¡}|  
||¡ W 5 Q R X |�f t| |dƒ}
|  |t| |
dƒ¡}t| |
d	ƒ}|  	|t| |dƒ¡}|  |t| |dƒ¡}|  
||¡ W 5 Q R X W 5 Q R X |  |¡S )
zg
    Given a year *year_val* (offset to 1970), return the number of days
    since the 1970 epoch.
    im  r4   é   éD   r²   i,  r³   éþÿÿÿiäÿÿÿ)r   r/   r   r   re   Ú
is_neg_intr    r   r   rz   r0   rg   )r   r¶   r,   ÚdaysÚif_negÚif_posZ	from_1968Zp_daysZ	from_1900Z	from_1600Z	from_1972Zn_daysZ	from_2000r   r   r   Úyear_to_daysÆ  s@    
ÿ
ÿ
ÿ
ÿ
ÿ
ÿ r¿   c                 C   sV  t j| }t j| }|dk s$|dkr,||fS |dkrD|}t| |ƒ}nât | dt¡}t | dt¡}	t | t¡}
t 	| |d¡\}}|  
t| |ƒ¡�v\}}|�, |  tj| |d|dd�¡}|  ||
¡ W 5 Q R X |�, |  tj| |	d|dd�¡}|  ||
¡ W 5 Q R X W 5 Q R X t| |ƒ}|  ||  |
¡¡}|dk�rJt 	| |d¡\}}|d	fS |d
fS d S )Nr   r   Úleap_year_months_accÚnormal_year_months_accé   T)Úinboundsé   ÚWÚD)r
   ÚDATETIME_UNITSr¿   r   Úglobal_constantrÀ   rÁ   r/   r   Údivmod_by_constantre   r·   rg   Úgepr0   r   )r   Údt_valÚsrc_unitÚ	dest_unitZdest_unit_codeZsrc_unit_coder¶   Zdays_valZ
leap_arrayZnormal_arrayr¼   ÚyearÚmonthrh   ri   ÚaddendÚweeksÚ_r   r   r   Úreduce_datetime_for_unitü  sH    

ÿÿ  ÿ  ÿ 

rÓ   c                 C   sB   t | |||ƒ\}}t ||¡}|dkr6td||f ƒ‚t| ||ƒS )zC
    Convert datetime *dt_val* from *src_unit* to *dest_unit*.
    Nz'cannot convert datetime64 from %r to %r)rÓ   r
   r"   r   r   )r   rË   rÌ   rÍ   Údt_unitÚ	dt_factorr   r   r   Úconvert_datetime_for_arith)  s       ÿÿrÖ   c                    s   ‡ fdd„}|S )Nc           
   	      sv   t |ƒ}t |t|||gƒ¡�H t||||ƒ}t ||¡}t|||ƒ}t|ˆ ƒ||ƒ}	| 	|	|¡ W 5 Q R X | 
|¡S rT   )r3   r   rs   rA   rÖ   r
   r"   r   Úgetattrr0   rg   )
r$   r   Údt_argrÔ   r‚   Útd_unitÚret_unitr,   Ú	td_factorÚret_val©Ú
ll_op_namer   r   rª   :  s     ÿ ÿz'_datetime_timedelta_arith.<locals>.implr   )rÞ   rª   r   rÝ   r   Ú_datetime_timedelta_arith9  s    rß   r   rz   c           	      C   s>   |\}}|j \}}t| |||j||j|jjƒ}t| ||j|ƒS rT   ©r`   Ú_datetime_plus_timedeltar#   r]   r   ©	r$   r   r_   r`   rØ   r‚   Údt_typerƒ   ra   r   r   r   Údatetime_plus_timedeltaO  s    
  ýrä   c           	      C   s>   |\}}|j \}}t| |||j||j|jjƒ}t| ||j|ƒS rT   rà   )	r$   r   r_   r`   r‚   rØ   rƒ   rã   ra   r   r   r   Útimedelta_plus_datetime[  s    
  ýrå   c           	      C   s>   |\}}|j \}}t| |||j||j|jjƒ}t| ||j|ƒS rT   )r`   Ú_datetime_minus_timedeltar#   r]   r   râ   r   r   r   Údatetime_minus_timedeltai  s    
  ýrç   c              	   C   sž   |\}}|j \}}|j}|j}	|jj}
t|ƒ}t |t|||gƒ¡�: t||||
ƒ}t|||	|
ƒ}| ||¡}| 	||¡ W 5 Q R X | 
|¡}t| ||j|ƒS rT   )r`   r#   r]   r3   r   rs   rA   rÖ   rz   r0   rg   r   )r$   r   r_   r`   ru   rv   rw   rx   Úunit_aÚunit_brÚ   r,   rÜ   ra   r   r   r   Údatetime_minus_datetimew  s    

rê   c                    s   ‡ fdd„}|S )Nc              
      sè   |\}}|j \}}|j}|j}	t ||	¡}
t|ƒ}| t|||gƒ¡�‚\}}|�< t||||
ƒ}t|||	|
ƒ}| ˆ ||¡}| 	||¡ W 5 Q R X |�( ˆ dkr¨t
j}nt
j}| 	||¡ W 5 Q R X W 5 Q R X | |¡}t| ||j|ƒS r¡   )r`   r#   r
   Úget_best_unitr8   re   rA   rÖ   rn   r0   r   r¢   r£   rg   r   r]   )r$   r   r_   r`   ru   rv   rw   rx   rè   ré   rÚ   r,   rh   ri   r¥   r¦   rÜ   ra   r¬   r   r   rª   ‹  s:    
   ÿ   ÿ 
z._create_datetime_comparison_impl.<locals>.implr   r­   r   r¬   r   Ú _create_datetime_comparison_implŠ  s    rì   c                    s   ‡ fdd„}|S )Nc           
         sr   |\}}t ||ƒ}t ||ƒ}| d||¡}| |||¡}	ˆ rF|| }}| ||	|¡}	| ||	|¡}	t| ||j|	ƒS ©Nr°   ©r;   rn   Úselectr   r]   ©
r$   r   r_   r`   Úin1Úin2Úin1_not_natÚin2_not_natZ
in1_ge_in2ra   ©ÚNAT_DOMINATESr   r   Údatetime_max_implº  s    


z1_gen_datetime_max_impl.<locals>.datetime_max_implr   )rö   r÷   r   rõ   r   Ú_gen_datetime_max_impl¹  s    rø   TFc                    s   ‡ fdd„}|S )Nc           
         sr   |\}}t ||ƒ}t ||ƒ}| d||¡}| |||¡}	ˆ rF|| }}| ||	|¡}	| ||	|¡}	t| ||j|	ƒS ©Nr¯   rî   ©
r$   r   r_   r`   rñ   rò   ró   rô   Z
in1_le_in2ra   rõ   r   r   Údatetime_min_implÏ  s    


z1_gen_datetime_min_impl.<locals>.datetime_min_implr   )rö   rû   r   rõ   r   Ú_gen_datetime_min_implÎ  s    rü   c                    s   ‡ fdd„}|S )Nc           
         sr   |\}}t ||ƒ}t ||ƒ}| d||¡}| |||¡}	ˆ rF|| }}| ||	|¡}	| ||	|¡}	t| ||j|	ƒS rí   rî   rð   rõ   r   r   Útimedelta_max_implä  s    


z3_gen_timedelta_max_impl.<locals>.timedelta_max_implr   )rö   rý   r   rõ   r   Ú_gen_timedelta_max_implã  s    rþ   c                    s   ‡ fdd„}|S )Nc           
         sr   |\}}t ||ƒ}t ||ƒ}| d||¡}| |||¡}	ˆ rF|| }}| ||	|¡}	| ||	|¡}	t| ||j|	ƒS rù   rî   rú   rõ   r   r   Útimedelta_min_implù  s    


z3_gen_timedelta_min_impl.<locals>.timedelta_min_implr   )rö   rÿ   r   rõ   r   Ú_gen_timedelta_min_implø  s    r   c              
   C   s|   |  t¡}| d||¡}| |¡�J\}}|� | t|¡ W 5 Q R X |� | | |t¡|¡ W 5 Q R X W 5 Q R X | |¡S )NÚuno)Úallocar   Úfcmp_unorderedre   r0   r1   Úfptosirg   )r$   r   r   ÚtempZ
val_is_nanrh   Zelsr   r   r   r�     s    
 (r�   c                 C   s   t  | |||¡S rT   )r   Únp_datetime_isnat_impl)r$   r   r_   r`   r   r   r   Ú_np_isnat_impl  s    r  c                 C   s.   |j dkr*d|› d|› d|› d�}t|ƒ‚|S )Nr   zCannot cast r!   z as z is not 64 bits wide.)ÚbitwidthÚ
ValueError)r$   r   ÚfromtyÚtotyr   r&   r   r   r   Ú_cast_npdatetime_int64!  s    
r  Ú__hash__c                 C   s   t rdd„ }ndd„ }|S )Nc                 S   sf   t  | ¡} | dk rt  | ¡}n2t  | ¡d@ d? }t  | ¡d@ }t  |d|  ¡}|dkrbt  d¡}|S )Niÿÿÿl       üÿ é    l   ÿÿ iCB rm   rº   )rW   rX   Úint32)ÚxÚyÚhiÚlor   r   r   rª   .  s    

z ol_hash_npdatetime.<locals>.implc                 S   s"   t  | ¡dkrt  d¡S t  | ¡S )Nrm   rº   )rW   rX   )r  r   r   r   rª   :  s    
r   )r  rª   r   r   r   Úol_hash_npdatetime*  s    
r  )r,   )r,   )…Ú__doc__ÚnumpyrW   ÚoperatorÚllvmlite.irr5   r   Ú
numba.corer   r   Únumba.core.cgutilsr   Únumba.core.imputilsr   r   r   r	   Únumba.npr
   r   r   Únumba.extendingr   Únumba.core.configr   Únumba.core.errorsr   r6   r7   rU   r   r1   ÚNPTimedeltaZTIMEDELTA_BINOP_SIGr   r   r    r'   r+   r3   r8   r;   rA   Znormal_year_monthsZleap_year_monthsrÁ   rÀ   Ú
NPDatetimer[   Úposrb   rc   rd   Úabsrj   rr   r   Úiaddry   rz   Úisubr{   r†   r   ÚIntegerÚimulr}   rˆ   rŠ   ÚtruedivÚitruedivÚfloordivÚ	ifloordivr�   r•   rœ   r    r«   r®   r£   Útimedelta_eq_timedelta_implr¢   Útimedelta_ne_timedelta_implÚtimedelta_lt_timedelta_implÚtimedelta_le_timedelta_implÚtimedelta_gt_timedelta_implÚtimedelta_ge_timedelta_implÚeqÚneÚltÚleÚgtÚgeÚop_Úfuncr·   r¿   rÓ   rÖ   rß   rá   ræ   rä   rå   rç   rê   rì   Údatetime_eq_datetime_implÚdatetime_ne_datetime_implÚdatetime_lt_datetime_implÚdatetime_le_datetime_implÚdatetime_gt_datetime_implÚdatetime_ge_datetime_implÚoprø   Údatetime_maximum_implÚdatetime_fmax_implrü   Údatetime_minimum_implÚdatetime_fmin_implrþ   Útimedelta_maximum_implÚtimedelta_fmax_implr   Útimedelta_minimum_implÚtimedelta_fmin_implr�   Úisnatr  r  r  Údatetime_minimumÚdatetime_maximumr   r   r   r   Ú<module>   sD  
	
þþþþ




"% ÿ ÿû6-

û

