�
���hp � �* � d dl mZ d dlZd dlmZ d dlZd dlmZ d dlZd dlm Z m
Z
mZmZm
Z
d dlZd dlZd dlmZ d dlmZ d dlmZ d d lmZmZmZmZmZmZmZmZ d d
l m!Z! d dl"m#Z# d dl$m%Z% d d
l&m'Z' d dl(m)Z) d dl*m+Z+m,Z,m-Z-m.Z.m/Z/ d dl0m1Z1m2Z2 d dl3m4Z4m5Z5m6Z6 d dl7m8Z8 d dl9m:c m;Z< d dl=m>Z> e r*d dl?m@Z@mAZAmBZBmCZCmDZD d dlEmFZFmGZGmHZH d dlImJZJ d dlKmLZL d dlMmNZN eOePe
f ZQ dfdgd.�ZR G d/� d0ejS �1� � ZT G d2� d3eT� � ZU G d4� d-eU� � ZV G d5� d6eV� � ZW G d7� d8eV� � ZX G d9� d:eU� � ZY G d;� d<eT� � ZZ G d=� d>eZ� � Z[dhdA�Z\didB�Z]djdF�Z^dkdI�Z_dldR�Z`dmdS�ZadndV�ZbdodY�Zcdpd[�Zddqd`�Zedrde�ZfdS )s� )�annotationsN)�defaultdict)�partial)�
TYPE_CHECKING�Any�Callable�Literal�cast)�option_context)�lib)�BlockValuesRefs)�AggFuncType�AggFuncTypeBase�AggFuncTypeDict�
AggObjType�Axis�AxisInt�NDFrameT�npt)�import_optional_dependency)�SpecificationError)�cache_readonly)�find_stack_level)�is_nested_object)�is_dict_like�is_extension_array_dtype�is_list_like�is_numeric_dtype�is_sequence)�CategoricalDtype�ExtensionDtype)�ABCDataFrame�
ABCNDFrame� ABCSeries)�generate_apply_looper)�ensure_wrapped_if_datetimelike)� Generator�Hashable�Iterable�MutableMapping�Sequence)� DataFrame�Index�Series)�GroupBy)� Resampler)�
BaseWindowF�compat�python�objr, �funcr �axisr �raw�bool�result_type�
str | None�by_row�Literal[False, 'compat']�engine�str�
engine_kwargs�dict[str, bool] | None�return�
FrameApplyc
� � | � |� � }|dk rt }
n
|dk rt }
t |fi | ��\ }}}}|�J � |
| |||||||| �� � S )z=construct and return a row or column based frame apply objectr � N)r7 r9 r; r= r? �args�kwargs)�_get_axis_number�
FrameRowApply�FrameColumnApply�reconstruct_func)r4 r5 r6 r7 r9 r; r= r? rE rF �klass�_s �H/opt/cloudlinux/venv/lib64/python3.11/site-packages/pandas/core/apply.py�frame_applyrN R s� � � ����%�%�D��q�y�y����
���� ��$�T�4�4�V�4�4�M�A�t�Q�������5�������#�
��
�
�
�
� c � � e Zd ZU ded< |