o
    Td)                     @   s  d dl Zd dlmZ d dlmZ d dlmZmZ edd Z	edd Z
ed	d
 Zedd Zedd Zedd Zedd Zdd Zdd Zeejdd Zeejdd Zeejdd Zeejdd Zeejdd  Zd!d" Zeejd#d$ Zeejd%d& ZdS )'    N)types)TypingError)overloadregister_jitablec                 C   sH   | | }||kr|d d? }| | }||k r|| |< |}q	 || |< d S N    heapstartposposnewitem	parentposparentr   r   f/home/ncw/WWW/www-new/content/articles/pi-bbp/venv/lib/python3.10/site-packages/numba/cpython/heapq.py	_siftdown   s   r   c                 C   s   t | }|}| | }d| d }||k r8|d }||k r&| | | | k s&|}| | | |< |}d| d }||k s|| |< t| || d S N   r   )lenr   r
   r   endposr   r   childposrightposr   r   r   _siftup      
r   c                 C   sH   | | }||kr|d d? }| | }||k r|| |< |}q	 || |< d S r   r   r	   r   r   r   _siftdown_max0   s   r   c                 C   s   t | }|}| | }d| d }||k r8|d }||k r&| | | | k s&|}| | | |< |}d| d }||k s|| |< t| || d S r   )r   r   r   r   r   r   _siftup_max?   r   r   c                 C   s   t | d ddS )Nr   )range)xr   r   r   reversed_rangeT   s   r    c                 C   (   t | }t|d D ]}t| | q
d S Nr   )r   r    r   r   nir   r   r   _heapify_maxZ   s   r&   c                 C      | d }|| d< t | d |S Nr   )r   r
   item
returnitemr   r   r   _heapreplace_maxb   s   
r,   c                 C   s<   t | tjtjfstd| j}t |tjrd}t|d S )Nzheap argument must be a listz>'<' not supported between instances of 'complex' and 'complex')
isinstancer   ListListTyper   dtypeComplex)r
   dtmsgr   r   r   assert_heap_typej   s   r4   c                 C   s   | j |ks	tdd S )Nz'heap type must be the same as item type)r0   r   r
   r*   r   r   r   *assert_item_type_consistent_with_heap_typeu   s   
r6   c                 C      t |  dd }|S )Nc                 S   r!   r"   )r   r    r   r#   r   r   r   hq_heapify_impl~   s   z#hq_heapify.<locals>.hq_heapify_implr4   )r   r8   r   r   r   
hq_heapifyz   s   r:   c                 C   r7   )Nc                 S   s.   |   }| r| d }|| d< t| d |S |S r(   )popr   )r
   lasteltr+   r   r   r   hq_heappop_impl   s   
z#hq_heappop.<locals>.hq_heappop_implr9   )r
   r=   r   r   r   
hq_heappop   s   	r>   c                 C      t |  t| | dd }|S )Nc                 S   s"   |  | t| dt| d  d S )Nr   r   )appendr   r   r5   r   r   r   hq_heappush_impl   s   
z"heappush.<locals>.hq_heappush_implr4   r6   )r
   r*   rA   r   r   r   heappush   s   
rC   c                 C   r?   )Nc                 S   r'   r(   r   r)   r   r   r   hq_heapreplace   s   
z#heapreplace.<locals>.hq_heapreplacerB   )r
   r*   rE   r   r   r   heapreplace      
rF   c                 C   r?   )Nc                 S   s0   | r| d |k r| d |}| d< t | d |S r(   rD   r5   r   r   r   hq_heappushpop_impl   s   
z(heappushpop.<locals>.hq_heappushpop_implrB   )r
   r*   rH   r   r   r   heappushpop   rG   rI   c                 C   s<   t | tjtjfstdt |tjtjtjfstdd S )Nz%First argument 'n' must be an integerz+Second argument 'iterable' must be iterable)r-   r   IntegerBooleanr   SequenceArrayr/   )r$   iterabler   r   r   check_input_types   s
   rO   c                 C      t | | dd }|S )Nc           
         s   | dkr fddt dD S | dkrt }|gS t }| |kr*t d |  S t }dd tt | |D }t| |d d }| }|D ]}||k r_t|||f |d \}}	|d7 }qH|  dd |D S )Nr   c                       g | ]} d  qS r   r   .0_rN   r   r   
<listcomp>       z8nsmallest.<locals>.hq_nsmallest_impl.<locals>.<listcomp>r   c                 S      g | ]\}}||fqS r   r   rT   r%   elemr   r   r   rW          c                 S      g | ]\}}|qS r   r   rT   r[   orderr   r   r   rW      rX   )	r   minr   sortediterzipr&   r,   sort
r$   rN   outsizeitresulttopr_   r[   _orderr   rV   r   hq_nsmallest_impl   s*   z$nsmallest.<locals>.hq_nsmallest_implrO   )r$   rN   rl   r   r   r   	nsmallest      
rn   c                 C   rP   )Nc           
         s   | dkr fddt dD S | dkrt }|gS t }| |kr/t d d d d |  S t }dd tt d|  d|D }t| |d d }|  }|D ]}||k rjt|||f |d \}}	|d8 }qR|j	dd d	d |D S )
Nr   c                    rQ   rR   r   rS   rV   r   r   rW      rX   z6nlargest.<locals>.hq_nlargest_impl.<locals>.<listcomp>r   r   c                 S   rY   r   r   rZ   r   r   r   rW      r\   T)reversec                 S   r]   r   r   r^   r   r   r   rW     rX   )
r   maxr   ra   rb   rc   hqheapifyrF   rd   re   r   rV   r   hq_nlargest_impl   s*   
z"nlargest.<locals>.hq_nlargest_implrm   )r$   rN   rt   r   r   r   nlargest   ro   ru   )heapqrr   
numba.corer   numba.core.errorsr   numba.core.extendingr   r   r   r   r   r   r    r&   r,   r4   r6   rs   r:   heappopr>   rC   rF   rI   rO   rn   ru   r   r   r   r   <module>   sF   












!