Ë
    ìmxi$¤  ã                   óº  — 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Zd dlmZ d dlmZmZmZmZmZmZ d dlmZ d dlmZ 	 d dlmZ d dlmZm Z m!Z!m"Z" 	 d dl#Z$d dl%m&Z' ejP                  j8                  ejP                  jR                  gZ*d„ Z+ejP                  jF                  d„ «       Z,ejP                  jF                  d„ «       Z-ejP                  jF                  d	„ «       Z.ejP                  jF                  d
„ «       Z/ejP                  ja                  e1e2fd¬«      ejP                  jF                  d„ «       «       Z3ejP                  jF                  d„ «       Z4ejP                  jF                  d„ «       Z5ejP                  jF                  d„ «       Z6ejP                  jF                  d„ «       Z7ejP                  jF                  d„ «       Z8ejP                  jF                  ejP                  js                  ddgdgg ejt                  d«      dk   ejt                  dd«      dk   ejt                  dd«      jw                   ejx                  «       «      dk  f«      ejP                  js                  dd«      d„ «       «       «       Z=ejP                  jF                  d„ «       Z>ejP                  j~                  d„ «       Z@ejP                  j~                  d„ «       ZAejP                  jF                  d „ «       ZBejP                  jF                  ejP                  j~                  d!„ «       «       ZCd"„ ZDd#„ ZEd$„ ZFejP                  jF                  d%„ «       ZGejP                  jF                  d&„ «       ZHejP                  jF                  d'„ «       ZIejP                  j
                  d(„ «       ZJejP                  j
                  d)„ «       ZKejP                  j
                  d*„ «       ZLdRd+„ZMd,„ ZNejP                  j
                  ejP                  js                  d-d.d/g«      d0„ «       «       ZOejP                  j
                  d1„ «       ZPejP                  j
                  d2„ «       ZQejP                  j
                  ejP                  js                  d-d.d/g«      d3„ «       «       ZRd4„ ZSd5„ ZT	 	 	 dSd6„ZU	 dTd7„ZVejP                  jF                  d8„ «       ZWejP                  jF                  d9„ «       ZXejP                  jF                  d:„ «       ZYejP                  jF                  d;„ «       ZZejP                  jF                  d<„ «       Z[ejP                  jF                  ejP                  j~                  d=„ «       «       Z\ejP                  jF                  ejP                  j~                  ejP                  j»                  ej¼                  d>k(  d?¬@«      dA„ «       «       «       Z_ejP                  jF                  ejP                  j~                  dB„ «       «       Z`ejP                  jF                  dC„ «       ZadUdD„ZbejP                  jF                  dE„ «       ZcejP                  jF                  dF„ «       ZddG„ ZedH„ ZfdI„ ZgdJ„ ZhdK„ ZidL„ ZjdM„ ZkejP                  js                  dNdO«      dP„ «       ZlejP                  jF                  dQ„ «       Zmy# e$ r dZY �Œ¡w xY w# e$ r dZY �Œlw xY w# e$ r dxZ$Z'Y �Œqw xY w)Vé    N)ÚFileSelectorÚ
FileSystemÚLocalFileSystemÚPyFileSystemÚSubTreeFileSystemÚFSSpecHandler)Úutil)Úguid)Ú_read_tableÚ_test_dataframeÚ_test_tableÚ_write_tablec                 ó†  — t        j                  dg d¢i«      }| dz  }|j                  «        |dz  }t        j                  |t        |«      «       t        j                  |t        «       ¬«      }|j                  |«      sJ ‚t        j                  dt        j                  | «      ¬«      }|j                  |«      sJ ‚y )NÚa©é   é   é   Údata_dirúdata.parquet©Ú
filesystemzdata_dir/data.parquet)ÚpaÚtableÚmkdirÚpqÚwrite_tableÚstrÚ
read_tabler   Úequalsr	   Ú_filesystem_uri)Útempdirr   Ú	directoryÚpathÚresults        úY/home/htdocs/ttos/venv/lib/python3.12/site-packages/pyarrow/tests/parquet/test_dataset.pyÚtest_filesystem_urir'   ;   s¢   € Ü�H‰H�cš9Ð%Ó&€Eà˜*Ñ$€IØ‡O�OÔØ�~Ñ%€DÜ‡N�N�5œ#˜d›)Ô$ô �]‰]ØœÓ*ô,€Fà�=‰=˜ÔÐÐô �]‰]Ø¬D×,@Ñ,@ÀÓ,IôK€Fà�=‰=˜ÔÐÑó    c                 ó0   — t        «       }t        || «       y ©N)r   Ú_partition_test_for_filesystem)r"   Úlocals     r&   Útest_read_partitioned_directoryr-   N   s   € äÓ€EÜ" 5¨'Õ2r(   c                 ó¨   — t        «       }| }t        ||«       t        j                  |«      }|j	                  dg¬«      }|j
                  dgk(  sJ ‚y )NÚvalues©Úcolumns)r   r+   r   ÚParquetDatasetÚreadÚcolumn_names)r"   r,   Ú	base_pathÚdatasetr%   s        r&   Ú'test_read_partitioned_columns_selectionr7   T   sS   € ô Ó€EØ€IÜ" 5¨)Ô4ä×Ñ 	Ó*€GØ�\‰\ 8 *ˆ\Ó-€FØ×Ñ 8 *Ò,Ð,Ñ,r(   c                 óh  — t        «       }| }ddg}g d¢}ddg}d|gd|gd|gg}t        j                  t        j                  |d	¬
«      j                  d«      t        j                  t        j                  t        j                  |t        ¬
«      d«      d«      t        j                  t        j                  t        j                  |d¬
«      d«      d«      t        j                  d«      dœ«      }t        ||||«       t        j                  ||g d¢¬«      }|j                  «       }	|	j                  «       j                  d¬«      }
d|
d   j                  vsJ ‚d|
d   j                  vsJ ‚d|
d   j                  vsJ ‚g d¢ddgg}t        j                  |||¬«      }|j                  «       }	|	j                  «       j                  d¬«      }
|
d   dk(  |
d   dk7  z  |
d   dk(  z  }t        j                  |
d   «      dk(  |
d   dk(  z  }|j!                  «       dkD  sJ ‚|j!                  «       dkD  sJ ‚|
j"                  d   |j!                  «       |j!                  «       z   k(  sJ ‚dggdggfD ]9  }t        j                  |||¬«      }|j                  «       j$                  dk(  rŒ9J ‚ y )Nr   r   ©r   ÚbÚcTFÚintegerÚstringÚbooleanÚi4©Údtypeé   é   r   Úboolr   é   ©r<   r=   r>   r/   ))r<   ú=r   )r=   ú!=r:   )r>   ú==ÚTrue©r   Úfilters©Údropr:   )r<   rG   r   )r>   rI   ÚFalserJ   rO   )r=   rI   s   1 a)r=   rI   z1 a)r   ÚpdÚ	DataFrameÚnpÚarrayÚrepeatÚtileÚobjectÚarangeÚ_generate_partition_directoriesr   r2   r3   Ú	to_pandasÚreset_indexr/   ÚsumÚshapeÚnum_rows)r"   r,   r5   Úinteger_keysÚstring_keysÚboolean_keysÚpartition_specÚdfr6   r   Ú	result_dfrL   Údf_filter_1Údf_filter_2s                 r&   Útest_filters_equivalencyrf   a   sÂ  € äÓ€EØ€Ià�q�6€LÚ!€KØ˜%�=€Là	�LÐ!Ø	�;ÐØ	�LÐ!ð€Nô 
�‰Ü—8‘8˜L°Ô5×<Ñ<¸RÓ@Ü—'‘'œ"Ÿ'™'¤"§(¡(¨;¼fÔ"EÀqÓIÈ1ÓMÜ—7‘7œ2Ÿ7™7¤2§8¡8¨LÀÔ#GÈÓKÈQÓOÜ—)‘)˜B“-ñ	ó 
€Bô $ E¨9°nÀbÔIô ×ÑØ˜eò,ô€Gð
 �L‰L‹N€EØ—‘Ó"×.Ñ.°DÐ.Ó9€Ià�I˜iÑ(×/Ñ/Ñ/Ð/Ð/Ø�i Ñ)×0Ñ0Ñ0Ð0Ð0Ø˜	 )Ñ,×3Ñ3Ñ3Ð3Ð3ò	
ð
 
Ð8Ð9ð€Gô ×ÑØ˜e¨Wô6€Gà�L‰L‹N€EØ—‘Ó!×-Ñ-°4Ð-Ó8€Ið ˜YÑ'¨1Ñ,Ø�XÑ #Ñ%ñ'à�YÑ 6Ñ)ñ+€Kô —8‘8˜I iÑ0Ó1°QÑ6Ø�YÑ 7Ñ*ñ,€Kà�?‰?Ó˜qÒ Ð Ð Ø�?‰?Ó˜qÒ Ð Ð Ø�?‰?˜1Ñ +§/¡/Ó"3°k·o±oÓ6GÑ"GÒHÐHÐHà/Ð0Ð1Ø.Ð/Ð0ð2ò ,ˆä×#Ñ#Ø %°ô:ˆà�|‰|‹~×&Ñ&¨!Ó+Ð+Ð+ñ	,r(   c                 óú  — t        «       }| }g d¢}d|gg}d}t        j                  t        j                  |«      t        j
                  |d¬«      dœddg¬«      }t        ||||«       t        j                  ||d	d
g¬«      }|j                  «       }|j                  «       j                  d¬«      j                  d¬«      }	t        t        |	d   j                  «      D �
cg c]  }
|
‘Œ }}
|ddgk(  sJ ‚y c c}
w )N©r   r   r   r   é   ÚintegersrC   r?   r@   ©Úindexrj   rl   r0   )rj   ú<ri   )rj   ú>r   rK   ©ÚbyTrM   r   r   ©r   rP   rQ   rR   rW   rS   rX   r   r2   r3   rY   Úsort_valuesrZ   ÚmapÚintr/   ©r"   r,   r5   r^   ra   ÚNrb   r6   r   rc   ÚxÚresult_lists               r&   Ú%test_filters_cutoff_exclusive_integerry   ¨   s  € äÓ€EØ€Iâ"€Là	�\Ð"ð€Nð 	
€Aä	�‰Ü—‘˜1“Ü—H‘H˜\°Ô6ñð ˜Ð$ô
&€Bô
 $ E¨9°nÀbÔIä×ÑØ˜eà Ø ð
ô€Gð �L‰L‹N€EØ—‘Ó"ß"‘{ g�{Ó.ß"‘{¨�{Ó-ð ô "¤# y°Ñ'<×'CÑ'CÓDÖE˜’1ÐE€KÐEØ˜1˜a˜&Ò Ð Ñ ùò Fs   Ã#	C8z5Loss of type information in creation of categoricals.)ÚraisesÚreasonc           	      ó8  — t        «       }| }t        j                  ddd«      t        j                  ddd«      t        j                  ddd«      t        j                  ddd«      t        j                  ddd«      g}d|gg}d	}t        j                  t        j                  |«      t        j                  |d
¬«      dœddg¬«      }t        ||||«       t        j                  ||ddg¬«      }|j                  «       }|j                  «       j                  d¬«      j                  d¬«      }	t        j                  t        j                  t        j                  ddd«      gd
¬«      t        j                  |d
¬«      ¬«      }
|	d   j                   |
k(  sJ ‚y )Niâ  ri   é	   é
   é   é   é   ÚdatesrC   Ú
datetime64r@   )rl   r‚   rl   r0   )r‚   rm   z
2018-04-12)r‚   rn   z
2018-04-10rK   ro   TrM   ©Ú
categories)r   ÚdatetimeÚdaterP   rQ   rR   rW   rS   rX   r   r2   r3   rY   rr   rZ   ÚCategoricalr/   )r"   r,   r5   Ú	date_keysra   rv   rb   r6   r   rc   Úexpecteds              r&   Ú&test_filters_cutoff_exclusive_datetimer‹   Ê   ss  € ô Ó€EØ€Iô 	�‰�d˜A˜qÓ!Ü�‰�d˜A˜rÓ"Ü�‰�d˜A˜rÓ"Ü�‰�d˜A˜rÓ"Ü�‰�d˜A˜rÓ"ð€Ið 
�)Ðð€Nð 	
€Aä	�‰Ü—‘˜1“Ü—‘˜)¨<Ô8ñð ˜Ð!ô
#€Bô
 $ E¨9°nÀbÔIä×ÑØ˜eà(Ø(ð
ô€Gð �L‰L‹N€EØ—‘Ó"ß"‘{ g�{Ó.ß"‘{¨�{Ó-ð ô �~‰~Ü
�‰”(—-‘-  a¨Ó,Ð-°\ÔBÜ—8‘8˜I¨\Ô:ô<€Hð �WÑ×$Ñ$¨Ò0Ð0Ñ0r(   c           
      óJ  — | dz  }t        j                  t        j                  ddd¬«      t        d«      dœ«      j	                  |d¬«       t        j                  |d	d
t        j                  ddd«      fg¬«      }|j                  d«      j                  «       g d¢k(  sJ ‚y )Nztimestamps.parquetz
2020-01-01r~   ÚD)ÚperiodsÚfreq)r‚   ÚidT)Úuse_deprecated_int96_timestampsr‚   ú<=iä  r   rC   ©rL   r�   rh   )
rP   rQ   Ú
date_rangeÚrangeÚ
to_parquetr   r   r†   ÚcolumnÚ	to_pylist)r"   r$   r   s      r&   Útest_filters_inclusive_datetimer™   û   s—   € ð Ð)Ñ)€Dä‡L�LÜ—‘˜|°R¸cÔBÜ�B‹iñó ÷ �z�$¸€zÔ=ä�M‰M˜$Ø	�$œ×)Ñ)¨$°°1Ó5Ð6ð)ô €Eð �<‰<˜Ó×'Ñ'Ó)ª_Ò<Ð<Ñ<r(   c                 ó  — t        «       }| }g d¢}d|gg}d}t        j                  t        j                  |«      t        j
                  |d¬«      dœddg¬«      }t        ||||«       t        j                  ||d	d
g¬«      }|j                  «       }|j                  «       j                  d¬«      j                  d¬«      }	t        t        |	d   j                  «      D �
cg c]  }
t        |
«      ‘Œ }}
|ddgk(  sJ ‚y c c}
w )Nrh   rj   rC   r?   r@   rk   rl   r0   )rj   r’   r   )rj   z>=r   rK   ro   TrM   r   r   rq   ru   s               r&   Útest_filters_inclusive_integerr›     s  € äÓ€EØ€Iâ"€Là	�\Ð"ð€Nð 	
€Aä	�‰Ü—‘˜1“Ü—H‘H˜\°Ô6ñð ˜Ð$ô
&€Bô
 $ E¨9°nÀbÔIä×ÑØ˜eà!Ø!ð
ô€Gð �L‰L‹N€EØ—‘Ó"ß‘+ �+Ó)ß‘+ 4�+Ó(ð ô $'¤s¨I°jÑ,A×,HÑ,HÓ#IÖJ˜a”3�q•6ÐJ€KÐJØ˜1˜a˜&Ò Ð Ñ ùò Ks   Ã#Dc                 ó   — t        «       }| }ddg}g d¢}ddg}d|gd|gd|gg}t        j                  t        j                  |d	¬
«      j                  d«      t        j                  t        j                  t        j                  |t        ¬
«      d«      d«      t        j                  t        j                  t        j                  |d¬
«      d«      d«      t        j                  d«      dœ«      }t        ||||«       t        j                  ||dg¬«      }|j                  «       }	|	j                  «       j                  d¬«      }
d|
d   j                  v sJ ‚d|
d   j                  v sJ ‚d|
d   j                  vsJ ‚t        j                  ||dddgfddddhfg¬«      }|j                  «       }	|	j                  «       j                  d¬«      }
d|
d   j                  vsJ ‚d|
d   j                  vsJ ‚d|
d   j                  vsJ ‚y )Nr   r   r9   TFr<   r=   r>   r?   r@   rB   rC   r   rD   r   rE   rF   )r=   ÚinÚabrK   rM   r   r:   r;   r�   )r=   r�   ©r   r:   znot inrO   )r   rP   rQ   rR   rS   rT   rU   rV   rW   rX   r   r2   r3   rY   rZ   r/   )r"   r,   r5   r^   r_   r`   ra   rb   r6   r   rc   s              r&   Útest_filters_inclusive_setr    .  s
  € äÓ€EØ€Ià�q�6€LÚ!€KØ˜%�=€Là	�LÐ!Ø	�;ÐØ	�LÐ!ð€Nô 
�‰Ü—8‘8˜L°Ô5×<Ñ<¸RÓ@Ü—'‘'œ"Ÿ'™'¤"§(¡(¨;¼fÔ"EÀqÓIÈ1ÓMÜ—7‘7œ2Ÿ7™7¤2§8¡8¨LÀÔ#GÈÓKÈQÓOÜ—)‘)˜B“-ñ	ó 
€Bô $ E¨9°nÀbÔIä×ÑØ˜eØ'Ð(ô€Gð �L‰L‹N€EØ—‘Ó"×.Ñ.°DÐ.Ó9€Ià�)˜HÑ%×,Ñ,Ñ,Ð,Ð,Ø�)˜HÑ%×,Ñ,Ñ,Ð,Ð,Ø�i Ñ)×0Ñ0Ñ0Ð0Ð0ä×ÑØ˜eØ˜T A 3Ð'Ð)EØ˜X¨ yÐ1ð3ô€Gð
 �L‰L‹N€EØ—‘Ó"×.Ñ.°DÐ.Ó9€Ià�I˜iÑ(×/Ñ/Ñ/Ð/Ð/Ø�i Ñ)×0Ñ0Ñ0Ð0Ð0Ø˜	 )Ñ,×3Ñ3Ñ3Ð3Ñ3r(   c                 óN  — t        «       }| }g d¢}d|gg}d}t        j                  t        j                  |«      t        j
                  |d¬«      dœddg¬«      }t        ||||«       t        j                  t        «      5  t        j                  ||d	g¬
«       d d d «       t        j                  t        «      5  t        j                  ||dg¬
«       d d d «       t        j                  ||ddt        «       fg¬
«      }|j                  «       j                  dk(  sJ ‚t        j                  ||dddhfg¬
«      }t        j                  t         «      5  |j                  «       j                  dk(  sJ ‚	 d d d «       y # 1 sw Y   ŒçxY w# 1 sw Y   Œ¸xY w# 1 sw Y   y xY w)Nrh   rj   rC   r?   r@   rk   rl   r0   )rj   r�   r   rK   )rj   z=<r   r�   r   rH   r   )r   rP   rQ   rR   rW   rS   rX   Úpytestrz   Ú	TypeErrorr   r2   Ú
ValueErrorÚsetr3   r]   ÚNotImplementedError)r"   r,   r5   r^   ra   rv   rb   r6   s           r&   Útest_filters_invalid_pred_opr§   ]  s‘  € äÓ€EØ€Iâ"€Là	�\Ð"ð€Nð 	
€Aä	�‰Ü—‘˜1“Ü—H‘H˜\°Ô6ñð ˜Ð$ô
&€Bô
 $ E¨9°nÀbÔIä	�‰”yÓ	!ñ =Ü
