
    Eg              
          d dl Zd dlZd dlZd dlmZ ej        	                    d          Z
 ej        d          Zd dlmZ d ej        D             Zed ej        D             z  Ze ej        g dd	          gz  Z ej        ed
 eD                       d             Zd Zd Zd Zd Zd Zd Zej        d             Zd Zej                            de                    d          e                    e                    d          e                    d          g          g          d             Z d Z!dS )    Nz=ignore:Passing a BlockManager to DataFrame:DeprecationWarningpyarrow)pyarrow_array_to_numpy_and_maskc                 >    g | ]}t          j        g d |          S ))         Ndtypepdarray.0r
   s     a/var/www/sysmax/venv/lib/python3.11/site-packages/pandas/tests/arrays/masked/test_arrow_compat.py
<listcomp>r      s+    	S	S	SU"(???%
0
0
0	S	S	S    c                 >    g | ]}t          j        g d |          S ))g?g?g333333?Nr	   r   r   s     r   r   r      s.    
X
X
XE28)))777
X
X
Xr   )TFTNbooleanr	   c                 &    g | ]}|j         j        S  )r
   name)r   as     r   r   r      s    #A#A#AQAGL#A#A#Ar   )paramsidsc                     | j         S )zi
    Fixture returning parametrized array from given dtype, including integer,
    float and boolean
    )param)requests    r   datar      s     =r   c                    t                               |           }t                               |                     t          d           t                               | j        j                            }|                    |          sJ d S )N)na_valuetype)par   to_numpyobjectfrom_numpy_dtyper
   numpy_dtypeequals)r   arrexpecteds      r   test_arrow_arrayr+      sr    
((4..Cxxft,,  !788   H ::hr   c                 V   t          j        d| i          }t                              |          }|                    d          j        t          | j        j                  k    sJ |	                                }|d         j        | j        k    sJ t          j        ||           d S )Nr   )r   	DataFramer#   tablefieldr"   strr
   r'   	to_pandastmassert_frame_equalr   dfr.   results       r   test_arrow_roundtripr7   &   s    	sDk	"	"BHHRLLE;;s C
(>$?$?????__F#;
****&"%%%%%r   c                     d } t                               g dt                                                     }t                               g dt                                                     }t                               g dt                                                     }t           j                            |||gg d          }|                    |           }t          j	        g dd	          }t          j	        g dd
	          }t          j	        g dd
	          }t          j
        |||d          }	t          j        ||	           d S )Nc                     t           j                            |           rt          j                    S t           j                            |           rt          j                    S d S )N)r#   types
is_booleanr   BooleanDtype
is_integer
Int64Dtype)
arrow_types    r   types_mapperz<test_dataframe_from_arrow_types_mapper.<locals>.types_mapper1   sV    8z** 	#?$$$X  ,, 	#=??"	# 	#r   )TNFr!   )r   Nr   )r      )boolsints
small_ints)r@   r   r	   Int64)r#   r   bool_int64int8RecordBatchfrom_arraysr1   r   Seriesr-   r2   r3   )
r@   bools_array
ints_arraysmall_ints_arrayrecord_batchr6   rC   rD   rE   r*   s
             r   &test_dataframe_from_arrow_types_mapperrQ   0   s:   # # # ((...RXXZZ(@@K,,,RXXZZ88Jxx


x;;>--	j"235T5T5T L ###>>FI)));;;E9\\\111D:::W555J|eTTTUUH&(+++++r   c                    t          j        d| dd         i          }t                              |          }|                    d          j        t          | j        j                  k    sJ t                              t          	                    g |                    d          j                  g|j
                  }|                                }|d         j        | j        k    sJ t          j        ||           d S )Nr   r   r!   )schema)r   r-   r#   r.   r/   r"   r0   r
   r'   chunked_arrayrS   r1   r2   r3   r4   s       r    test_arrow_load_from_zero_chunksrU   E   s     
