Ë
    *�£j7  ã                  óÖ   — 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__© ó    ú;C:\FundamentalWorkbench\vendor\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°#°t¸WÀhÓO‰LˆE�5Ü  ¨¨t°W¸hÈÓMˆDØ‹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¯   € ð €HÜ7HÈÈuÖ7UÑ3ˆˆu�d˜G X¨tÙ˜e UÓ+ˆ
áÙÜ˜
 IÔ.Ü'¨
×(8Ñ(8Ô9à#×+Ñ+¨A¨rÓ2ˆJØ×#Ñ# JÓ/ˆô 	˜c 4Ô(à�‰˜Õð' 8Vð: Œd�5‹kœ% ›/°·
±
ÈUÔS€GØ€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   a   s)   € ó ˆØ�b—k‘k×)Ñ)Ñ*ˆØˆ�ñ 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%   m   sW  € ð �K‰K€EØ�K‰K€Eð �=‰=×&Ò&Ð5¨¯©Ó5Ð&ñ ‘xð �d—m‘m×+Ñ+ªQÐ.Ñ/ˆØ�{‰{˜eŸk™kÒ)ÐE¨E¯K©K¸¿¹Ð+EÓEÐ)ð$ �%ˆ<Ðñ# 
‘XØ�{‰{˜eŸk™kÒ)ÐE¨E¯K©K¸¿¹Ð+EÓEÐ)ð  �%ˆ<Ðñ 
ð
 �d—m‘m×+Ñ+ªQÐ.Ñ/ˆØ�{‰{˜1‰~ Ò"Ð/ E§K¡KÓ/Ð"Ø�aš�d‘ˆð �%ˆ<Ðð �{‰{˜1‰~ Ò"Ð/ E§K¡KÓ/Ð"ð �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   “   s4   € ô " $¨Ö.ˆÙ�—‘˜TŸZ™ZÓ(ˆÚÙð /ð 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%Ø
ð%Ø+ð%àó%óPð#Ø
ð#Øð#Ø'+ð#Ø7;ð#à ó#ôLr   