×Ñ˜)Ø%*Ø#8Ð";õ	=÷=ô
 
�‰”zÓ	"ñ =Ü
×Ñ˜)Ø%*Ø#8Ð";õ	=÷=ô ×Ñ 	Ø+0Ø*4°d¼C»EÐ)BÐ(EôG€Gð �<‰<‹>×"Ñ" aÒ'Ð'Ð'ä×Ñ 	Ø+0Ø*4°d¸Q¸CÐ)@Ð(AôC€Gô 
�‰Ô*Ó	+ñ ,Ø�|‰|‹~×&Ñ&¨!Ò+Ð+Ñ+÷,ð ,÷'=ð =ú÷
=ð =ú÷,ð ,ús$   ÂFÂ>FÅ FÆFÆFÆF$c                 óˆ  — t        «       }| }g d¢}d|gg}d}t        j                  t        j                  |«      t        j
                  |d¬«      dœddg¬«      }t        ||||«       d	}t        j                  t        |¬
«      5  t        j                  ||dg¬«      j                  «        d d d «       y # 1 sw Y   y xY w)Nrh   rj   rC   r?   r@   rk   rl   r0   z1No match for FieldRef.Name\(non_existent_column\)©Úmatch)Únon_existent_columnrm   r   rK   )r   rP   rQ   rR   rW   rS   rX   r¢   rz   r¤   r   r2   r3   )r"   r,   r5   r^   ra   rv   rb   Úmsgs           r&   Útest_filters_invalid_columnr­   †  sº   € ô Ó€EØ€Iâ"€LØ! <Ð0Ð1€NØ	€Aä	�‰Ü—‘˜1“Ü—H‘H˜\°Ô6ñð ˜Ð$ô
&€Bô
 $ E¨9°nÀbÔIà
