U
    hâËdH…  ã                   @   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   úL/home/sam/Atlas/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   Z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    r2   c                 C   s   t j| tj d¡|d�}|S )z8
    Allocate an uninitialized boolean result slot.
    é   r,   )r   r.   ÚllvmliteÚirÚIntTyper1   r   r   r   Úalloc_boolean_resultX   s    r7   c                 C   s   |   d|t¡S )z?
    Return a predicate which is true if *val* is not NaT.
    ú!=)Úicmp_unsignedr0   )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.
    r3   r   N)ÚlenÚAssertionErrorr:   Úand_)r   ÚvalsÚpredr   r   r   r   Úare_not_natg   s
    r@   é   é   é   é   é;   éZ   éx   é—   éµ   éÔ   éó   i  i0  iN  é<   é[   éy   é˜   é¶   éÕ   éô   i  i1  iO  c                 C   s   t | tj¡ƒS ©N)Ú
DATETIME64ZastypeÚnpÚint64)r$   r   ÚtyZpyvalr   r   r   Údatetime_constant€   s    rX   c                 C   s   |d }t | ||j|ƒS ©Nr   )r   Úreturn_type©r$   r   ÚsigÚargsÚresr   r   r   Útimedelta_pos_implˆ   s    r_   c                 C   s   |  |d ¡}t| ||j|ƒS rY   )Únegr   rZ   r[   r   r   r   Útimedelta_neg_implŽ   s    ra   c           	   
   C   sˆ   |\}t |ƒ}| t ||¡¡�H\}}|� | | |¡|¡ W 5 Q R X |� | ||¡ W 5 Q R X W 5 Q R X | |¡}t| ||j|ƒS rS   )	r2   Úif_elser   Zis_scalar_negr/   r`   Úloadr   rZ   )	r$   r   r\   r]   r   r+   ÚthenÚ	otherwiser^   r   r   r   Útimedelta_abs_impl”   s     
rf   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   ú>r3   ú==éÿÿÿÿ)
r2   r   r   rb   Úicmp_signedr/   r9   rc   r   rZ   )r$   r   r\   r]   r   r+   ÚzeroZgt_zeroZle_zeroZeq_zeroZlt_zeror^   r   r   r   Útimedelta_sign_impl¡   s     
:
rl   c           
   	   C   sŽ   |\}}|j \}}t|ƒ}t |t|||gƒ¡�> t| ||||jƒ}t| ||||jƒ}| | ||¡|¡ W 5 Q R X | 	|¡}	t
| ||j|	ƒS rS   )r]   r2   r   Ú	if_likelyr@   r&   rZ   r/   r   rc   r   ©
r$   r   r\   r]   ÚvaÚvbÚtaÚtbr+   r^   r   r   r   Útimedelta_add_impl·   s    

rs   c           
   	   C   sŽ   |\}}|j \}}t|ƒ}t |t|||gƒ¡�> t| ||||jƒ}t| ||||jƒ}| | ||¡|¡ W 5 Q R X | 	|¡}	t
| ||j|	ƒS rS   )r]   r2   r   rm   r@   r&   rZ   r/   Úsubrc   r   rn   r   r   r   Útimedelta_sub_implÅ   s    

ru   c           	   	   C   sŒ   t |ƒ}t |t||ƒ¡�b t|tjƒrP| ||j¡}| 	||¡}t
| ||ƒ}n| ||¡}t| ||||ƒ}| ||¡ W 5 Q R X | |¡S rS   )r2   r   rm   r:   Ú
isinstancer   ÚFloatÚsitofpÚtypeZfmulÚ_cast_to_timedeltar   r&   r/   rc   )	r$   r   Útd_argÚtd_typeÚ
number_argÚnumber_typerZ   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   r3   ©r   r]   rZ   r   r[   r   r   r   Útimedelta_times_numberä   s       þr�   c                 C   s:   t | ||d |jd |d |jd |jƒ}t| ||j|ƒS ©Nr3   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]   r2   r=   r:   Únot_r   Zis_scalar_zero_or_nanrm   rv   r   rw   rx   ry   Úfdivrz   r   r&   rZ   r/   rc   r   )r$   r   r\   r]   r{   r}   r~   r+   Úokr   r^   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]   r@   Úget_value_typerZ   r   r.   r/   r   Úfloatrm   r*   rx   r…   rc   r   )r$   r   r\   r]   ro   rp   rq   rr   Únot_nanÚll_ret_typer+   r^   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   r3   rh   ú<)r]   r‰   rZ   r@   r   r.   r   r/   rm   r*   r„   rj   Úor_rb   rt   r   r   rc   r   )r$   r   r\   r]   ro   rp   rq   rr   rŒ   r‹   r+   rk   ÚoneÚdenom_okZvanegr`   rd   re   ZnegthenZnegotherwiseÚtopÚdivr^   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   rh   rg   )r]   r@   r‰   rZ   r2   r/   r0   r   r   rm   r*   r„   rj   Úsremr�   r=   rb   r   rc   r   )r$   r   r\   r]   ro   rp   rq   rr   r‹   rŒ   r+   rk   r‘   ZvaposZvbposÚremZcondrd   re   r^   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 ©Nr8   )r]   r7   rb   r@   r*   r'   r/   r9   r   Útrue_bitÚ	false_bitrc   r   rZ   ©r$   r   r\   r]   ro   rp   rq   rr   r+   rd   re   Únorm_aÚnorm_br^   ©Ú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 rS   )r]   r7   rb   r@   r*   r/   rj   r   rš   rc   r   rZ   r›   ©r    r   r   r¡   �  s$    
     ÿ "
