o
    ZhT                     @   s  d dl m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
  mZ d dlmZ zd dlZW n	 ey8   Y nw dd Zdd Zejjdd	 Zejjd
d Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Z d d! Z!d"d# Z"d$d% Z#d&d' Z$d(d) Z%d*d+ Z&d,d- Z'd.d/ Z(d0d1 Z)d2d3 Z*d4d5 Z+d6d7 Z,d8d9 Z-d:d; Z.ejjd<d= Z/d>d? Z0d@dA Z1dBdC Z2dS )D    )OrderedDictN)Versionc                  C   s@   d} t jt| d t  W d    d S 1 sw   Y  d S )NzGDo not call Schema's constructor directly, use `pyarrow.schema` instead)match)pytestraises	TypeErrorpaSchema)msg r   P/var/www/html/lang_env/lib/python3.10/site-packages/pyarrow/tests/test_schema.pytest_schema_constructor_errors#   s   
"r   c                  C   s6   g d} | D ]}t t|}| }t||ksJ qd S )N)int8int16int32int64uint8uint16uint32uint64)getattrr   str)Zdtypesnamefactorytr   r   r   test_type_integers*   s   
r   c                  C   sX  t d} ttjtdk rt d} t t jft t jft	 t j	ft
 t j
ft t jft t jft t jft t jft t jft t jft t jft t jft t jft | ft | ftd| ft t jftdt jft t jftt	 t jftt t t jfg}|D ]\}}| |ksJ qd S )Ndatetime64[ms]z2.0.0datetime64[ns]ms   )npdtyper   pd__version__r   nullZobject_bool_r   r   r   r   r   r   r   r   float16float32float64date32date64	timestampbinarystringlist_map_Zto_pandas_dtype)ZM8casesZ
arrow_typeZ
numpy_typer   r   r   test_type_to_pandas_dtype4   s8   



r1   c                   C   s   t d d S )Nzarrow_7980.py)	test_utilZinvoke_scriptr   r   r   r   &test_type_to_pandas_dtype_check_importU   s   r3   c                  C   sP   t  } t | }t|dksJ t dt  }t |}t|dks&J d S )Nzlist<item: int32>Zmy_itemzlist<my_item: string>)r   r   r.   r   fieldr-   )Z
value_typeZ	list_typer4   l2r   r   r   test_type_list[   s   

r6   c                  C   s4   t  } | t  ksJ | dksJ | dksJ d S )Nr      )r   r   )valr   r   r   test_type_comparisonse   s   r9   c                  C   s
  g dt  fdt  fdt  fdt  fdt  fdt  fdt  fdt  fd	t  fd
t  fdt  fdt  fdt  fdt  fdt  fdt  fdt 	 fdt 	 fdt 
 fdt 
 fdt  fdt  fdt  fdt  fdt  fdt dfdt dfdt dfd t d!fd"t dfd#t dfd$t dfd%t d!fd&t dfd't dfd(t dfd)t d!fd*t  f} | D ]\}}t ||ksJ qd S )+Ni1r   i2r   i4r   i8r   u1r   u2r   Zu4r   u8r   Zf4r'   Zf8r(   r)   r*   r-   r   r,   	time32[s]sz
time32[ms]r   z
time64[us]us
time64[ns]nsztimestamp[s]ztimestamp[ms]ztimestamp[us]ztimestamp[ns]zduration[s]zduration[ms]zduration[us]zduration[ns]month_day_nano_interval)r   r   r   r   r   r   r   r   r   r'   r(   r)   r*   r-   r,   time32time64r+   durationrF   Ztype_for_alias)r0   r8   expectedr   r   r   test_type_for_aliasl   s   








	
















 !"#$%
&)rK   c                  C   s   t  } t| dksJ d S )Nr-   )r   r-   r   )r   r   r   r   test_type_string   s   rL   c                  C   s2   d} t jd| d}|jdksJ |j| ksJ d S )NzAmerica/Los_AngelesrE   )tz)r   r+   unitrM   )rM   r   r   r   r   test_type_timestamp_with_tz   s   rO   c                  C   s   t d} t d}t d}t d}| jdksJ |jdks"J |jdks)J |jdks0J t| dks8J t|dks@J tt t d W d    n1 sUw   Y  tt t d W d    d S 1 spw   Y  d S )NrB   r   rC   rE   rA   rD   )r   rG   rH   rN   r   r   r   
ValueError)t1t2Zt3Zt4r   r   r   test_time_types   s    