>€CÜ	�‰”z¨Ô	-ñ NÜ
×Ñ˜)°Ø#BÐ"Eô	GßGKÁtÄv÷N÷ Nñ Nús   Â(B8Â8CrL   )rj   rm   r   rj   r   Únestedr   r:   Úread_method)r   Úread_pandasc                 óÆ  — t        t        |«      }t        «       }| }g d¢}d|gg}t        |«      }t	        j
                  t        j                  |«      t        j                  |d¬«      t        j                  t        |«      D �	cg c]  }	|	t        |	«      dœ‘Œ c}	«      dœ«      }
t        ||||
«       t        ||¬«      } ||fi |¤Ž}|j                  dk(  sJ ‚y c c}	w )	Nrh   rj   r?   r@   rŸ   )rl   rj   r®   rK   r   )Úgetattrr   r   ÚlenrP   rQ   rR   rW   rS   r•   r   rX   Údictr]   )r"   rL   r¯   r3   r,   r5   r^   ra   rv   Úirb   Úkwargsr   s                r&   Útest_filters_read_tabler·   ž  sÐ   € ô ”2�{Ó#€DäÓ€EØ€Iâ"€Là	�\Ð"ð€Nô 	ˆLÓ€Aä	�‰Ü—‘˜1“Ü—H‘H˜\°Ô6Ü—(‘(¼5À»8ÖD°a !¬#¨a«&Ó1ÒDÓEñó 
€Bô $ E¨9°nÀbÔIä˜U¨GÔ4€Fá�Ñ%˜fÑ%€EØ�>‰>˜QÒÐÑùò Es   ÂCc                 óh  — t        «       }| }ddg}d|gg}d}t        j                  t        j                  |«      t        j
                  |d¬«      dœddg¬	«      }t        ||||«       t        j                  |«      }|j                  «       }|j                  d«      j                  «       |k(  sJ ‚y )
NÚ2019_2Ú2019_3Ú	year_weekr   rV   r@   )rl   r»   rl   r0   )r   rP   rQ   rR   rW   rS   rX   r   r2   r3   r—   r˜   )	r"   r,   r5   r_   ra   rv   rb   r6   r%   s	            r&   Ú$test_partition_keys_with_underscoresr¼   À  s²   € ô Ó€EØ€Ià˜XÐ&€Kà	�kÐ"ð€Nð 	
€Aä	�‰Ü—‘˜1“Ü—X‘X˜k°Ô:ñð ˜Ð%ô
'€Bô
 $ E¨9°nÀbÔIä×Ñ 	Ó*€GØ�\‰\‹^€FØ�=‰=˜Ó%×/Ñ/Ó1°[Ò@Ð@Ñ@r(   c                 ó¦   — | \  }}|dz   }t        j                  dg d¢i«      }t        |||¬«       t        ||¬«      }|j	                  |«      sJ ‚y ©Nz/test.parquetr   r   r   ©r   r   r   r   r    )Ús3_example_s3fsÚfsr$   r   r%   s        r&   Útest_read_s3fsrÂ   Ø  sR   € à�H€BˆØ�/Ñ!€DÜ�H‰H�cš9Ð%Ó&€EÜ�˜¨Õ,ä˜¨"Ô-€FØ�=‰=˜ÔÐÑr(   c                 ó¦   — | \  }}|dz   }t        j                  dg d¢i«      }t        |||¬«       t        ||¬«      }|j	                  |«      sJ ‚y r¾   r¿   )rÀ   rÁ   r#   r$   r   r%   s         r&   Útest_read_directory_s3fsrÄ   ã  sR   € à#�M€Bˆ	Ø�Ñ&€DÜ�H‰H�cš9Ð%Ó&€EÜ�˜¨Õ,ä˜¨rÔ2€FØ�=‰=˜ÔÐÑr(   c                 óØ   — t        | dz  «      }t        j                  dg d¢i«      }t        ||«       t	        j
                  |g«      j                  «       }|j                  |«      sJ ‚y )Nr   r   r   )r   r   r   r   r   r2   r3   r    )r"   Ú	data_pathr   r%   s       r&   Útest_read_single_file_listrÇ   î  s[   € ä�G˜nÑ,Ó-€Iä�H‰H�cš9Ð%Ó&€EÜ�˜	Ô"ä×Ñ 	˜{Ó+×0Ñ0Ó2€FØ�=‰=˜ÔÐÑr(   c                 ó&   — | \  }}t        ||«       y r*   )r+   ©rÀ   rÁ   r$   s      r&   Ú$test_read_partitioned_directory_s3fsrÊ   ù  s   € ð �H€BˆÜ" 2 tÕ,r(   c                 óš  — ddg}g d¢}d|gd|gg}d}t        j                  t        j                  |«      t        j                  |d¬«      j                  d	«      t        j                  t        j                  t        j                  |t        ¬«      d
«      d«      t        j                  j                  |«      dœg d¢¬«      }t        | |||«       t        j                  || ¬«      }|j                  «       }|j                  «       j                  d¬«      j!                  d¬«      }	|j                  d¬«      j!                  d¬«      j#                  |	j$                  ¬«      }
|
d   j'                  d«      |
d<   |
d   j'                  d«      |
d<   |	j$                  g d¢k(  j)                  «       sJ ‚t+        j,                  |	|
«       y )Nr   r   r9   ÚfooÚbarrE   r?   r@   rB   rC   r   )rl   rÌ   rÍ   r/   r0   r   rl   ro   TrM   Úcategory)rl   r/   rÌ   rÍ   )rP   rQ   rR   rW   rS   rT   rU   rV   ÚrandomÚrandnrX   r   r2   r3   rY   rr   rZ   Úreindexr1   ÚastypeÚallÚtmÚassert_frame_equal)rÁ   r5   Úfoo_keysÚbar_keysra   rv   rb   r6   r   rc   Úexpected_dfs              r&   r+   r+      s‰  € Ø�1ˆv€HÚ€Hà	�ÐØ	�Ðð€Nð 	€Aä	�‰Ü—‘˜1“Ü�x‰x˜¨Ô-×4Ñ4°RÓ8Ü�w‰w”r—w‘wœrŸx™x¨¼Ô?ÀÓCÀQÓGÜ—)‘)—/‘/ !Ó$ñ	ò
 1ô
2€Bô $ B¨	°>À2ÔFä×Ñ 	°bÔ9€GØ�L‰L‹N€EØ—‘Ó"ß‘+ �+Ó)ß‘+ 4�+Ó(ð ð —>‘> W�>Ó-ß‘K T�KÓ*ß‘G I×$5Ñ$5�GÓ6ð ð % UÑ+×2Ñ2°:Ó>€K�ÑØ$ UÑ+×2Ñ2°:Ó>€K�Ñà×ÑÒ!BÑB×GÑGÔIÐIÐIä×Ñ˜) [Õ1r(   c           	      óÆ   ‡ ‡‡‡‡‡— t        ‰ t        «      st        t        ‰ «      «      Š t	        ‰«      Št        ‰ dt        ‰ dd«      «      Šˆˆˆˆ ˆˆfd„Š ‰|dg «       y )NÚpathsepÚsepú/c                 óZ  •— ‰|   \  }}|D �]v  }|||fgz   }‰j                  t        | «      |› d|› �g«      }‰j                  |«       |‰dz
  k(  röddlm} ‰j                  |t        «       g«      }	t        ‰|«      }
t        j                  j                  |
«      }‰j                  |	«      5 }t        ||«       d d d «       ‰j                  |	«      j                  |j                  k7  sJ ‚‰j                  |	«      j                  |j                  k(  sJ ‚‰j                  |dg«      }‰j                  |«      5 }	 d d d «       �Œ< ‰||dz   |«       ‰j                  |dg«      }‰j                  |«      5 }	 d d d «       �Œy y # 1 sw Y   ŒÌxY w# 1 sw Y   �Œ‘xY w# 1 sw Y   �ŒžxY w)NrG   r   r   )ÚFileTypeÚ_SUCCESS)Újoinr   Ú
create_dirÚ
pyarrow.fsrÞ   r
   Ú_filter_partitionr   ÚTableÚfrom_pandasÚopen_output_streamr   Úget_file_infoÚtypeÚNotFoundÚFile)Úbase_dirÚlevelÚ	part_keysÚnamer/   ÚvalueÚthis_part_keysÚ	level_dirrÞ   Ú	file_pathÚfiltered_dfÚ