sD1I&	'	'BHHRLLE;;s C
(>$?$?????HH			"5;;s#3#3#8		9	9:5<   E __F#;
****&"%%%%%r   c                      t          j                    } |                     t                              g dd                    }t          j        g dd          }t          j        ||           d S )N)r   r   r      NrH   r!   UInt32r	   )r   UInt32Dtype__from_arrow__r#   r   r2   assert_extension_array_equal)r
   r6   r*   s      r   test_arrow_from_arrow_uintr\   S   so     NE!!"((+=+=+=G("L"LMMFx***(;;;H#FH55555r   c                 P   t          j        d| i          }t                              |          }|                    dd                                           }|j        dd                              d          }t          j	        ||           |
                    | d                   }t                              |          }|                    dd                                           }|j        dd                              d          }t          j	        ||           d S )Nr   r   T)dropr   )r   r-   r#   r.   slicer1   ilocreset_indexr2   r3   fillna)r   r5   r.   r6   r*   df2s         r   test_arrow_slicedrd   ^   s     
sDk	"	"BHHRLLE[[D!!++--Fwqrr{&&D&11H&(+++ ))DG

CHHSMME[[D!!++--Fx|''T'22H&(+++++r   c                    t          j        |           }t                              |          }t                              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_arraysrm   o   s     x,--H!!(++G xxgx66H (999H555KH66677MX{M99r   c                     | \  }}}}t          ||          \  }}t          j        |dd         |           t          j        ||           |                                d         }|                                d         }|                                d                                         }	t
                              |	dz             }
t
          j                            |j	        t          |          ||
g|j                  }|                                 t          ||          \  }}t          j        |dd         |           t          j        ||           d|j	        j        dz  z  }t
                              ||	z             }t
                              d          }t
          j                            |j	        t          |          ||g|j        dz             }|                                 t          ||          \  }}t          j        |dd         |           t          j        ||           t          j        g |	          }t          j        g t          j        	          }t
          j                            |j	        d||g|j                  }|                                 t          ||          \  }}t          j        |dd         |           t          j        ||           dS )
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   r2   assert_numpy_array_equalrq   
to_pybytesr#   	py_bufferArrayfrom_buffersr"   lenrr   validate	bit_widthrf   r   rG   )rm   rh   rj   rk   rl   r   maskmask_bufferdata_bufferdata_buffer_bytesdata_buffer_trailpa_array_trailrr   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DDJD$RaR+666m444""$$Q'K""$$Q'K ((**1-88:: %6%@AAX**]8}}/0	 +  N 0JJJD$RaR+666m444 /145Ff/@&@AAg..h++]8}}#%78"	 ,  O 0(KKJD$RaR+666m444 8444(2RX666h++]k*	 ,  O 0(KKJD$RaR*;<<<&9:::::r   r)   
   rW      c                     | j                             |          }|                                                                sJ t	          |          dk    sJ d S )Nr   )r
   rZ   isnaallrz   )r   r)   ress      r   test_from_arrow_nullr      sN     *
#
#C
(
(C88::>>s88r>>>>>>r   c                     t                               |                               d          }t          j        t
          d           5  | j                            |           d d d            d S # 1 swxY w Y   d S )Nstring)match)r#   r   castpytestraises	TypeErrorr
   rZ   )r   r)   s     r   test_from_arrow_type_errorr      s     ((4..

h
'
'C	y	-	-	- ' ' 	
!!#&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 's   	A11A58A5)"numpyrf   r   pandasr   pandas._testing_testingr2   markfilterwarnings
pytestmarkimportorskipr#   %pandas.core.arrays.arrow._arrow_utilsr   ALL_INT_EA_DTYPESarraysFLOAT_EA_DTYPESr   fixturer   r+   r7   rQ   rU   r\   rd   rm   r   parametrizenullsrT   r   r   r   r   r   <module>r      s                 [''C 
 V## Q Q Q Q Q Q	S	Sb>R	S	S	S 
X
XREW
X
X
X X 828---Y???
@ @ v#A#A&#A#A#ABBB  CB     & & &, , ,*& & &6 6 6, , ," : : :"<; <; <;~ 	BHHRLL"**BHHQKK!+EFFG   ' ' ' ' 'r   