
    `VgP                        d dl mZ d dlmZmZmZ d dlmZ erd dlm	Z	 d dl
mZ d dlmZ  G d de      Z	 	 	 	 	 	 dd	Z	 	 	 	 	 	 dd
ZddZ	 	 	 	 	 	 	 	 	 	 ddZddZy)    )annotations)TYPE_CHECKINGIterator
NamedTuple)	ArrayLike)BlockPlacement)Block)BlockManagerc                  J    e Zd ZU ded<   ded<   ded<   ded<   ded<   d	ed
<   y)BlockPairInfor   lvalsrvalsr   locsboolleft_earight_ear	   rblkN)__name__
__module____qualname____annotations__     Z/var/www/html/hubwallet-dev/venv/lib/python3.12/site-packages/pandas/core/internals/ops.pyr   r      s#    
MN
Kr   r   c           
   #  F  K   | j                   D ]  }|j                  }|j                  }|j                  dk(  }|j	                  |j
                  d      \  }}|D ]@  }|j                  j                  dk(  }	t        ||||	      \  }
}t        |
||||	|      }| B  y w)N   T)
only_slice)blocksmgr_locsvaluesndim_slice_take_blocks_ax0indexer_get_same_shape_valuesr   )leftrightblkr   blk_valsr   rblks_r   r   r   r   infos                r   _iter_block_pairsr,      s      {{ ||::--1$///Nq  	D{{''1,H1#tWhOLE5 tWhMDJ	s   BB!c                :   g }t        | |      D ]b  \  }}}}}}	 |||      }
|r |st        |
d      r|
j                  dd      }
|	j                  |
      }t	        ||       |j                  |       d  t        |      t        |      |j                  d      }|S )Nreshaper   F)axesverify_integrity)	r,   hasattrr.   _split_op_result_reset_block_mgr_locsextendtypetupler0   )r%   r&   array_opres_blksr   r   r   r   r   r   
res_valuesnbsnew_mgrs                r   operate_blockwiser=   7   s     H7Hu7U 3udGXteU+
8
I(F#++Ar2J##J/ 	c4(. d5k%/

USGNr   c                R    | D ]"  }||j                   j                     }||_         $ y)zA
    Reset mgr_locs to correspond to our original DataFrame.
    N)r   r#   )r;   r   nbnblocss       r   r4   r4   Y   s.      bkk))*r   c                   | j                   }|j                   }|j                  j                  sJ |j                         |sY|sW||j                  j                  ddf   }|j                  |j                  k(  sJ |j                  |j                  f       ||fS |r<|r:|j                  |j                  k(  sJ |j                  |j                  f       ||fS |rM||j                  j                  ddf   }|j                  d   dk(  sJ |j                         |dddf   }||fS |j                  d   dk(  sJ |j                         |dddf   }||fS )zH
    Slice lblk.values to align with rblk.  Squeeze if we have EAs.
    Nr   r   )r    r   is_slice_liker#   shape)lblkr   r   r   r   r   s         r   r$   r$   e   sW    KKEKKE ==&&55& x dmm++Q./{{ekk)EEKK+EE)$ %<# 
X{{ekk)EEKK+EE)  %< 

 dmm++Q./{{1~"/EKK/"ad %< {{1~"/EKK/" ad%<r   c                h    t        | |      D ]#  } ||j                  |j                        }|r# y y)z$
    Blockwise `all` reduction.
    FT)r,   r   r   )r%   r&   opr+   ress        r   blockwise_allrH      s9     "$. TZZ( r   N)r%   r
   r&   r
   returnzIterator[BlockPairInfo])r%   r
   r&   r
   rI   r
   )r;   zlist[Block])
rD   r	   r   r	   r   r   r   r   rI   ztuple[ArrayLike, ArrayLike])r%   r
   r&   r
   rI   r   )
__future__r   typingr   r   r   pandas._typingr   pandas._libs.internalsr   pandas.core.internals.blocksr	   pandas.core.internals.managersr
   r   r,   r=   r4   r$   rH   r   r   r   <module>rP      s    "  %52;J 
+8
+D#
##'+#7;# #Lr   