"rS   c                  C   sZ  t dt ft dt ft dt ft dt ft dt ft dt ft dt	 ft dt
 ft d	t ft d
t ft dt ft dt ft dt ft dtdft dtdft dtdft dtdft dtdft dtdft dtdft dtdfg} | D ]\}}t|}||ksJ qtdt ksJ tt jt ksJ tdt ksJ ttt ksJ tt tt d W d    n	1 s
w   Y  tt td W d    d S 1 s&w   Y  d S )Nboolr   r   r   r   r   r   r   r&   r'   r(   USzdatetime64[s]rB   r   r   zdatetime64[us]rC   r   rE   ztimedelta64[s]ztimedelta64[ms]ztimedelta64[us]ztimedelta64[ns]OZnot_convertible_to_dtype)r    r!   r   r%   r   r   r   r   r   r   r   r&   r'   r(   r-   r,   r+   rI   Zfrom_numpy_dtypeZstr_rT   r   r   NotImplementedErrorr   )r0   dtptresultr   r   r   test_from_numpy_dtype   sF   
$r\   c               	   C   s*  t dt  t dt  t dt t  g} t | }|jg dks(J |jt  t  t t  gks;J t	|dksCJ |d j
dksLJ |d j| d jksXJ |dj
dksbJ |dj| d jksoJ t|dkswJ tt t d g W d    d S 1 sw   Y  d S )Nfoobarbazr]   r^   r_      r   Bfoo: int32
bar: string
baz: list<item: int8>
  child 0, item: int8)r   r4   r   r-   r.   r   schemanamestypeslenr   typereprr   r   r   fieldsschr   r   r   test_schema   s    
&"rl   c               	   C   sj   t dt  t dt  t dt t  g} t | }t|}| d us+J ~| d u s3J d S )Nr]   r^   r_   )	r   r4   r   r-   r.   r   rc   weakrefref)rj   rc   wrr   r   r   test_schema_weakref   s   

rp   c                  C   s   d} t jt jdddddidt jdd	d
ddidgd| id}| d| d d  d tt| d  ks7J t jdgddid }|dksIJ |jddd| ksVJ |jdddd| ksdJ |jddddksoJ |jdddddks{J d S )Na  Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla accumsan vel
turpis et mollis. Aliquam tincidunt arcu id tortor blandit blandit. Donec
eget leo quis lectus scelerisque varius. Class aptent taciti sociosqu ad
litora torquent per conubia nostra, per inceptos himenaeos. Praesent
faucibus, diam eu volutpat iaculis, tellus est porta ligula, a efficitur
turpis nulla facilisis quam. Aliquam vitae lorem erat. Proin a dolor ac libero
dignissim mollis vitae eu mauris. Quisque posuere tellus vitae massa
pellentesque sagittis. Aenean feugiat, diam ac dignissim fermentum, lorem
sapien commodo massa, vel volutpat orci nisi eu justo. Nulla non blandit
sapien. Quisque pretium vestibulum urna eu vehicula.r]   r   Fkey1Zvalue1metadatar^   r-   TZkey3Zvalue3loremzfoo: int32 not null
  -- field metadata --
  key1: 'value1'
bar: string
  -- field metadata --
  key3: 'value3'
-- schema metadata --
lorem: 'A   z' + )f0r   keyZCvaluexxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzjf0: int32
-- schema metadata --
key: 'valuexxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')truncate_metadatazfoo: int32 not null
  -- field metadata --
  key1: 'value1'
bar: string
  -- field metadata --
  key3: 'value3'
-- schema metadata --
lorem: '{}')rx   show_field_metadatazAfoo: int32 not null
bar: string
-- schema metadata --
lorem: '{}')rx   show_schema_metadatazofoo: int32 not null
  -- field metadata --
  key1: 'value1'
bar: string
  -- field metadata --
  key3: 'value3')rx   ry   rz   zfoo: int32 not null
bar: string)r   rc   r4   Z	to_stringr   rf   format)rt   Z	my_schemar[   r   r   r   #test_schema_to_string_with_metadata  sV   



	r|   c                  C   s   dt  fdt  fdt t  fg} t | }|jg dks"J |jt  t  t t  gks5J t|dks=J t	|dksEJ t
