
    .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	 	 	 	 	 	 ddZy# 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 (w xY w)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.0TFc           
     Z   ddl m t        j                  dv }t        xr |xr t
         xr t        }|r*t        |t        j                  t        j                  f      rj                  | |      S t        j                  || j                        }t        j                  j                  | j                        r]dfd}t        | t        j                        r4t        j                   | j"                  D cg c]  } |||       c}      S  || |      S t        | t        j                        rMt        j                   | j"                  D cg c]$  }j%                  j'                  |      ||      & c}      S j%                  j'                  |       ||       S c c}w c c}w )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typec                    j                  |       }t        j                  d| j                        }j	                  |||       }j	                  |||      S )Nr   r	   )is_nullpascalarr
   if_else)arrfill_scalarmaskzero_duration
arr_zeroedpcs        S/var/www/app/trading-bot/venv/lib/python3.12/site-packages/pandas/compat/pyarrow.pyfill_null_durationz+_safe_fill_null.<locals>.fill_null_durationK   sI    ::c?DIIachh7MD-=J::dK<<    )r   pa.Arrayr   z	pa.Scalarreturnr   )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   
fill_value
is_windowsuse_fallbackr   r   chunkr   s          @r   _safe_fill_nullr.   (   sL   , !!44JX
X+?'?XDX  :j288R__2MN||C,,))JSXX6K	xxCHH%	= c2??+##EHZZPE#E;7P  "#{33#r'LOJJW5RZZ

5);>W
 	
 ::bjjo{C88 Q Xs   :F#)F()r   pa.Array | pa.ChunkedArrayr*   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   ImportErrorr.    r   r   <module>rC      sZ   3 " 
  ' GBNN+889E 78#44 78#44 78#44 78#44 78#44 78#44 78#44 78#44 78#44 78#447#677K39	#39143939  Ks   BC C$#C$