Ë
    ìmxiå³  ã                   ó  — 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Zd dl	Z		 d dl
Zd dlZd dlmZmZ 	 d dlmZ d dlZ G d„ d«      Z G d„ de«      Z G d	„ d
e«      Z G d„ de«      Zej4                  d„ «       Zej4                  d„ «       Zej4                  d„ «       Z ej4                   ej<                  dd¬«       ej<                  dd¬«      g¬«      d„ «       Zd„ Z d„ Z!d„ Z"ejF                  jI                  dd„ d„ g«      d„ «       Z%d„ Z&ejF                  j(                  d„ «       Z'd „ Z(d!„ Z)ejF                  j(                  ejF                  jT                  d"„ «       «       Z+ejF                  j(                  d#„ «       Z,d$„ Z-ejF                  jI                  d%ej\                  j_                  «       ej\                  j_                  d&¬'«      g«      d(„ «       Z0d)„ Z1ejF                  jI                  d%ej\                  j_                  «       ej\                  j_                  d&¬'«      g«      d*„ «       Z2d+„ Z3ejF                  j(                  d,„ «       Z4ejF                  j(                  d-„ «       Z5d.„ Z6ejF                  jn                  d/„ «       Z8d0„ Z9ejF                  jI                  d%ej\                  ju                  «       ej\                  ju                  d1¬2«      ej\                  ju                  d1¬3«      ej\                  ju                  ej\                  jv                  jx                  ¬4«      ej\                  ju                  d1ej\                  jv                  jx                  ¬5«      g«      d6„ «       Z=d7„ Z>d8„ Z?d9„ Z@d:„ ZAd;„ ZBejF                  j(                  d<„ «       ZCej4                  d=„ «       ZDd>„ ZEd?„ ZFd@„ ZGdA„ ZHejF                  j’                  dB„ «       ZJdC„ ZKdD„ ZLdE„ ZM G dF„ dGejœ                  «      ZO G dH„ dIe«      ZPej4                  dJ„ «       ZQejF                  j¤                  dK„ «       ZSejF                  j¤                  dL„ «       ZTejF                  j(                  dM„ «       ZUejF                  j(                  dN„ «       ZVejF                  j(                  ejF                  jI                  dOdPdQg«      dR„ «       «       ZWdS„ ZXejF                  j(                  dT„ «       ZYejF                  j(                  dqdU„«       ZZejF                  j(                  dV„ «       Z[ejF                  j(                  dW„ «       Z\ejF                  j(                  dX„ «       Z]ejF                  j(                  dY„ «       Z^ejF                  j(                  dZ„ «       Z_ejF                  j(                  d[„ «       Z`ejF                  j(                  d\„ «       Zad]„ Zbd^„ Zcd_„ Zdd`„ Zeda„ Zfdb„ Zgdc„ Zhdd„ Zide„ Zjdf„ Zkdg„ Zlej4                  dh„ «       ZmejF                  jn                  ejF                  jI                  didjdkgd1¬l«      dm„ «       «       Znej4                  dn„ «       ZoejF                  jI                  dodjdkgd1¬l«      dp„ «       Zpy# e$ r dZY �ŒQw xY w# e$ r Y �ŒFw xY w)ré    )ÚUserListN)Úchanged_environÚinvoke_script)Úassert_frame_equalc                   ó0   — e Zd ZdZd„ fd„Zd„ Zd„ Zdd„Zy)Ú
IpcFixtureNc                  ó*   — t        j                  «       S ©N©ÚioÚBytesIO© ó    úM/home/htdocs/ttos/venv/lib/python3.12/site-packages/pyarrow/tests/test_ipc.pyú<lambda>zIpcFixture.<lambda>/   s   € ¬B¯J©J«L€ r   c                 ó<   — || _         | j                  «       | _        y r
   )Ú_sink_factoryÚget_sinkÚsink)ÚselfÚsink_factorys     r   Ú__init__zIpcFixture.__init__/   s   € Ø)ˆÔØ—M‘M“Oˆ�	r   c                 ó"   — | j                  «       S r
   )r   ©r   s    r   r   zIpcFixture.get_sink3   s   € Ø×!Ñ!Ó#Ð#r   c                 ó6   — | j                   j                  «       S r
   )r   Úgetvaluer   s    r   Ú
get_sourcezIpcFixture.get_source6   s   € Ø�y‰y×!Ñ!Ó#Ð#r   c                 óp  — d}t        j                  dt        j                  «       fdt        j                  «       fg«      }| j	                  | j
                  |«      }g }t        |«      D ]W  }t        j                  t        |«      D �cg c]  }t        j                  «       ‘Œ c}g d¢g|¬«      }	|j                  |	«       ŒY |r1t         j                  j                  |«      }
|j                  |
«       n|D ]  }	|j                  |	«       Œ |j                  | _        |j!                  «        |S c c}w )Né   ÚoneÚtwo)ÚfooNÚbarÚbazbazÚqux©Úschema)Úpar'   Úfloat64Úutf8Ú_get_writerr   ÚrangeÚrecord_batchÚrandomÚappendÚTableÚfrom_batchesÚwrite_tableÚwrite_batchÚstatsÚwrite_statsÚclose)r   Únum_batchesÚas_tableÚnrowsr'   ÚwriterÚbatchesÚiÚ_ÚbatchÚtables              r   Úwrite_batcheszIpcFixture.write_batches9   s  € ØˆÜ—‘˜U¤B§J¡J£LÐ1°E¼2¿7¹7»9Ð3EÐFÓGˆà×!Ñ! $§)¡)¨VÓ4ˆàˆÜ�{Ó#ò 	"ˆAÜ—O‘OÜ+0°«<Ö8 a”&—-‘-•/Ò8Ú6ð8àôˆEð �N‰N˜5Õ!ð	"ñ Ü—H‘H×)Ñ)¨'Ó2ˆEØ×Ñ˜uÕ%à ò *�Ø×"Ñ" 5Õ)ð*ð "Ÿ<™<ˆÔØ�‰ŒØˆùò 9s   Â
D3
)r   F)Ú__name__Ú
__module__Ú__qualname__r5   r   r   r   r@   r   r   r   r   r   ,   s   „ Ø€Ká$8ó $ò$ò$ôr   r   c                   ó"   — e Zd ZdZdZd„ Zdd„Zy)ÚFileFormatFixtureTNc                 óZ   — t         j                  j                  ||| j                  ¬«      S ©N©Úoptions)r(   ÚipcÚnew_filerI   ©r   r   r'   s      r   r+   zFileFormatFixture._get_writerX   s   € Ü�v‰v�‰˜t V°T·\±\ˆÓBÐBr   c                 óÂ  — | j                  |¬«      }t        j                  | j                  «       «      }t        j                  j                  |«      }|j                  t        |«      k(  sJ ‚t        |«      D ]V  \  }}|j                  |«      }||   j                  |«      sJ ‚|j                  j                  |d   j                  «      rŒVJ ‚ t        |j                  t        j                  j                  «      sJ ‚t        | j                  t        j                  j                   «      sJ ‚t#        |j                  «      t#        | j                  «      k(  sJ ‚y )N©r8   r   )r@   r(   ÚBufferReaderr   rJ   Ú	open_fileÚnum_record_batchesÚlenÚ	enumerateÚ	get_batchÚequalsr'   Ú
isinstancer4   Ú	ReadStatsr5   Ú
WriteStatsÚtuple)r   r8   r;   Úfile_contentsÚreaderr<   r>   s          r   Ú_check_roundtripz"FileFormatFixture._check_roundtrip[   s  € Ø×$Ñ$¨hÐ$Ó7ˆÜŸ™¨¯©Ó(9Ó:ˆä—‘×!Ñ! -Ó0ˆà×(Ñ(¬C°«LÒ8Ð8Ð8ä! 'Ó*ò 	;‰HˆAˆuà×$Ñ$ QÓ'ˆEØ˜1‘:×$Ñ$ UÔ+Ð+Ð+Ø—=‘=×'Ñ'¨°©
×(9Ñ(9Õ:Ð:Ð:ð		;ô ˜&Ÿ,™,¬¯©×(8Ñ(8Ô9Ð9Ð9Ü˜$×*Ñ*¬B¯F©F×,=Ñ,=Ô>Ð>Ð>Ü�V—\‘\Ó"¤e¨D×,<Ñ,<Ó&=Ò=Ð=Ñ=r   ©F)rA   rB   rC   Úis_filerI   r+   r\   r   r   r   rE   rE   S   s   „ à€GØ€GòCô>r   rE   c                   ó   — e Zd ZdZdZdZd„ Zy)ÚStreamFormatFixtureFNc                 óZ   — t         j                  j                  ||| j                  ¬«      S rG   )r(   rJ   Ú
new_streamrI   rL   s      r   r+   zStreamFormatFixture._get_writerv   s+   € Ü�v‰v× Ñ ØØØ—L‘Lð !ó 
ð 	
r   )rA   rB   rC   Úuse_legacy_ipc_formatrI   r^   r+   r   r   r   r`   r`   n   s   „ ð "Ðà€GØ€Gó
r   r`   c                   ó   — e Zd Zd„ Zy)ÚMessageFixturec                 ó.   — t        j                  ||«      S r
   ©r(   ÚRecordBatchStreamWriterrL   s      r   r+   zMessageFixture._get_writer€   ó   € Ü×)Ñ)¨$°Ó7Ð7r   N)rA   rB   rC   r+   r   r   r   re   re   ~   s   „ ó8r   re   c                  ó   — t        «       S r
   )r   r   r   r   Úipc_fixturerk   „   s
   € ä‹<Ðr   c                  ó   — t        «       S r
   )rE   r   r   r   Úfile_fixturerm   ‰   s   € äÓÐr   c                  ó   — t        «       S r
   )r`   r   r   r   Ústream_fixturero   Ž   ó   € äÓ Ð r   rm   zFile Format)Úidro   zStream Format)Úparamsc                 ó8   — | j                  | j                  «      S r
   )ÚgetfixturevalueÚparam©Úrequests    r   Úformat_fixturerx   “   s   € ð ×"Ñ" 7§=¡=Ó1Ð1r   c                  óÜ   — d} t        j                  t        j                  «      5  t        j                  j                  t        j                  | «      «       d d d «       y # 1 sw Y   y xY w©Nr   )ÚpytestÚraisesr(   ÚArrowInvalidrJ   rP   rO   ©Úbufs    r   Útest_empty_filer€   ¡   sG   € Ø
€CÜ	�‰”r—‘Ó	'ñ /Ü
�‰×ÑœŸ™¨Ó-Ô.÷/÷ /ñ /ús   ¦3A"Á"A+c                 ó(   — | j                  d¬«       y )NFrN   ©r\   ©rm   s    r   Útest_file_simple_roundtripr„   §   s   € Ø×!Ñ!¨5Ð!Õ1r   c                 ó(   — | j                  d¬«       y )NTrN   r‚   rƒ   s    r   Útest_file_write_tabler†   «   s   € Ø×!Ñ!¨4Ð!Õ0r   r   c                  ó*   — t        j                  «       S r
   r   r   r   r   r   r   °   s   € ŒB�J‰J‹L€ r   c                  ó*   — t        j                  «       S r
   )r(   ÚBufferOutputStreamr   r   r   r   r   ±   s   € ŒB×!Ñ!Ó#€ r   c                 óB  — t        | «      }|j                  «       }t        j                  |j	                  «       «      }t        j
                  j                  |«      }|j                  «       }t        j                  j                  |«      }|j                  |«      sJ ‚y r
   )rE   r@   r(   rO   r   rJ   rP   Úread_allr0   r1   rU   )r   Úfixturer;   rZ   r[   ÚresultÚexpecteds          r   Útest_file_read_allr�   ¯   sy   € ô
   Ó-€Gà×#Ñ#Ó%€GÜ—O‘O G×$6Ñ$6Ó$8Ó9€Mä�V‰V×Ñ˜mÓ,€Fà�_‰_Ó€FÜ�x‰x×$Ñ$ WÓ-€HØ�=‰=˜Ô"Ð"Ñ"r   c                 ó\  — | j                  «        | j                  «       }t        j                  j	                  |«      }t        j                  j	                  t        j
                  |«      «      }t        j                  |«      }|j                  «       }|j                  «       }|j                  «       }|j                  |«      sJ ‚|j                  |«      sJ ‚|j                  }|j                  dk(  sJ ‚|j                  dk(  sJ ‚|j                  |k(  sJ ‚|j                  |k(  sJ ‚y ©Né   r   )r@   r   r(   rJ   rP   rO   ÚRecordBatchFileReaderr‹   rU   r4   Únum_messagesrQ   )	rm   ÚsourceÚreader1Úreader2Úreader3Úresult1Úresult2Úresult3Úst1s	            r   Útest_open_file_from_bufferr�   À   s   € à×ÑÔ Ø×$Ñ$Ó&€Fä�f‰f×Ñ˜vÓ&€GÜ�f‰f×ÑœrŸ™¨vÓ6Ó7€GÜ×&Ñ& vÓ.€Gà×ÑÓ €GØ×ÑÓ €GØ×ÑÓ €Gà�>‰>˜'Ô"Ð"Ð"Ø�>‰>˜'Ô"Ð"Ð"à
�-‰-€CØ×Ñ˜qÒ Ð Ð Ø×!Ñ! QÒ&Ð&Ð&Ø�=‰=˜CÒÐÐØ�=‰=˜CÒÐÑr   c                 ój  — | j                  «       D �cg c]  }|j                  «       ‘Œ }}t        j                  | j	                  «       «      }t        j
                  j                  |«      }|j                  «       }t        j                  |«      j                  d¬«      }t        ||«       y c c}w ©NT)Údrop)r@   Ú	to_pandasr(   rO   r   rJ   rP   Úread_pandasÚpdÚconcatÚreset_indexr   )rm   r>   ÚframesrZ   r[   r�   rŽ   s          r   Útest_file_read_pandasr§   ×   sŠ   € à-9×-GÑ-GÓ-IÖJ Eˆe�o‰oÕÐJ€FÐJä—O‘O L×$;Ñ$;Ó$=Ó>€MÜ�V‰V×Ñ˜mÓ,€FØ×ÑÓ!€Fä�y‰y˜Ó ×,Ñ,°$Ð,Ó7€HÜ�v˜xÕ(ùò Ks   “B0c                 ó  — | j                  «        | j                  «       }|j                  d«      j                  }t	        |d«      5 }|j                  |«       d d d «       t        j                  j                  t        j                  |«      «      j                  «       }t        j                  j                  t        j                  |«      «      j                  «       }|j                  |«      sJ ‚y # 1 sw Y   Œ�xY w)Nú
