
    Owg                        d dl mZ d dl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 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
NamedTuple)is_1d_only_ea_dtype)Iterator)BlockPlacement)	ArrayLike)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__     P/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/core/internals/ops.pyr   r      s#    
MN
Kr   r   c           
   #  @  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   rblksr   r   r   r   infos               r   _iter_block_pairsr,      s      {{ ||::--1$,,T\\d,K  	D{{''1,H1#tWhOLE5 tWhMDJ	s   BBc                d   g }t        | |      D ]w  \  }}}}}}	 |||      }
|r5|s3t        |
d      r't        |
j                        s|
j	                  dd      }
|	j                  |
      }t        ||       |j                  |       y  t        |      t        |      |j                  d      }|S )Nreshaper   F)axesverify_integrity)r,   hasattrr   dtyper.   _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>   9   s     H7Hu7U 3udGXteU+

I.'
(8(89#++Ar2J##J/ 	c4('8 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   r5   r5   `   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%   l   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_allrI      s9     "$. TZZ( r   N)r&   r   r'   r   returnzIterator[BlockPairInfo])r&   r   r'   r   rJ   r   )r<   zlist[Block]rJ   None)
rE   r
   r   r
   r   r   r   r   rJ   ztuple[ArrayLike, ArrayLike])r&   r   r'   r   rJ   r   )
__future__r   typingr   r   pandas.core.dtypes.commonr   collections.abcr   pandas._libs.internalsr   pandas._typingr	   pandas.core.internals.blocksr
   pandas.core.internals.managersr   r   r,   r>   r5   r%   rI   r   r   r   <module>rT      s    "
 :(5(2;J 
+8$
$+$$N#
##'+#7;# #Lr   