t t dg W d    d S 1 s\w   Y  d S Nr]   r^   r_   r`   ra   rb   )r]   N)r   r   r-   r.   r   rc   rd   re   rf   rh   r   r   r   ri   r   r   r   test_schema_from_tuplesT  s   


&"r~   c                  C   s   t dt fdt fdtt fg} t| }|jg dks$J |jt t tt gks7J t	|dks?J t
|dksGJ t dg} tt t|  W d    d S 1 sbw   Y  d S r}   )r   r   r   r-   r.   r   rc   rd   re   rf   rh   r   r   r   ri   r   r   r   test_schema_from_mappingh  s   


&
"r   c               	   C   s  t dt  t dt  t dt t  g} t | }|jg dks(J |jt  t  t t  gks;J t	|dksCJ t
|dksKJ |d jdksTJ |d j| d jks`J tt |d| d ksqJ W d    n1 s{w   Y  tt |dd u sJ W d    n1 sw   Y  tttf |dd u sJ W d    n1 sw   Y  |dd	ksJ |ddd
gksJ d S )Nr]   r^   )r]   r^   r]   ra   zBfoo: int32
bar: string
foo: list<item: int8>
  child 0, item: int8r      Zxxx   )r   r4   r   r-   r.   r   rc   rd   re   rf   rh   r   rg   r   ZwarnsFutureWarningZfield_by_nameUserWarningZget_field_indexZget_all_field_indicesri   r   r   r   test_schema_duplicate_fields}  s,   
&r   c                  C   s  t dt  ddi} |  | gksJ t jdt  dd}t jdt | |gdd}| t dt  ddit jd	t  ddgksJJ t dt | |g}| t dt  ddit d	t  gkspJ t d
t |g}| t dt | |ggksJ d S )Nr]      foo   barr^   FZnullableffzff.foozff.barfffzfff.ff)r   r4   r   with_metadataflattenr(   struct)rv   f1r   r   r   r   r   test_field_flatten  s   

(r   c               	   C   s   t dt  t dt  t dt t  g} t | }|jd u s&J ddd}||}|j|ks7J |	 }|jd u sBJ |	 }|jd u sMJ d S )Nr]   r^   r_   r      badgerr   s   pandas)
r   r4   r   r-   r.   r   rc   rs   r   Zremove_metadata)rj   s1rs   s2Zs3Zs4r   r   r   test_schema_add_remove_metadata  s   


r   c               	   C   s   t dt  t dt  t dt t  g} ddd}t | }t | }t j| |d}t j| |d}|j|dd	s@J |j|dd	sIJ ||sPJ |j|dd	rYJ |j|dd	rbJ | d
= t | }||rqJ d S )Nr]   r^   r_   r   r   r   rr   TZcheck_metadatar   )r   r4   r   r-   r.   r   rc   equalsrj   rs   Zsch1Zsch2Zsch3Zsch4r   r   r   test_schema_equals  s"   



r   c                  C   sx   t t dt  t dt  g} t t dt  t jdt  ddidg}| j|ddr3J | |s:J d S )Nr]   r^   aalpharr   Tr   )r   rc   r4   r   r-   r   )schema1schema2r   r   r   ,test_schema_equals_propagates_check_metadata  s   r   c               	   C   sj   t t dt  g} d dt ddgfD ]}tt | | W d    n1 s-w   Y  qd S )Nr   r-   r   r   )	r   rc   r4   r   arrayr   r   r   r   )rc   r8   r   r   r   test_schema_equals_invalid_type  s   r   c               	   C   s   t dt  t dt  t dt t  g} ddd}t | }t | }t j| |d}t j| |d}||ks=J ||ksCJ ||ksIJ ||krOJ ||ksUJ |g ks[J |dksaJ d S )Nr]   r^   r_   r   r   r   rr   )r   r4   r   r-   r.   r   rc   r   r   r   r   test_schema_equality_operators  s    


r   c               	   C   s  t dt  t dt  t dt t  g} t | }|djdks)J |djdks3J |djdks=J t	t
 |d W d    n1 sRw   Y  t	t |d W d    n1 slw   Y  t	t |d W d    d S 1 sw   Y  d S )	Nr]   r^   r_   r   r   otherg           )r   r4   r   r-   r.   r   rc   r   r   r   KeyErrorr   
