
    Mh                        S SK Jr  S SKJrJr  S SKJr  \(       a  S SKJr  S SK	J
r
  S SKJr  S SKJr  S SKJr   " S	 S
\5      r      SS jr      SS jrSS jr          SS jrSS jrg)    )annotations)TYPE_CHECKING
NamedTuple)is_1d_only_ea_dtype)Iterator)BlockPlacement)	ArrayLike)Block)BlockManagerc                  R    \ rS rSr% S\S'   S\S'   S\S'   S\S'   S\S	'   S
\S'   Srg)BlockPairInfo   r	   lvalsrvalsr   locsboolleft_earight_ear
   rblk N)__name__
__module____qualname____firstlineno____annotations____static_attributes__r       K/var/www/html/env/lib/python3.13/site-packages/pandas/core/internals/ops.pyr   r      s#    
MN
Kr   r   c           
   #  6  #    U R                    H  nUR                  nUR                  nUR                  S:H  nUR	                  UR
                  SS9nU H;  nUR                  R                  S:H  n[        X'XX5      u  p[        XX5X5      nUv   M=     M     g 7f)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#WOLE thMDJ  s   BBc                ~   / n[        X5       H  u  pEpgpU" XE5      n
U(       aD  U(       d=  [        U
S5      (       a,  [        U
R                  5      (       d  U
R	                  SS5      n
U	R                  U
5      n[        X5        UR                  U5        M     [        U5      " [        U5      UR                  SS9nU$ )Nreshaper    F)axesverify_integrity)r/   hasattrr   dtyper1   _split_op_result_reset_block_mgr_locsextendtypetupler3   )r)   r*   array_opres_blksr   r   r   r   r   r   
res_valuesnbsnew_mgrs                r   operate_blockwiserA   9   s     H7H7U3dXe+

I..'
(8(899#++Ar2J##J/ 	c(' 8V8 5k%/

USGNr   c                R    U  H!  nXR                   R                     nX2l         M#     g)z9
Reset mgr_locs to correspond to our original DataFrame.
N)r#   r'   )r?   r   nbnblocss       r   r8   r8   `   s%     kk))* r   c                   U R                   nUR                   nUR                  R                  (       d   UR                  5       eU(       d^  U(       dW  XAR                  R                  SS24   nUR                  UR                  :X  d   UR                  UR                  45       e XE4$ U(       aB  U(       a;  UR                  UR                  :X  d   UR                  UR                  45       e XE4$ U(       aL  XAR                  R                  SS24   nUR                  S   S:X  d   UR                  5       eUSSS24   nXE4$ UR                  S   S:X  d   UR                  5       eUSSS24   nXE4$ )z@
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   sK    KKEKKE ==&&55& x mm++Q./{{ekk)EEKK+EE)$ <# 
X{{ekk)EEKK+EE)  < 

 mm++Q./{{1~"/EKK/"ad < {{1~"/EKK/" ad<r   c                t    [        X5       H)  nU" UR                  UR                  5      nU(       a  M)    g   g)z
Blockwise `all` reduction.
FT)r/   r   r   )r)   r*   opr.   ress        r   blockwise_allrL      s4     "$.TZZ(s / r   N)r)   r   r*   r   returnzIterator[BlockPairInfo])r)   r   r*   r   rM   r   )r?   zlist[Block]rM   None)
rH   r
   r   r
   r   r   r   r   rM   ztuple[ArrayLike, ArrayLike])r)   r   r*   r   rM   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/   rA   r8   r(   rL   r   r   r   <module>rW      s    "
 :(5(2;J 
+8$
$+$$N#
##'+#7;# #Lr   