�
���hƉ � �� � d Z ddlmZ ddlmZ ddlmZmZmZm Z m
Z
ddlZddl
mZmZmZ ddlmZmZmZmZmZ ddlmZ dd lmZ dd
lmZmZmZmZm Z m!Z! ddl"m#Z# ddl$m%Z%m&Z&m'Z' erdd
l(m)Z) dzd�Z*d{d�Z+e
dd�d|d�� � Z,e
d}d"�� � Z,d#d�d~d%�Z,g d&�Z-g d'�Z.dd+�Z/d�d/�Z0d�d2�Z1d�d6�Z2d�d9�Z3d�d:�Z4 d�d�dE�Z5d�dF�Z6 d�d�dK�Z7 d�d�dO�Z8 d�d�dU�Z9 d�d�dV�Z: d�d�dZ�Z;d�d]�Z< d�d�d_�Z= d�d�da�Z>d�dd�Z?e? d�d�df�� � Z@e? d�d�dg�� � ZAe? d�d�dh�� � ZBe? d�d�di�� � ZCd�dk�ZDd�dl�ZEe@eAdm�ZFd�d�dp�ZGd�dr�ZHd�dv�ZId�dy�ZJdS )�z$
Routines for filling missing data.
� )�annotations)�wraps)�
TYPE_CHECKING�Any�Literal�cast�overloadN)�NaT�algos�lib)� ArrayLike�AxisInt�F�
ReindexMethod�npt)�import_optional_dependency)�infer_dtype_from)�
is_array_like�
is_bool_dtype�is_numeric_dtype�is_numeric_v_string_like�is_object_dtype�needs_i8_conversion)�DatetimeTZDtype)�is_valid_na_for_dtype�isna�na_value_for_dtype��Index�mask�npt.NDArray[np.bool_]�length�intc � � t | � � r=t | � � |k r"t dt | � � � d|� �� � �| | } | S )zJ
Validate the size of the values passed to ExtensionArray.fillna.
z'Length of 'value' does not match. Got (z) expected )r �len�
ValueError)�valuer r" |