part_tableÚfÚfile_successÚDEPTHÚ_visit_levelrb   rÁ   ra   rÚ   s                 €€€€€€r&   rø   z5_generate_partition_directories.<locals>._visit_level2  s³  ø€ Ø% eÑ,‰ˆˆfØó 	ˆEØ&¨4°¨-¨Ñ8ˆNàŸ™Ü�H“Ø�&˜˜%˜Ð!ð&ó ˆIð �M‰M˜)Ô$à˜ ™	Ò!å/à#ŸL™L¨)´T³VÐ)<Ó=�	Ü/°°NÓC�ÜŸX™X×1Ñ1°+Ó>�
Ø×*Ñ*¨9Ó5ð 0¸Ü  ¨QÔ/÷0à×'Ñ'¨	Ó2×7Ñ7¸8×;LÑ;LÒLÐLÐLØ×'Ñ'¨	Ó2×7Ñ7¸8¿=¹=ÒHÐHÐHà&Ÿ|™|¨Y¸
Ð,CÓD�Ø×*Ñ*¨<Ó8ð ¸AØ÷ñ ñ ˜Y¨°©	°>ÔBØ&Ÿ|™|¨Y¸
Ð,CÓD�Ø×*Ñ*¨<Ó8ð ¸AØ÷ñ ñ7	÷ 0ð 0ú÷ñ ú÷
ñ ús$   Â/FÄ<FÅ9F ÆF	ÆF	Æ F*	r   )Ú
isinstancer   r   r   r³   r²   )rÁ   rë   ra   rb   r÷   rø   rÚ   s   ` ``@@@r&   rX   rX   '  sX   ý€ ô �bœ*Ô%Üœ-¨Ó+Ó,ˆä�Ó€Eä�b˜)¤W¨R°¸Ó%<Ó=€G÷ñ ñ@ �˜1˜bÕ!r(   c                 óD  — t        j                  t        | «      t        ¬«      }g }|D ]`  \  }}|j	                  |«       t        |t        j                  t        j                  f«      rt        j                  |«      }|| |   |k(  z  }Œb | |   j                  |d¬«      S )Nr@   r   )Úaxis)rR   Úonesr³   rD   Úappendrù   r†   r‡   rP   Ú	TimestamprN   )rb   rí   Ú	predicateÚto_droprî   rï   s         r&   rã   rã   U  s’   € Ü—‘œ˜B›¤tÔ,€Ià€GØ ò '‰ˆˆeØ�‰�tÔô �eœhŸm™m¬X×->Ñ->Ð?Ô@Ü—L‘L Ó'ˆEà�R˜‘X Ñ&Ñ&‰	ð'ð ˆi‰=×Ñ˜g¨AÐÓ.Ð.r(   c                 ó6  — | dz  }|j                  «        t        j                  j                  t	        j
                  dg d¢i«      «      }t        j                  ||dz  «       | dz  }|j                  «        t        j                  j                  t	        j
                  dg d¢i«      «      }t        j                  ||dz  «       t        j                  | dgg¬«      }|j                  d«      j                  t        j                  g d¢g«      «      sJ ‚y )	NzA=0ÚBr   r   zA=1r9   )ÚArI   r   r“   )r   r   rä   rå   rP   rQ   r   r   r   r—   r    Úchunked_array)r"   Údir1Útable1Údir2Útable2r   s         r&   Ú"test_filter_before_validate_schemar	  e  sÔ   € ð �U‰?€DØ‡J�J„LÜ�X‰X×!Ñ!¤"§,¡,°²YÐ/?Ó"@ÓA€FÜ‡N�N�6˜4 .Ñ0Ô1à�U‰?€DØ‡J�J„LÜ�X‰X×!Ñ!¤"§,¡,°²_Ð/EÓ"FÓG€FÜ‡N�N�6˜4 .Ñ0Ô1ô �M‰M˜'¨^Ð,<Ð+=Ô>€EØ�<‰<˜Ó×#Ñ#¤B×$4Ñ$4²i°[Ó$AÔBÐBÑBr(   c                 ór  — d}d}| t        «       z  }|j                  «        g }g }t        |«      D ]‰  }t        ||¬«      }|d   j	                  t
        j                  «      |d<   ||› d�z  }t        j                  j                  |«      }	t        |	|«       |j                  |	«       |j                  |«       Œ‹ |dz  j                  «        dd„}
 |
|«      }t        j                  |«      }|j                  |«      sJ ‚d	d
d|j                  dz
  g}|D �cg c]  }|j!                  |«      j"                  ‘Œ }}t%        j&                  ||¬«      }t        j                  j)                  |D �cg c]  }|j+                  |«      ‘Œ c}||j,                  j.                  ¬«      }|j                  |«      sJ ‚t%        j&                  |d¬«       t        |¬«      j0                  d d …d d…f   }| t        «       › d�z  }t        j                  j                  |«      }t        ||«       y c c}w c c}w )Nr~   rC   ©ÚseedÚuint32ú.parquetz_SUCCESS.crcTc                 óT   — t        j                  | fi |¤Ž}|j                  ||¬«      S )N)r1   Úuse_threads)r   r2   r3   )Úpathsr1   r  r¶   r6   s        r&   Úread_multiple_filesz5test_read_multiple_files.<locals>.read_multiple_files–  s*   € Ü×#Ñ# EÑ4¨VÑ4ˆØ�|‰| G¸ˆ|ÓEÐEr(   r   r   é   r   r0   )ÚnamesÚmetadata)r  ri   )NT)r
   r   r•   r   rÒ   rR   Úint64r   rä   rå   r   rý   ÚtouchÚconcat_tablesr    Únum_columnsÚfieldrî   r   r   Úfrom_arraysr—   Úschemar  Úiloc)r"   ÚnfilesÚsizeÚdirpathÚ	test_datar  rµ   rb   r$   r   r  r%   rŠ   Úto_readÚ	col_namesÚoutÚ	bad_appleÚbad_apple_pathÚts                      r&   Útest_read_multiple_filesr(  {  s  € à€FØ€Dàœ›Ñ€GØ‡M�M„Oà€IØ€EÜ�6‹]ò ˆÜ˜T¨Ô*ˆð ˜(‘|×*Ñ*¬2¯8©8Ó4ˆˆ8‰à˜A˜3˜h˜Ñ'ˆä—‘×$Ñ$ RÓ(ˆÜ�U˜DÔ!à×Ñ˜ÔØ�‰�TÕðð ˆ~Ñ×$Ñ$Ô&óFñ ! Ó'€FÜ×Ñ 	Ó*€Hà�=‰=˜Ô"Ð"Ð"ð �!�Q˜×*Ñ*¨QÑ.Ð/€Gà/6Ö7¨!�—‘˜a“×%Ó%Ð7€IÐ7Ü
�-‰-˜¨Ô
3€CÜ�x‰x×#Ñ#¸wÖ$G¸! V§]¡]°1Õ%5Ò$GØ*3Ø-3¯]©]×-CÑ-Cð $ó E€Hð �:‰:�hÔÐÐô ‡M�M�' tÕ,ô   ¨1Ô-×2Ñ2²1°b°q°b°5Ñ9€IØ¤$£& ¨Ð2Ñ2€Nä
�‰×Ñ˜YÓ'€AÜ��NÕ#ùò 8ùâ$Gs   Ä"H/Å3H4c                 óž  — d}d}| t        «       z  }|j                  «        g }g }g }t        |«      D ]ª  }t        ||¬«      }t	        j
                  ||z  |dz   |z  «      |_        d|j                  _        ||› d�z  }	t        j                  j                  |«      }
t        |
|	«       |j                  |
«       |j                  |«       |j                  |	«       Œ¬ t        j                  |«      }ddg}|j                  |¬«      j!                  «       }t#        j$                  |D �cg c]  }||   ‘Œ	 c}«      }t'        j(                  ||«       |j                  t+        |«      ¬«      j!                  «       }|j,                  |j,                  k(  sJ ‚t'        j(                  |j/                  |j0                  ¬«      |«       y c c}w )	NrC   r  r   rl   r  Úuint8Ústringsr0   )r
   r   r•   r   rR   rW   rl   rî   r   rä   rå   r   rý   r   r2   r°   rY   rP   ÚconcatrÔ   rÕ   r¥   r\   rÑ   r1   )r"   r  r  r   r!  Úframesr  rµ   rb   r$   r   r6   r1   r%   rw   rŠ   s                   r&   Útest_dataset_read_pandasr.  Ã  s�  € à€FØ€Dàœ›Ñ€GØ‡M�M„Oà€IØ€FØ€EÜ�6‹]ò ˆÜ˜T¨Ô*ˆÜ—9‘9˜Q ™X¨¨A©°¡~Ó6ˆŒØˆ�‰Œà˜A˜3˜h˜Ñ'ˆä—‘×$Ñ$ RÓ(ˆÜ�U˜DÔ!Ø×Ñ˜ÔØ�‰�bÔØ�‰�TÕðô ×Ñ Ó(€GØ˜	Ð"€GØ× Ñ ¨Ð Ó1×;Ñ;Ó=€FÜ�y‰y¨fÖ5¨˜!˜G›*Ò5Ó6€Hä×Ñ˜& (Ô+ð × Ñ ¬¨W«Ð Ó6×@Ñ@ÓB€FØ�<‰<˜8Ÿ>™>Ò)Ð)Ð)ä×Ñ˜&Ÿ.™.°×1AÑ1A˜.ÓBÀHÕMùò 6s   Ä,G