file.arrowÚwb)r@   r   ÚjoinÚstrpathÚopenÚwriter(   rJ   rP   ÚpathlibÚPathr‹   ÚOSFilerU   )rm   Útmpdirr•   ÚpathÚfÚt1Út2s          r   Útest_file_pathlibr·   ã   s¹   € Ø×ÑÔ Ø×$Ñ$Ó&€Fà�;‰;�|Ó$×,Ñ,€DÜ	ˆd�DÓ	ð ˜QØ	�‰�Œ÷ô 
�‰×	Ñ	œ'Ÿ,™, tÓ,Ó	-×	6Ñ	6Ó	8€BÜ	�‰×	Ñ	œ"Ÿ)™) D›/Ó	*×	3Ñ	3Ó	5€Bà�9‰9�RŒ=Ð‰=÷ð ús   ÁC6Ã6C?c                  óÜ   — t        j                  d«      } t        j                  t        j
                  «      5  t        j                  j                  | «       d d d «       y # 1 sw Y   y xY wrz   )r   r   r{   r|   r(   r}   rJ   Úopen_streamr~   s    r   Útest_empty_streamrº   ñ   sF   € Ü
�*‰*�S‹/€CÜ	�‰”r—‘Ó	'ñ  Ü
�‰×Ñ˜3Ô÷ ÷  ñ  ús   ¹ A"Á"A+c                 ó  — t        j                  «       }t        j                  t        j                  d|«      g«      }| j	                  d«      j
                  }t        j                  |d«      5 }t         j                  j                  ||«      5 }t        j                  dg|¬«      }t        j                  |g|«      }|j                  |«       ddd«       ddd«       t        d|«       y# 1 sw Y   ŒxY w# 1 sw Y   Œ"xY w)zËARROW-15783: Verify to_pandas works for interval types.

    Interval types require static structures to be enabled. This test verifies
    that they are when no other library functions are invoked.
    Únumsr©   rª   ©é   é   é   ©ÚtypeNzread_record_batch.py)r(   Úmonth_day_nano_intervalr'   Úfieldr«   r¬   r±   rJ   rK   Úarrayr-   r®   r   )r²   Úmdn_interval_typer'   r³   r   r:   Úinterval_arrayr>   s           r   Ú"test_read_year_month_nano_intervalrÈ   ÷   sÑ   € ô ×2Ñ2Ó4ÐÜ�Y‰YœŸ™ Ð):Ó;Ð<Ó=€Fà�;‰;�|Ó$×,Ñ,€DÜ	�‰�4˜Ó	ð   $Ü�V‰V�_‰_˜T 6Ó*ð 	 ¨fÜŸX™X y kÐ8IÔJˆNÜ—O‘O ^Ð$4°fÓ=ˆEØ�L‰L˜Ô÷	 ÷ ô
 Ð(¨$Õ/÷		 ð 	 ú÷ ð  ús%   Á0!C;ÂAC/ÃC;Ã/C8	Ã4C;Ã;Dc           
      ój  — t        j                  t        j                  j	                  d«      t        j
                  dt        j                  dddgddgd¬«      dœ«      }t        j                  j                  |«      }| j                  | j                  |j                  «      5 }|j                  |«       d d d «       t        j                  j                  t        j                   | j#                  «       «      «      j%                  «       }t'        |j)                  «       |«       y # 1 sw Y   ŒrxY w)Nr   r"   r#   T©Ú
categoriesÚordered©r    r!   )r£   Ú	DataFrameÚnpr.   ÚrandnÚCategoricalÚnanr(   ÚRecordBatchÚfrom_pandasr+   r   r'   r3   rJ   r¹   rO   r   r‹   r   r¡   )ro   Údfr>   Úwrr?   s        r   Ú!test_stream_categorical_roundtripr×     sâ   € ä	�‰Ü�y‰y�‰˜qÓ!Ü�~‰~˜u¤b§f¡f¨e°U¸EÐBØ*/°¨Ø&*ô,ñó 
€Bô �N‰N×&Ñ& rÓ*€EØ	×	#Ñ	# N×$7Ñ$7¸¿¹Ó	Fð È"Ø
�‰�uÔ÷ô �V‰V×Ñ¤§¡°×0IÑ0IÓ0KÓ LÓMß‰h‹jð 
ä�u—‘Ó(¨"Õ-÷ð ús   Â&D)Ä)D2c                 ó¢  — | j                  «        | j                  «       }t        j                  j	                  |«      }t        j                  j	                  t        j
                  |«      «      }t        j                  |«      }|j                  «       }|j                  «       }|j                  «       }|j                  |«      sJ ‚|j                  |«      sJ ‚|j                  }|j                  dk(  sJ ‚|j                  dk(  sJ ‚|j                  |k(  sJ ‚|j                  |k(  sJ ‚t        |«      t        | j                  «      k(  sJ ‚y r‘   )r@   r   r(   rJ   r¹   rO   ÚRecordBatchStreamReaderr‹   rU   r4   r”   rQ   rY   r5   )	ro   r•   r–   r—   r˜   r™   rš   r›   rœ   s	            r   Útest_open_stream_from_bufferrÚ     s  € à× Ñ Ô"Ø×&Ñ&Ó(€Fä�f‰f× Ñ  Ó(€GÜ�f‰f× Ñ ¤§¡°Ó!8Ó9€GÜ×(Ñ(¨Ó0€Gà×ÑÓ €GØ×ÑÓ €GØ×ÑÓ €Gà�>‰>˜'Ô"Ð"Ð"Ø�>‰>˜'Ô"Ð"Ð"à
�-‰-€CØ×Ñ˜qÒ Ð Ð Ø×!Ñ! QÒ&Ð&Ð&Ø�=‰=˜CÒÐÐØ�=‰=˜CÒÐÐä�‹:œ˜~×9Ñ9Ó:Ò:Ð:Ñ:r   rI   F©Úuse_threadsc                 óH  — | j                  «        | j                  «       }t        j                  j	                  ||¬«      }|j                  «        |j                  }|j                  dk(  sJ ‚|j                  dk(  sJ ‚t        |«      t        | j                  «      k(  sJ ‚y ©NrH   r’   r   )r@   r   r(   rJ   r¹   r‹   r4   r”   rQ   rY   r5   )ro   rI   r•   r[   Ústs        r   Útest_open_stream_optionsrà   5  s�   € ð
 × Ñ Ô"Ø×&Ñ&Ó(€Fä�V‰V×Ñ °ÐÓ8€Fà
‡O�OÔØ	�‰€BØ�?‰?˜aÒÐÐØ× Ñ  AÒ%Ð%Ð%ä�‹9œ˜n×8Ñ8Ó9Ò9Ð9Ñ9r   c                 óâ   — | j                  «        | j                  «       }t        j                  t        «      5  t
        j                  j                  |d¬«       d d d «       y # 1 sw Y   y xY w©NTrH   )r@   r   r{   r|   Ú	TypeErrorr(   rJ   r¹   )ro   r•   s     r   Ú#test_open_stream_with_wrong_optionsrä   G  sT   € Ø× Ñ Ô"Ø×&Ñ&Ó(€Fä	�‰”yÓ	!ñ 1Ü
�‰×Ñ˜6¨4ÐÔ0÷1÷ 1ñ 1úó   º"A%Á%A.c                 ó  — | j                  «        | j                  «       }t        j                  j	                  ||¬«      }|j                  «        |j                  }|j                  dk(  sJ ‚|j                  dk(  sJ ‚y rÞ   )	r@   r   r(   rJ   rP   r‹   r4   r”   rQ   )rm   rI   r•   r[   rß   s        r   Útest_open_file_optionsrç   O  sp   € ð
 ×ÑÔ Ø×$Ñ$Ó&€Fä�V‰V×Ñ˜f¨gÐÓ6€Fà
‡O�OÔà	�‰€BØ�?‰?˜aÒÐÐØ× Ñ  AÒ%Ð%Ñ%r   c                 óâ   — | j                  «        | j                  «       }t        j                  t        «      5  t
        j                  j                  |d¬«       d d d «       y # 1 sw Y   y xY wrâ   )r@   r   r{   r|   rã   r(   rJ   rP   )rm   r•   s     r   Ú!test_open_file_with_wrong_optionsré   `  sT   € Ø×ÑÔ Ø×$Ñ$Ó&€Fä	�‰”yÓ	!ñ /Ü
�‰×Ñ˜¨ÐÔ.÷/÷ /ñ /úrå   c           
      ó   — t        j                  t        j                  j	                  d«      t        j
                  dt        j                  dddgddgd¬«      dœ«      }t        j                  j                  |d¬«      }t        j                  j                  |d¬«      }| j                  | j                  |j                  «      5 }|j                  |«       |j                  |«       d d d «       t        j                  j!                  t        j"                  | j%                  «       «      «      j'                  «       }t)        |j+                  «       t        j,                  ||gd¬	«      «       y # 1 sw Y   Œ‰xY w)
Nr   r"   r#   TrÊ   rÍ   F©Úpreserve_index©Úignore_index)r£   rÎ   rÏ   r.   rÐ   rÑ   rÒ   r(   r0   rÔ   rÓ   r+   r   r'   r®   rJ   r¹   rO   r   r‹   r   r¡   r¤   )ro   rÕ   r?   r>   rÖ   s        r   Útest_stream_write_dispatchrï   h  s  € ô 
�‰Ü�y‰y�‰˜qÓ!Ü�~‰~˜u¤b§f¡f¨e°U¸EÐBØ*/°¨Ø&*ô,ñó 
€Bô �H‰H× Ñ  °EÐ Ó:€EÜ�N‰N×&Ñ& r¸%Ð&Ó@€EØ	×	#Ñ	# N×$7Ñ$7¸¿¹Ó	Fð È"Ø
�‰�ŒØ
�‰�Œ÷ô �V‰V×Ñ¤§¡°×0IÑ0IÓ0KÓ LÓMß‰h‹jð 
ä�u—‘Ó(Ü—y‘y " b ¸Ô=õ?÷ð ús   Ã	#E4Å4E=c           
      ó0  — t        j                  dt        j                  j	                  d«      i«      }t
        j                  j                  |d d d¬«      }t
        j                  j                  |d¬«      }t
        j                  j                  |||g«      }| j                  | j                  |j                  «      5 }|j                  |d¬«       d d d «       t        t
        j                  j!                  | j#                  «       «      «      }t        t%        t&        |«      «      g d¢k(  sJ ‚t
        j                  j                  |«      }t)        |j+                  «       t        j,                  |d d ||d d gd	¬