z-_create_timedelta_ordering_impl.<locals>.implr   ©r    r¡   r   r£   r   Ú_create_timedelta_ordering_impl�  s    r¥   rh   r8   rŽ   ú<=rg   ú>=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   rT   r   Zis_nullr=   Z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  r3   é   éD   r©   i,  rª   éþÿÿÿiäÿÿÿ)r   r.   r   r   rb   Z
is_neg_intr    r   r   rt   r/   rc   )r   r«   r+   ÚdaysZif_negZ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)Zinboundsé   ÚWÚD)r
   ZDATETIME_UNITSr±   r   Zglobal_constantr²   r³   r.   r   Zdivmod_by_constantrb   r¬   rc   Zgepr/   r   )r   Údt_valÚsrc_unitÚ	dest_unitZdest_unit_codeZsrc_unit_coder«   Zdays_valZ
leap_arrayZnormal_arrayr°   ÚyearÚmonthrd   re   Ú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_unitZ	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 rS   )r2   r   rm   r@   rÂ   r
   r"   r   Úgetattrr/   rc   )
r$   r   Údt_argrÁ   r{   Ztd_unitÚret_unitr+   Z	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   rt   c           	      C   s>   |\}}|j \}}t| |||j||j|jjƒ}t| ||j|ƒS rS   ©r]   Ú_datetime_plus_timedeltar#   rZ   r   ©	r$   r   r\   r]   rÄ   r{   Údt_typer|   r^   r   r   r   Údatetime_plus_timedeltaO  s    
  ýrÎ   c           	      C   s>   |\}}|j \}}t| |||j||j|jjƒ}t| ||j|ƒS rS   rÊ   )	r$   r   r\   r]   r{   rÄ   r|   rÍ   r^   r   r   r   Útimedelta_plus_datetime[  s    
  ýrÏ   c           	      C   s>   |\}}|j \}}t| |||j||j|jjƒ}t| ||j|ƒS rS   )r]   Ú_datetime_minus_timedeltar#   rZ   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 rS   )r]   r#   rZ   r2   r   rm   r@   rÂ   rt   r/   rc   r   )r$   r   r\   r]   ro   rp   rq   rr   Úunit_aÚunit_brÅ   r+   rÆ   r^   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
   Zget_best_unitr7   rb   r@   rÂ   rj   r/   r   r™   rš   rc   r   rZ   )r$   r   r\   r]   ro   rp   rq   rr   rÒ   rÓ   rÅ   r+   rd   re   rœ   r�   rÆ   r^   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:   rj   Úselectr   rZ   ©
r$   r   r\   r]   Úin1Úin2Úin1_not_natÚin2_not_natZ
in1_ge_in2r^   ©Ú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_in2r^   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 )NZuno)Zallocar   Zfcmp_unorderedrb   r/   r0   Zfptosirc   )r$   r   r   ÚtempZ
val_is_nanrd   Zelsr   r   r   rz     s    
 (rz   c                 C   s   t  | |||¡S rS   )r   Z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.)ZbitwidthÚ
ValueError)r$   r   ZfromtyZ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 ri   r¯   )rU   rV   Z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 )Nri   r¯   )rU   rV   )rð   r   r   r   r¡   :  s    
r   )rð   r¡   r   r   r   Úol_hash_npdatetime*  s    
rô   )r+   )r+   )…Ú__doc__ÚnumpyrU   ÚoperatorZllvmlite.irr4   r   Z
numba.corer   r   Znumba.core.cgutilsr   Znumba.core.imputilsr   r   r   r	   Znumba.npr
   r   r   Znumba.extendingr   Znumba.core.configr   Znumba.core.errorsr   r5   r6   rT   r   r0   ZNPTimedeltaZTIMEDELTA_BINOP_SIGr   r   r    r&   r*   r2   r7   r:   r@   Znormal_year_monthsZleap_year_monthsr³   r²   Z
NPDatetimerX   Úposr_   r`   ra   Úabsrf   rl   r   Úiaddrs   rt   Úisubru   r   r   ÚIntegerÚimulrw   r�   rƒ   ÚtruedivÚitruedivÚfloordivÚ	ifloordivr‡   r�   r”   r—   r¢   r¥   rš   Ztimedelta_eq_timedelta_implr™   Ztimedelta_ne_timedelta_implZtimedelta_lt_timedelta_implZtimedelta_le_timedelta_implZtimedelta_gt_timedelta_implZtimedelta_ge_timedelta_implÚeqÚneÚltÚleÚgtÚgeZop_Úfuncr¬   r±   rÀ   rÂ   rÉ   rË   rÐ   rÎ   rÏ   rÑ   rÔ   rÕ   Zdatetime_eq_datetime_implZdatetime_ne_datetime_implZdatetime_lt_datetime_implZdatetime_le_datetime_implZdatetime_gt_datetime_implZdatetime_ge_datetime_implÚoprá   Zdatetime_maximum_implZdatetime_fmax_implrå   Zdatetime_minimum_implZdatetime_fmin_implrç   Ztimedelta_maximum_implZtimedelta_fmax_implré   Ztimedelta_minimum_implZtimedelta_fmin_implrz   Zisnatrë   rí   rô   Zdatetime_minimumZdatetime_maximumr   r   r   r   Ú<module>   sD  
	
þþþþ




"% ÿ ÿû6-

û