c                 óî   — | t        «       z  }|j                  «        t        dd¬«      }|dz  }t        ||d¬«       t	        j
                  |d¬«      }|j                  «       j                  |«      sJ ‚y )	Nr~   r   r  ú	0.parquetú2.6©ÚversionT)Ú
memory_map)r
   r   r   r   r   r2   r3   r    )r"   r   r   r$   r6   s        r&   Útest_dataset_memory_mapr5  é  sj   € ð œ›Ñ€GØ‡M�M„Oä˜ Ô#€EØ�[Ñ €DÜ�˜ eÕ,ä×ÑØ˜Dô"€Gà�<‰<‹>× Ñ  Ô'Ð'Ñ'r(   c                 ó†  — | t        «       z  }|j                  «        t        dd¬«      }|dz  }t        ||d¬«       t	        j
                  t        «      5  t        j                  |d¬«       d d d «       d	D ]:  }t        j                  ||¬«      }|j                  «       j                  |«      rŒ:J ‚ y # 1 sw Y   ŒIxY w)
Nr~   r   r  r0  r1  r2  iÀÿÿÿ)Úbuffer_size)é€   i   )r
   r   r   r   r¢   rz   r¤   r   r2   r3   r    )r"   r   r   r$   r7  r6   s         r&   Ú#test_dataset_enable_buffered_streamr9  ø  s­   € àœ›Ñ€GØ‡M�M„Oä˜ Ô#€EØ�[Ñ €DÜ�˜ eÕ,ä	�‰”zÓ	"ñ &Ü
×ÑØ õ	&÷&ð #ò ,ˆÜ×#Ñ#Ø ô.ˆà�|‰|‹~×$Ñ$ UÕ+Ð+Ð+ñ,÷	&ð &ús   ÁB7Â7C c                 óP  — | t        «       z  }|j                  «        t        dd¬«      }|dz  }t        ||d¬«       dD ]d  }t	        j
                  ||¬«      }|j                  «       j                  |«      sJ ‚t	        j                  ||¬«      }|j                  |«      rŒdJ ‚ y )	Nr~   r   r  r0  r1  r2  )TF)Ú
pre_buffer)	r
   r   r   r   r   r2   r3   r    r   )r"   r   r   r$   r;  r6   Úactuals          r&   Útest_dataset_enable_pre_bufferr=    s™   € àœ›Ñ€GØ‡M�M„Oä˜ Ô#€EØ�[Ñ €DÜ�˜ eÕ,à#ò $ˆ
Ü×#Ñ#Ø 
ô,ˆà�|‰|‹~×$Ñ$ UÔ+Ð+Ð+Ü—‘˜w°:Ô>ˆØ�}‰}˜UÕ#Ð#Ð#ñ$r(   c                 ó°   — g }g }t        |«      D ]C  }t        ||¬«      }| |› d�z  }|j                  t        ||«      «       |j                  |«       ŒE |S )Nr  r  )r•   r   rý   r   )r5   r  Ú
file_nrowsr!  r  rµ   r   r$   s           r&   Ú_make_example_multifile_datasetr@    sc   € Ø€IØ€EÜ�6‹]ò ˆÜ˜J¨QÔ/ˆØ˜a˜S ˜>Ñ)ˆà×Ñœ e¨TÓ2Ô3Ø�‰�TÕðð €Lr(   c                 ó    — |D �cg c]  }t        |j                  «       «      ‘Œ }}t        |«      t        | j                  «      k(  sJ ‚y c c}w r*   )r   Úas_posixr¥   Úfiles)r6   r  r$   s      r&   Ú_assert_dataset_pathsrD  (  s@   € Ø.3Ö4 dŒS�—‘“Õ!Ð4€EÐ4Üˆu‹:œ˜WŸ]™]Ó+Ò+Ð+Ñ+ùò 5s   … AÚ
dir_prefixÚ_ú.c                 óÈ   — | t        «       z  }|j                  «        t        |dd¬«      }||› d�z  j                  «        t        j                  |«      }t        ||«       y )Nr~   rC   ©r  r?  Ústaging©r
   r   r@  r   r2   rD  ©r"   rE  r   r  r6   s        r&   Útest_ignore_private_directoriesrM  -  s^   € ð œ›Ñ€GØ‡M�M„Oä+¨G¸BØ78ô:€Eð �*�˜WÐ%Ñ%×,Ñ,Ô.ä×Ñ Ó(€Gä˜' 5Õ)r(   c                 ó„  — | t        «       z  }|j                  «        t        |dd¬«      }|dz  j                  d«      5 }|j	                  d«       d d d «       |dz  j                  d«      5 }|j	                  d«       d d d «       t        j                  |«      }t        ||«       y # 1 sw Y   ŒYxY w# 1 sw Y   Œ7xY w)Nr~   rC   rI  z	.DS_StoreÚwbs	   gibberishz.private©r
   r   r@  ÚopenÚwriter   r2   rD  ©r"   r   r  rõ   r6   s        r&   Útest_ignore_hidden_files_dotrT  >  s´   € àœ›Ñ€GØ‡M�M„Oä+¨G¸BØ78ô:€Eð �KÑ
×	%Ñ	% dÓ	+ð ¨qØ	�‰�Ô÷ð �JÑ
×	$Ñ	$ TÓ	*ð ¨aØ	�‰�Ô÷ô ×Ñ Ó(€Gä˜' 5Õ)÷ð ú÷ð úó   Á B*Á.B6Â*B3Â6B?c                 ó„  — | t        «       z  }|j                  «        t        |dd¬«      }|dz  j                  d«      5 }|j	                  d«       d d d «       |dz  j                  d«      5 }|j	                  d«       d d d «       t        j                  |«      }t        ||«       y # 1 sw Y   ŒYxY w# 1 sw Y   Œ7xY w)Nr~   rC   rI  Ú_committed_123rO  s   abcdÚ_started_321rP  rS  s        r&   Ú#test_ignore_hidden_files_underscorerY  Q  sµ   € àœ›Ñ€GØ‡M�M„Oä+¨G¸BØ78ô:€Eð Ð$Ñ
$×	*Ñ	*¨4Ó	0ð °AØ	�‰�Ô÷ð �NÑ
"×	(Ñ	(¨Ó	.ð °!Ø	�‰�Ô÷ô ×Ñ Ó(€Gä˜' 5Õ)÷ð ú÷ð úrU  c                 óî   — | |› d�z  t        «       z  }|j                  d¬«       t        |dd¬«      }t        j                  |«      }t        ||«       t        j                  |«      }t        ||«       y )NÚdataT©Úparentsr~   rC   rI  rK  rL  s        r&   Ú/test_ignore_no_private_directories_in_base_pathr^  d  ss   € ð
 ˜:˜, dÐ+Ñ+¬d«fÑ4€GØ‡M�M˜$€MÔä+¨G¸BØ78ô:€Eô ×Ñ Ó&€GÜ˜' 5Ô)ô ×Ñ Ó(€GÜ˜' 5Õ)r(   c           	      óè  — dgdz  dgdz  z   }t        j                  t        j                  t        t	        |«      «      «      t        j                  |«      j                  «       gddg¬«      }t        j                  |t        | «      dg¬«       | dz  }|j                  «        t        j                  |t        |«      dg¬«       t        j                  | d	g¬
«      }|j                  |«      sJ ‚y )NÚxxxr   Úyyyrl   Ú_part©r  ©Úpartition_colsÚ_private_duplicateÚ_private)Úignore_prefixes)r   r   rS   r•   r³   Údictionary_encoder   Úwrite_to_datasetr   r   r   r    )r"   Úpartr   Úprivate_duplicater3   s        r&   Útest_ignore_custom_prefixesrm  w  sØ   € àˆ7�Q‰;˜%˜ 1™Ñ$€DÜ�H‰HÜ
�‰””s˜4“yÓ!Ó"Ü
�‰�‹×(Ñ(Ó*ðð �wÐô!€Eô
 ×Ñ˜œs 7›|¸W¸IÕFàÐ"6Ñ6ÐØ×ÑÔÜ×Ñ˜œsÐ#4Ó5Ø(/ yõ2ô �=‰=Ø * ô/€Dð �;‰;�uÔÐÑr(   c                 ó¼   — | dz  }|j                  «        t        j                  |«      }|j                  «       }|j                  dk(  sJ ‚|j
                  dk(  sJ ‚y )Nr6   r   )r   r   r2   r3   r]   r  )r"   Ú	empty_dirr6   r%   s       r&   Útest_empty_directoryrp  Œ  sW   € à˜)Ñ#€IØ‡O�OÔä×Ñ 	Ó*€GØ�\‰\‹^€FØ�?‰?˜aÒÐÐØ×Ñ Ò"Ð"Ñ"r(   c                 ó  — dd l }dd lm} dd lm}  |j
                  t        d«      t        d«      t        t        d«      «      t        j                  gdz  t        j                  ddd¬«      j                  d	«      d
œ«      }|j                  j                  «       }ddg}	t        j                  j!                  ||dd¬«      }
 |j"                  |