«      «       y # 1 sw Y   Œ·xY w)Nr    é   é
   Frë   é   )Úmax_chunksize)rò   ró   r   rò   Trí   )r£   rÎ   rÏ   r.   rÐ   r(   rÓ   rÔ   r0   r1   r+   r   r'   r2   ÚlistrJ   r¹   r   ÚmaprR   r   r¡   r¤   )ro   rÕ   Úb1Úb2r?   rÖ   r;   Úresult_tables           r   Útest_stream_write_table_batchesrú   }  sG  € ô 
�‰ØŒr�y‰y�‰˜rÓ"ðó 
€Bô 
�‰×	#Ñ	# B s¨ G¸EÐ	#Ó	B€BÜ	�‰×	#Ñ	# B°uÐ	#Ó	=€Bä�H‰H×!Ñ! 2 r¨2 ,Ó/€Eà	×	#Ñ	# N×$7Ñ$7¸¿¹Ó	Fð 0È"Ø
�‰�u¨BˆÔ/÷0ô ”2—6‘6×%Ñ% n×&?Ñ&?Ó&AÓBÓC€Gä””C˜Ó!Ó"¢oÒ5Ð5Ð5Ü—8‘8×(Ñ(¨Ó1€LÜ�|×-Ñ-Ó/Ü—y‘y " S b '¨2¨r°#°2¨wÐ!7Ø.2ô4õ5÷0ð 0ús   ÃFÆFc                 óø  — | j                  «       }t        j                  | j                  «       «      }t        j                  j                  |«      }|j                  j                  |d   j                  «      sJ ‚d}t        |«      D ]   \  }}|j                  ||   «      sJ ‚|dz  }Œ" |t        |«      k(  sJ ‚t        j                  t        «      5  |j                  «        d d d «       y # 1 sw Y   y xY w©Nr   r¾   )r@   r(   rO   r   rJ   r¹   r'   rU   rS   rR   r{   r|   ÚStopIterationÚread_next_batch)ro   r;   rZ   r[   Útotalr<   Ú
next_batchs          r   Útest_stream_simple_roundtripr  •  sÜ   € Ø×*Ñ*Ó,€GÜ—O‘O N×$=Ñ$=Ó$?Ó@€MÜ�V‰V×Ñ Ó.€Fà�=‰=×Ñ ¨¡
× 1Ñ 1Ô2Ð2Ð2à€EÜ" 6Ó*ò ‰ˆˆ:Ø× Ñ  ¨¡Ô,Ð,Ð,Ø�‰
‰ðð ”C˜“LÒ Ð Ð ä	�‰”}Ó	%ñ !Ø×ÑÔ ÷!÷ !ñ !ús   ÃC0Ã0C9c                  ó(  — t        j                  «       } t        d«      D �cg c]  }t        j                  dd«      ‘Œ }}t
        j                  j                  |gdg¬«      }t
        j                  j                  d¬«      }t
        j                  j                  | |j                  |¬«      5 }|j                  |«       d d d «       t        | j                  «       «      }t        j                  «       }t        j                  dd	¬
«      }t
        j                  j                  |¬«      }t
        j                  j                  ||j                  |¬«      5 }|j                  |«       d d d «       t        |j                  «       «      }	|	|k7  sJ ‚t
        j                  j!                  | «      j#                  «       }
t
        j                  j!                  |«      j#                  «       }|
|k(  sJ ‚y c c}w # 1 sw Y   �Œ;xY w# 1 sw Y   Œ�xY w)Ni'  r   rÀ   Úvalues©ÚnamesÚzstd©ÚcompressionrH   r   )Úcompression_level)r   r   r,   r.   Úrandintr(   r0   Úfrom_arraysrJ   ÚIpcWriteOptionsÚRecordBatchFileWriterr'   r2   rR   r   ÚCodecrP   r‹   )r   r=   r  r?   rI   r:   Úlen1Úsink2ÚcodecÚlen2rµ   r¶   s               r   Útest_compression_roundtripr  §  s¢  € ä�:‰:‹<€DÜ,1°%«LÖ9 qŒf�n‰n˜Q Õ"Ð9€FÐ9Ü�H‰H× Ñ  & °(°Ð Ó<€Eä�f‰f×$Ñ$°Ð$Ó8€GÜ	�‰×	%Ñ	%Ø�%—,‘,¨ð 
&ó 
1ð "Ø4:Ø×Ñ˜5Ô!÷"ô ˆt�}‰}‹Ó€Dä�J‰J‹L€EÜ�H‰H�V¨qÔ1€EÜ�f‰f×$Ñ$°Ð$Ó7€GÜ	�‰×	%Ñ	%Ø�5—<‘<¨ð 
&ó 
2ð "Ø5;Ø×Ñ˜5Ô!÷"ô ˆu�~‰~ÓÓ €Dð
 �4Š<Ðˆ<ä	�‰×	Ñ	˜$Ó	×	(Ñ	(Ó	*€BÜ	�‰×	Ñ	˜%Ó	 ×	)Ñ	)Ó	+€Bà�Š8€O‰8ùò3 :÷"ñ "ú÷"ð "ús   ¢G6Â0G;ÅHÇ;HÈHc                  óþ  — t         j                  j                  «       } | j                  du sJ ‚| j                  du sJ ‚| j
                  t         j                  j                  j                  k(  sJ ‚d| _        | j                  du sJ ‚d| _        | j                  du sJ ‚t         j                  j                  j                  | _        | j
                  t         j                  j                  j                  k(  sJ ‚dD ]1  }t        j                  t        t        f«      5  || _        d d d «       Œ3 | j                  �J ‚dD ]`  }t         j                  j                  |«      sŒ#|| _        | j                  |k(  sJ ‚|j!                  «       | _        | j                  |k(  rŒ`J ‚ d | _        | j                  �J ‚t        j                  t        «      5  d| _        d d d «       | j"                  du sJ ‚d| _        | j"                  du sJ ‚t         j                  j                  d«      r»t         j                  j                  t         j                  j                  j                  dddd¬«      } | j
                  t         j                  j                  j                  k(  sJ ‚| j                  du sJ ‚| j                  du sJ ‚| j                  dk(  sJ ‚| j"                  du sJ ‚y y # 1 sw Y   �ŒñxY w# 1 sw Y   �ŒxY w)NFT)ÚV5é*   )Úlz4r  r   r  )Úmetadata_versionÚallow_64bitÚuse_legacy_formatr  rÜ   )r(   rJ   r  r  r  r  ÚMetadataVersionr  ÚV4r{   r|   rã   Ú
ValueErrorr  r  Úis_availableÚupperrÜ   )rI   Úvalues     r   Útest_write_optionsr!  Æ  sÅ  € Ü�f‰f×$Ñ$Ó&€GØ×Ñ %Ñ'Ð'Ð'Ø×$Ñ$¨Ñ-Ð-Ð-Ø×#Ñ#¤r§v¡v×'=Ñ'=×'@Ñ'@Ò@Ð@Ð@à€GÔØ×Ñ $Ñ&Ð&Ð&à $€GÔØ×$Ñ$¨Ñ,Ð,Ð,ä!Ÿv™v×5Ñ5×8Ñ8€GÔØ×#Ñ#¤r§v¡v×'=Ñ'=×'@Ñ'@Ò@Ð@Ð@Øò -ˆÜ�]‰]œI¤zÐ2Ó3ñ 	-Ø',ˆGÔ$÷	-ð 	-ð-ð ×ÑÐ&Ð&Ð&Ø ò 0ˆÜ�8‰8× Ñ  Õ'Ø"'ˆGÔØ×&Ñ&¨%Ò/Ð/Ð/Ø"'§+¡+£-ˆGÔØ×&Ñ&¨%Ó/Ð/Ð/ð0ð €GÔØ×ÑÐ&Ð&Ð&ä	�‰”yÓ	!ñ  ØˆÔ÷ ð ×Ñ $Ñ&Ð&Ð&Ø€GÔØ×Ñ %Ñ'Ð'Ð'ä	‡x�x×Ñ˜UÔ#Ü—&‘&×(Ñ(ÜŸV™V×3Ñ3×6Ñ6ØØ"ØØð )ó ˆð ×'Ñ'¬2¯6©6×+AÑ+A×+DÑ+DÒDÐDÐDØ×"Ñ" dÑ*Ð*Ð*Ø×(Ñ(¨DÑ0Ð0Ð0Ø×"Ñ" eÒ+Ð+Ð+Ø×"Ñ" eÑ+Ð+Ñ+ð $÷)	-ñ 	-ú÷ ñ  ús   Ä K%ÇK2Ë%K/	Ë2K<T)r  )r  )r  )r  r  c                 ó–  — || _         | j                  «       }t        j                  | j	                  «       «      }t        j
                  j                  | j	                  «       «      }|j                  |j                  k(  sJ ‚t        j
                  j                  |«      }|j                  j                  |d   j                  «      sJ ‚d}t        |«      D ]   \  }}|j                  ||   «      sJ ‚|dz  }Œ" |t        |«      k(  sJ ‚t        j                  t        «      5  |j!                  «        d d d «       y # 1 sw Y   y xY wrü   )rI   r@   r(   rO   r   rJ   Úread_messager  r¹   r'   rU   rS   rR   r{   r|   rý   rþ   )	ro   rI   r;   rZ   Úmessager[   rÿ   r<   r   s	            r   Útest_stream_options_roundtripr%  ÷  s  € ð %€NÔØ×*Ñ*Ó,€GÜ—O‘O N×$=Ñ$=Ó$?Ó@€Mä�f‰f×!Ñ! .×";Ñ";Ó"=Ó>€GØ×#Ñ# w×'?Ñ'?Ò?Ð?Ð?ä�V‰V×Ñ Ó.€Fà�=‰=×Ñ ¨¡
× 1Ñ 1Ô2Ð2Ð2à€EÜ" 6Ó*ò ‰ˆˆ:Ø× Ñ  ¨¡Ô,Ð,Ð,Ø�‰
‰ðð ”C˜“LÒ Ð Ð ä	�‰”}Ó	%ñ !Ø×ÑÔ ÷!÷ !ñ !ús   Ä%D?Ä?Ec                  óÌ  — t         j                  j                  «       } | j                  du sJ ‚| j                  du sJ ‚| j
                  t         j                  j                  j                  k(  sJ ‚| j                  g k(  sJ ‚d| _        | j                  du sJ ‚t         j                  j                  j                  | _        | j
                  t         j                  j                  j                  k(  sJ ‚t         j                  j                  j                  | _        | j
                  t         j                  j                  j                  k(  sJ ‚d| _        | j                  du sJ ‚ddg| _        | j                  ddgk(  sJ ‚t        j                  t        «      5  d | _        d d d «       t         j                  j                  ddt         j                  j                  j                  dg¬«      } | j                  du sJ ‚| j                  du sJ ‚| j
                  t         j                  j                  j                  k(  sJ ‚| j                  dgk(  sJ ‚y # 1 sw Y   ŒµxY w)NTFr   r¾   )rÜ   Úensure_native_endianÚensure_alignmentÚincluded_fields)r(   rJ   ÚIpcReadOptionsrÜ   r'  r(  Ú	AlignmentÚAnyr)  ÚDataTypeSpecificÚAt64Byter{   r|   rã   rH   s    r   Útest_read_optionsr/    s  € Ü�f‰f×#Ñ#Ó%€GØ×Ñ $Ñ&Ð&Ð&Ø×'Ñ'¨4Ñ/Ð/Ð/Ø×#Ñ#¤r§v¡v×'7Ñ'7×';Ñ';Ò;Ð;Ð;Ø×"Ñ" bÒ(Ð(Ð(à#(€GÔ Ø×'Ñ'¨5Ñ0Ð0Ð0ä!Ÿv™v×/Ñ/×@Ñ@€GÔØ×#Ñ#¤r§v¡v×'7Ñ'7×'HÑ'HÒHÐHÐHÜ!Ÿv™v×/Ñ/×8Ñ8€GÔØ×#Ñ#¤r§v¡v×'7Ñ'7×'@Ñ'@Ò@Ð@Ð@à€GÔØ×Ñ %Ñ'Ð'Ð'à  !˜f€GÔØ×"Ñ" q¨! fÒ,Ð,Ð,ä	�‰”yÓ	!ñ 'Ø"&ˆÔ÷'ô �f‰f×#Ñ#Ø°ÜŸ™×)Ñ)×:Ñ:ÈQÈCð $ó €Gð ×Ñ %Ñ'Ð'Ð'Ø×'Ñ'¨5Ñ0Ð0Ð0Ø×#Ñ#¤r§v¡v×'7Ñ'7×'HÑ'HÒHÐHÐHØ×"Ñ" q cÒ)Ð)Ñ)÷'ð 'ús   ÆIÉI#c                 ó’  — t         j                  j                  «       }t         j                  j                  dg¬«      }t         j                  j	                  t        j
                  g d¢«      t        j
                  g d¢«      gddg¬«      }| j                  | j                  |j                  «      5 }|j                  |«       d d d «       | j                  «       }t         j                  j                  ||¬«      }t         j                  j                  ||t        j                  «       ¬	«      }|j                  «       }|j                  «       }	|j                  d
