zmc
2023-08-08 e792e9a60d958b93aef96050644f369feb25d61b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
U
¬ý°d•ã@sðddlZddlZddlZddlmZejdddZ    ddl
m Z dd„ej DƒZ e dd„ejDƒ7Z e ejd    d
d    dgd d g7Z eje d d„e Dƒddd„ƒZdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zejdd„ƒZdd „Zd!d"„ZdS)#éNZpyarrowz1.0.1)Z
minversion)Úpyarrow_array_to_numpy_and_maskcCs"g|]}tjddddg|d‘qS)éééN©Údtype©ÚpdÚarray©Ú.0r©r úcd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\pandas/tests/arrays/masked/test_arrow_compat.pyÚ
<listcomp> srcCs"g|]}tjddddg|d‘qS)gš™™™™™¹?gš™™™™™É?g333333Ó?Nrrr r r rr sTFÚbooleanrcCsg|] }|jj‘qSr )rÚname)r Úar r rrs)ÚparamsÚidscCs|jS)zi
    Fixture returning parametrized array from given dtype, including integer,
    float and boolean
    )Úparam)Úrequestr r rÚdatasrcCs>t |¡}tj|jtddt |jj¡d}| |¡s:t‚dS)N)Zna_value©Útype)    Úpar
Zto_numpyÚobjectÚfrom_numpy_dtyperÚ numpy_dtypeÚequalsÚAssertionError)rÚarrÚexpectedr r rÚtest_arrow_arrays 
  þr"cCs`t d|i¡}t |¡}| d¡jt|jjƒks4t    ‚| 
¡}|dj|jksPt    ‚t   ||¡dS)Nr) r    Ú    DataFramerÚtableÚfieldrÚstrrrrÚ    to_pandasÚtmÚassert_frame_equal©rÚdfr$Úresultr r rÚtest_arrow_roundtrip"s 
r-c
CsÔdd„}tjdddgt ¡d}tjdddgt ¡d}tjdd    d
gt ¡d}tj |||gd d d g¡}|j|d}tj    dddgdd}tj    dddgdd}tj    dd    d
gdd}t 
|||dœ¡}    t   ||    ¡dS)NcSs,tj |¡rt ¡Stj |¡r(t ¡SdS)N)rÚtypesZ
is_booleanr    Z BooleanDtypeÚ
is_integerZ
Int64Dtype)Z
arrow_typer r rÚ types_mapper,s  z<test_dataframe_from_arrow_types_mapper.<locals>.types_mapperTFrrréÿÿÿÿréÚboolsÚintsÚ
small_ints)r0rrZInt64)r3r4r5) rr
Úbool_Úint64Zint8Z RecordBatchZ from_arraysr'r    ZSeriesr#r(r))
r0Z bools_arrayZ
ints_arrayZsmall_ints_arrayZ record_batchr,r3r4r5r!r r rÚ&test_dataframe_from_arrow_types_mapper+sÿ r8cCsŒt d|dd…i¡}t |¡}| d¡jt|jjƒks<t    ‚tjtj
g| d¡jdg|j d}|  ¡}|dj|jks|t    ‚t  ||¡dS)Nrrr)Úschema)r    r#rr$r%rr&rrrZ chunked_arrayr9r'r(r)r*r r rÚ test_arrow_load_from_zero_chunks@s
ÿr:cCsNt ¡}| tjdddddgdd¡}tjdddddgdd}t ||¡dS)    Nrrrér7rZUInt32r)r    Z UInt32DtypeÚ__from_arrow__rr
r(Zassert_extension_array_equal)rr,r!r r rÚtest_arrow_from_arrow_uintNsr=cCs˜t d|i¡}t |¡}| dd¡ ¡}|jdd…jdd}t     ||¡| 
|d¡}t |¡}| dd¡ ¡}|jdd…jdd}t     ||¡dS)NrrT)Zdropr) r    r#rr$Úslicer'ZilocZ reset_indexr(r)Zfillna)rr+r$r,r!Zdf2r r rÚtest_arrow_slicedYs
 
r?cCs\t |¡}t |¡}tjddddg|d}tjdddg|d}t ddddg¡}||||fS)    zt
    Fixture returning actual and expected dtype, pandas and numpy arrays and
    mask from a given numpy dtype
    rrrNrrTF)Únprrrr
)Zany_real_numpy_dtypeÚnp_dtypeZpa_typeÚpa_arrayÚ np_expectedÚ mask_expectedr r rÚnp_dtype_to_arraysjs 
 
rEcCs¼|\}}}}t||ƒ\}}t |dd…|¡t ||¡| ¡d}| ¡d}| ¡d ¡}    t |    d¡}
tjj|j    t
|ƒ||
g|j d} |   ¡t| |ƒ\}}t |dd…|¡t ||¡d|j    j d} t | |    ¡} t d¡}tjj|j    t
|ƒ|| g|j dd}|  ¡t||ƒ\}}t |dd…|¡t ||¡tjg|d    }tjgtjd    }tjj|j    d||g|j d}|  ¡t||ƒ\}}t |dd…|¡t ||¡dS)
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
    Nrrró)rÚlengthÚbuffersÚoffsetéór)rr(Zassert_numpy_array_equalrHZ
to_pybytesrZ    py_bufferÚArrayZ from_buffersrÚlenrIÚvalidateZ    bit_widthr@r
r6)rErArBrCrDrÚmaskZ mask_bufferZ data_bufferZdata_buffer_bytesZdata_buffer_trailZpa_array_trailrIZdata_buffer_offsetZmask_buffer_offsetZpa_array_offsetZnp_expected_emptyZmask_expected_emptyr r rÚ$test_pyarrow_array_to_numpy_and_mask|sV
   ü 
ü ürPc    Cs:t |¡ d¡}tjtdd|j |¡W5QRXdS)NÚstring)Úmatch)rr
ÚcastÚpytestZraisesÚ    TypeErrorrr<)rr r r rÚtest_from_arrow_type_error»srV)Únumpyr@rTZpandasr    Zpandas._testingZ_testingr(Z importorskiprZ%pandas.core.arrays.arrow._arrow_utilsrZALL_INT_EA_DTYPESZarraysZFLOAT_EA_DTYPESr
Zfixturerr"r-r8r:r=r?rErPrVr r r rÚ<module>s(  
         
?