3
���hN � @ s� d dl mZmZmZ d dlZd dlmZ erDd dlm Z d dl
mZ dddd�dd �Zed
d�dd
�Z
d
d
eeeeef d�dd�ZdS )� )�
TYPE_CHECKING�List�TupleN)� ArrayLike)�Block)�BlockManagerr )�left�right�returnc C s� g }x�t | j�D ]�\}}|j}|j}t|tj� }|j|jdd�} x~t | �D ]r\}
}t|jtj� }t ||||�\}
}||
|�}|r�| r�t
|d�r�|jdd�}|j|�}t
||� |j|� qLW qW t|�||jdd�}|S )NT)Z
only_slice�reshape� F)�axesZdo_integrity_check���)� enumerate�blocks�mgr_locs�values�
isinstance�npZndarrayZ_slice_take_blocks_ax0�indexer�_get_same_shape_values�hasattrr Z_split_op_result�_reset_block_mgr_locs�extend�typer
)r r Zarray_opZres_blks�nZblk�locsZblk_vals�left_eaZrblks�k�rblk�right_ea�lvals�rvalsZ
res_values�nbsZnew_mgr� r$ �;/tmp/pip-build-5_djhm0z/pandas/pandas/core/internals/ops.py�operate_blockwise s" |