o
    Zhe                     @   s  d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dl	m
Z d dlmZ ejg dg ddejfddejfddejfddejfde ejfde ejfde ejfde ejfde ejfde ejfde ejfde ej fddej!fe"de" ej#fde$ ej%fe&d	dej'fe&d
dej(fddej)fddej*fde+ ej,fde- ej.fde/dej0fg ddej1fg de2e ej3fg de4e dej5fe j67 dej8fe j67 e9 ej:fe j ; dej<fe j ; = j>d de?dej@fe j ; = dejAfe jBdddejCfeDg ddejEfdddgddejFfddgeGeH e ejIfdd ZJdd  ZKd!d" ZLd#d$ ZMd%d& ZNd'd( ZOejjPejQd)koeR  d*d+d,d- ZSd.d/ ZTd0d1 ZUd2d3 ZVd4d5 ZWd6d7 ZXd8d9 ZYd:d; ZZejd<d=gde?dfd>e?dfde?dfde?d?fd>e?d?fde?d?fde[d@fdAe[d@fde[d@fde[dBfdAe[dBfde[dBfde\ fd>e\ fde\ fde9 fdAe9 fde9 fde]dBfdAe]dBfde]dBfde^dBfdAe^dBfde^dBfdCe_ fde_ fgd=ej`fdDdEZadFdG ZbejjPejQd)koeeR  d*d+dHdI ZcdJdK ZddLdM ZeejdNe\ e9 gdOdP ZfejjgdQdR ZhejjidSdT ZjdUdV ZkdWdX ZldYdZ Zmejjgd[d\ Znejjid]d^ Zod_d` Zpejd<dadbgejdceH ej)fe+ ej,fgddde Zqejd<dfdggejdce/ ej*fe- ej.fgdhdi Zrdjdk Zsejdle4eH ej1fe2eH ej3fgdmdn Ztdodp Zuejjgdqdr Zvdsdt Zwdudv Zxdwdx Zydydz Zzd{d| Z{d}d~ Z|dd Z}dd Z~dS )    N)util)valuetyklassFT   g      ?1.123z*1.1234567890123456789012345678901234567890strings   bytesZlargestrings
   largebytess   abc   r      r
   r   r   r
      )r   r   r
   r      r   )microseconds)days)r   r   ir   )abr   r   r   r   c                 C   s*  t j| |d}|  |jdd t||sJ | | ks J |t j| |dks+J || ks1J |dks7J t|t|ksAJ |jdu sHJ |d ksNJ t jd |jd}|jdu s]J | d u seJ |t j| |dkspJ ||	|}|
|sJ t|}| d usJ ~| d u sJ d S )NtypeTfullelseF)pascalarvalidate
isinstanceas_pyhashis_validr   loadsdumpsequalsweakrefref)r   r   r   pickle_moduler   restoredwr r+   Q/var/www/html/lang_env/lib/python3.10/site-packages/pyarrow/tests/test_scalars.pytest_basics   s*   (
r-   c                  C   sb   t jtdt dd} |   tjtdd | jdd W d    d S 1 s*w   Y  d S )N   Fsafez(string scalar contains invalid UTF8 datamatchTr   )	pccastr   r   r	   r   pytestraises
ValueErrorr   r+   r+   r,   test_invalid_scalarc   s   "r9   c                   C   s8   t t t  W d    d S 1 sw   Y  d S )N)r5   r6   RuntimeErrorr   Z
NullScalarr+   r+   r+   r,   test_null_singletonk   s   
"r;   c                 C   s   t d }|t ju sJ | d u sJ |dksJ |t d kdu s%J |dkdu s-J t jt jks5J t jdvs<J t d d g}|D ]}|t ju sNJ | d u sVJ qE| | |}||sfJ t	|}| d usrJ ~| d uszJ d S )N	somethingTr   F)r   )
r   r   ZNAr    arrayr#   r$   r%   r&   r'   )r(   nullarrvr)   r*   r+   r+   r,   
test_nullsp   s$   

