U
    -eT                     @   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Z	d dl
m  mZ d dlmZ zd dlZW n ek
rz   Y nX 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= Z0d>d? Z1d@dA Z2dBdC Z3dS )D    )OrderedDictN)Versionc               	   C   s*   d} t jt| d t  W 5 Q R X d S )NzGDo not call Schema's constructor directly, use `pyarrow.schema` instead)match)pytestraises	TypeErrorpaSchema)msg r   Z/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/pyarrow/tests/test_schema.pytest_schema_constructor_errors$   s    r   c                  C   sB   ddddddddg} | D ]$}t t|}| }t||kstqd S )	Nint8int16int32int64uint8uint16uint32uint64)getattrr   strAssertionError)Zdtypesnamefactorytr   r   r   test_type_integers+   s       
r   c                  C   s\  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s:tq:d 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_dtyper   )ZM8casesZ
arrow_typeZ
numpy_typer   r   r   test_type_to_pandas_dtype5   s6    



r2   c                   C   s   t d d S )Nzarrow_7980.py)	test_utilZinvoke_scriptr   r   r   r   &test_type_to_pandas_dtype_check_importV   s    r4   c                  C   sP   t  } t | }t|dks"tt dt  }t |}t|dksLtd S )Nzlist<item: int32>Zmy_itemzlist<my_item: string>)r   r   r/   r   r   fieldr.   )Z
value_typeZ	list_typer5   l2r   r   r   test_type_list\   s    

r7   c                  C   s4   t  } | t  kst| dks$t| dks0td S )Nr      )r   r   r   )valr   r   r   test_type_comparisonsf   s    r:   c               (   C   s  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g&} | D ]\}}t ||kst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,   durationrG   Ztype_for_aliasr   )r1   r9   expectedr   r   r   test_type_for_aliasm   sR    

























)rL   c                  C   s   t  } t| dkstd S )Nr.   )r   r.   r   r   )r   r   r   r   test_type_string   s    rM   c                  C   s2   d} t jd| d}|jdks t|j| ks.td S )NzAmerica/Los_AngelesrF   )tz)r   r,   unitr   rN   )rN   r   r   r   r   test_type_timestamp_with_tz   s    rP   c               	   C   s   t d} t d}t d}t d}| jdks6t|jdksDt|jdksRt|jdks`tt| dksptt|dksttt t d W 5 Q R X tt t d W 5 Q R X d S )NrC   r   rD   rF   rB   rE   )	r   rH   rI   rO   r   r   r   r   
ValueError)t1t2t3Zt4r   r   r   test_time_types   s    



rU   c                  C   s8  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shtqhtdt ksttt jt ksttdt kstttt ksttt tt d W 5 Q R X tt td W 5 Q R X d S )Nboolr   r   r   r   r   r   r   r'   r(   r)   USzdatetime64[s]rC   r   r   zdatetime64[us]rD   r   rF   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,   rJ   Zfrom_numpy_dtyper   Zstr_rV   r   r   NotImplementedErrorr   )r1   dtptresultr   r   r   test_from_numpy_dtype   sB    
r^   c               	   C   s  t dt  t dt  t dt t  g} t | }|jdddgksRt|j	t  t  t t  gksxtt
|dkst|d jdkst|d j| d jkst|djdkst|dj| d jkstt|dksttt t d g W 5 Q R X d S )Nfoobarbaz   r   Bfoo: int32
bar: string
baz: list<item: int8>
  child 0, item: int8)r   r5   r   r.   r/   r   schemanamesr   typeslenr   typereprr   r   r   fieldsschr   r   r   test_schema   s    
&rm   c               	   C   sj   t dt  t dt  t dt t  g} t | }t|}| d k	sVt	~| d ksft	d S )Nr_   r`   ra   )
r   r5   r   r.   r/   r   rd   weakrefrefr   )rk   rd   wrr   r   r   test_schema_weakref  s    

rq   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sntt jdgddid }|dkst|jddd| kst|jdddd| kst|jddddkst|jdddddkst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: '{}')ry   show_field_metadatazAfoo: int32 not null
bar: string
-- schema metadata --
lorem: '{}')ry   show_schema_metadatazofoo: int32 not null
  -- field metadata --
  key1: 'value1'
bar: string
  -- field metadata --
  key3: 'value3')ry   rz   r{   zfoo: int32 not null
bar: string)r   rd   r5   Z	to_stringr   rg   r   format)ru   Z	my_schemar]   r   r   r   #test_schema_to_string_with_metadata  sT    





	r}   c               	   C   s   dt  fdt  fdt t  fg} t | }|jdddgksFt|jt  t  t t  gksltt	|dks|tt
|dksttt t dg W 5 Q R X d S Nr_   r`   ra   rb   rc   )r_   N)r   r   r.   r/   r   rd   re   r   rf   rg   ri   r   r   r   rj   r   r   r   test_schema_from_tuplesU  s    


&r   c               	   C   s   t dt fdt fdtt fg} t| }|jdddgksJt|j	t t tt gksptt
|dkstt|dkstt dg} tt t|  W 5 Q R X d S r~   )r   r   r   r.   r/   r   rd   re   r   rf   rg   ri   r   r   r   rj   r   r   r   test_schema_from_mappingi  s    


&
r   c               	   C   sv  t dt  t dt  t dt t  g} t | }|jdddgksRt|j	t  t  t t  gksxtt
|dkstt|dkst|d jdkst|d j| d jksttt |d| d kstW 5 Q R X tt |dd kstW 5 Q R X tttf |dd ks<tW 5 Q R X |ddksZt|ddd	gksrtd S )
Nr_   r`   rb   zBfoo: int32
bar: string
foo: list<item: int8>
  child 0, item: int8r      Zxxx   )r   r5   r   r.   r/   r   rd   re   r   rf   rg   ri   r   rh   r   ZwarnsFutureWarningZfield_by_nameUserWarningZget_field_indexZget_all_field_indicesrj   r   r   r   test_schema_duplicate_fields~  s&    