| |	|¬«       t$        j&                  j)                  t+        | «      d«      }|�9|j-                  |d«      5 } |j.                  |
j0                  |«       d d d «       n |j.                  |
j0                  |«        |j2                  | |¬«      }t5        |j0                  j6                  «      }|t5        |
j0                  j6                  «      k(  sJ ‚|j9                  «       }|j;                  «       }|j                  j                  «       }|	|dt=        |	«      z  d  k(  sJ ‚||   }|	D ]  }||   j                  d«      ||<   Œ |r@|j?                  d«      j@                  jC                  «       }|d   j                  |«      |d<    |jD                  ||«       y # 1 sw Y   �Œ*xY w)Nr   Ú
aaabbbbcccÚ
eefeffgeeer~   ú
2017-01-01ú
2017-01-11údatetime64[D]r@   údatetime64[ns])Úgroup1Úgroup2ÚnumÚnanr‡   rx  ry  F)r  ÚsafeÚpreserve_indexr   Ú_common_metadatarO  éÿÿÿÿrÎ   r‡   )#ÚpandasÚpandas.testingÚtestingÚpyarrow.parquetÚparquetrQ   Úlistr•   rR   r{  rW   rÒ   r1   Útolistr   rä   rå   rj  Úosr$   rà   r   rQ  Úwrite_metadatar  r2   r¥   r  r3   rY   r³   r  rè   Úto_pandas_dtyperÕ   )r5   r   r  Ú
index_namerP   rÔ   r   Ú	output_dfÚcolsÚpartition_byÚoutput_tableÚmetadata_pathrõ   r6   Údataset_colsÚinput_tableÚinput_dfÚinput_df_colsÚcolÚexpected_date_types                       r&   Ú&_test_write_to_dataset_with_partitionsr–  —  s]  € ó Ýå ð �—‘Ü�|Ó$Ü�|Ó$Ü”E˜"“I‹Ü—‘ˆx˜"‰}Ü—	‘	˜,¨¸OÔL×SÑSØóñó €Ið ×Ñ×#Ñ#Ó%€DØ˜hÐ'€LÜ—8‘8×'Ñ'¨	¸&ÀuØ7<ð (ó >€Là€B×Ñ˜ i°Ø#-õ/ô —G‘G—L‘L¤ Y£Ð1CÓD€MàÐØ�_‰_˜]¨DÓ1ð 	6°QØˆB×Ñ˜l×1Ñ1°1Ô5÷	6ð 	6ð 	ˆ×Ñ˜,×-Ñ-¨}Ô=àˆb×Ñ 	Ø+5ô7€Gô �w—~‘~×+Ñ+Ó,€Làœ3˜|×2Ñ2×8Ñ8Ó9Ò9Ð9Ð9à—,‘,“.€KØ×$Ñ$Ó&€Hð ×$Ñ$×+Ñ+Ó-€MØ˜=¨¬c°,Ó.?Ñ)?Ð)@ÐAÒAÐAÐAà˜‰~€Hàò ;ˆØ" 3™×.Ñ.¨zÓ:ˆ	�#Šð;ñ Ø#Ÿ\™\¨&Ó1×6Ñ6×FÑFÓHÐØ% fÑ-×4Ñ4Ð5GÓHˆ	�&Ñà€B×Ñ˜) XÕ.÷=	6ñ 	6ús   ÄI<É<Jc           
      ó„  — dd l }dd lm}  |j                  t	        d«      t	        d«      t	        t        d«      «      t        j                  ddd¬«      j                  d	«      d
œ«      }|j                  j                  «       }t        j                  j                  |«      }|€t        «       }n$t        |t         «      st#        t%        |«      «      }d}t        |«      D ]  } |j&                  || |¬«       Œ t)        t+        | «      dd¬«      }	|j-                  |	«      }
|
D �cg c]   }|j.                  j1                  d«      sŒ|‘Œ" }}t3        |«      |k(  sJ ‚ |j4                  | |¬«      j7                  «       }|j9                  «       }|j;                  «       }||   }t=        j>                  ||«       y c c}w )Nr   rr  rs  r~   rt  ru  rv  r@   rw  )rx  ry  rz  r‡   rC   r   FT)Úallow_not_foundÚ	recursiver  ) r€  rƒ  r„  rQ   r…  r•   rR   rW   rÒ   r1   r†  r   rä   rå   r   rù   r   r   r   rj  r   r   rç   r$   Úendswithr³   r2   r3   rY   Údrop_duplicatesrÔ   rÕ   )r5   r   rP   r   r‹  rŒ  rŽ  Únrµ   ÚselectorÚinfosÚinfoÚoutput_filesr‘  r’  s                  r&   Ú$_test_write_to_dataset_no_partitionsr¡  Ô  sš  € ãå ð �—‘Ü�|Ó$Ü�|Ó$Ü”E˜"“I‹Ü—	‘	˜,¨¸OÔL×SÑSØóñ	ó €Ið ×Ñ×#Ñ#Ó%€DÜ—8‘8×'Ñ'¨	Ó2€LàÐÜ$Ó&‰
Ü˜
¤JÔ/Ü!¤-°
Ó";Ó<ˆ
ð 	
€AÜ�1‹Xò 3ˆØˆ×Ñ˜L¨)Ø'1ö	3ð3ô œC 	›N¸EØ&*ô,€Hð ×$Ñ$ XÓ.€EØ%*ÖM˜T¨d¯i©i×.@Ñ.@ÀÕ.L’DÐM€LÐMÜˆ|Ó Ò!Ð!Ð!ð $�"×#Ñ#Ø˜jôç
�dƒfð ð ×$Ñ$Ó&€HØ×'Ñ'Ó)€HØ˜‰~€HÜ×Ñ˜) XÕ.ùò Ns   Ä( F=Å	F=c                 ó,   — t        t        | «      «       y r*   ©r–  r   ©r"   s    r&   Ú%test_write_to_dataset_with_partitionsr¥    s   € ä*¬3¨w«<Õ8r(   c                 óî  — t        j                  t        j                  dt        j                  «       ¬«      t        j                  dt        j                  «       ¬«      t        j                  dt        j                  «       ¬«      t        j                  dt        j
                  «       ¬«      t        j                  dt        j                  d¬«      ¬«      g«      }t        t        | «      |¬	«       y )
Nrx  )rè   ry  rz  r{  r‡   Úus)Úunit©r  )	r   r  r  r=   r  Úint32Ú	timestampr–  r   )r"   r  s     r&   Ú0test_write_to_dataset_with_partitions_and_schemar¬    s�   € ä�Y‰YœŸ™ ´·	±	³Ô<ÜŸ™ ´·	±	³Ô<ÜŸ™ ¬R¯X©X«ZÔ8ÜŸ™ ¬R¯X©X«ZÔ8ÜŸ™ ¬b¯l©lÀÔ.EÔFð	Hó I€Fô
 +ÜˆG‹˜Vö%r(   c                 ó0   — t        t        | «      d¬«       y )NrŠ  )rŠ  r£  r¤  s    r&   Ú4test_write_to_dataset_with_partitions_and_index_namer®    s   € ä*ÜˆG‹ ö/r(   c                 ó,   — t        t        | «      «       y r*   )r¡  r   r¤  s    r&   Ú#test_write_to_dataset_no_partitionsr°    s   € ä(¬¨W«Õ6r(   c                 ó<   — t        | dz  «       t        | dz  «       y )NÚtest1Útest2)r–  r¡  r¤  s    r&   Útest_write_to_dataset_pathlibr´    s   € ä*¨7°WÑ+<Ô=Ü(¨°7Ñ):Õ;r(   c                 ó  — |\  }}t        j                  t        d¬«      5  t        | dz  |¬«       d d d «       t        j                  t        d¬«      5  t	        | dz  |¬«       d d d «       y # 1 sw Y   Œ>xY w# 1 sw Y   y xY w)Nz"path-like objects are only allowedr©   r²  r   r³  )r¢   rz   r£   r–  r¡  )r"   rÀ   rÁ   rF  s       r&   Ú&test_write_to_dataset_pathlib_nonlocalr¶  #  s€   € ð �E€Bˆä	�‰”yÐ(LÔ	Mñ .Ü.Ø�gÑ¨"õ	.÷.ô 
�‰”yÐ(LÔ	Mñ .Ü,Ø�gÑ¨"õ	.÷.ð .÷	.ð .ú÷.ð .ús   ¡A/ÁA;Á/A8Á;BÚwin32z,test fails because of unsupported characters)r{   c                 ó(   — | \  }}t        ||¬«       y ©Nr   )r–  rÉ   s      r&   Ú*test_write_to_dataset_with_partitions_s3fsrº  2  s   € ð �H€Bˆä*Ø˜ör(   c                 ó(   — | \  }}t        ||¬«       y r¹  )r¡  rÉ   s      r&   Ú(test_write_to_dataset_no_partitions_s3fsr¼  >  s   € ð �H€Bˆä(Ø˜ör(   c                 ó  — t        j                  dg d¢i«      }t        j                  j	                  |«      }t        | «      }t        j                  ||t        «       ¬«       t        j                  |«      }|j                  |«      sJ ‚y )Nr  r   r   )rP   rQ   r   rä   rå   r   r   rj  r   r   r    )r"   rb   r   r$   r%   s        r&   Ú test_write_to_dataset_filesystemr¾  G  sg   € ä	�‰�sšIÐ&Ó	'€BÜ�H‰H× Ñ  Ó$€EÜˆw‹<€Dä×Ñ˜˜t´Ó0AÕBÜ�]‰]˜4Ó €FØ�=‰=˜ÔÐÑr(   c                 óâ  — | dz  }t        «       }t        j                  t        j                  |«      t        j
                  j                  |«      dœddg¬«      }t        j                  j                  |«      }d}t        j                  ||j                  «      5 }t        |«      D ]  }|j                  |«       Œ 	 d d d «       t        j                  |«      }	|	j                   j"                  |k(  sJ ‚| dz  }