rA   c                  C   sD   t td} t| |  }t|}t|tsJ t|dks J d S )Ni  )listranger   r=   setr   len)valuesr?   Zset_from_arrayr+   r+   r,   test_hashing   s
   rG   c                  C   s^   t ddiddigddid gg} t ddid gg}t| d }t|d }||ks-J d S )Nr   r         r   r   )r   r=   r!   )r   r   Zhash1Zhash2r+   r+   r,   test_hashing_struct_scalar   s
   "rJ   win32z-Timezone database is not installed on Windows)reasonc                  C   s   t tdtd} | dksJ t tjtdddtjdddd}|d	ks,J t tjtdddtd
d}|dksCJ t ttdtdd}|dksZJ d S )Nz
0000-01-01r   z0<pyarrow.TimestampScalar: '0000-01-01T00:00:00'>i  r   UTCtzr   z5<pyarrow.TimestampScalar: '2015-01-01T00:00:00+0000'>usz7<pyarrow.TimestampScalar: '2015-01-01T00:00:00.000000'>z
2000-01-01America/New_Yorkz5<pyarrow.TimestampScalar: '2000-01-01T00:00:00-0500'>)reprr   r   r4   	timestampdatetimer3   Zassume_timezoner   r   cdr+   r+   r,   test_timestamp_scalar   s   &"rX   c                  C   s   t d} t d}t| t jsJ t|t jsJ t|dks"J t|dks*J t| dks2J t| dks:J | du sBJ |  du sJJ d S )NFTz<pyarrow.BooleanScalar: True>Truez<pyarrow.BooleanScalar: False>False)r   r   r   BooleanScalarrR   strr    )falsetruer+   r+   r,   	test_bool   s   

r_   c                  C   s2  t d} t| t jsJ t| dksJ t| dksJ |  dks%J tt	 t jddd W d    n1 s<w   Y  t d} t| t j
sNJ t| dksVJ t| d	ks^J |  dksfJ t jtd
dd} t| t jsxJ t| dtd
dksJ t| dksJ |  d
ksJ d S )Nr   z<pyarrow.Int64Scalar: 1>1r   uint8r         ?z<pyarrow.DoubleScalar: 1.5>z1.5g      ?float16z<pyarrow.HalfFloatScalar: >z0.5)r   r   r   Int64ScalarrR   r\   r    r5   r6   OverflowErrorDoubleScalarnprc   HalfFloatScalarr8   r+   r+   r,   test_numerics   s$   

rj   c                  C   s  t d} t| }t|tjsJ | | ksJ |jtddks%J t d} t	
tj tj| tjdddd W d    n1 sGw   Y  t	
tj tj| tjdddd W d    n1 siw   Y  tj| tjdddd}t|tjsJ | | ksJ d S )Nr   r   r
   1.1234scaler   r   )decimalDecimalr   r   r   Decimal128Scalarr    r   
decimal128r5   r6   ArrowInvalidr@   r   r+   r+   r,   test_decimal128      


rt   c                  C   s  t d} t| }t|tjsJ | | ksJ |jtddks%J t d} t	
tj tj| tjdddd W d    n1 sGw   Y  t	
tj tj| tjdddd W d    n1 siw   Y  tj| tjdddd}t|tjsJ | | ksJ d S )	Nz,1234567890123456789012345678901234567890.123+   r
   rk   r   rl   r   r   )rn   ro   r   r   r   Decimal256Scalarr    r   Z