& r   c                  C   s  t dt  ddi} |  | gks,t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stt dt | |g}| t dt  ddit d	t  gkstt d
t |g}| t dt | |ggkstd S )Nr_      foo   barr`   FZnullableffzff.foozff.barfffzfff.ff)r   r5   r   with_metadataflattenr   r)   struct)rw   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 ksLtddd}|	|}|j|ksnt|
 }|jd kst|
 }|jd kstd S )Nr_   r`   ra   r      badgerr   s   pandas)r   r5   r   r.   r/   r   rd   rt   r   r   Zremove_metadata)rk   s1rt   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	st|j|dd	st||st|j|dd	rt|j|dd	rt| d
= t | }||rtd S )Nr_   r`   ra   r   r   r   rs   TZcheck_metadatar   )	r   r5   r   r.   r/   r   rd   equalsr   rk   rt   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rft| |sttd S )Nr_   r`   aalphars   Tr   )r   rd   r5   r   r.   r   r   )schema1schema2r   r   r   ,test_schema_equals_propagates_check_metadata  s    r   c               
   C   sV   t t dt  g} d dt ddgfD ]$}tt | | W 5 Q R X q,d S )Nr   r.   r   r   )	r   rd   r5   r   arrayr   r   r   r   )rd   r9   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szt||kst||kst||krt||kst|g kst|dkstd S )Nr_   r`   ra   r   r   r   rs   )r   r5   r   r.   r/   r   rd   r   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sRt|djdksft|djdksztt	
t |d W 5 Q R X t	
t |d W 5 Q R X t	
t |d W 5 Q R X d S )	Nr_   r`   ra   r   r   otherg           )r   r5   r   r.   r/   r   rd   r   r   r   r   KeyErrorr   
IndexErrorrk   rd   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 sTt|d |d sjt|d |d	 stt	
t |d
  W 5 Q R X t	
t |d  W 5 Q R X d S )Nr_   r`   ra   r   r   r   r   rb   )r   r5   r   r.   r/   r   rd   r   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sJtd S )NonetwozCone: dictionary<values=string, indices=int16, ordered=0>
two: int32)	r   r5   
dictionaryr   r.   r   rd   ri   r   )rk   rl   rK   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 ]$}tt|}||ksPtqPg }t| D ]<\}}t|t jr|| n|t d|| qt j|ddid}tt|}||kstd S )N
   r   r   br.   rC   rD   r   rF   r    r   L   &   r   r   rs   elementrx   Fr   valuez_f{}) r   r   r.   r-   r/   r0   r   r5   unionr   libZUnionMode_SPARSEZUnionMode_DENSErH   rI   r*   r+   r,   Z
decimal128Z
decimal256r   Z
large_listpickleloadsdumpsr   	enumerate
isinstanceFieldappendr|   rd   )r1   r9   Zroundtrippedrk   ifrd   r   r   r   test_type_schema_picklingL  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 ]8}| }t	|t j
st|jdkst|j|ks~tq~d S )	Nrw   r   f2r   Fr   r   r   )r   rd   r5   r   r   r   r.   r/   Zempty_tabler   Tabler   Znum_rows)r   r   rd   tabler   r   r   test_empty_table  s    r   c                  C   s   dd l } ttd| ttdddd ddgtjddd	gd
d| jddd g|  dg}|D ]<}| jd|i|d}tj	
|}tj
|j}||ks^tq^d S )Nr   r   r_   r`   ra   quxz2007-07-13T01:23:34.123456789z2006-01-13T12:34:56.432539784z2010-08-13T05:46:57.437699912r   )r"   r   r   r   )index)pandaslistrangeZCategoricalr!   r   Z
Int32DtypeZ	DataFramer   r	   Zfrom_pandasr   rd   r   )r#   inputsdataZdfrd   rK   r   r   r   test_schema_from_pandas  s$    
r   c                  C   s   t t dt  t dt  g} t| dks8t| ddi}t|t| ks^t| ddi}t|t|kstd S )Nr_   r`      rx   zsome metadatazsome more metadata)	r   rd   r5   r   r.   sys	getsizeofr   r   )rd   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}||s,ttt j t 
||g W 5 Q R X t 
| ||f}||srttt t 
| dg W 5 Q R X d S )Nr_   r`   ra   r   Zquuxr   )r   rd   r5   r   r.   r/   r   r&   r   r   Zunify_schemasr   r   r   r   ZArrowInvalidr   )r   r   cdr]   rK   r   r   r   test_schema_merge  s>    r   c                  C   sT   d} d}t jt jdt  d| idgd|id}dt|ks@tdt|ksPtd S )Ns   abcdef s   ghijkl Zintsrx   rs   ZabcdefZghijkl)r   rd   r5   r   r   r   )Zdata1Zdata2rd   r   r   r   test_undecodable_metadata  s    r   )4collectionsr   r   r   rn   r   numpyr!   Zpyarrowr   Zpyarrow.tests.utiltestsutilr3   Zpyarrow.vendored.versionr   r   r#   ImportErrorr   r   markr2   r4   r7   r:   rL   rM   rP   rU   r^   rm   rq   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
(