IndexErrorrj   rc   r   r   r   test_schema_get_fields  s"   
"r   c               	   C   s   t dt  t dt  t dt t  g} t | }|d |d s*J |d |d s5J |d |d	 s@J t	t
 |d
  W d    n1 sTw   Y  t	t
 |d  W d    d S 1 snw   Y  d S )Nr]   r^   r_   r   r   r   r   ra   )r   r4   r   r-   r.   r   rc   r   r   r   r   r   r   r   r   test_schema_negative_indexing(  s   


"r   c                  C   sN   t dt t  t  t dt  g} t | }d}t||ks%J d S )NonetwozCone: dictionary<values=string, indices=int16, ordered=0>
two: int32)r   r4   
dictionaryr   r-   r   rc   rh   )rj   rk   rJ   r   r   r   "test_schema_repr_with_dictionaries<  s   
r   c                 C   s  t  t  t  t dt t  t t  t  t t ddt ddgt t dt  t dt 	 gt j
jt t dt  t dt 	 gt j
jt dt dt  t  t dt d	t d
dt ddt jddddidt t dt  t t dt  t t jdt  ddt dt  g}|D ]}| | |}||ksJ qg }t|D ]\}}t|t jr|| q|t d|| qt j|ddid}| | |}||ksJ d S )N
   r   r   br-   rB   rC   r   rE   r   r   L   &   r   r   rr   elementrw   Fr   valuez_f{})r   r   r-   r,   r.   r/   r   r4   unionr   libZUnionMode_SPARSEZUnionMode_DENSErG   rH   r)   r*   r+   Z
decimal128Z
decimal256r   Z
large_listloadsdumps	enumerate
isinstanceFieldappendr{   rc   )Zpickle_moduler0   r8   Zroundtrippedrj   ifrc   r   r   r   test_type_schema_picklingK  s`   



"r   c                  C   s   t t dt  t dt t  t  t dt t t  g} t t jdt  ddt dt  g}| |fD ]}| }t	|t j
sMJ |jdksTJ |j|ks[J q?d S )	Nrv   r   f2r   Fr   r   r   )r   rc   r4   r   r   r   r-   r.   Zempty_tabler   TableZnum_rows)r   r   rc   tabler   r   r   test_empty_table~  s   r   c                  C   s   dd l } ttd| ttdg dtjg ddd| jg d|  dg}|D ]}| jd|i|d	}tj	
|}tj
|j}||ksHJ q*d S )
Nr   r   )r]   r^   Nr_   qux)z2007-07-13T01:23:34.123456789z2006-01-13T12:34:56.432539784z2010-08-13T05:46:57.437699912r   )r!   )r   r   Nr   )index)pandaslistrangeZCategoricalr    r   Z
Int32DtypeZ	DataFramer   r	   Zfrom_pandasr   rc   )r"   Zinputsdatadfrc   rJ   r   r   r   test_schema_from_pandas  s   

r   c                  C   s   t t dt  t dt  g} t| dksJ | ddi}t|t| ks/J | ddi}t|t|ksBJ d S )Nr]   r^      rw   zsome metadatazsome more metadata)r   rc   r4   r   r-   sys	getsizeofr   )rc   r   Zschema3r   r   r   test_schema_sizeof  s   r   c                  C   s  t t dt  t dt  t dt t  g} t t dt  t dt  g}t t dt t  t  g}t t dt 	 t dt  g}t 
| ||g}t t dt  t dt  t dt t  t dt  t dt t  t  g}||sJ tt j t 
||g W d    n1 sw   Y  t 
| ||f}||sJ t j
||gdd}||sJ tt t 
| dg W d    d S 1 sw   Y  d S )	Nr]   r^   r_   r   ZquuxZ
permissive)Zpromote_optionsr   )r   rc   r4   r   r-   r.   r   r%   r   r   Zunify_schemasr   r   r   ZArrowTypeErrorr   )r   r   cdr[   rJ   r   r   r   test_schema_merge  sF   "r   c                  C   sT   d} d}t jt jdt  d| idgd|id}dt|v s J dt|v s(J d S )Ns   abcdef s   ghijkl Zintsrw   rr   ZabcdefZghijkl)r   rc   r4   r   r   )Zdata1Zdata2rc   r   r   r   test_undecodable_metadata  s   r   )3collectionsr   r   rm   r   numpyr    Zpyarrowr   Zpyarrow.tests.utilZtestsutilr2   Zpyarrow.vendored.versionr   r   r"   ImportErrorr   r   markr1   r3   r6   r9   rK   rL   rO   rS   r\   rl   rp   r|   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s`   

 

.*G 	3
+