decimal256r5   r6   rr   rs   r+   r+   r,   test_decimal256   ru   rx   c                  C   sb   t ddd} t ddd}t t fD ]}| |fD ]}tj||d}| |ks-J qqd S )Ni  r   i  r   )rT   dater   date32date64r   r    )Zd1Zd2r   rW   r   r+   r+   r,   	test_date   s   r|   c                  C   s`   t jtdddt dd} tddd}t  t  fD ]}| |}| |ks-J qd S )Ni  r   rP   r   )	r   r   rT   rS   ry   rz   r{   r4   r    )r   expectedr   resultr+   r+   r,   test_date_cast  s   
r   c                  C   sv   t dd} t dd}tdtdtdtdg}|D ]}| |fD ]}tj||d}| |ks7J q&q d S )	N   r      r   msrP   nsr   )rT   timer   time32time64r   r    )t1t2typesr   tr   r+   r+   r,   test_time_from_datetime_time  s   $r   r   	time_typei   @r   rP   l            r   )r   r   c                 C   s,   t j| |d}|jdd |j| ksJ d S )Nr   Tr   )r   r   r   r   )r   r   Ztime_scalarr+   r+   r,   test_temporal_values  s   r   c                  C   s   t jddd} | dt jdddksJ | dt jdddks#J | dt jdddks1J tt t dd	 W d    d S 1 sJw   Y  d S )
Nr   int8r   int64uint32r	   5fooint32)r   r   r4   r5   r6   r7   )valr+   r+   r,   	test_cast;  s   "r   c               	   C   sd   t d dd l} tjdddddd| jd}tj|tjdddd	}|t	 td
ks0J d S )Npytzr     r   tzinfor   rM   rN   r   z2000-01-01 00:00:00.000000000Z)
r5   importorskipr   rT   utcr   r   rS   r4   r	   )r   dttsr+   r+   r,   test_cast_timestamp_to_stringD  s
   
 r   c                  C      t jdt  d} | jt  dd}t jdt  d}||ks!J tt j | t   W d    d S 1 s:w   Y  d S )Nrb   r   Fr/   r   )r   r   float64r4   r   r5   r6   rr   )Zfloat_scalarunsafe_castexpected_unsafe_castr+   r+   r,   test_cast_float_to_intO     "r   c                  C   r   )Nl   r   Fr/   g      PC)r   r   r   r4   r   r5   r6   rr   )Z
int_scalarr   r   r+   r+   r,   test_cast_int_to_floatY  r   r   typc                 C   s8   t d}|| }|t jtddd| dksJ d S )Nz
2021-01-01i  r   r   )r   r   r4   rT   ry   )r   r   r~   r+   r+   r,   test_cast_string_to_datec  s   

$r   c            
      C   s  dd l } | jdddj}g d}t|D ]k\}}d|}tj||}| 	d}|d 
 |ks5J |d jd|  |jksCJ d}tj||d	}	d|}tjj|||	d
}| 	dd|}|d 
 |ksqJ |d jd|  |jksJ qd S )Nr   z2000-01-01 12:34:56
   )Zperiods)r   rP   r   r   zdatetime64[{}]  rQ   rN   r   r   )pandasZ
date_rangerF   	enumerateformatr   Arrayfrom_pandasastype	Timestampr    r   rS   Ztz_localizeZ
tz_convert)
pdr?   unitsiunitdtype	arrow_arrr}   rO   Z
arrow_typer+   r+   r,   test_timestampj  s(   


r   c                  C   s   t d dd l} d}tjd|d}tjd|d}| |}tjdd	d	d	|d
}||}|	 }||ks7J |j
dks>J |jdksEJ tjd|d}t t |	  W d    d S 1 saw   Y  d S )Nr   r   rQ   r   rN   l   $=3ir   r   r   )r   r   i         $=3i)r5   r   r   r   rS   r   timezonerT   fromutcr    yearhourr6   r7   )r   rO   r   r   r   r}   r~   r+   r+   r,   test_timestamp_nanos_nopandas  s    



"r   c                  C   s   t d dd l} tjdddddd| jdtjddddd	d	d
| jdtjdddddd| jdg}|D ]}tj|tjdddd}| |ksHJ q2d S )Nr   r   r   r   i'           ;   i?B i  rP   rM   rN   r   )	r5   r   r   rT   r   r   r   rS   r    )r   Z
timestampsr   r   r+   r+   r,   test_timestamp_no_overflow  s   
r   c                  C   s:   t d tdgtjddd} t| d dksJ d S )Nr   r   r   z+02:00rN   z1970-01-01 02:00:00+02:00)r5   r   r   r=   rS   r\   )r?   r+   r+   r,   !test_timestamp_fixed_offset_print  s   
r   c                  C   s   t jddgdd} g d}t|D ]@\}}d|}t| |}tjdd}t|d	 	 tjs4J |d	 	 |ks>J |d	 j
d
|d	   | d ksQJ qd S )Nr        qaztimedelta64[ns]r   )rP   r   r   ztimedelta64[{}]  secondsr   r       eA)rh   r=   r   r   r   r   rT   	timedeltar   r    r   total_seconds)r?   r   r   r   r   r   r}   r+   r+   r,   test_duration  s   


r   c                  C   s   dd l } tjddgtdd}| d}t|d  | js!J |d  |ks+J |d j|jks5J tjdgtdd}|d  | jdddksOJ d S )	Nr   r   r   r   z1 hourr   r   )r   )r   r   r=   durationZ	Timedeltar   r    r   )r   r?   r}   r+   r+   r,   test_duration_nanos_pandas  s   
"r   c                  C   s   t ddgt d} tjdd}t| d  tjsJ | d  |ks'J | d j| d ks4J t jdgt dd	} t	
t | d   W d    d S 1 sVw   Y  d S )
Nr   r   r   r   r   r   r   r   r   )r   r=   r   rT   r   r   r    r   r   r5   r6   r7   )r?   r}   r+   r+   r,   test_duration_nanos_nopandas  s   "r   c                  C   s\   t g d} t | g}t|d  t jsJ |d  | ks#J |d j| ks,J d S )N)ii  ir   )r   MonthDayNanor=   r   r    r   )Ztripler?   r+   r+   r,   test_month_day_nano_interval  s
   r   r   u   mañana)r   
scalar_typc                 C   s   t j| |d}t||sJ | | ksJ | dksJ t| t|v s(J t|t| ks2J | }t|t js>J | | 	 ksHJ d S )Nr   r<   )
r   r   r   r    rR   r\   	as_bufferBuffer
to_pybytesencoder   r   r   r   bufr+   r+   r,   test_string  s   r   s   foos   barc                 C   s   t j| |d}t||sJ | | ksJ t|t| ks J t| t|v s*J | | ks2J |dks8J | }t|t jsDJ | | ksLJ d S )Nr   s   xxxxx)	r   r   r   r    r\   rR   r   r   r   r   r+   r+   r,   test_binary  s   r   c                  C   sz   t jdt dd} t| t jsJ |  dksJ tt j t jdt dd W d    d S 1 s6w   Y  d S )Ns   foofr   r   s   foof5)	r   r   binaryr   FixedSizeBinaryScalarr    r5   r6   rr   r8   r+   r+   r,   test_fixed_size_binary  s   "r   )r   r   c                 C   sD  dd g}t j|| d}|j| ksJ t|dksJ t|jt js#J |j |ks,J t||s3J t|t|v s=J |	 |ksEJ |d 	 dksOJ |d 	 d u sYJ |d |d kscJ |d |d ksmJ t
t |d  W d    n1 sw   Y  t
t |d  W d    d S 1 sw   Y  d S )	Nr   r   r   r   r   r   r   )r   r   r   rE   r   rF   r   	to_pylistrR   r    r5   r6   
IndexError)r   r   r@   r   r+   r+   r,   	test_list  s&   

"r   c                  C   sL   t tjg dt d} | jt t  ksJ |  g dks$J d S )Nr   r   )r   r   rh   r=   r   r   list_r    r8   r+   r+   r,   test_list_from_numpy.  s   r   c                  C   s  dd l } t| g d}| g dksJ tjdfdtjgtt fdtjgtt	 fdtjgttdfdtjgtt
 ftdtjgttd	d
fg}|D ]*\}}tttf tj||d W d    n1 szw   Y  tj||dd}q]d S )Nr   r   r>   r	   s   stringrH   T0r   r   r   )r   r   )r   r   r   ZSeriesr    rh   nanr   r   utf8Zbool_rn   ro   rq   r5   r6   r7   	TypeError)r   r   casescaser   r+   r+   r,   test_list_from_pandas4  s     r   c                  C   s  t jg dt t  dd} t| dksJ t| t jsJ t| dks'J |  g dks1J | d  dks;J | d  d u sEJ | d | d ksOJ t	
t | d	  W d    n1 scw   Y  t	
t | d  W d    d S 1 s}w   Y  d S )
N)r   Nr
   r
   r   z+<pyarrow.FixedSizeListScalar: [1, None, 3]>r   r   r   r   )r   r   r   r   rE   r   FixedSizeListScalarrR   r    r5   r6   r   r8   r+   r+   r,   test_fixed_size_listL  s   

"r   c                  C   s  t t dt  t dt  g} ddd}t j|| d}t|t|   kr2ddgks5J  J t| t jdt  dt jdt  dgksOJ t|	 dt jdt  dfdt jdt  dfgksmJ d|v ssJ d|v syJ d|vsJ d|vsJ |
 |ksJ t|t|ksJ t|
 t|ksJ t|dksJ t|d t jsJ t|d t jsJ |d 
 dksJ |d 
 dksJ tt |d	  W d    n1 sw   Y  t jd | d}t|t|   krddgksJ  J |
 d u sJ d|v sJ d|v s"J t|d t js-J t|d t js8J |d jd
u sBJ |d jd
u sLJ |d 
 d u sWJ |d 
 d u sbJ d S )Nxyr   g      @)r   r   r   zr   ZnonexistentF)r   structfieldint16float32r   rB   keysrF   itemsr    rR   rE   r   Int16ScalarFloatScalarr5   r6   KeyErrorr"   )r   r@   r   r+   r+   r,   test_struct\  sR   
,




0r   c               	   C   s(  t t dt  t dt  t dt  g} t jg d| d}t|t|   kr6g dks9J  J t	|dksAJ ||ksGJ t|
 dt dt  fdt dt  fdt dt  fgkslJ d|v srJ d|v sxJ d	|vs~J d
|vsJ tt |d  W d    n1 sw   Y  t|d t jsJ |d  dksJ t|d
 t jsJ |d
  dksJ t|d t jsJ |d  dksJ t|d t jsJ |d  dksJ dt|v sJ tjtdd |  W d    d S 1 sw   Y  d S )Nr   r   ))r   r   )r          @)r   r
   r   )r   r   r   r
   r   r   r   r   r   zpyarrow.StructScalarzduplicate field namesr1   )r   r   r   r   r   r   r   rB   r   rE   r   r5   r6   r   r   r   r    r   re   rR   r7   )r   r   r+   r+   r,   test_struct_duplicate_fields  sB   ,



$r   c                 C   s  t t  t  }ddg}t j||d}t|dksJ t|t js%J t|jt j	s.J t
|dks6J |j dddd	ddgksGJ t||D ]
\}}||ksVJ qLt jd |dD ]}q^| |ksiJ |d t jd	t  dt jdt  dfksJ |d
 |d ksJ |d |d ksJ tt |d  W d    n1 sw   Y  tt |d  W d    n1 sw   Y  | | |}||sJ d S )Nr   r   r   r   z)<pyarrow.MapScalar: [('a', 1), ('b', 2)]>r   r   )keyr   r   r   r   r   r   )r   map_r	   r   r   rE   r   	MapScalarrF   r   rR   r   zipr    r5   r6   r   r#   r$   r%   )r(   r   r@   r   r   j_r)   r+   r+   r,   test_map  s<   



r  c           
      C   s   t g d}t g d}t j||}g d}| |ks!J tt||D ]:\}\}}|| }| |ks:J |j |ksCJ |j	
|sKJ |j
|sSJ | | |}	|	
|sbJ q(d S )N)r   Nr   r   r   N)r   barbaz)r  Nr  r  r   N)r   r=   ZDictionaryArrayfrom_arraysr   r   r  r    r   indexr%   
dictionaryr#   r$   )
r(   indicesr
  r?   r}   r  r   r@   r   r)   r+   r+   r,   test_dictionary  s   r  c               	   C   s   g d} g d}t j| |}|d }t|t jsJ t|jt js$J |jt |d ks0J | dks8J |d }t|jt jsEJ | d u sMJ t	
t t dt t  t   W d    d S 1 slw   Y  d S )N)r
   r   r   r   r   )r   r   r   Nr
   r   r   r   )r   ZRunEndEncodedArrayr  r   ZRunEndEncodedScalarr   re   r=   r    r5   r6   NotImplementedErrorr   Zrun_end_encodedr   )Zrun_endsrF   r?   r   r+   r+   r,   test_run_end_encoded  s   "r  c              	   C   s|  t jt jg dt  dt g dt g dg}|D ]>}|jdd t|t js.J |j	|js7J |j
du s>J tt j | | | W d    n1 sWw   Y  q|d jdksfJ |d  dkspJ |d	 jdksyJ |d	  d
ksJ |d jd	ksJ |d  dksJ |d jd	ksJ |d  dksJ t jjt jg dddt jg dddt jg dddt jg dddgd}|D ]?}|jdd t|t jsJ |j	|jsJ |j
du sJ tt j | | | W d    n	1 sw   Y  q|d jdksJ |d  dks'J |d jd	ks1J |d  dks<J d S )N)r   r   r   r   r   rU   r   Tr   r   r   r   r   r   r
   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r
   r   )   a   b   c   dr   r   r   )r   Zvalue_offsetschildrenr  r   )r   Z
UnionArrayZfrom_sparser=   r   r   r   ZUnionScalarr   r%   r"   r5   r6   ZArrowNotImplementedErrorr#   r$   Z	type_coder    Z
from_dense)r(   r?   r   r+   r+   r,   
test_union  sV   r  c                   C   sp   t dgt t  t   dgksJ t dgt t jdt  ddt dt   dgks6J dS )z{
    Check we can call `MapScalar.as_py` with custom field names

    See https://github.com/apache/arrow/issues/36809
    )r   r  Z
custom_keyF)ZnullableZcustom_valueN)r   r   r   r	   r    r   r+   r+   r+   r,   ,test_map_scalar_as_py_with_custom_field_name6  s$   r  )rT   rn   r5   sysr&   numpyrh   Zpyarrowr   Zpyarrow.computeZcomputer3   Zpyarrow.testsr   markZparametrizer[   re   r   Z
Int8Scalarra   ZUInt8Scalarr   r   Zuint16ZUInt16Scalarr   ZInt32Scalarr   ZUInt32Scalarr   Zuint64ZUInt64Scalarrg   rc   ri   r   r   ro   rp   rw   ZStringScalarZBinaryScalarZlarge_stringZLargeStringScalarZlarge_binaryZLargeBinaryScalarr   r   Z
ListScalarZ
large_listZLargeListScalarr   r   ry   todayZDate32Scalarr{   ZDate64ScalarnowZTimestampScalarr   replacer   ZTime32ScalarZTime64Scalarr   ZDurationScalarr   ZMonthDayNanoIntervalScalarZStructScalarr   r	   r  r-   r9   r;   rA   rG   rJ   ZskipifplatformZwindows_has_tzdatarX   r_   rj   rt   rx   r|   r   r   r   rz   rS   r   Zmonth_day_nano_intervalZDataTyper   r   r   r   r   r   r   r   Znopandasr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r+   r+   r+   r,   <module>   sh  



	



 !"$%
'		
	







	
	






	

/+&1