k(  sJ ‚|	j                  dk(  sJ ‚t         j                  j	                  t        j
                  g d¢«      gdg¬«      }
|	|
k(  sJ ‚||k(  sJ ‚y # 1 sw Y   Œ÷xY w)Nr¾   )r)  ©r"   r#   Úbazr%   ©r¾   r¿   rÀ   é   ÚaÚbr  rH   )rI   Úmemory_poolr¿   )r(   rJ   r*  r0   r  rÅ   r+   r   r'   r2   r   r¹   Úsystem_memory_poolr‹   Únum_columns)ro   Úoptions1Úoptions2r?   rÖ   r•   r–   r—   r™   rš   rŽ   s              r   Ú!test_read_options_included_fieldsr<  8  sƒ  € Ü�v‰v×$Ñ$Ó&€HÜ�v‰v×$Ñ$°a°SÐ$Ó9€HÜ�H‰H× Ñ ¤"§(¡(Ò+GÓ"HÜ!#§¡ª,Ó!7ð"9à(+¨S zð !ó 3€Eð 
×	#Ñ	# N×$7Ñ$7¸¿¹Ó	Fð È"Ø
�‰�uÔ÷à×&Ñ&Ó(€Fä�f‰f× Ñ  °Ð Ó:€GÜ�f‰f× Ñ Ø˜¬b×.CÑ.CÓ.Eð !ó G€Gð ×ÑÓ €GØ×ÑÓ €Gà×Ñ !Ò#Ð#Ð#Ø×Ñ !Ò#Ð#Ð#ä�x‰x×#Ñ#¤R§X¡XªlÓ%;Ð$<ÀSÀEÐ#ÓJ€HØ�hÒÐÐØ�eÒÐÑ÷!ð ús   Â5F=Æ=Gc           	      ó¨  ‡ ‡— t        j                  t        j                  «       t        j                  «       «      }g d¢g d¢ddgg d¢ddgg}|D �cg c]:  }t         j                  j                  t        j                  ||¬«      gdg¬	«      ‘Œ< }}|d d
 }|d   j                  Šdˆ ˆfd„	}‰ j                  rit        j                  t         j                  «      5   ||«       d d d «       t        j                  t         j                  «      5   ||«       d d d «       nL ||«      }|j                  dk(  sJ ‚|j                  d
k(  sJ ‚|j                  dk(  sJ ‚|j                  dk(  sJ ‚d ‰ _        t         j"                  j%                  d¬«      ‰ _        ‰ j                  r5t        j                  t         j                  «      5   ||«       d d d «       nL ||«      }|j                  dk(  sJ ‚|j                  d
k(  sJ ‚|j                  dk(  sJ ‚|j                  dk(  sJ ‚ ||«      }|j                  d
k(  sJ ‚|j                  dk(  sJ ‚|j                  dk(  sJ ‚|j                  dk(  sJ ‚t         j"                  j%                  d¬«      ‰ _         ||d¬«      }|j                  dk(  sJ ‚‰ j                  r4|j                  dk(  sJ ‚|j                  dk(  sJ ‚|j                  dk(  sJ ‚y |j                  d
k(  sJ ‚|j                  dk(  sJ ‚|j                  dk(  sJ ‚y c c}w # 1 sw Y   �ŒIxY w# 1 sw Y   �ŒÕxY w# 1 sw Y   �Œ)xY w)N)r"   r"   N)r"   r#   r"   r"   r#   )r"   Nr#   Úquuxr>  rÁ   Údictsr  r4  r   c                 ó&  •— ‰j                  t        j                  «       ‰«      5 }|r1t        j                  j	                  | «      }|j                  |«       n| D ]  }|j                  |«       Œ |j                  cd d d «       S # 1 sw Y   y xY wr
   )r+   r(   ÚMockOutputStreamr0   r1   r2   r3   r4   )r;   r8   r:   r?   r>   rx   r'   s        €€r   r@   z,test_dictionary_delta.<locals>.write_batches_  s€   ø€ Ø×'Ñ'¬×(;Ñ(;Ó(=Ø(.ó0ð 	 Ø39ÙÜŸ™×-Ñ-¨gÓ6�Ø×"Ñ" 5Õ)à$ò .�EØ×&Ñ& uÕ-ð.à—<‘<÷	 ÷ 	 ò 	 ús   ¦ABÂBr   rÀ   T)Úemit_dictionary_deltasr¾   r¿   )Úunify_dictionariesrN   r]   )r(   Ú
dictionaryÚint8r*   rÓ   r  rÅ   r'   r^   r{   r|   r}   rQ   Únum_dictionary_batchesÚnum_replaced_dictionariesÚnum_dictionary_deltasrc   rJ   r  rI   )	rx   ÚtyÚdataÚvr;   Úbatches_delta_onlyr@   rß   r'   s	   `       @r   Útest_dictionary_deltarM  Q  sL  ù€ Ü	�‰”r—w‘w“y¤"§'¡'£)Ó	,€BÚ Ú!Ø�EˆNÚ(Ø�FˆOð	€Dð öàô 	�‰×"Ñ"¤B§H¡H¨Q°RÔ$8Ð#9À'ÀÐ"ÕKð€Gð ð !  !˜ÐØ�Q‰Z×Ñ€Fö	 ð ×Òä�]‰]œ2Ÿ?™?Ó+ñ 	#Ù˜'Ô"÷	#ô �]‰]œ2Ÿ?™?Ó+ñ 	.ÙÐ,Ô-÷	.ð 	.ñ ˜7Ó#ˆØ×$Ñ$¨Ò)Ð)Ð)Ø×(Ñ(¨AÒ-Ð-Ð-Ø×+Ñ+¨qÒ0Ð0Ð0Ø×'Ñ'¨1Ò,Ð,Ð,à+/€NÔ(ÜŸV™V×3Ñ3Ø#ð 4ó %€NÔà×Òä�]‰]œ2Ÿ?™?Ó+ñ 	#Ù˜'Ô"÷	#ð 	#ñ ˜7Ó#ˆØ×$Ñ$¨Ò)Ð)Ð)Ø×(Ñ(¨AÒ-Ð-Ð-Ø×+Ñ+¨qÒ0Ð0Ð0Ø×'Ñ'¨1Ò,Ð,Ð,á	Ð)Ó	*€BØ× Ñ  AÒ%Ð%Ð%Ø×$Ñ$¨Ò)Ð)Ð)Ø×'Ñ'¨1Ò,Ð,Ð,Ø×#Ñ# qÒ(Ð(Ð(äŸV™V×3Ñ3Øð 4ó €NÔñ 
�w¨Ô	.€BØ× Ñ  AÒ%Ð%Ð%Ø×ÒØ×(Ñ(¨AÒ-Ð-Ð-Ø×+Ñ+¨qÒ0Ð0Ð0Ø×'Ñ'¨1Ò,Ð,Ñ,à×(Ñ(¨AÒ-Ð-Ð-Ø×+Ñ+¨qÒ0Ð0Ð0Ø×'Ñ'¨1Ò,Ð,Ñ,ùòA÷&	#ñ 	#ú÷	.ñ 	.ú÷	#ñ 	#ús*   Á?L(Ã	L-Ä	L:Ç
	MÌ-L7Ì:MÍMc                  ó¾  — t        j                  t        j                  dt        j                  «       «      g«      } t         j                  j                  t        j                  «       | «      }|j                  rJ ‚|j                  t         j                  j                  j                  k(  sJ ‚t         j                  j                  t        j                  «       | «      }|j                  rJ ‚|j                  t         j                  j                  j                  k(  sJ ‚t        dd«      5  t         j                  j                  t        j                  «       | «      }|j                  sJ ‚|j                  t         j                  j                  j                  k(  sJ ‚t         j                  j                  t        j                  «       | «      }|j                  sJ ‚|j                  t         j                  j                  j                  k(  sJ ‚	 d d d «       t        dd«      5  t         j                  j                  t        j                  «       | «      }|j                  rJ ‚|j                  t         j                  j                  j                  k(  sJ ‚t         j                  j                  t        j                  «       | «      }|j                  rJ ‚|j                  t         j                  j                  j                  k(  sJ ‚	 d d d «       t        dd«      5  t        dd«      5  t         j                  j                  t        j                  «       | «      }|j                  sJ ‚|j                  t         j                  j                  j                  k(  sJ ‚t         j                  j                  t        j                  «       | «      }|j                  sJ ‚|j                  t         j                  j                  j                  k(  sJ ‚	 d d d «       d d d «       y # 1 sw Y   �ŒxY w# 1 sw Y   �Œ)xY w# 1 sw Y   Œ,xY w# 1 sw Y   y xY w)Nr"   ÚARROW_PRE_0_15_IPC_FORMATÚ1ÚARROW_PRE_1_0_METADATA_VERSION)r(   r'   rÄ   Úint32rJ   rb   r‰   Ú_use_legacy_formatÚ_metadata_versionr  r  rK   r   r  )r'   r:   s     r   Ú!test_envvar_set_legacy_ipc_formatrU  œ  sF  € Ü�Y‰YœŸ™ ¬¯©«
Ó3Ð4Ó5€Fä�V‰V×Ñœr×4Ñ4Ó6¸Ó?€FØ×(Ò(Ð(Ð(Ø×#Ñ#¤r§v¡v×'=Ñ'=×'@Ñ'@Ò@Ð@Ð@Ü�V‰V�_‰_œR×2Ñ2Ó4°fÓ=€FØ×(Ò(Ð(Ð(Ø×#Ñ#¤r§v¡v×'=Ñ'=×'@Ñ'@Ò@Ð@Ð@ä	Ð4°cÓ	:ñ EÜ—‘×"Ñ"¤2×#8Ñ#8Ó#:¸FÓCˆØ×(Ò(Ð(Ð(Ø×'Ñ'¬2¯6©6×+AÑ+A×+DÑ+DÒDÐDÐDÜ—‘—‘¤×!6Ñ!6Ó!8¸&ÓAˆØ×(Ò(Ð(Ð(Ø×'Ñ'¬2¯6©6×+AÑ+A×+DÑ+DÒDÐDÑD÷Eô 
Ð9¸3Ó	?ñ EÜ—‘×"Ñ"¤2×#8Ñ#8Ó#:¸FÓCˆØ×,Ò,Ð,Ð,Ø×'Ñ'¬2¯6©6×+AÑ+A×+DÑ+DÒDÐDÐDÜ—‘—‘¤×!6Ñ!6Ó!8¸&ÓAˆØ×,Ò,Ð,Ð,Ø×'Ñ'¬2¯6©6×+AÑ+A×+DÑ+DÒDÐDÑD÷Eô 
Ð9¸3Ó	?ñ IÜÐ8¸#Ó>ñ 	IÜ—V‘V×&Ñ&¤r×'<Ñ'<Ó'>ÀÓGˆFØ×,Ò,Ð,Ð,Ø×+Ñ+¬r¯v©v×/EÑ/E×/HÑ/HÒHÐHÐHÜ—V‘V—_‘_¤R×%:Ñ%:Ó%<¸fÓEˆFØ×,Ò,Ð,Ð,Ø×+Ñ+¬r¯v©v×/EÑ/E×/HÑ/HÒHÐHÑH÷	I÷Ið I÷!Eñ Eú÷Eñ Eú÷	Ið 	Iú÷Ið Iús?   Ä/C'P-È+C'P:Ì'QÌ4C'QÐQÐ-P7Ð:QÑQ	ÑQÑQc                 ó,  — | j                  «       }t        j                  | j                  «       «      }t        j                  j                  |«      }|j                  «       }t        j                  j                  |«      }|j                  |«      sJ ‚y r
   )
r@   r(   rO   r   rJ   r¹   r‹   r0   r1   rU   )ro   r;   rZ   r[   r�   rŽ   s         r   Útest_stream_read_allrW  À  sm   € Ø×*Ñ*Ó,€GÜ—O‘O N×$=Ñ$=Ó$?Ó@€MÜ�V‰V×Ñ Ó.€Fà�_‰_Ó€FÜ�x‰x×$Ñ$ WÓ-€HØ�=‰=˜Ô"Ð"Ñ"r   c                 óD  — | j                  «       D �cg c]  }|j                  «       ‘Œ }}| j                  «       }t        j                  j                  |«      }|j                  «       }t        j                  |«      j                  d¬«      }t        ||«       y c c}w rŸ   )r@   r¡   r   r(   rJ   r¹   r¢   r£   r¤   r¥   r   )ro   r>   r¦   rZ   r[   r�   rŽ   s          r   Útest_stream_read_pandasrY  Ê  s�   € à-;×-IÑ-IÓ-KÖL Eˆe�o‰oÕÐL€FÐLØ"×-Ñ-Ó/€MÜ�V‰V×Ñ Ó.€FØ×ÑÓ!€Fä�y‰y˜Ó ×,Ñ,°$Ð,Ó7€HÜ�v˜xÕ(ùò Ms   “Bc                 óÄ   — | j                  «       }| j                  «       }t        j                  |«      }t        j                  j                  |«      }|t        |«      fS r
   )r@   r   r(   rO   ÚMessageReaderr¹   rõ   )ro   r;   rZ   Ú
buf_readerr[   s        r   Úexample_messagesr]  Õ  sQ   € à×*Ñ*Ó,€GØ"×-Ñ-Ó/€MÜ—‘ Ó/€JÜ×Ñ×)Ñ)¨*Ó5€FØ”D˜“LÐ Ð r   c                  ó0  — t        j                  t        «      5  t        t	        j
                  «       «       d d d «       t        j                  t        «      5  t        t	        j                  «       «       d d d «       y # 1 sw Y   ŒIxY w# 1 sw Y   y xY wr
   )r{   r|   rã   Úreprr(   ÚMessager[  r   r   r   Útest_message_ctors_no_segfaultra  Þ  sj   € Ü	�‰”yÓ	!ñ ÜŒR�Z‰Z‹\Ô÷ô 
�‰”yÓ	!ñ !ÜŒR×ÑÓÔ ÷!ð !÷ð ú÷!ð !ús   šB ÁBÂ B	ÂBc                 ór  — | \  }}t        |«      dk(  sJ ‚|d   j                  dk(  sJ ‚t        |d   j                  t        j
                  «      sJ ‚t        |d   j                  t        j
                  «      sJ ‚|d   j                  t        j                  j                  k(  sJ ‚|dd  D ]ˆ  }|j                  dk(  sJ ‚t        |j                  t        j
                  «      sJ ‚t        |j                  t        j
                  «      sJ ‚|j                  t        j                  j                  k(  rŒˆJ ‚ y )Nr’   r   r'   r¾   zrecord batch)
rR   rÂ   rV   Úmetadatar(   ÚBufferÚbodyr  r  r  )r]  r=   ÚmessagesÚmsgs       r   Útest_message_readerrh  æ  s  € Ø"�K€A€xäˆx‹=˜AÒÐÐØ�A‰;×Ñ˜xÒ'Ð'Ð'Ü�h˜q‘k×*Ñ*¬B¯I©IÔ6Ð6Ð6Ü�h˜q‘k×&Ñ&¬¯	©	Ô2Ð2Ð2Ø�A‰;×'Ñ'¬2×+=Ñ+=×+@Ñ+@Ò@Ð@Ð@à˜˜ˆ|ò =ˆØ�x‰x˜>Ò)Ð)Ð)Ü˜#Ÿ,™,¬¯	©	Ô2Ð2Ð2Ü˜#Ÿ(™(¤B§I¡IÔ.Ð.Ð.Ø×#Ñ#¤r×'9Ñ'9×'<Ñ'<Ó<Ð<Ð<ñ	=r   c                 ó¢  — | \  }}|d   }|j                  «       }t        j                  |j                  «       dz  «      }t        j                  j                  |«      }t        j                  j                  |«      }t        j                  j                  |j                  «       «      }t        j                  j                  |«      }	|j                  |«      sJ ‚|j                  |«      sJ ‚|j                  |«      sJ ‚|j                  |	«      sJ ‚t        j                  t        j                  d¬«      5  t        j                  j                  t        j                  d«      «       d d d «       t        j                  t        «      5  t        j                  j                  |«       d d d «       y # 1 sw Y   ŒKxY w# 1 sw Y   y xY w)Nr   r¿   zCorrupted message©Úmatchs   ab)Ú	serializer(   rO   Ú
to_pybytesrJ   r#  rU   r{   r|   r}   ÚEOFError)
r]  r=   rf  rg  r   r[   ÚrestoredÚ	restored2Ú	restored3Ú	restored4s
             r   Ú#test_message_serialize_read_messagers  ö  sU  € Ø"�K€A€xà
�1‰+€CØ
�-‰-‹/€CÜ�_‰_˜SŸ^™^Ó-°Ñ1Ó2€Fä�v‰v×"Ñ" 3Ó'€HÜ—‘×#Ñ# FÓ+€IÜ—‘×#Ñ# C§N¡NÓ$4Ó5€IÜ—‘×#Ñ# FÓ+€Ià�:‰:�hÔÐÐØ�:‰:�iÔ Ð Ð Ø�:‰:�iÔ Ð Ð Ø�:‰:�iÔ Ð Ð ä	�‰”r—‘Ð.AÔ	Bñ 4Ü
�‰×ÑœBŸO™O¨EÓ2Ô3÷4ô 
�‰”xÓ	 ñ $Ü
�‰×Ñ˜FÔ#÷$ð $÷4ð 4ú÷$ð $ús   Ä<3F9Æ GÆ9GÇGc                 ó|   — | \  }}|D ]2  }t        |«      }d|vsJ ‚d|vsJ ‚d|vsJ ‚d|j                  › �|v rŒ2J ‚ y )Nz{self.type}z{metadata_len}z
{body_len}ztype: )ÚstrrÂ   )r]  r=   rf  rg  Úss        r   Ú%test_message_repr_shows_actual_valuesrw    sf   € Ø"�K€A€xàò (ˆÜ�‹Hˆà AÑ%Ð%Ð%Ø qÑ(Ð(Ð(Ø 1Ñ$Ð$Ð$Ø˜Ÿ™�zÐ" aÒ'Ð'Ð'ñ(r   c                 ól  — | \  }}|D ]ž  }t        j                  «       }t        j                  |d¬«      5 }|j                  |«       d d d «       |j	                  «       }t         j
                  j                  t        j                  |d¬«      «      }|j                  |«      rŒžJ ‚ y # 1 sw Y   ŒcxY w)NÚgzipr  )	r(   r‰   Úoutput_streamÚserialize_tor   rJ   r#  Úinput_streamrU   )r]  r=   rf  r$  Úraw_outÚcompressed_outÚcompressed_bufr�   s           r   Ú!test_message_read_from_compressedr€    s§   € ð #�K€A€xØò 	&ˆÜ×'Ñ'Ó)ˆÜ×Ñ˜g°6Ô:ð 	1¸nØ× Ñ  Ô0÷	1ð !×)Ñ)Ó+ˆä—‘×$Ñ$¤R§_¡_°^ØAGô&Ió Jˆà�}‰}˜WÕ%Ð%Ð%ñ	&÷	1ð 	1ús   ¶B*Â*B3	c                 ó’   — | \  }}t         j                  j                  |d   «      }|j                  |d   j                  «      sJ ‚y rü   )r(   rJ   Úread_schemarU   r'   )r]  r;   rf  r'   s       r   Útest_message_read_schemarƒ  *  s@   € Ø(Ñ€GˆXÜ�V‰V×Ñ ¨¡Ó,€FØ�=‰=˜ ™×*Ñ*Ô+Ð+Ñ+r   c                 ó¶   — | \  }}t        ||dd  «      D ]B  \  }}t        j                  j                  ||j                  «      }|j                  |«      rŒBJ ‚ y )Nr¾   )Úzipr(   rJ   Úread_record_batchr'   rU   )r]  r;   rf  r>   r$  Ú
read_batchs         r   Útest_message_read_record_batchrˆ  0  sZ   € Ø(Ñ€GˆXä˜g x°° |Ó4ò (‰ˆˆwÜ—V‘V×-Ñ-¨g°u·|±|ÓDˆ
Ø× Ñ  Õ'Ð'Ð'ñ(r   c                  ó"  — t        j                  t        j                  dgt        j                  «       ¬«      gdg¬«      } t        j                  «       }t         j
                  j                  || j                  «      5 }|j                  | «       d d d «       |j                  «       }t        j                  t        d¬«      5  t         j
                  j                  || j                  «       d d d «       y # 1 sw Y   ŒhxY w# 1 sw Y   y xY w)Nó   foorÁ   Ústrsr  z type record batch but got schemarj  )r(   r-   rÅ   r*   r‰   rJ   rb   r'   r3   r   r{   r|   ÚIOErrorr†  )r>   Ústreamr:   r   s       r   Ú.test_read_record_batch_on_stream_error_messagerŽ  8  sÈ   € ä�O‰OœRŸX™X v h´R·W±W³YÔ?Ð@Ø#) (ô,€Eä×"Ñ"Ó$€FÜ	�‰×	Ñ	˜6 5§<¡<Ó	0ð "°FØ×Ñ˜5Ô!÷"à
�/‰/Ó
€CÜ	�‰”wØ?ô
Añ 4ä
�‰× Ñ   e§l¡lÔ3÷4ð 4÷"ð "ú÷4ð 4ús   Â C9Ã+DÃ9DÄDc                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚStreamReaderServerc                 óR  — t        j                   t         j                  t         j                  «      | _        | j                  j	                  d«       | j                  j                  d«       | j                  j                  «       \  }}|| _        d | _        g | _	        d | _
        |S )N)ú	127.0.0.1r   r¾   )ÚsocketÚAF_INETÚSOCK_STREAMÚ_sockÚbindÚlistenÚgetsocknameÚ_do_read_allÚ_schemaÚ_batchesÚ_table)r   Údo_read_allÚhostÚports       r   ÚinitzStreamReaderServer.initK  sy   € Ü—]‘]¤6§>¡>´6×3EÑ3EÓFˆŒ
Ø�
‰
�‰Ð(Ô)Ø�
‰
×Ñ˜!ÔØ—Z‘Z×+Ñ+Ó-‰
ˆˆdØ'ˆÔØˆŒØˆŒØˆŒØˆr   c                 ó  — | j                   j                  «       \  }}	 |j                  d¬«      }t        j                  j                  |«      }|j                  | _        | j                  r|j                  «       | _
        n.t        |«      D ]   \  }}| j                  j                  |«       Œ" |j                  «        | j                   j                  «        y # |j                  «        | j                   j                  «        w xY w)NÚrb©Úmode)r–  ÚacceptÚmakefiler(   rJ   r¹   r'   r›  rš  r‹   r�  rS   rœ  r/   r6   )r   Ú
connectionÚclient_addressr•   r[   r<   r>   s          r   ÚrunzStreamReaderServer.runV  sÏ   € Ø%)§Z¡Z×%6Ñ%6Ó%8Ñ"ˆ
�Nð	Ø×(Ñ(¨dÐ(Ó3ˆFÜ—V‘V×'Ñ'¨Ó/ˆFØ!Ÿ=™=ˆDŒLØ× Ò Ø$Ÿo™oÓ/�•ä )¨&Ó 1ò 0‘H�A�uØ—M‘M×(Ñ(¨Õ/ð0ð ×ÑÔØ�J‰J×ÑÕøð ×ÑÔØ�J‰J×ÑÕús   ŸBC Ã,Dc                 ód   — | j                   | j                  r| j                  fS | j                  fS r
   )r›  rš  r�  rœ  r   s    r   Ú
get_resultzStreamReaderServer.get_resulte  s2   € Ø—‘¨T×->Ò->˜dŸk™kð $ð 	$Ø—]‘]ð$ð 	$r   N)rA   rB   rC   r¡  rª  r¬  r   r   r   r�  r�  I  s   „ ò	òó$r   r�  c                   ó*   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚSocketStreamFixturec                  ó   — y r
   r   r   s    r   r   zSocketStreamFixture.__init__l  s   € ð 	r   c                 ó^  — t        «       | _        | j                  j                  |«      }| j                  j                  «        t	        j                  t        j
                  t        j                  «      | _        | j                  j                  d|f«       | j                  «       | _
        y )Nr’  )r�  Ú_serverr¡  Ústartr“  r”  r•  r–  Úconnectr   r   )r   rž  r   s      r   Ústart_serverz SocketStreamFixture.start_serverq  sp   € Ü)Ó+ˆŒØ�|‰|× Ñ  Ó-ˆØ�‰×ÑÔÜ—]‘]¤6§>¡>´6×3EÑ3EÓFˆŒ
Ø�
‰
×Ñ˜K¨Ð.Ô/Ø—M‘M“Oˆ�	r   c                 ó0  — dd l }| j                  j                  |j                  dd«      «       | j                  j	                  «        | j
                  j                  «        | j                  j                  «        | j                  j                  «       S )Nr   ÚQ)
Ústructr   r®   ÚpackÚflushr–  r6   r±  r«   r¬  )r   r·  s     r   Ústop_and_get_resultz'SocketStreamFixture.stop_and_get_resulty  sa   € ÛØ�	‰	�‰˜Ÿ™ C¨Ó+Ô,Ø�	‰	�‰ÔØ�
‰
×ÑÔØ�‰×ÑÔØ�|‰|×&Ñ&Ó(Ð(r   c                 ó:   — | j                   j                  d¬«      S )Nrª   r¤  )r–  r§  r   s    r   r   zSocketStreamFixture.get_sink�  s   € Ø�z‰z×"Ñ"¨Ð"Ó-Ð-r   c                 ó.   — t        j                  ||«      S r
   rg   rL   s      r   r+   zSocketStreamFixture._get_writer„  ri   r   N)rA   rB   rC   r   r´  rº  r   r+   r   r   r   r®  r®  j  s   „ òò
$ò)ò.ó8r   r®  c                  ó   — t        «       S r
   )r®  r   r   r   Úsocket_fixturer¾  ˆ  rp   r   c                 ó2  — | j                  d¬«       | j                  «       }| j                  «       \  }}|j                  |d   j                  «      sJ ‚t        |«      t        |«      k(  sJ ‚t        |«      D ]  \  }}||   j                  |«      rŒJ ‚ y )NF©rž  r   )r´  r@   rº  rU   r'   rR   rS   )r¾  Úwriter_batchesÚreader_schemaÚreader_batchesr<   r>   s         r   Útest_socket_simple_roundtriprÄ  �  sœ   € à×Ñ¨EÐÔ2Ø#×1Ñ1Ó3€NØ$2×$FÑ$FÓ$HÑ!€M�>à×Ñ ¨qÑ 1× 8Ñ 8Ô9Ð9Ð9Üˆ~Ó¤# nÓ"5Ò5Ð5Ð5Ü˜nÓ-ò /‰ˆˆ5Ø˜aÑ ×'Ñ'¨Õ.Ð.Ð.ñ/r   c                 óÒ   — | j                  d¬«       | j                  «       }| j                  «       \  }}t        j                  j                  |«      }|j                  |«      sJ ‚y )NTrÀ  )r´  r@   rº  r(   r0   r1   rU   )r¾  rÁ  r=   r�   rŽ   s        r   Útest_socket_read_allrÆ  ™  sY   € à×Ñ¨DÐÔ1Ø#×1Ñ1Ó3€NØ×2Ñ2Ó4�I€A€vä�x‰x×$Ñ$ ^Ó4€HØ�=‰=˜Ô"Ð"Ñ"r   c                  óN  — t        j                  ddgi«      } t        j                  j	                  | «      }t        j
                  «       }t        ||«       |j                  «       }t        j                  j                  |dd  «      }|j                  «       }t        | |«       y )Nr"   ç      ø?é   )r£   rÎ   r(   rÓ   rÔ   r‰   Ú
write_filer   rJ   r¹   r¢   r   )rÕ   r>   r   Úbufferr[   Úrdfs         r   Útest_ipc_file_stream_has_eosrÍ  ¦  s…   € ô 
�‰�u˜s˜e�nÓ	%€BÜ�N‰N×&Ñ& rÓ*€EÜ× Ñ Ó"€DÜˆu�dÔØ�]‰]‹_€Fô �V‰V×Ñ  q r 
Ó+€Fð ×
Ñ
Ó
€Cä�r˜3Õr   c                  óz  — t        j                  ddgi«      } t        j                  j	                  | «      }t        j
                  «       }t        ||«       |j                  «       }t        j                  |«      }t        |«      }|d   j                  «       }t        j                  |«      }t        | |«       y )Nr"   rÈ  r   )r£   rÎ   r(   rÓ   rÔ   r‰   rÊ  r   rO   Ú	read_filer¡   r   )rÕ   r>   r   rË  r[   r;   rJ  rÌ  s           r   Útest_ipc_zero_copy_numpyrÐ  ¸  s�   € ä	�‰�u˜s˜e�nÓ	%€Bä�N‰N×&Ñ& rÓ*€EÜ× Ñ Ó"€DÜˆu�dÔØ�]‰]‹_€FÜ�_‰_˜VÓ$€Fä˜Ó€Gà�1‰:×ÑÓ!€DÜ
�,‰,�tÓ
€CÜ�r˜3Õr   Úipc_typer�  Úfilec           	      óÂ  — t        j                  ddgi«      }t        j                  j	                  |«      }t        j
                  «       }d}t        j                  j                  t        j                  j                  dœ|    } |||j                  «      5 }t        |«      D ]   }|j                  |dt        |«      i¬«       Œ" |j                  |«       d d d «       |j                  «       }| dk(  rBt        j                  j                  |«      5 }	t        |	j!                  «       «      }
d d d «       nYt        j                  j#                  |«      5 }	t        |	j$                  «      D �cg c]  }|	j'                  |«      ‘Œ }
}d d d «       t        |«      D ]h  }
|   j(                  j*                  dk(  sJ ‚t-        |
|   j.                  t        j0                  «      sJ ‚|
|   j.                  dt        |«      ik(  rŒhJ ‚ 
|   j(                  j*                  dk(  sJ ‚|
|   j.                  �J ‚y # 1 sw Y   �Œ`xY w# 1 sw Y   Œ¼xY wc c}w # 1 sw Y   ŒÍxY w)	Nr"   rÈ  r¿   )r�  rÒ  Úbatch_id)Úcustom_metadatar�  r¾   )r£   rÎ   r(   rÓ   rÔ   r‰   rJ   rb   rK   r'   r,   r3   ru  r   r¹   rõ   Ú!iter_batches_with_custom_metadatarP   rQ   Úget_batch_with_custom_metadatar>   Únum_rowsrV   rÕ  ÚKeyValueMetadata)rÑ  rÕ   r>   r   Úbatch_countÚfile_factoryr:   r<   rË  r[   Úbatch_with_metass              r   Ú+test_batches_with_custom_metadata_roundtriprÝ  É  sR  € ô 
�‰�u˜s˜e�nÓ	%€Bä�N‰N×&Ñ& rÓ*€EÜ× Ñ Ó"€Dà€KÜ Ÿf™f×/Ñ/ÜŸF™FŸO™Oñ-Ø-5ñ7€Lñ 
�d˜EŸL™LÓ	)ð "¨VÜ�{Ó#ò 	LˆAØ×Ñ˜u°zÄ3ÀqÃ6Ð6JÐÕKð	Lð 	×Ñ˜5Ô!÷	"ð �]‰]‹_€Fà�8ÒÜ�V‰V×Ñ Ó'ð 	P¨6Ü# F×$LÑ$LÓ$NÓOÐ÷	Pð 	Pô �V‰V×Ñ˜fÓ%ð 	K¨ä).¨v×/HÑ/HÓ)Iö KØ$%ð !'× EÑ EÀaÕ Hð  KÐð  K÷	Kô �;Óò KˆØ Ñ"×(Ñ(×1Ñ1°QÒ6Ð6Ð6ÜØ˜QÑ×/Ñ/´×1DÑ1DôFð 	Fð Fà Ñ"×2Ñ2°zÄ3ÀqÃ6Ð6JÓJÐJÐJð	Kð ˜KÑ(×.Ñ.×7Ñ7¸1Ò<Ð<Ð<Ø˜KÑ(×8Ñ8Ð@Ð@Ñ@÷1"ñ "ú÷	Pð 	Püò K÷	Kð 	Kús7   ÂA H7ÄIÅIÅ/IÆIÈ7IÉIÉIÉIc                  ó`  — t         j                  j                  t        j                  g d¢«      t        j                  g d¢«      gddg¬«      } t        j                  «       }t         j
                  j                  || j                  «      5  	 d d d «       |j                  «       }t         j
                  j                  |«      5 }|j                  «       }d d d «       j                  j                  | j                  «      sJ ‚t        |«      dk(  sJ ‚y # 1 sw Y   Œ‰xY w# 1 sw Y   ŒMxY w)Nr3  r1  r5  r6  r  r   )r(   r0   r  rÅ   r‰   rJ   rb   r'   r   r¹   r‹   rU   rR   )r?   r   r•   r[   r�   s        r   Útest_ipc_stream_no_batchesrß  ð  sò   € ä�H‰H× Ñ ¤"§(¡(ª<Ó"8Ü"$§(¡(Ò+GÓ"Hð"Jà(+¨S zð !ó 3€Eô × Ñ Ó"€DÜ	�‰×	Ñ	˜4 §¡Ó	.ñ Ø÷ð �]‰]‹_€FÜ	�‰×	Ñ	˜FÓ	#ð # vØ—‘Ó"ˆ÷#ð �=‰=×Ñ §¡Ô-Ð-Ð-Üˆv‹;˜!ÒÐÑ÷ð ú÷#ð #ús   ÂDÃD$ÄD!Ä$D-c                  ó   — d} d}t        j                  dt        j                  j	                  | «      i«      }t
        j                  j                  |«      }t
        j                  j                  |«      | |z  kD  sJ ‚y )Nrò   rÉ  r"   )
r£   rÎ   rÏ   r.   rÐ   r(   rÓ   rÔ   rJ   Úget_record_batch_size)ÚNÚitemsizerÕ   r>   s       r   Útest_get_record_batch_sizerä    sa   € à
€AØ€HÜ	�‰�uœbŸi™iŸo™o¨aÓ0Ð1Ó	2€Bä�N‰N×&Ñ& rÓ*€EÜ�6‰6×'Ñ'¨Ó.°!°h±,Ò?Ð?Ñ?r   c                 ó€   — t        j                  | |rdnd¬«      }t        j                  ||¬«      }t        || «       y )Nr¿   r¾   )ÚnthreadsrÛ   )r(   Úserialize_pandasÚdeserialize_pandasr   )rÕ   rÜ   r   r�   s       r   Ú"_check_serialize_pandas_round_tripré    s4   € ä
×
Ñ
˜b±©1ÀÔ
C€CÜ×"Ñ" 3°KÔ@€FÜ�v˜rÕ"r   c                  ó    — t        j                  g d¢d¬«      } ddg}t        j                  g d¢t        d«      dœ| |¬	«      }t	        |«       y )
Nr½   Úmy_index©Únamer"   r#   ©rÈ  gš™™™™™ù?g333333û?Úabc©r"   r#   ©ÚindexÚcolumns©r£   ÚIndexrÎ   rõ   ré  ©rò  ró  rÕ   s      r   Ú test_pandas_serialize_round_tripr÷    sD   € ä�H‰H’Y ZÔ0€EØ�eˆn€GÜ	�‰Ú¬¨U«Ñ4Ø˜Wô
€Bô ' rÕ*r   c                  ó¤   — t        j                  g d¢d¬«      } ddg}t        j                  g d¢t        d«      dœ| |¬	«      }t	        |d
¬«       y )Nr½   rë  rì  r"   r#   rî  rï  rð  rñ  TrÛ   rô  rö  s      r   Ú)test_pandas_serialize_round_trip_nthreadsrù    sF   € ä�H‰H’Y ZÔ0€EØ�eˆn€GÜ	�‰Ú¬¨U«Ñ4Ø˜Wô
€Bô ' r°tÖ<r   c                  ó"  — t        j                  g d¢d¬«      } t        j                  t        d«      d ¬«      }t         j                  j	                  | |g«      }ddg}t        j
                  g d¢t        d«      d	œ||¬
«      }t        |«       y )Nr½   Úlevel_1rì  Údefr"   r#   rî  rï  rð  rñ  )r£   rõ  rõ   Ú
MultiIndexr  rÎ   ré  )Úindex1Úindex2rò  ró  rÕ   s        r   Ú,test_pandas_serialize_round_trip_multi_indexr   )  sr   € ä�X‰X’i iÔ0€FÜ�X‰X”d˜5“k¨Ô-€FÜ�M‰M×%Ñ% v¨vÐ&6Ó7€Eà�eˆn€GÜ	�‰Ú¬¨U«Ñ4ØØô
€Bô
 ' rÕ*r   c                  óB   — t        j                  «       } t        | «       y r
   )r£   rÎ   ré  )rÕ   s    r   Ú%test_serialize_pandas_empty_dataframer  8  s   € ä	�‰‹€BÜ& rÕ*r   c                  óÄ   — t        j                  t        t        g d¢d«      «      «      } t	        j
                  | «      }t	        j                  |«      }t        || «       y )Nrî  rï  )r£   rÎ   rõ   r…  r(   rç  rè  r   )rÕ   r   r�   s      r   Ú3test_pandas_serialize_round_trip_not_string_columnsr  >  sF   € ä	�‰”dœ3š°Ó6Ó7Ó	8€BÜ
×
Ñ
˜bÓ
!€CÜ×"Ñ" 3Ó'€FÜ�v˜rÕ"r   c                  óP  — t        j                  dg d¢ig d¢¬«      } t        j                  dg d¢i«      }t        j                  | d¬«      }t        j                  |«      }t        ||«       t        j                  | d¬«      }t        j                  |«      }t        || «       y )Nr5  r½   )rò  Frë   T)r£   rÎ   r(   rç  rè  r   )rÕ   rŽ   r   r�   s       r   Ú'test_serialize_pandas_no_preserve_indexr  F  s‚   € ä	�‰�sšIÐ&ªiÔ	8€BÜ�|‰|˜S¢)Ð,Ó-€Hä
×
Ñ
˜b°Ô
7€CÜ×"Ñ" 3Ó'€FÜ�v˜xÔ(ä
×
Ñ
˜b°Ô
6€CÜ×"Ñ" 3Ó'€FÜ�v˜rÕ"r   c                  óÎ  — d} t        j                  t        j                  j	                  | «      dt        j
                  dddgdœ«      }t        j                  j                  |«      }|j                  j                  «       }|j                  «       }t        j                  j                  |«      }t        j                  j                  ||«      }|j                  |«      sJ ‚y )Nr   r"   r#   r$   r%   rÍ   )r£   rÎ   rÏ   r.   rÐ   rÒ   r(   rÓ   rÔ   r'   rl  rJ   r‚  r†  rU   )r9   rÕ   r>   Ús_schemaÚs_batchÚrecons_schemaÚrecons_batchs          r   Ú#test_schema_batch_serialize_methodsr  T  s®   € à€EÜ	�‰Ü�y‰y�‰˜uÓ%Ø”r—v‘v˜u h°Ð6ñ8ó 
9€Bô �N‰N×&Ñ& rÓ*€Eà�|‰|×%Ñ%Ó'€HØ�o‰oÓ€Gä—F‘F×&Ñ& xÓ0€MÜ—6‘6×+Ñ+¨G°]ÓC€LØ×Ñ˜uÔ%Ð%Ñ%r   c                  óÞ  — dddœ} dddœ}t        j                  dt        j                  «       «      }t        j                  dt        j                  «       | ¬«      }t        j                  ||g|¬«      }|j                  «       }t         j                  j                  |«      }|j                  |«      sJ ‚|j                  |k(  sJ ‚|d   j                  �J ‚|d	   j                  | k(  sJ ‚y )
Ns   bars   field)rŠ  s   kinds   schemar5  r6  ©rc  r   r¾   )
r(   rÄ   rE  Ústringr'   rl  rJ   r‚  rU   rc  )Úfield_metadataÚschema_metadataÚf0Úf1r'   r  r
  s          r   Ú'test_schema_serialization_with_metadatar  d  sÒ   € Ø$¨xÑ8€NØ%°	Ñ:€Oä	�‰�#”r—w‘w“yÓ	!€BÜ	�‰�#”r—y‘y“{¨^Ô	<€Bä�Y‰Y˜˜B�x¨/Ô:€Fà×ÑÓ!€HÜ—F‘F×&Ñ& xÓ0€Mà×Ñ Ô'Ð'Ð'Ø×!Ñ! _Ò4Ð4Ð4Ø˜Ñ×$Ñ$Ð,Ð,Ð,Ø˜Ñ×$Ñ$¨Ò6Ð6Ñ6r   c                 ó¤   — t         j                  j                  || j                  «      5 }|j	                  | «       d d d «       y # 1 sw Y   y xY wr
   )r(   rJ   rK   r'   r3   )r>   r   r:   s      r   rÊ  rÊ  v  s=   € Ü	�‰�‰˜˜uŸ|™|Ó	,ð "°Ø×Ñ˜5Ô!÷"÷ "ñ "ús   «AÁAc                 óÚ   — t         j                  j                  | «      5 }t        |j                  «      D �cg c]  }|j                  |«      ‘Œ c}cd d d «       S c c}w # 1 sw Y   y xY wr
   )r(   rJ   rP   r,   rQ   rT   )r•   r[   r<   s      r   rÏ  rÏ  {  s\   € Ü	�‰×	Ñ	˜&Ó	!ð O VÜ-2°6×3LÑ3LÓ-MÖN¨�× Ñ  Õ#ÒN÷Oñ OùÚN÷Oð Oús    A!¸AÁA!ÁA!Á!A*c                  ó   — t        j                  dt        j                  «       fg«      } t        j                  «       }t         j                  j                  || «      5  	 d d d «       |j                  «       }t        j                  t        j                  |«      «      5 }|j                  «       }d d d «       t        «      dk(  sJ ‚|j                  j                  | «      sJ ‚y # 1 sw Y   ŒˆxY w# 1 sw Y   ŒCxY w)NrÄ   r   )r(   r'   Úint64r‰   rJ   rK   r   r“   rO   r‹   rR   rU   )r'   r   r   r[   r?   s        r   Útest_write_empty_ipc_filer  €  sÇ   € ô �Y‰Y˜¤"§(¡(£*Ð-Ð.Ó/€Fä× Ñ Ó"€DÜ	�‰�‰˜˜vÓ	&ñ Ø÷ð �-‰-‹/€CÜ	×	!Ñ	!¤"§/¡/°#Ó"6Ó	7ð "¸6Ø—‘Ó!ˆ÷"äˆu‹:˜Š?Ðˆ?Ø�<‰<×Ñ˜vÔ&Ð&Ñ&÷ð ú÷"ð "ús   ÁC(Â!C4Ã(C1Ã4C=c                  óÂ  ‡— d„ Šˆfd„} t         | «       «      }t        j                  |«      }t        j                  j                   ‰«       |«      5 }d } |«       €J ‚t        |«       | «       k(  sJ ‚ |«       �J ‚	 d d d «       t        t         | «       «      «      }t        j                  |«      }t        j                  j                   ‰«       |«      5 }d } |«       €J ‚t        |«       | «       k(  sJ ‚ |«       �J ‚	 d d d «        | «       }t        j                  t        «      5  t        j                  j                  dt        j                  «       fg|«      }	 d d d «       t        j                  t        «      5  t        j                  j                  d |«      }	 d d d «       y # 1 sw Y   �Œ3xY w# 1 sw Y   Œ¹xY w# 1 sw Y   ŒfxY w# 1 sw Y   y xY w)Nc                  óV   — t        j                  dt        j                  «       fg«      S )NrÄ   )r(   r'   r  r   r   r   Úmake_schemaz0test_py_record_batch_reader.<locals>.make_schema‘  s   € Ü�y‰y˜7¤B§H¡H£JÐ/Ð0Ó1Ð1r   c                  ó‚   •—  ‰«       } t        j                  g d¢g| ¬«      }t        j                  ddgg| ¬«      }||gS )Nr½   r&   r4  r   )r(   r-   )r'   Úbatch1Úbatch2r  s      €r   Úmake_batchesz1test_py_record_batch_reader.<locals>.make_batches”  s=   ø€ Ù“ˆÜ—‘¢) °VÔ<ˆÜ—‘ 1 a & °&Ô9ˆØ˜ÐÐr   rÄ   )r   ÚweakrefÚrefr(   ÚRecordBatchReaderr1   rõ   Úiterr{   r|   rã   r  )r   r;   rÖ   r[   r  s       @r   Útest_py_record_batch_readerr%  �  s¯  ø€ ò2ô ô ‘|“~Ó&€GÜ	�‰�WÓ	€Bä	×	Ñ	×	*Ñ	*©;«=Ø+2ó
4ð Ø7=ØˆÙ‹tÐÐÐÜ�F‹|™|›~Ò-Ð-Ð-Ù‹tˆ|Ð‰|÷ô ”8™L›NÓ+Ó,€GÜ	�‰�WÓ	€Bä	×	Ñ	×	*Ñ	*©;«=Ø+2ó
4ð Ø7=ØˆÙ‹tÐÐÐÜ�F‹|™|›~Ò-Ð-Ð-Ù‹tˆ|Ð‰|÷ñ ‹n€GÜ	�‰”yÓ	!ñ Ü×%Ñ%×2Ñ2Ø”r—x‘x“zÐ"Ð# Wó.ˆà÷ô
 
�‰”yÓ	!ñ Ü×%Ñ%×2Ñ2°4¸ÓAˆØ÷ð ÷5ñ ú÷ð ú÷ð ú÷
ð ús0   Á*F0Ã*F=Ä-6G	Æ!GÆ0F:Æ=GÇ	GÇGc                  ót  —  G d„ d«      } t        j                  t        j                  g d¢t        j                  «       ¬«      gdg¬«      t        j                  t        j                  g d¢t        j                  «       ¬«      gdg¬«      g} | |«      }t         j                  j                  |«      }t         j                  j                  |«      }|j                  «       |k(  sJ ‚t         j                  j                  |«      }|j                  «       |k(  sJ ‚t         j                  j                  ||d   j                  ¬	«      }|j                  «       |k(  sJ ‚t        j                  t        j                  dt        j                  «       «      g«      }t         j                  j                  ||¬	«      }|j                  «       |j                  |«      k(  sJ ‚t        j                  t         j                  j                   d
¬«      5  t         j                  j                  |t        j                  t        j                  dt        j"                  t        j                  «       «      «      g«      ¬	«       d d d «       t        j                  t$        «      5  t         j                  j                  |d   d   «       d d d «       t        j                  t$        «      5  t         j                  j                  ||d   ¬	«       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)Nc                   ó   — e Zd Zd„ Zdd„Zy)úAtest_record_batch_reader_from_arrow_stream.<locals>.StreamWrapperc                 ó   — || _         y r
   )r;   )r   r;   s     r   r   zJtest_record_batch_reader_from_arrow_stream.<locals>.StreamWrapper.__init__À  s	   € Ø"ˆD�Lr   Nc                 ó¦   — t         j                  j                  | j                  d   j                  | j                  «      }|j                  |«      S )Nr   )r(   r#  r1   r;   r'   Ú__arrow_c_stream__)r   Úrequested_schemar[   s      r   r+  zTtest_record_batch_reader_from_arrow_stream.<locals>.StreamWrapper.__arrow_c_stream__Ã  sA   € Ü×)Ñ)×6Ñ6Ø—‘˜Q‘×&Ñ&¨¯©ó6ˆFà×,Ñ,Ð-=Ó>Ð>r   r
   )rA   rB   rC   r   r+  r   r   r   ÚStreamWrapperr(  ¿  s   „ ò	#ô	?r   r-  r½   rÁ   r5  r  ©r4  r   r’   r   r&   úField 0 cannot be castrj  )r(   r-   rÅ   r  r0   r1   r#  Úfrom_streamr‹   r'   rÄ   rR  Úcastr{   r|   ÚlibÚArrowTypeErrorÚlist_rã   )r-  rJ  ÚwrapperrŽ   r[   Úgood_schemas         r   Ú*test_record_batch_reader_from_arrow_streamr7  ½  sk  € ÷?ñ ?ô 	�‰œŸ™¢)´"·(±(³*Ô=Ð>ÀsÀeÔLÜ
�‰œŸ™¢)´"·(±(³*Ô=Ð>ÀsÀeÔLð€Dñ ˜DÓ!€Gô �x‰x×$Ñ$ TÓ*€HÜ×!Ñ!×-Ñ-¨hÓ7€FØ�?‰?Ó Ò(Ð(Ð(ô ×!Ñ!×-Ñ-¨gÓ6€FØ�?‰?Ó Ò(Ð(Ð(ô ×!Ñ!×-Ñ-¨g¸dÀ1¹g¿n¹nÐ-ÓM€FØ�?‰?Ó Ò(Ð(Ð(ô —)‘)œRŸX™X c¬2¯8©8«:Ó6Ð7Ó8€KÜ×!Ñ!×-Ñ-¨g¸kÐ-ÓJ€FØ�?‰?Ó §¡¨kÓ :Ò:Ð:Ð:ô 
�‰”r—v‘v×,Ñ,Ð4LÔ	Mñ 
Ü
×Ñ×(Ñ(ØœBŸI™I¤r§x¡x°´R·X±X¼b¿h¹h»jÓ5IÓ'JÐ&KÓLð 	)ô 	
÷
ô 
�‰”yÓ	!ñ 7Ü
×Ñ×(Ñ(¨¨a©°©Ô6÷7ô 
�‰”yÓ	!ñ CÜ
×Ñ×(Ñ(¨¸$¸q¹'Ð(ÔB÷Cð C÷
ð 
ú÷7ð 7ú÷Cð Cús%   ÈA/LÊ!&L"Ë(%L.ÌLÌ"L+Ì.L7c                  óø  — t        j                  t        j                  dt        j                  «       «      g«      } t        j                  t        j
                  g d¢t        j                  «       ¬«      gdg¬«      t        j                  t        j
                  g d¢t        j                  «       ¬«      gdg¬«      g}t         j                  j                  |«      }t         j                  j                  | |«      }|j                  | «      j                  «       |k(  sJ ‚t        j                  t        j                  dt        j                  «       «      g«      }t         j                  j                  | |«      }|j                  |«      j                  «       |j                  |«      k(  sJ ‚t         j                  j                  | |«      }t        j                  t        d¬«      5  |j                  t        j                  g «      «       d d d «       t         j                  j                  | |«      }t        j                  t         j                  j                   d¬«      5  |j                  t        j                  t        j                  dt        j"                  t        j                  «       «      «      g«      «       d d d «       t        j                  t        j                  dt        j$                  «       «      g«      } t        j
                  t'        j(                  d	d
d«      gt        j$                  «       ¬«      }t        j                  |gdg¬«      t        j                  |gdg¬«      g}t         j                  j                  |«      }t         j                  j                  | |«      }|j                  | «      j                  «       |k(  sJ ‚y # 1 sw Y   �ŒÑxY w# 1 sw Y   �Œ(xY w)Nr5  r½   rÁ   r  r.  zTarget schema's field namesrj  r/  iè  r’   é   )r(   r'   rÄ   r  r-   rÅ   r0   r1   r#  r1  r‹   rR  r{   r|   r  r2  r3  r4  Údate32ÚdatetimeÚdate)Ú
schema_srcrJ  Ú	table_srcr[   Ú
schema_dstÚarrs         r   Útest_record_batch_reader_castrA  î  s¶  € Ü—‘œBŸH™H S¬"¯(©(«*Ó5Ð6Ó7€Jä
�‰œŸ™¢)´"·(±(³*Ô=Ð>ÀsÀeÔLÜ
�‰œŸ™¢)´"·(±(³*Ô=Ð>ÀsÀeÔLð€Dô —‘×%Ñ% dÓ+€Iô ×!Ñ!×.Ñ.¨z¸4Ó@€FØ�;‰;�zÓ"×+Ñ+Ó-°Ò:Ð:Ð:ô —‘œBŸH™H S¬"¯(©(«*Ó5Ð6Ó7€JÜ×!Ñ!×.Ñ.¨z¸4Ó@€FØ�;‰;�zÓ"×+Ñ+Ó-°·±À
Ó1KÒKÐKÐKô ×!Ñ!×.Ñ.¨z¸4Ó@€FÜ	�‰”zÐ)FÔ	Gñ #Ø�‰”B—I‘I˜b“MÔ"÷#ô ×!Ñ!×.Ñ.¨z¸4Ó@€FÜ	�‰”r—v‘v×,Ñ,Ð4LÔ	Mñ FØ�‰”B—I‘IœrŸx™x¨¬R¯X©X´b·h±h³jÓ-AÓBÐCÓDÔE÷Fô
 —‘œBŸH™H S¬"¯)©)«+Ó6Ð7Ó8€JÜ
�(‰(”H—M‘M $¨¨2Ó.Ð/´b·i±i³kÔ
B€CÜ�O‰O˜S˜E¨#¨Ô/´·±À#ÀÈsÈeÔ1TÐU€DÜ—‘×%Ñ% dÓ+€IÜ×!Ñ!×.Ñ.¨z¸4Ó@€FØ�;‰;�zÓ"×+Ñ+Ó-°Ò:Ð:Ñ:÷#ñ #ú÷
Fñ Fús   Ç.%O"É*AO/Ï"O,Ï/O9c                  óN  — t        j                  t        j                  dt        j                  «       «      g«      } t        j                  t        j
                  g d¢t        j                  «       ¬«      gdg¬«      g}t        j                  t        j
                  g d¢t        j                  «       ¬«      gdg¬«      g}t         j                  j                  |«      }t         j                  j                  |«      }t         j                  j                  | |«      }t        j                  t        j                  dt        j                  «       «      g«      }|j                  |«      j                  «       |j                  |«      k(  sJ ‚t         j                  j                  | |«      }t        j                  t        j                  dt        j                  «       d¬«      g«      }|j                  |«      j                  «       |j                  |«      k(  sJ ‚t         j                  j                  | |«      }|j                  |«      }t        j                  t         j                  j                  d¬	«      5  |j                  «        d d d «       y # 1 sw Y   y xY w)
Nr5  )r¾   r¿   NrÁ   r  r½   F)ÚnullablezCan't cast arrayrj  )r(   r'   rÄ   r  r-   rÅ   r0   r1   r#  rR  r1  r‹   r{   r|   r2  r}   )r=  Údata_with_nullsÚdata_without_nullsÚtable_with_nullsÚtable_without_nullsr[   r?  Úcasted_readers           r   Ú#test_record_batch_reader_cast_nullsrI    sß  € Ü—‘œBŸH™H S¬"¯(©(«*Ó5Ð6Ó7€Jä
�‰œŸ™¢,´R·X±X³ZÔ@ÐAÈ#ÈÔOð€Oô 	�‰œŸ™¢)´"·(±(³*Ô=Ð>ÀsÀeÔLðÐô —x‘x×,Ñ,¨_Ó=ÐÜŸ(™(×/Ñ/Ð0BÓCÐô ×!Ñ!×.Ñ.¨z¸?ÓK€FÜ—‘œBŸH™H S¬"¯(©(«*Ó5Ð6Ó7€JØ�;‰;�zÓ"×+Ñ+Ó-Ð1A×1FÑ1FÀzÓ1RÒRÐRÐRô ×!Ñ!×.Ñ.¨zÐ;MÓN€FÜ—‘œBŸH™H S¬"¯(©(«*¸uÔEÐFÓG€JØ�;‰;�zÓ"×+Ñ+Ó-Ð1D×1IÑ1IÈ*Ó1UÒUÐUÐUô ×!Ñ!×.Ñ.¨z¸?ÓK€FØ—K‘K 
Ó+€MÜ	�‰”r—v‘v×*Ñ*Ð2DÔ	Eñ !Ø×ÑÔ ÷!÷ !ñ !ús   ÊJÊJ$c                  ó¸  — t        j                  dg d¢i«      } dddœ}t        j                  «       }t         j                  j	                  || j
                  |¬«      5 }|j                  | «       d d d «       |j                  «       }t         j                  j                  |«      5 }|j                  |k(  sJ ‚	 d d d «       y # 1 sw Y   ŒTxY w# 1 sw Y   y xY w)Nr5  r½   s   tests   0.1.0)s   creators   versionr  ©
r(   r?   r‰   rJ   rK   r'   r2   r   rP   rc  )ÚtblÚmetar   ÚwrË  Úrs         r   Ú+test_record_batch_file_writer_with_metadatarP  0  s·   € ä
�(‰(�CšÐ#Ó
$€CØ¨XÑ6€DÜ× Ñ Ó"€Dä	�‰�‰˜˜sŸz™z°DˆÓ	9ð ¸QØ	�‰�cÔ÷ð �]‰]‹_€FÜ	�‰×	Ñ	˜&Ó	!ð " QØ�z‰z˜TÒ!Ð!Ñ!÷"ð "÷	ð ú÷"ð "ús   ÁCÂ(CÃCÃCc                  ó¤  — t        j                  dg d¢i«      } t        j                  «       }t         j                  j	                  || j
                  «      5 }|j                  | «       d d d «       |j                  «       }t         j                  j                  |«      5 }|j                  �J ‚	 d d d «       y # 1 sw Y   ŒQxY w# 1 sw Y   y xY w)Nr5  r½   rK  )rL  r   rN  rË  rO  s        r   Ú1test_record_batch_file_writer_with_empty_metadatarR  >  s§   € ä
�(‰(�CšÐ#Ó
$€CÜ× Ñ Ó"€Dä	�‰�‰˜˜sŸz™zÓ	*ð ¨aØ	�‰�cÔ÷ð �]‰]‹_€FÜ	�‰×	Ñ	˜&Ó	!ð " QØ�z‰zÐ!Ð!Ñ!÷"ð "÷	ð ú÷"ð "ús   ÁB:Â!CÂ:CÃCc                 ój  —  | di |¤Ž}|j                  «       }|j                  «       D ]ˆ  \  }}|€Œ	t        |t        «      s|nd|› d�}|dk(  r*t        j
                  j                  |«      j                  }n.|dk(  r)t        j
                  j                  |«      j                  }|› d|› �|v rŒˆJ ‚ y )Nú"r(  r  ú=r   )	Ú__repr__ÚitemsrV   ru  r(   rJ   r+  rí  r  )Úoptions_objÚoptions_argsrI   r_  ÚargÚvalr   s          r   Úcheck_ipc_options_reprr\  K  s¸   € ÙÑ)˜LÑ)€GØ×ÑÓ€Dà ×&Ñ&Ó(ò (‰ˆˆSØˆ;Øä% c¬3Ô/‘°r¸#¸¸b°\ˆàÐ$Ò$Ü—F‘F×$Ñ$ SÓ)×.Ñ.‰EØÐ&Ò&Ü—F‘F×*Ñ*¨3Ó/×4Ñ4ˆEà��a˜�wÐ 4Ò'Ð'Ð'ñ(r   c                 óò   — | j                   dk(  r,ddt        j                  j                  j                  d ddddœS | j                   dk(  r,ddt        j                  j                  j
                  dddddœS i S )NÚdefaultFT)r  r  r  r  rÜ   rB  rC  Úallr  )ru   r(   rJ   r  r  r  rv   s    r   Úwrite_options_argsr`  ]  s�   € à‡}�}˜	Ò!à Ø!&Ü "§¡× 6Ñ 6× 9Ñ 9ØØØ&+Ø"'ñ
ð 	
ð 
�‰˜%Ò	àØ!%Ü "§¡× 6Ñ 6× 9Ñ 9Ø!Ø Ø&*Ø"&ñ
ð 	
ð ˆ	r   r`  r^  r_  )Úindirectc                 óL   — t        t        j                  j                  | «       y r
   )r\  r(   rJ   r  )r`  s    r   Útest_write_options_reprrc  w  s   € ô
 œ2Ÿ6™6×1Ñ1Ð3EÕFr   c                 óê   — | j                   dk(  r)dt        j                  j                  j                  dd dœS | j                   dk(  r+dt        j                  j                  j
                  dg d¢dœS i S )Nr^  T)r'  r(  rÜ   r)  r_  Fr½   )ru   r(   rJ   r+  r,  r-  rv   s    r   Úread_options_argsre    so   € à‡}�}˜	Ò!à$(Ü "§¡× 0Ñ 0× 4Ñ 4ØØ#ñ	
ð 	
ð 
�‰˜%Ò	à$)Ü "§¡× 0Ñ 0× AÑ AØ Ú(ñ	
ð 	
ð ˆ	r   re  c                 óL   — t        t        j                  j                  | «       y r
   )r\  r(   rJ   r*  )re  s    r   Útest_read_options_reprrg  “  s   € ô œ2Ÿ6™6×0Ñ0Ð2CÕDr   r]   )qÚcollectionsr   r;  r   r¯   r{   r.   r“  Ú	threadingr!  ÚnumpyrÏ   ÚImportErrorÚpyarrowr(   Úpyarrow.tests.utilr   r   Úpandas.testingr   Úpandasr£   r   rE   r`   re   rŒ   rk   rm   ro   ru   rx   r€   r„   r†   ÚmarkÚparametrizer�   r�   r§   r·   rº   Ú	processesrÈ   r×   rÚ   rJ   r*  rà   rä   rç   ré   rï   rú   r  r  r  r!  r  r  r  r%  r/  r<  rM  rU  rW  rY  r]  ra  rh  rs  rw  ry  r€  rƒ  rˆ  rŽ  ÚThreadr�  r®  r¾  ÚsocketsrÄ  rÆ  rÍ  rÐ  rÝ  rß  rä  ré  r÷  rù  r   r  r  r  r  r  rÊ  rÏ  r  r%  r7  rA  rI  rP  rR  r\  r`  rc  re  rg  r   r   r   ú<module>ru     s0  ðõ$ !Û Û 	Û Û Û Û Û Û ðÛó ß =ð	Ý1Û÷
$ñ $ôN>˜
ô >ô6
˜*ô 
ô 8�Zô 8ð ‡�ñó ðð ‡�ñó ðð ‡�ñ!ó ð!ð €‡�Ø€F‡L�LØØôð €F‡L�LØØôð	ô 	ñ2ó	ð2ò/ò2ò1ð ‡�×Ñ˜ÙÙ#ð*ó ñ
#ó	ð
#ò ð. ‡�×Ññ)ó ð)òò ð ‡�×ÑØ‡�×Ññ0ó ó ð0ð$ ‡�×Ññ.ó ð.ò ;ð2 ‡�×Ñ˜Ø‡F�F×ÑÓØ‡F�F×Ñ eÐÓ,ð%ó ñ:ó	ð:ò1ð ‡�×Ñ˜Ø‡F�F×ÑÓØ‡F�F×Ñ eÐÓ,ð%ó ñ
&ó	ð
&ò/ð ‡�×Ññ?ó ð?ð( ‡�×Ññ5ó ð5ò.!ð$ ‡�×Ññó ðò<.,ðb ‡�×Ñ˜Ø‡F�F×ÑÓØ‡F�F×Ñ tÐÓ,Ø‡F�F×Ñ¨TÐÓ2Ø‡F�F×Ñ¨B¯F©F×,BÑ,B×,EÑ,EÐÓFØ‡F�F×Ñ¨TØ,.¯F©F×,BÑ,B×,EÑ,Eð ó Gð%ó ñ!óð!ò.*òDò2H-òV!IòH#ð ‡�×Ññ)ó ð)ð ‡�ñ!ó ð!ò!ò=ò $ò0	(ð ‡�×Ññ&ó ð&ò,ò(ò
4ô"$˜×)Ñ)ô $ôB8˜*ô 8ð< ‡�ñ!ó ð!ð ‡�×Ññ/ó ð/ð ‡�×Ññ#ó ð#ð ‡�×Ññ ó ð ð" ‡�×Ññ ó ð ð  ‡�×ÑØ‡�×Ñ˜ h°Ð%7Ó8ñ"Aó 9ó ð"AòJð$ ‡�×Ññ@ó ð@ð ‡�×Ñò#ó ð#ð ‡�×Ññ+ó ð+ð ‡�×Ññ=ó ð=ð ‡�×Ññ+ó ð+ð ‡�×Ññ+ó ð+ð
 ‡�×Ññ#ó ð#ð ‡�×Ññ
#ó ð
#ð ‡�×Ññ&ó ð&ò7ò$"ò
Oò
'ò *òZ.Còb";òJ!ò:"ò
"ò(ð$ ‡�ñó ðð2 ‡�×ÑØ‡�×ÑØ˜9 eÐ,°tð ó =ñGó=ó ðGð
 ‡�ñó ðð& ‡�×ÑØ˜) UÐ+°dð ó <ñEó<ñEøðo+ ò Ø	ƒBðûð ò 	Úð	ús"   ¨Y3 ¹
Z Ù3Y>Ù=Y>ÚZ
Ú	Z
