
    iK                       d Z ddlmZ ddlZddlmZ ddlmZ dZ	 ddl	Z
 e ee
j                  j                  Ze ed          k     Ze ed          k     Ze ed	          k     Ze ed
          k     Ze ed          k     Ze ed          k     Ze ed          k     Ze ed          k     Ze ed          k     Ze ed          k     Ze ee          k    Zn!# e$ r dZdZdZdZdZdZdZdZdZdZdZY nw xY wddZdS )z-support pyarrow compatibility across versions    )annotationsN)Any)Versionz13.0.0z14.0.0z14.0.1z15.0.0z16.0.0z17.0.0z18.0.0z19.0.0z20.0.0z21.0.0z22.0.0TFarrpa.Array | pa.ChunkedArray
fill_valuer   returnc                   ddl m t          j        dv }t          o|ot
           ot          }|r&t          |t          j	        t          j
        f          r                    | |          S t          j        || j                  t          j                            | j                  rRdfd
t          | t          j
                  r&t          j        fd| j        D                       S  |           S t          | t          j
                  r&t          j        fd| j        D                       S                                         |           |           S )ab  
    Safe wrapper for pyarrow.compute.fill_null with fallback for Windows + pyarrow 21.

    pyarrow 21.0.0 on Windows has a bug in fill_null that incorrectly fills null values.
    This function uses a fallback implementation for that specific case, otherwise uses
    the standard pyarrow.compute.fill_null.

    Parameters
    ----------
    arr : pyarrow.Array | pyarrow.ChunkedArray
        Input array with potential null values.
    fill_value : Any
        Value to fill nulls with.

    Returns
    -------
    pyarrow.Array | pyarrow.ChunkedArray
        Array with nulls filled with fill_value.
    r   N)win32cygwintyper   pa.Arrayfill_scalar	pa.Scalarr	   c                                         |           }t          j        d| j                  }                    |||           }                    |||          S )Nr   r   )is_nullpascalarr   if_else)r   r   maskzero_duration
arr_zeroedpcs        R/root/projects/butler/venv/lib64/python3.11/site-packages/pandas/compat/pyarrow.pyfill_null_durationz+_safe_fill_null.<locals>.fill_null_durationK   sS    ::c??DIach777MD-==J::dK<<<    c                (    g | ]} |          S  r   ).0chunkr   r   s     r   
<listcomp>z#_safe_fill_null.<locals>.<listcomp>S   s'    PPPE##E;77PPPr   c                d    g | ],}                                         |          |          -S r   )r   r   )r    r!   r   r   s     r   r"   z#_safe_fill_null.<locals>.<listcomp>Y   s5    WWW5RZZ

5));>>WWWr   )r   r   r   r   r	   r   )pyarrow.computecomputesysplatformHAS_PYARROWpa_version_under21p0pa_version_under22p0
isinstancer   ArrayChunkedArray	fill_nullr   r   typesis_durationchunked_arraychunksr   r   )r   r   
is_windowsuse_fallbackr   r   r   s       @@@r   _safe_fill_nullr5   (   s   , !     !44JX
X+?'?XDX   -:j28R_2MNN -||C,,,)JSX666K	xCH%% 4	= 	= 	= 	= 	= 	= c2?++ 	#PPPPPSZPPP   "!#{333#r'' 
WWWWWCJWWW
 
 	
 ::bjjoo{C888r   )r   r   r   r   r	   r   )__doc__
__future__r   r&   typingr   pandas.util.versionr   PYARROW_MIN_VERSIONpyarrowr   __version__base_version_palvpa_version_under14p0pa_version_under14p1pa_version_under15p0pa_version_under16p0pa_version_under17p0pa_version_under18p0pa_version_under19p0pa_version_under20p0r)   r*   r(   ImportErrorr5   r   r   r   <module>rH      s   3 3 " " " " " " 



       ' ' ' ' ' ' GGGBN++899E 778#4#44 778#4#44 778#4#44 778#4#44 778#4#44 778#4#44 778#4#44 778#4#44 778#4#44 778#4#4477#6777KK   KKK39 39 39 39 39 39s   CC$ $DD