
    Owg              
       .   d dl Zd dlZd dlZd dlmZ ej                  j                  d      Z
 ej                  d      Zd dlmZ ej                  D  cg c]  }  ej                   g d|        c} Zeej$                  D  cg c]  }  ej                   g d|        c} z  Ze ej                   g dd	      gz  Z ej&                  eeD cg c]  }|j(                  j*                   c}
      d        Zd Zd Zd Zd Zd Zd Zej&                  d        Zd Zej                  j?                  dejA                  d      ejC                  ejA                  d      ejA                  d      g      g      d        Z"d Z#yc c} w c c} w c c}w )    Nz=ignore:Passing a BlockManager to DataFrame:DeprecationWarningpyarrow)pyarrow_array_to_numpy_and_mask)         Ndtype)g?g?g333333?N)TFTNboolean)paramsidsc                     | j                   S )zi
    Fixture returning parametrized array from given dtype, including integer,
    float and boolean
    )param)requests    c/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/arrays/masked/test_arrow_compat.pydatar      s     ==    c                     t         j                  |       }t         j                  | j                  t        d       t         j	                  | j
                  j                              }|j                  |      sJ y )N)na_valuetype)paarrayto_numpyobjectfrom_numpy_dtyper	   numpy_dtypeequals)r   arrexpecteds      r   test_arrow_arrayr       s^    
((4.Cxxft,  !7!78  H ::hr   c                 ^   t        j                  d| i      }t        j                  |      }|j	                  d      j
                  t        | j                  j                        k(  sJ |j                         }|d   j                  | j                  k(  sJ t        j                  ||       y )Na)pd	DataFramer   tablefieldr   strr	   r   	to_pandastmassert_frame_equalr   dfr%   results       r   test_arrow_roundtripr.   &   s    	sDk	"BHHRLE;;s  C

(>(>$????__F#;

***&"%r   c                  n   d } t         j                  g dt         j                               }t         j                  g dt         j                               }t         j                  g dt         j	                               }t         j
                  j                  |||gg d      }|j                  |       }t        j                  g dd	      }t        j                  g dd
	      }t        j                  g dd
	      }t        j                  |||d      }	t        j                  ||	       y )Nc                     t         j                  j                  |       rt        j                         S t         j                  j                  |       rt        j                         S y )N)r   types
is_booleanr#   BooleanDtype
is_integer
Int64Dtype)
arrow_types    r   types_mapperz<test_dataframe_from_arrow_types_mapper.<locals>.types_mapper1   sD    88z*??$$XX  ,==?" -r   )TNFr   )r   Nr   )r      )boolsints
small_ints)r7   r
   r   Int64)r   r   bool_int64int8RecordBatchfrom_arraysr(   r#   Seriesr$   r)   r*   )
r7   bools_array
ints_arraysmall_ints_arrayrecord_batchr-   r:   r;   r<   r   s
             r   &test_dataframe_from_arrow_types_mapperrH   0   s    # ((.RXXZ(@K,RXXZ8Jxx
x;>>--	j"235TL ###>FII);E99\1D:W5J||eTTUH&(+r   c                    t        j                  d| dd i      }t        j                  |      }|j	                  d      j
                  t        | j                  j                        k(  sJ t        j                  t        j                  g |j	                  d      j
                        g|j                        }|j                         }|d   j                  | j                  k(  sJ t        j                  ||       y )Nr"   r   r   )schema)r#   r$   r   r%   r&   r   r'   r	   r   chunked_arrayrJ   r(   r)   r*   r+   s       r    test_arrow_load_from_zero_chunksrL   E   s     
sD1I&	'BHHRLE;;s  C