|j%                  t'        |
«      «      5 }t        j(                  |j                  |«       d d d «       t        j*                  | |¬«      }|S # 1 sw Y   ŒšxY w# 1 sw Y   Œ.xY w)	Nr   )rl   r/   rl   r/   r0   r   Ú	_metadatar   )r   rP   rQ   rR   rW   rÏ   rÐ   r   rä   rå   r   ÚParquetWriterr  r•   r   ÚParquetFiler  Únum_row_groupsræ   r   rˆ  r2   )r"   rv   r$   r,   rb   r   Ú
num_groupsÚwriterrµ   Úreaderr�  rõ   r6   s                r&   Ú_make_dataset_for_picklingrÇ  R  sB  € Ø�^Ñ#€DÜÓ€Eä	�‰Ü—‘˜1“Ü—)‘)—/‘/ !Ó$ñð ˜Ð"ô
$€Bô �H‰H× Ñ  Ó$€Eà€JÜ	×	Ñ	˜$ §¡Ó	-ð &°Ü�zÓ"ò 	&ˆAØ×Ñ˜uÕ%ñ	&÷&ô �^‰^˜DÓ!€FØ�?‰?×)Ñ)¨ZÒ7Ð7Ð7à˜kÑ)€MØ	×	!Ñ	!¤# mÓ"4Ó	5ð +¸Ü
×Ñ˜%Ÿ,™,¨Ô*÷+ô ×ÑØ˜Eô#€Gð €N÷&ð &ú÷+ð +ús   Â"EÄ!E%ÅE"Å%E.c                 ó:   ‡— ˆfd„}t        | «      } ||«      sJ ‚y )Nc                 óJ   •— | ‰j                  ‰j                  | «      «      k(  S r*   )ÚloadsÚdumps)ÚobjÚpickle_modules    €r&   Úis_pickleablez*test_pickle_dataset.<locals>.is_pickleablep  s$   ø€ Ø�m×)Ñ)¨-×*=Ñ*=¸cÓ*BÓCÑCÐCr(   )rÇ  )r"   rÍ  rÎ  r6   s    `  r&   Útest_pickle_datasetrÏ  n  s#   ø€ ôDô )¨Ó1€GÙ˜Ô!Ð!Ñ!r(   c                 óH  — | dz  }t        j                  g d¢g d¢g d¢dœ«      }t        j                  j	                  |«      }t        j                  |t        |«      ddg¬«       t        j                  |«      j                  «       }t        j                  ||d	z  «       y )
Nz
ARROW-3208)r  r~   g      @éd   éè  r   g333333=@)r  r~   r   rÑ  rÒ  r   r   )r   r   r   r   r   r   r   )ÚoneÚtwoÚthreerÓ  rÔ  )Ú	root_pathre  zoutput.parquet)rP   rQ   r   rä   rå   r   rj  r   r2   r3   r   )r"   r$   rb   r   s       r&   Útest_partitioned_datasetr×  w  sŠ   € ð �\Ñ!€DÜ	�‰Ú0Ú,Ú&ñó 
€Bô
 �H‰H× Ñ  Ó$€EÜ×Ñ˜¬¨T«Ø(-¨u ~õ7ä×Ñ˜dÓ#×(Ñ(Ó*€EÜ‡N�N�5˜$Ð!1Ñ1Õ2r(   c                 ó´  — | dz  }t        j                  t        d«      D �cg c]  }t        j                  d«      ‘Œ c}dz  gdg¬«      }t        j                  t        d«      D �cg c]  }t        j                  d«      ‘Œ c}dz  gdg¬«      }t        j                  |t        |«      ¬«       t        j                  |t        |«      ¬«       t        j                  |dg¬«      j                  «       }|d   j                  d«      j                  «       |d   j                  d«      j                  «       g}|d   j                  d	k(  sJ ‚|d   j                  d«      |d   j                  d
«      }}|j                  |d   «      r|j                  |d
   «      sJ ‚y |j                  |d
   «      sJ ‚|j                  |d   «      sJ ‚y c c}w c c}w )NzARROW-3325-datasetrC   r~   Úf0rc  )rÖ  )Úread_dictionaryr   r   r   )r   r   r•   r	   Úrandsr   rj  r   r2   r3   Úchunkri  Ú
num_chunksr    )	r"   r$   rµ   Út1Út2r%   Ú	ex_chunksÚc0Úc1s	            r&   Útest_dataset_read_dictionaryrã  ˆ  sˆ  € ØÐ)Ñ)€DÜ	�‰¬E°!«HÖ5 q”D—J‘J˜r•NÒ5¸Ñ:Ð;ÀDÀ6Ô	J€BÜ	�‰¬E°!«HÖ5 q”D—J‘J˜r•NÒ5¸Ñ:Ð;ÀDÀ6Ô	J€BÜ×Ñ˜¤c¨$£iÕ0Ü×Ñ˜¤c¨$£iÕ0ä×ÑØ˜t˜fô&ß&*¡d£fð ð �A‘—‘˜Q“×1Ñ1Ó3Ø�A‘—‘˜Q“×1Ñ1Ó3ð5€Ið �!‰9×Ñ 1Ò$Ð$Ð$Ø�A‰Y�_‰_˜QÓ ¨¡§¡°Ó!3ˆ€BØ	‡y�y�˜1‘ÔØ�y‰y˜ 1™Ô&Ð&Ñ&à�y‰y˜ 1™Ô&Ð&Ð&Ø�y‰y˜ 1™Ô&Ð&Ñ&ùò% 6ùÚ5s   ¢GÁ(Gc                 óÒ  — t        j                  dt        j                  g d¢t        j                  «       «      i«      }t	        j
                  || dz  «       t	        j
                  || dz  «       t        j                  dg«      }t	        j                  | dz  |¬«      }t        j                  dg d¢i|¬«      }|j                  |«      sJ ‚t	        j                  | |¬«      }t        j                  dg d¢i|¬«      }|j                  |«      sJ ‚t	        j                  | |¬«      }t        j                  dg d¢i|¬«      }|j                  «       j                  |«      sJ ‚y )Nr   r   zdata1.parquetzdata2.parquet)r   r  r©  )r   r   r   r   r   r   )r   r   rS   rª  r   r   r  r   r    r2   r3   )r"   r   r  r%   rŠ   s        r&   Útest_read_table_schemarå  Ÿ  s  € ä�H‰H�cœ2Ÿ8™8¢I¬r¯x©x«zÓ:Ð;Ó<€EÜ‡N�N�5˜' OÑ3Ô4Ü‡N�N�5˜' OÑ3Ô4ä�Y‰Y˜Ð'Ó(€Fô �]‰]˜7 _Ñ4¸VÔD€FÜ�x‰x˜šiÐ(°Ô8€HØ�=‰=˜Ô"Ð"Ð"ô �]‰]˜7¨6Ô2€FÜ�x‰x˜Ò0Ð1¸&ÔA€HØ�=‰=˜Ô"Ð"Ð"ä×Ñ˜w¨vÔ6€FÜ�x‰x˜Ò0Ð1¸&ÔA€HØ�;‰;‹=×Ñ Ô)Ð)Ñ)r(   c                 ó´  — t        j                  t        j                  g d¢t        j                  «       «      t        j                  g d¢t        j                  «       «      dœ«      }t        j                  || dz  «       t        j                  | dz  ddg¬«      }t        j                  ddg«      }|j                  ddgk(  sJ ‚|j                  |k(  sJ ‚y )Nr   rŸ   r   r   r0   )r   rª  )
r   r   rS   rª  r*  r   r   r   r  r4   )r"   r   r%   Úexpected_schemas       r&   Ú*test_read_table_duplicate_column_selectionrè  ¶  s¥   € ä�H‰Hœ2Ÿ8™8¢I¬r¯x©x«zÓ:ÜŸ8™8¢I¬r¯x©x«zÓ:ñ<ó =€Eä‡N�N�5˜' NÑ2Ô3ä�]‰]˜7 ^Ñ3¸cÀ3¸ZÔH€FÜ—i‘i °Ð @ÓA€Oà×Ñ 3¨ *Ò,Ð,Ð,Ø�=‰=˜OÒ+Ð+Ñ+r(   c                 óè  — dd l m} | dz  }|dz  dz  dz  j                  d¬«       t        j                  dg d	¢i«      }t        j                  |t        |dz  dz  dz  d
z  «      «       |j                  g d¢¬«      }t        j                  t        |«      |¬«      }|j                  g d¢k(  sJ ‚t        j                  t        |«      |¬«      j                  «       }|j                  g d¢k(  sJ ‚y )Nr   Útest_partitioningÚ2012Ú10Ú01Tr\  r   r   r   )ÚyearÚmonthÚday)Úfield_names)Úpartitioning)r   rî  rï  rð  )Úpyarrow.datasetr6   r   r   r   r   r   r   rò  r   r4   r2   r3   )r"   ÚdsrÖ  r   rk  r%   s         r&   Útest_dataset_partitioningrõ  Ã  sç   € Ý ð Ð-Ñ-€IØ�Ñ˜$Ñ Ñ%×,Ñ,°TÐ,Ô:ä�H‰H�cš9Ð%Ó&€EÜ‡N�NØŒs�9˜vÑ%¨Ñ,¨tÑ3°nÑDÓEôGð �?‰?Ò'?ˆ?Ó@€DÜ�]‰]ÜˆI‹ Tô+€Fà×ÑÒ"?Ò?Ð?Ð?ä×ÑÜˆI‹ Tô+ß+/©4«6ð à×ÑÒ"?Ò?Ð?Ñ?r(   c                 ó  — t        j                  dg d¢i«      }t        j                  || dz  «       t	        t        | «      t        «       «      }t        j                  d|¬«      }|j                  «       }|j                  |«      sJ ‚y )Nr   r   r   rG  r   )
r   r   r   r   r   r   r   r2   r3   r    )r"   r   r   r6   r%   s        r&   Ú#test_parquet_dataset_new_filesystemr÷  Û  sj   € ä�H‰H�cš9Ð%Ó&€EÜ‡N�N�5˜' NÑ2Ô3Ü"¤3 w£<´Ó1BÓC€JÜ×Ñ °
Ô;€GØ�\‰\‹^€FØ�=‰=˜ÔÐÑr(   c                 ó^  — t        j                  d«      }|j                  d«      }t        j                  dg d¢i«      }t        j                  || dz  «       t        | «      j                  dd«      }t        j                  ||¬«      }|d	z   }|j                  d
   j                  |k(  sJ ‚y )NÚfsspecÚfiler   r   r   ú\rÜ   r   z/data.parquetr   )r¢   Úimportorskipr   r   r   r   r   r   Úreplacer2   Ú	fragmentsr$   )r"   rù  r   r   r$   r6   rŠ   s          r&   Ú6test_parquet_dataset_partitions_piece_path_with_fsspecrÿ  å  s¢   € ô × Ñ  Ó*€FØ×"Ñ" 6Ó*€JÜ�H‰H�cš9Ð%Ó&€EÜ‡N�N�5˜' NÑ2Ô3ô ˆw‹<×Ñ  cÓ*€DÜ×ÑØ˜ô%€Gð �oÑ%€HØ×Ñ˜QÑ×$Ñ$¨Ò0Ð0Ñ0r(   c                 ó  ‡— t        j                  dg d¢i«      }| dz  }g Šˆfd„}d}t        j                  ||dg||¬«       |dz  dz  |d	z  dz  |d