(>(>$????HH			"5;;s#3#8#8		9:5<<  E __F#;

***&"%r   c                      t        j                         } | j                  t        j	                  g dd            }t        j                  g dd      }t        j                  ||       y )N)r   r   r      Nr?   r   UInt32r   )r#   UInt32Dtype__from_arrow__r   r   r)   assert_extension_array_equal)r	   r-   r   s      r   test_arrow_from_arrow_uintrS   S   sO     NNE!!"((+=G("LMFxx*(;H##FH5r   c                    t        j                  d| i      }t        j                  |      }|j	                  dd       j                         }|j                  dd  j                  d      }t        j                  ||       |j                  | d         }t        j                  |      }|j	                  dd       j                         }|j                  dd  j                  d      }t        j                  ||       y )Nr"   r   T)dropr   )r#   r$   r   r%   slicer(   ilocreset_indexr)   r*   fillna)r   r,   r%   r-   r   df2s         r   test_arrow_slicedr[   ^   s     
sDk	"BHHRLE[[D!++-Fwwqr{&&D&1H&(+ ))DG
CHHSME[[D!++-Fxx|''T'2H&(+r   c                     t        j                  |       }t        j                  |      }t        j	                  g d|      }t        j                  g d|      }t        j                  g d      }||||fS )zt
    Fixture returning actual and expected dtype, pandas and numpy arrays and
    mask from a given numpy dtype
    )r   r   r   Nr   )r   r   r   r   )TTTF)npr	   r   r   r   )any_real_numpy_dtypenp_dtypepa_typepa_arraynp_expectedmask_expecteds         r   np_dtype_to_arraysrd   o   sg     xx,-H!!(+G xxgx6H ((9H5KHH67MX{M99r   c                    | \  }}}}t        ||      \  }}t        j                  |dd |       t        j                  ||       |j                         d   }|j                         d   }|j                         d   j	                         }	t
        j                  |	dz         }
t
        j                  j                  |j                  t        |      ||
g|j                        }|j                          t        ||      \  }}t        j                  |dd |       t        j                  ||       d|j                  j                  dz  z  }t
        j                  ||	z         }t
        j                  d      }t
        j                  j                  |j                  t        |      ||g|j                  dz         }|j                          t        ||      \  }}t        j                  |dd |       t        j                  ||       t        j                  g |	      }t        j                  g t        j                   	      }t
        j                  j                  |j                  d||g|j                        }|j                          t        ||      \  }}t        j                  |dd |       t        j                  ||       y)
a&  
    Test conversion from pyarrow array to numpy array.

    Modifies the pyarrow buffer to contain padding and offset, which are
    considered valid buffers by pyarrow.

    Also tests empty pyarrow arrays with non empty buffers.
    See https://github.com/pandas-dev/pandas/issues/40896
    Nr   r   r       )r   lengthbuffersoffset      r   )r   r)   assert_numpy_array_equalrh   
to_pybytesr   	py_bufferArrayfrom_buffersr   lenri   validate	bit_widthr]   r   r>   )rd   r_   ra   rb   rc   r   maskmask_bufferdata_bufferdata_buffer_bytesdata_buffer_trailpa_array_trailri   data_buffer_offsetmask_buffer_offsetpa_array_offsetnp_expected_emptymask_expected_emptys                     r   $test_pyarrow_array_to_numpy_and_maskr      s}    6H2Hh]08DJD$Ra+6m4""$Q'K""$Q'K ((*1-88: %6%@AXX**]]8}/0	 + N 0JJD$Ra+6m4 //145Ff/@&@Ag.hh++]]8}#%78"	 , O 0(KJD$Ra+6m4 84((2RXX6hh++]]k*	 , O 0(KJD$Ra*;<&9:r   r   
   rN      c                     | j                   j                  |      }|j                         j                         sJ t	        |      dk(  sJ y )Nr   )r	   rQ   isnaallrq   )r   r   ress      r   test_from_arrow_nullr      s>     **
#
#C
(C88:>>s8r>>r   c                     t         j                  |       j                  d      }t        j                  t
        d       5  | j                  j                  |       d d d        y # 1 sw Y   y xY w)Nstring)match)r   r   castpytestraises	TypeErrorr	   rQ   )r   r   s     r   test_from_arrow_type_errorr      sS     ((4.

h
'C	y	- ' 	

!!#&' ' 's    A%%A.)$numpyr]   r   pandasr#   pandas._testing_testingr)   markfilterwarnings
pytestmarkimportorskipr   %pandas.core.arrays.arrow._arrow_utilsr   ALL_INT_EA_DTYPESr   arraysFLOAT_EA_DTYPESfixturer	   namer   r    r.   rH   rL   rS   r[   rd   r   parametrizenullsrK   r   r   )r	   r"   s   00r   <module>r      s      [[''C
 V# Q>@>R>R	SU("((?%
0	S REWEW
XE8288)7
X X 8288-Y?
@ @ v&#AQAGGLL#AB C &,*&6," : :"<;~ 	BHHRL"**BHHQK!+EFG'u 
T
X $Bs   FFF