z  dz  h}t	        t        t        j                  ‰«      «      }||k(  sJ ‚y )Nr   r   rò  c                 ó<   •— ‰j                  | j                  «       y r*   )rý   r$   )Úwritten_fileÚpaths_writtens    €r&   Úfile_visitorzDtest_parquet_write_to_dataset_exposed_keywords.<locals>.file_visitorü  s   ø€ Ø×Ñ˜\×.Ñ.Õ/r(   zpart-{i}.parquet)rò  r  Úbasename_templateÚ1zpart-0.parquetÚ2Ú3)r   r   r   rj  r¥   rs   ÚpathlibÚPath)r"   r   r$   r  r  Úexpected_pathsÚpaths_written_setr  s          @r&   Ú.test_parquet_write_to_dataset_exposed_keywordsr  ö  s¤   ø€ Ü�H‰H�cš9Ð%Ó&€EØ�^Ñ#€Dà€Mô0ð +Ðä×Ñ˜˜t°3°%Ø%1Ø*;õ=ð
 	ˆs‰
Ð%Ñ%Øˆs‰
Ð%Ñ%Øˆs‰
Ð%Ñ%ð€Nô
 œC¤§¡¨mÓ<Ó=ÐØ Ò.Ð.Ñ.r(   Úwrite_dataset_kwarg))rá   T)rá   Fc                 óò  — ddl m} t        j                  dg d¢i«      }| dz  }t	        j
                  |j                  «      }|\  }}|t	        j
                  t        j                  «      j                  vsJ ‚||j                  v sJ ‚t        j                  j                  |dd¬«      5 }t        j                  ||fi ||i¤Ž |j                  d   \  }	}
}||   |k(  sJ ‚	 ddd«       y# 1 sw Y   yxY w)	zEVerify kwargs in pq.write_to_dataset are passed onto ds.write_datasetr   Nr   r   zout.parquetÚwrite_datasetT)Úautospec)ró  r6   r   r   ÚinspectÚ	signaturer  r   rj  Ú
parametersÚmockÚpatchrV   Ú
mock_calls)r"   r  rô  r   r$   r  ÚkeyÚargÚmock_write_datasetÚ_nameÚ_argsr¶   s               r&   Ú#test_write_to_dataset_kwargs_passedr    sñ   € õ !ä�H‰H�cš9Ð%Ó&€EØ�]Ñ"€Dä×!Ñ! "×"2Ñ"2Ó3€IØ"�H€Cˆð ”g×'Ñ'¬×(;Ñ(;Ó<×GÑGÑGÐGÐGØ�)×&Ñ&Ñ&Ð&Ð&ä	�‰×	Ñ	˜2˜¸Ð	Ó	>ð "Ø!Ü
×Ñ˜E 4Ñ6¨C°¨:Ò6Ø1×<Ñ<¸QÑ?Ñˆˆu�fØ�c‰{˜cÒ!Ð!Ñ!÷	"÷ "ñ "ús   Â,7C-Ã-C6c                 ó|  — t        j                  t        j                  g d¢g d¢¬«      g d¢dœ«      }t        j                  |«      }| dz  }t        j                  || dz  dg¬«       |j                  «       D �cg c]  }|j                  «       sŒ|j                  ‘Œ! }}t        |«      d	k(  sJ ‚d
|vsJ ‚y c c}w )N)r   r:   r   r9   r„   r   )Úcatr”  r6   r  rd  r   zcat=c)rP   rQ   rˆ   r   r   r   rj  ÚiterdirÚis_dirrî   r³   )r"   rb   r   r$   rõ   Úsubdirss         r&   Ú'test_write_to_dataset_category_observedr#  '  s©   € ô
 
�‰Ü�~‰~šoº/ÔJÚñó 
€Bô �H‰H�R‹L€EØ�YÑ€DÜ×ÑØˆw˜Ñ"°E°7õð  $Ÿ|™|›~Ö<˜!°·±µˆq�v‹vÐ<€GÐ<Üˆw‹<˜1ÒÐÐØ˜'Ñ!Ð!Ñ!ùò =s   Á<B9ÂB9)r~   rC   )NNNr*   )rÑ  )nr†   r  r‡  r	  ÚsysÚnumpyrR   ÚImportErrorr¢   Úunittest.mockr  Úpyarrowr   Úpyarrow.computeÚcomputeÚpcrâ   r   r   r   r   r   r   Úpyarrow.testsr	   Úpyarrow.utilr
   rƒ  r„  r   Úpyarrow.tests.parquet.commonr   r   r   r   r€  rP   r�  r‚  rÔ   Úmarkr6   Ú
pytestmarkr'   r-   r7   rf   ry   Úxfailr£   ÚAssertionErrorr‹   r™   r›   r    r§   r­   Úparametrizer  Úcastr  r·   r¼   Ús3rÂ   rÄ   rÇ   rÊ   r+   rX   rã   r	  r(  r.  r5  r9  r=  r@  rD  rM  rT  rY  r^  rm  rp  r–  r¡  r¥  r¬  r®  r°  r´  r¶  ÚskipifÚplatformrº  r¼  r¾  rÇ  rÏ  r×  rã  rå  rè  rõ  r÷  rÿ  r  r  r#  © r(   r&   ú<module>r9     sL  ðó$ Û Û 	Û Û 
ðÛó Ý ã Ý ÷H÷ Hå Ý ðÝ ÷Aó AðÛÝð �k‰k×!Ñ! 6§;¡;×#6Ñ#6Ð7€
ò ð& ‡�×Ññ3ó ð3ð
 ‡�×Ññ	-ó ð	-ð ‡�×ÑñC,ó ðC,ðL ‡�×Ññ!ó ð!ðB ‡�×Ñð �~Ð&ØBð	 ó ð ‡�×Ññ'1ó óð'1ðT ‡�×Ññ=ó ð=ð  ‡�×Ññ!ó ð!ðB ‡�×Ññ+4ó ð+4ð\ ‡�×Ññ%,ó ð%,ðP ‡�×ÑñNó ðNð. ‡�×ÑØ‡�×Ñ˜Ø/Ð0Ø0Ð1Ð2Ø"˜"Ÿ(™( :Ó.°Ñ2Ø"˜"Ÿ(™( 8¨SÓ1°AÑ5Ø"˜"Ÿ(™( 8¨SÓ1×6Ñ6°x°r·x±x³zÓBÀQÑFð	HóIð ‡�×Ñ˜Ð(EÓFñó GóIó ðð4 ‡�×ÑñAó ðAð. ‡�‡�ñ ó ð ð ‡�‡�ñ ó ð ð ‡�×Ññ ó ð ð ‡�×ÑØ‡�‡�ñ-ó ó ð-ò
$2òN+"ò\/ð  ‡�×ÑñCó ðCð* ‡�×Ññ5$ó ð5$ðN ‡�×Ññ"Nó ð"NðJ ‡�×Ññ(ó ð(ð ‡�×Ññ,ó ð,ð$ ‡�×Ññ$ó ð$ó 	ò,ð
 ‡�×ÑØ‡�×Ñ˜¨¨S zÓ2ñ*ó 3ó ð*ð ‡�×Ññ*ó ð*ð$ ‡�×Ññ*ó ð*ð$ ‡�×ÑØ‡�×Ñ˜¨¨S zÓ2ñ*ó 3ó ð*ò"ò*#ð 7;Ø26Ø6:ó:/ð| 59ó+/ð\ ‡�×Ññ9ó ð9ð ‡�×Ññ%ó ð%ð ‡�×Ññ/ó ð/ð
 ‡�×Ññ7ó ð7ð ‡�×Ññ<ó ð<ð
 ‡�×ÑØ‡�‡�ñ
.ó ó ð
.ð ‡�×ÑØ‡�‡�à‡�×Ñ�C—L‘L GÑ+ØIð ó KñóKó ó ð
ð ‡�×ÑØ‡�‡�ñó ó ðð ‡�×Ññ ó ð óð8 ‡�×Ññ"ó ð"ð ‡�×Ññ3ó ð3ò 'ò.*ò.
,ò@ò0 ò1ò"/ð0 ‡�×ÑÐ.ð 1ó ñ"ó	ð"ð* ‡�×Ññ"ó ñ"øð]( ò Ø	ƒBðûð  ò Ø	ƒBðûð ò Ø€N€B‹ðús5   –Z1 ÁZ? Á
[ Ú1Z<Ú;Z<Ú?[
Û	[
Û	[Û[